我的问题部分基于q / a @ TortoiseSVN cherrypicking说明。 我能够毫无问题地挑选git,但在目前的团队中我们使用SVN。
我在trunk上有一个提交,我想复制到一个分支。我不想将一个分支合并到另一个分支中,或者将主干合并到分支中,或者将分支合并到主干中,或者包括将变更历史从一个转移到另一个的任何分支。
我正在使用trortise SVN
。
第1步:我转到处理已更改文件的特定文件夹
第2步:选择合并
据说合并发生但我发现目录中的实际单个java文件尚未使用trunk的更改进行更新。
此外,唯一指示更改的内容是当我转到提交时指示文件夹的属性已更改。但是,我对提交这些内容不感兴趣,因为我已经指示不提交文件夹属性更改。
这非常令人沮丧,一些使用intelli-j的同事似乎能够非常轻松地执行此操作...例如,将特定文件/更改从working code
提交到另一个分支。
Intelli-j
我不太喜欢tortoise svn
对待selective merging
的方式。我切换到intelli J
并概述了我如何做我需要做的事情。我也意识到cherry picking
与selectively merging
的关系不是很多。 这意味着也会出现冲突并需要解决。它不如git
那么大。
按照这两个步骤/屏幕,intelli-j会要求您解决冲突(如果存在)。然后,它会创建一个包含已合并的特定文件的更改列表。然后你提交。
答案 0 :(得分:1)
乌龟完全按照你的要求去做;只有记录合并发生但没有执行实际合并。这是该选项在步骤4中的图片(来自the command-line tool's description of the option):
启用
svn merge
的特殊模式,其中指定的合并操作记录在本地合并跟踪信息中,但实际上并未执行。
SVN记录合并的方式是在该文件/文件夹的svn:mergeinfo属性中存储有关源URL和revsion的信息,这就是您看到文件夹属性修改的原因。
如果您未选中此项,则会按照您的预期进行合并。