2013-08-27 23 views
2

在開發過程中,我們進入了主幹,當時間到了,我們創建了需要單獨測試的分支,並進一步轉化爲標籤。如何查找分支中是否包含一些提交內容?

我的問題是:是否有一個簡單的方法來確定某些提交,我們在前幾天做了什麼,是否在我們的分支內?

這個問題的不同口味:我怎樣才能找出分支的創建時間? (換句話說,如果分支創建後我的分支可能會丟失一些提交,我想確保提交是在分支內部的,一種方法來檢查這可能是一個--dry-run合併所有版本)

+0

If(revisionOfBranchCreation> revisionInQuestionIntrunk)Then Yes否則檢查分支的合併信息 –

回答

0

的第一次修訂有沒有一個簡單的方法來找出一些是否提交,我們到一些樹幹上一些天前提出,在我們的分支?

這可以要求兩個不同的東西:

  • 做了更改到兩條幹線,並在同一提交這個分支。
    • A svn log -v會告訴你這個信息。
    • 你也可以在trunk和branch上做svn log --xml。將修訂存儲在分支的散列中,然後在解析中繼的輸出時,可以看到分支上是否有重複的修訂。
  • 你做了一個合併,所以trunk中一個特定修訂版的改變在你的分支中。在這種情況下,您可以查看分支上的svn:mergeinfo屬性,該屬性將向您顯示卡車修訂已合併到分支中。一個svn plist -v -R svn:mergeinfo會發現在整個目錄樹中的任何文件或目錄的所有svn:mergeinfo性能,並顯示在合併你哪個版本

這個問題的不同的味道:我怎樣才能找出創建分支時?

要找出創建一個分支時:

svn log -v --stop-on-copy -r1:HEAD /usr/of/branch | head 

這將顯示在樹枝上的所有修訂從最低到最高,所以它會告訴你是該分支的第一次修訂。 head限制了輸出。你不應該需要超過10行。 -v標誌將顯示覆制的內容以及來源。

輸出會是這個樣子:

r160214 | dweintraub | 2013-04-23 13:41:43 -0400 (Tue, 23 Apr 2013) | 1 line 
Changed paths: 
    A /branches/4.8 (from /trunk:160213) 

Creating a release branch for 4.8 release 
----------------------------------------------------------------- 

4.8分行已於2013年4月23日,由我創建從主幹的修訂160213。

+0

David,關於第一個問題:我的案例更加簡單:我正在使用trunk,然後通過它做了一個分支svn copy,那麼時間已經過去了,我忘記了一些珍貴的提交是在那個分支裏面,還是留在了trunk中,因爲它是在分支之後創建的。它不是關於改變主幹和分支,而不是關於合併。我如何測試它? – KutaBeach

+0

@KutaBeach然後,答案的第二部分將有所幫助。這將確定分支何時建立。例如,您可以看到4.8分支是由trunk的修訂版160213創建的。如果您的更改致力於在修訂160213之前轉向,那麼您知道它在分支上。如果是在主幹上修改160213後,你知道它是在分支之後。 –

1

svn log -q --stop-on-copy /URL/OF/BRANCH

列表中最後一次修訂是分支

+0

謝謝,Lazy Badger!看起來有2點:在創建該分支之前(即,提交給中繼),承諾分支的修訂數量保持不變。所以我們可以通過svn log -r REV_NUMBER檢查一些版本。但是,合併到已經創建的分支中的修訂會進入一個新的提交。因此,在這種情況下,我們無法確定是否在我們的分支中包含一些幹線提交。我對嗎? – KutaBeach

+0

@KutaBeach - 起點和修訂列表是不同的問題。檢查分支根目錄中的'svn:mergeinfo'屬性,以便合併到來自其他子樹的分支修訂中 –

相關問題