Subversion:如何获取所有活动的,未合并的分支的列表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Subversion:如何获取所有活动的,未合并的分支的列表相关的知识,希望对你有一定的参考价值。

我的问题类似于Mercurial: List all unmerged branches,但对于SVN,而不是Mercurial。

我需要找到一种方法来列出所有尚未合并到我的当前打开的分支(通常是主干)。

据我所知,Git中的等价功能是git branch --no-mergedgit branch --merged

为了澄清,我不是要求一个未合并的修订列表,就像过去提出的许多其他StackOverflow问题一样。

我将接受任何能够列出尚未合并的所有活动分支的解决方案。如果这是不可能的,那么我将接受一个列出所有活动的合并分支的答案,允许我向后工作。

例如,如果我在repo/trunk上,并且repo有这些分支:

  • repo/branches/b1尚未合并为主干
  • repo/branches/b2已被合并
  • repo/branches/b3在之前的修订版中被删除,并未合并
  • repo/branches/b4合并后被删除

您的解决方案应返回b1或b2,但绝不能返回b3或b4。

答案

首先,您必须列出HEAD修订版中的所有分支:

svn list repo/branches/ -r HEAD

然后,您必须遍历结果,并检查mergeinfo。这是一个可以保存为* .bat文件的脚本:

@echo off

for /f %%b in ('svn list repo/branches -r HEAD') do call :revisions %%b

exit /b

:revisions
for /f %%r in ('svn mergeinfo --show-revs eligible repo/branches/%1 repo/trunk') do (
    echo repo/branches/%1
    exit /b
)

我在这里使用:revision子例程,因为当我看到可用于合并的第一个修订版时,我想退出它。这就是为什么这个程序不会打印重复的分支。

以上是关于Subversion:如何获取所有活动的,未合并的分支的列表的主要内容,如果未能解决你的问题,请参考以下文章

在 Subversion 中跨分支合并并不是添加所有新文件。为啥不?

如何获取所有 Subversion 提交作者用户名的列表?

更好的 Subversion 合并工具 [关闭]

从SVN历史列出作者,包括已删除(未合并)的分支

Subversion 合并后树冲突 - “本地删除,合并时传入编辑”

即使一切看起来都是最新的,Subversion 合并也需要“旧式”?