我正在使用SVN并拥有稳定的生产分支和不稳定的主干.对于每个版本,我们都会从主干中选择要合并到生产中的项目.
我用git svn克隆了我的SVN repo,这样我就可以利用更快的搜索需要合并的提交(因为我在提交消息中搜索JIRA id).但是,我仍然在最后使用svn merge进行合并.
这个长期存在的生产分支的一个问题是,在主干中可能会有未提交合并的提交.
为了解决这个问题,我偶尔会跑:
svn mergeinfo --show-revs eligible https://my.server/svn/trunk https://my.server/svn/branches/PROD_V3.00
但是,这真的很慢.git中的等价物是
git log prod..master
但是,这似乎只列出了所有提交.
这是由于git无法识别svn合并和svn:mergeinfo属性吗?
有没有办法让我快速使用git获得符合条件的提交?
编辑:
我试过Joes回答,然而,git cherry只输出SHA,我需要SVN修订版来进行合并.因此,我不得不通过它git svn find-rev来找到SVN ID以获得我需要的东西.
git cherry prod master|cut -d' ' -f2|while read -r line; do git svn find-rev "$line"; done;
不幸的是,这比慢svn mergeinfo --show-revs eligible.
如果提交是经过精心挑选的,那么您现在拥有这些提交的两个副本。Git 会向您显示所有提交,master即使它们在prod.
等价的可能是:
git cherry master prod
Run Code Online (Sandbox Code Playgroud)
这将向您显示任何似乎master没有被精心挑选到的提交prod。