私はいくつかのソフトウェアバージョン1.2.0
(バージョンと呼びます120
)があり、同僚はこのソフトウェアを変更しました(彼らはソースコードを変更してソフトウェアのカスタムモジュールを作成しました)。私たちはこれを120-fr
バージョンと呼びます。それ以来、ソフトウェアベンダーはソフトウェアを変更し、現在はソフトウェアの最新バージョンになりました1.2.6
。私はカスタムモジュールをバージョンから(ソフトウェアはJavaで作られています)1.2.0-fr
に移行する任務を務め、バージョン1.2.6
から元のソースコードを取得しました1.2.0
。
1.2.0
これから私がしたこと:1.私は次の違いを作りました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.2.0
次の違いを作りました1.2.6
。$: diff 1.2.0/ 1.2.6/> パッチ-120-126.patch
$:cat-patch-120-126.patchトイレ-l |
1265
これで(私の知る限り)、同僚がソースコードで作成した最初のファイルに変更があり、2番目のファイルにベンダーバージョン間で変更が適用されました。私の質問は、1.2.6
バージョン1.2.0であまり移動しないで、カスタムモジュールをバージョンにリンクするためにこれらのファイルをどのように比較しますか?私はこれを試しましたが、interdiff
運がありません。
答え1
gitを使わない理由はありますか?このような変更を自動的にマージするのに非常に優れており、設計された目的を正確に実行します。これは質問に対する直接的な答えではなく、代替ソリューションです。 diffの代わりにgitを使用すると、次のようになります。
# 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分岐とマージの基本です。
詳細を確認できますここ