在预提交脚本中,是否有可能(如果是,如何)识别源自svn merge?的提交?
svnlook changed ... 显示已更改的文件,但不区分合并和手动编辑.
理想情况下,我还想区分标准merge和merge --reintegrate.
我正在探索使用预提交挂钩来为我们的项目强制执行SVN使用策略的可能性.
其中一个策略声明某些目录(例如/trunk)不应直接修改,只能通过功能分支的重新集成进行更改.因此,预提交脚本将拒绝除分支重新集成之外对这些目录所做的所有更改.
有任何想法吗?
我已经探索过这个svnlook命令,而我最接近的就是检测并解析svn:mergeinfo对目录属性的更改.这种方法有一些缺点:
svnlook可以标记属性的更改,但不会更改哪个属性.(需要使用proplist前一版本的差异)svn:mergeinfo,可以检测svn merge已运行的更改.但是,无法确定提交是否纯粹是合并的结果.合并后手动进行的更改将不会被检测到.(相关帖子:针对另一个路径/修订版的Diff事务树)我从trunk创建了一个分支.当我的分支上的开发完成后,我想将我的分支合并(重新集成)到trunk.是否有选项或设置启用?似乎Netbeans 7.1无法将分支重新集成到主干中.
我错了吗?
svn merge svn-reintegrate netbeans-7.1 svn-merge-reintegrate
新的1.8 subversion客户端有问题(我们使用TortoiseSVN 1.8.5和SlikSVN 1.8.5).似乎在重新集成后能够继续使用您的功能分支的新SVN 1.8功能在某些情况下不起作用.
当trunk包含本地mergeinfo(文件或子树上的Mergeinfo)时,它不起作用.这可能会导致重新集成后分支重用的问题.如果使用'keep alive dance'(使用仅记录选项)完成分支重用,这对1.7客户端来说不是问题.
我已经制作了一个从头开始说明这个问题的脚本.它可以使用1.8客户端针对空存储库运行.
下面的脚本有10个步骤.步骤1-5用于创建在主干中具有本地mergeinfo的起始情况.步骤6-9模拟在功能分支2的生命周期内对主干进行的更改.步骤10是失败的步骤,它模拟重新集成后重用特征分支的第一步.
这是步骤10中的错误:
svn: E195016: Reintegrate can only be used if revisions 8 through 11 were pre
viously merged from svn://svn2010/practice/branches/featurebranch2 to the reinte
grate source, but this is not the case:
trunk/file1.txt
Missing ranges: /trunk/file1.txt:9
Run Code Online (Sandbox Code Playgroud)
这是(Windows)脚本.
@ECHO OFF
ECHO ------------------------------------------------------------------
ECHO STEP 0: Create a repository
ECHO ------------------------------------------------------------------
if exist repo rmdir repo /S/Q
if exist trunk rmdir trunk /S/Q
if exist featurebranch1 rmdir featurebranch1 /S/Q
if exist featurebranch2 rmdir featurebranch2 …Run Code Online (Sandbox Code Playgroud) svn version-control svn-merge mergeinfo svn-merge-reintegrate
我想将我的分支合并到trunk,并且基本上想要将分支中的所有代码覆盖到trunk.虽然接收到冲突,但我仍然为所有冲突做"满满"; 但最后它仍显示出如此多的冲突.
我想要的只是在我的行李箱上覆盖完整的分支.当然可能的方法是从我的分支机构伸出然后我的行李箱变得无用!
此外,在执行svn merge时,我可以给出一个选项,以便对于所有冲突,它需要一个特定的值(在本例中为Full-theirs),并且我不必总是为所有冲突键入它.
我有一个从主干开始的分支A和从A开始的分支B.定期地,从主干到A的合并,然后也执行从A到B的合并.当我想将A和B合并到主干时,我想按照这种方式:
这是对的吗?或者它可能导致mergeinfo或其他问题的问题?在这种情况下,最佳做法是什么?