Diff

區分兩個版本的軟體,並做interdiff

  • January 25, 2016

我有某種軟體的版本1.2.0(我們稱之為版本120),我的同事對這個軟體進行了更改(他們通過更改軟體的原始碼為這個軟體創建了自定義模組)我們稱之為120-fr版本。從那時起,軟體供應商對軟體進行了更改,現在是最新版本的軟體1.2.6。我的任務是將自定義模組從版本遷移1.2.0-fr1.2.6(軟體是用 Java 製作的),並且我已經從1.2.0版本中獲得了原始原始碼。

從現在開始我所做的: 1. 我在1.2.0和之間創建了差異1.2.0-fr

$: diff 1.2.0/ 1.2.0-fr/ > patch-120-fr.patch
$: cat patch-120-fr.patch | wc -l
> 407
  1. 1.2.0我在和之間創建了差異1.2.6

$: diff 1.2.0/ 1.2.6/ > patch-120-126.patch

$: 貓更新檔-120-126.patch | wc -l

1265

所以現在(據我所知)我的同事在原始碼中進行了第一個文件更改,在第二個文件中我在供應商版本之間進行了更改。我的問題是如何在這些文件之間進行差異以將自定義模組附加到版本1.2.6,但又不會從 1.2.0 版本遷移到很多東西?我試過做,interdiff但沒有運氣。

有什麼理由不使用 git 嗎?它非常擅長自動合併此類更改,這正是它的用途。這不是問題的直接答案,而是替代解決方案。使用 git 而不是 diff,它看起來像這樣:

 # copy your original code to a new folder
cp -r 1.2.0 mysoftware_git
cd mysoftware_git/
 # make the original source code a git repository
git init
 # add everything to the repo
git add --all
 # make your first commit
git commit -m 'original source code'

 # make a branch for your colleagues' work:
git checkout -b 1.2.0-fr
 # overwrite the source with the appropriate changes
cp ../1.2.0-fr/* .
 # update and commit
git add --all
git commit -m 'new stuff written by Alice and Bob'

 # switch back to the master branch
git checkout master
 # add the 1.2.6 updates to the master
cp ../1.2.6/* .
git add --all
git commit -m 'Changes to the main software branch'

 # merge the changes from 1.2.0-fr into 1.2.6
git merge 1.2.6-fr

可能需要手動解決一些衝突,但這些是 git branch 和 merge 的基礎……

更多細節可以在這裡找到

引用自:https://unix.stackexchange.com/questions/257442