SVN:创build一个比较大量的修订

我有一个私人的分支,我做了很多的承诺,然后我把它合并成了树干,并在那里做了一些小的调整。

现在,主干维护人员想要差一点我们需要回滚。

我如何创build这个? 如果你需要数字作为例子,假设

224446

是我的主要修订,我融入了主干,

224453224462

是我的小修复,而我在私人部门有无数的变化。

解决scheme (通过Martin)

 svn diff -r 224452:224453 > ~/tmp/diff.1 svn diff -r 224462:224463 > ~/tmp/diff.2 svn up -r224446 patch < ~/tmp/diff.1 -p0 patch < ~/tmp/diff.2 -p0 svn diff -r 224445 > ~/tmp/changes.patch 

然后邮寄〜/ tmp / changes.patch到我们的主干维护者保pipe。

一个可能的程序是这样做的:

  1. 为224453和224462创build差异(例如,通过svn diff -r 224452:224453 > diff1.patch )。
  2. 退房224446( svn up -r224446
  3. 应用差异(例如patch -p0 -i diff1.patch
  4. 创build一个224445( svn diff -r 224445 > diff2.patch

一个选项是在224446创build一个分支,然后在224453和224462合并。​​然后在中继线和224445之间进行差异化。 这应该是所有的变化之一,你可以创build它作为一个补丁文件,如果你需要:

 # Branch from your initial checkin svn cp svn://xyz/trunk@224446 svn://xyz/branches/foo # Check it out svn checkout svn://xyz/branches/foo tmp # Merge in the two changes svn merge -c 224453,224462 svn://xyz/trunk tmp # Commit the changes svn commit tmp -m "Extra commits 224453 and 224462" # Diff the branch from mainline before original svn diff svn://xyz/trunk@224445 svn://xyz/branches/foo 

这与马丁的回答基本相同,只是用不同的方式来应用变化和获得差异。 请注意,虽然在这种情况下,我已经提交了更改,但您并不需要 – 您只需执行svn diff svn://xyz/trunk@224445 tmp而不是最后两个命令。 把它放在版本库中的好处是任何人都可以反向应用diff来回滚,如果需要的话。