我有某种软件的版本1.2.0
(我们称之为版本120
),我的同事对此软件进行了更改(他们通过更改软件的源代码为该软件创建了自定义模块),我们称之为120-fr
版本。从那时起,软件供应商对软件进行了更改,现在是最新版本的软件1.2.6
。我的任务是将自定义模块从版本迁移1.2.0-fr
到1.2.6
(软件是用 Java 制作的),并且我已经从版本中获得了原始源代码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/> patch-120-126.patch
$: 猫补丁-120-126.patch |厕所-l
1265
所以现在(据我所知)我已经在我的同事在源代码中所做的第一个文件更改中进行了更改,在第二个文件中我在供应商版本之间进行了更改。我的问题是如何在这些文件之间进行差异以将自定义模块附加到版本1.2.6
,但又不从版本 1.2.0 移动到太多内容?我尝试过这样做interdiff
,但没有运气。
答案1
有什么理由不使用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 分支和合并的基础知识......
可以找到更多详细信息这里