SVN:为许多修订创建差异

Pau*_*jan 34 svn diff branch

我有一个私人分支,我做了很多提交,然后我把它合并到trunk,并在那里做了一些小调整.

现在,如果我们需要回滚,那么trunk维护者想要对我的所有更改进行区分.

我该如何创建呢?如果您的示例需要数字,请假设

224446

是我合并到主干的主要修订版,

224453224462

是我的小修理,在我的私人分支机构中我有无数的变化.

解决方案(通过马丁)

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
Run Code Online (Sandbox Code Playgroud)

然后将〜/ tmp/changes.patch邮寄给我们的主干维护人员以便妥善保管.

Mar*_*wis 31

一种可能的方法是这样做:

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


Jon*_*eet 7

一种选择是在224446创建一个分支,然后在224453和224462中合并.然后在主干上和224445之间进行差异.这应该是一个中的所有更改,如果需要,您可以将其创建为补丁文件:

# 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
Run Code Online (Sandbox Code Playgroud)

这与马丁的答案大致相同,只是采用不同的方式应用变化并获得差异.请注意,虽然在这种情况下我已经提交了更改,但您实际上并不需要 - 您可以只执行更改svn diff svn://xyz/trunk@224445 tmp而不是最后两个命令.关于在存储库中使用它的好处是任何人都可以反向应用diff来回滚它,如果需要的话.