我目前正在开发一个程序来更新大型程序的SourceCode。我的程序是用Java编写的,要更新的SourceCode是用C语言编写的,原来的SourceCode是修改过的,所以不可能只用原来的版本替换旧版本,因为修改后的代码会是不见了。
所以我发现有必要使用旧原始版本和新原始版本之间的更改来更新旧的修改版本。基于两个版本的差异,应该创建一个补丁并将其应用于旧的修改版本,从而希望在具有修改后的SourceCode的更新版本中。 我尝试制作一个小流程图以使其更清晰。
http://i.stack.imgur.com/og0kI.png
对于我的程序,只需要找到.c和.h源之间的差异。
现在我正在寻找一个合适的工具来查找新版本的程序和旧版本与原始源代码之间的差异,保存差异并将它们应用到旧的修改版本。< / p>
我目前正在尝试工具diff-match-patch的java版本 (http://code.google.com/p/google-diff-match-patch/),最初是为明文设计的。它发现文件之间的差异既简单又简单,并且还可以将它们显示为简单的HTML页面。 但是稍后合并代码似乎有一些问题,主要是因为它最初是为纯文本设计的。
我也尝试过使用git,但我对它并不熟悉,我只是想了解如何在这里合并两个单独的文件(run git merge algorithm on two individual files),将旧的,修改后的版本与新版本合并,使用旧的原始版本作为共同的祖先。这是我使用的命令:
git merge-file -p <current> <common> <other> > <dest>
git merge-file -p old_mod old_original new_original > new_mod
但遗憾的是结果比以前更糟糕。 总而言之,我正在寻找一种基于命令行的工具,或者可以从java工具中执行以查找文件之间的差异并将差异应用到另一个文件,尽可能地解决冲突。修改后的版本在格式方面与原始版本不同,并且在某些文件中添加了代码块。
我也对有关如何使用新版本程序的更改来更新此修改程序的建议和替代方法持开放态度。
更新程序将在Windows PC上运行,因此使用的工具应该可以在那里使用。