2017-08-03 77 views
7

我的問題與Mercurial: List all unmerged branches類似,但對於SVN而不是Mercurial。Subversion:如何獲得所有活動的未分支分支的列表

我需要找到一種方法來列出所有尚未合併到我的(通常是主幹)當前打開的分支。

據我所知,在Git的中等效特點是git branch --no-mergedgit branch --merged

爲了澄清,我不是要求用於未合併修訂的列表,像許多其他StackOverflow的問題有問過去。

我接受任何能夠列出尚未合併的所有活動分支的解決方案。如果這是不可能的,那麼我會接受一個答案,列出所有活動的合併的分支,讓我反向工作。

例如,如果我在repo/trunk,並回購了這些分支:

  • repo/branches/b1還未合併到主幹
  • repo/branches/b2已經合併
  • repo/branches/b3在之前已被刪除修改並未合併
  • repo/branches/b4被合併後被刪除

您的解決方案應返回b1或b2,但絕不能返回b3或b4。

+0

你可以定義什麼使你的場景中的分支「活躍」?最近的提交?至少有一個提交,因爲它是分支? –

+0

@PatrickQuirk如果分支存在於HEAD修訂版本中,則可以將分支視爲活動分支。 – BoffinbraiN

+0

您是否嘗試創建一個列出'repo/branches /'中的所有目錄的腳本/批處理,然後使用'svn mergeinfo'檢查每個目錄是否需要合併? – royalTS

回答

1

首先,你必須採取列表中的所有分支和HEAD修訂版:

svn list repo/branches/ -r HEAD 

然後,您可以通過結果必須循環,並檢查合併信息。這裏是一個腳本,您可以保存爲* .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 
) 

我使用的是:修訂子程序在這裏,因爲我想退出,當我看到的第一個版本可用的合併。這就是爲什麼這個程序不會打印重複的分支。

+0

你的命令確實會顯示HEAD中的所有分支。這很容易做到。但是,那不是我需要的。我只想看看那些尚未合併到中繼的分支的子集。 – BoffinbraiN

+0

我的不好。我解決了我的問題。 – Przemek

+0

做得很好!我已經通過創建一個新的分支(它出現在列表中)然後將它合併到主幹(導致它從列表中刪除)來測試我們的舊SVN回購。繼續這樣回答,你很快就會有很多代表。 :) – BoffinbraiN

相關問題