我有一個項目在SAPUI5(JavaScript和XML),它有2個不同的版本(一個原始的和一個修改)。 我需要記錄/記錄(單詞?)它們之間的所有更改,以便將來我們可以在升級原始代碼時重新應用相同的修改。我需要比較和文檔相同的Javascript/XML項目的兩個版本
另外:該項目也位於GIT存儲庫(Bitbucket)中,但初始提交沒有初始版本,它具有已修改的版本。
你認爲這樣做會是最好的方式嗎?
謝謝
我有一個項目在SAPUI5(JavaScript和XML),它有2個不同的版本(一個原始的和一個修改)。 我需要記錄/記錄(單詞?)它們之間的所有更改,以便將來我們可以在升級原始代碼時重新應用相同的修改。我需要比較和文檔相同的Javascript/XML項目的兩個版本
另外:該項目也位於GIT存儲庫(Bitbucket)中,但初始提交沒有初始版本,它具有已修改的版本。
你認爲這樣做會是最好的方式嗎?
謝謝
使用git diff
或類似Beyond Compare
軟件。
與git diff <commit hash 1> <commit hash 2>
你可以看到不同之處。
使用git cherry-pick
您可以將更改從一個提交應用到另一個提交。
我會以某種方式從您擁有的存儲庫中提取兩個版本。
一旦你有他們兩個,你可以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.diff
,並updated_version
將應用的變化。 (您也可以將diff文件填入git apply
。)
這適用於簡單情況,當需要更新的行周圍保留足夠的上下文(文件的其他部分可以獨立更改時)。
對於更一般的情況,您必須瞭解更改的性質,並可能編寫一個智能腳本,查找除簡單字符串比較之外的特定結構。
對於XML和XSLT轉換看起來很自然,或者使用您最喜歡的語言及其XML處理功能的東西。在節點結構層面(例如使用XPath)工作的這種腳本將不受XML格式更改的影響,其中diff
將失敗。
對於JavaScript來說,這很難,而且很大程度上取決於更改的性質。 (也許猴子補丁的JS代碼,而不是JS源文件,可能是一個更強大的方法。)