SVN Retrieval of mergeinfo unsupported - Reposted

This is another descriptive error message from SVN. “Retrieval of mergeinfo unsupported”

If you’re seeing this error message you’re probably trying to use the reintegrate merger feature in SVN. You probably just used a command like this one:

 
1
svn merge --reintegrate svn: //foobranch .

This error is caused by a configuration issue on your server, or a significant version mismatch between your client and server. It’s OK, though, this can be worked around pretty easily. Just fall back to the more reliable SVN 1.4 style explicit merger technique.

To use this approach you’ll need to know what revision you either created your branch from, or, if you’ve merged the trunk into your branch since creation, the revision you last merged into your branch. In this example, that revision is revision 42 (being the answer to the ultimate question)

 
1
svn merge svn: //trunk @42 svn: //foobranch .

Another option is to do an explicit revision to revision merger. This more low level syntax can be used for all sorts of crazy mergers including roll-backs and nonsensical mergers that will mess up your code. For this command you’ll need the revision from which you’d like to start your merger and the end revision. In this case I’ll be merging revisions 42 to 87. I’ll be merging these changes from the trunk to my current local path.

 
1
svn merge -r42:87 svn: //trunk ./

 

 

Work around:

(You appear to be using svn 1.5 (since it introduced reintegrate). I
haven't gone into that in any depth because I'm only just making the
switch myself. I'm still using 1.4 + svnmerge.py.)

I don't think it much matters, as long as you understand what you're
doing. Here's the rub, as I see it:

(Think of the branch as a set of changes. The question is changes
relative to what?)

(1)

You've got changes on the trunk that are not on the branch. By merging
those changes to the branch you've brought your branch up to date with
trunk. The work represented by your branch is now exactly the
difference between the current state (HEAD) of you branch and the
current state (HEAD) of the trunk.

svn merge svn://repo/trunk svn://repo/branch working-copy-of-trunk-head

This means: compute the changes necessary to make svn://repo/trunk
identical to svn://repo/branch and apply exactly those changes to a
working copy svn://repo/trunk.

The safety of this operation depends critically on the fact that
you've previously merged all trunk changes since branch creation to
the branch.

This is the scenario that the merge --reintegrate option in 1.5 is
designed for. See also http://blog.red-bean.com/sussman/?p=92

(2)

You've not synced your branch with trunk. The work represented by the
branch is the set of changes between the creation of the branch and
its current state (HEAD). Those are the changes you want to apply to
a working copy of trunk.

To figure out the origin of your branch use

   svn log --stop-on-copy svn://repo/branch

The last entry listed should be the one where the branch was created
(by copying from trunk.) Let's call that revision 100

   svn merge -r100:HEAD svn://repo/branch working-copy-of-trunk

This means: gather all the changes that were made to the branch since
its creation (r100) and apply those changes to a working copy of the
trunk.

In either case, you'll want to inspect the results of the merge in
your working copy of trunk. Build and run unit tests if you've go
them. If it looks good, commit.

I would also recommend deleting the branch when you are done. You can
always create a new one from trunk if you need to continue work on
this feature.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值