日期:2014-05-16  浏览次数:20548 次

重金悬赏:SVN Merge问题
公司在原第三方的代码基础上做了很多工作,现在第三方又提供了一个新版本的代码包,因此目前的要求是:把所有的公司修改的代码应用到新版本代码包里面。
当前做法是: svn merge vendorcode ourcode thisdir
以上命令的本意是找出vendorcode和ourcode的不同之处,然后应用到thisdir中。

问题出现了:第三方的新版代码包与老版有一些不一样的地方,有一些文件消失了,有一些文件又增加了。很奇怪的现象是SVN merge不仅仅是把我们的修改之处用于目标文件夹,同时还会把老版新版不一样的地方找出来并报错。
举例来说,以下log出现在merge过程中:
====================
  C mvl5/drivers/usb/musb/plat_uds.c
  C mvl5/drivers/usb/musb/musbhdrc.h
Conflict discovered in 'mvl5/drivers/usb/musb/davinci.c'.
Select: (p) postpone, (df) diff-full, (e) edit,
  (mc) mine-conflict, (tc) theirs-conflict,
  (s) show all options: p
C mvl5/drivers/usb/musb/davinci.c
====================
其中前面的2个C其实根本就不存在所谓冲突的,只是他们在旧版本中出现而新版本没有而已。只有后面一个是实实在在的冲突。

所以,我希望得到的是:如何去掉这些新旧版本的区别之处,而只是把我们修改的地方应用于目标文件夹?

附带问题2
有一个源码包A, 在SVN中为repos/vendor/A
有人在此包基础上做了不少修改,在SVN中保存在repos/branch/A
现在要想知道到底有哪些地方修改了。svn diff可以找出这些修改点来。但是我现在希望的是仅仅需要告诉我到底有那些文件修改了,而不需要细致到修改的具体源码。
请问:how to.

------解决方案--------------------
merge不能做这么智能的事情,有冲突时,只能自己去决定采用哪个
------解决方案--------------------
1770948999@qq.com
------解决方案--------------------
哦没用过这么高级的功能

都是自己beyond compare比较差异,手工修改,提交
------解决方案--------------------
我不明白,难道不可以先本地删除合并再commit么

第二个用cl参数能否满足要求?