我需要比较和记录相同Javascript / XML项目的2个版本

时间:2017-02-23 12:26:19

标签: javascript git compare bitbucket versioning

我在SAPUI5(javascript和xml)中有一个项目,它有两个不同的版本(一个原始版本,另一个版本有修改版本)。 我需要记录/记录(word?)它们之间的所有变化,以便将来我们可以在升级原始代码时重新应用相同的修改。

另外:该项目也在GIT存储库(Bitbucket)中,但初始提交没有初始版本,它有一个已经修改过的版本。

您认为这样做最好的方式(耗时少)?

谢谢,

3 个答案:

答案 0 :(得分:2)

使用git diff <commit hash 1> <commit hash 2>,您可以看到差异 使用git cherry-pick,您可以将更改从一个提交应用到另一个提交。

答案 1 :(得分:1)

使用git diffBeyond Compare等软件。

答案 2 :(得分:1)

我会以某种方式从您拥有的存储库中提取两个版本。

一旦你同时拥有它们,你可以diff -c old_version new_version > versions.diff

如果你将它们放在一个git仓库中,你可以git diff old_commit:path/to/the_file path/to/the_file > versions.diff

之后,您可以patch -o updated_version old_version versions.diffupdated_version将应用更改。 (您也可以将差异文件提供给git apply。)

这适用于简单的情况,当需要更新的行周围保留足够的上下文时(文件的其他部分可以独立更改)。

对于更一般的情况,您必须了解更改的性质,并且可能编写一个智能脚本,该脚本可以查找除简单字符串比较之外的特定结构。

对于XML,XSLT转换似乎很自然,或者使用您喜欢的语言及其XML处理功能的东西。这样一个在节点结构级别上工作的脚本(例如使用XPath)将不受XML格式化更改的影响,diff将失败。

对于javascript,它更难,而且很大程度上取决于更改的性质。 (也许猴子修补JS代码,而不是JS源文件,可能是一种更强大的方法。)