在開發過程中,我們進入了主幹,當時間到了,我們創建了需要單獨測試的分支,並進一步轉化爲標籤。如何查找分支中是否包含一些提交內容?
我的問題是:是否有一個簡單的方法來確定某些提交,我們在前幾天做了什麼,是否在我們的分支內?
這個問題的不同口味:我怎樣才能找出分支的創建時間? (換句話說,如果分支創建後我的分支可能會丟失一些提交,我想確保提交是在分支內部的,一種方法來檢查這可能是一個--dry-run合併所有版本)
在開發過程中,我們進入了主幹,當時間到了,我們創建了需要單獨測試的分支,並進一步轉化爲標籤。如何查找分支中是否包含一些提交內容?
我的問題是:是否有一個簡單的方法來確定某些提交,我們在前幾天做了什麼,是否在我們的分支內?
這個問題的不同口味:我怎樣才能找出分支的創建時間? (換句話說,如果分支創建後我的分支可能會丟失一些提交,我想確保提交是在分支內部的,一種方法來檢查這可能是一個--dry-run合併所有版本)
的第一次修訂有沒有一個簡單的方法來找出一些是否提交,我們到一些樹幹上一些天前提出,在我們的分支?
這可以要求兩個不同的東西:
svn log -v
會告訴你這個信息。svn log --xml
。將修訂存儲在分支的散列中,然後在解析中繼的輸出時,可以看到分支上是否有重複的修訂。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。
David,關於第一個問題:我的案例更加簡單:我正在使用trunk,然後通過它做了一個分支svn copy,那麼時間已經過去了,我忘記了一些珍貴的提交是在那個分支裏面,還是留在了trunk中,因爲它是在分支之後創建的。它不是關於改變主幹和分支,而不是關於合併。我如何測試它? – KutaBeach
@KutaBeach然後,答案的第二部分將有所幫助。這將確定分支何時建立。例如,您可以看到4.8分支是由trunk的修訂版160213創建的。如果您的更改致力於在修訂160213之前轉向,那麼您知道它在分支上。如果是在主幹上修改160213後,你知道它是在分支之後。 –
svn log -q --stop-on-copy /URL/OF/BRANCH
列表中最後一次修訂是分支
謝謝,Lazy Badger!看起來有2點:在創建該分支之前(即,提交給中繼),承諾分支的修訂數量保持不變。所以我們可以通過svn log -r REV_NUMBER檢查一些版本。但是,合併到已經創建的分支中的修訂會進入一個新的提交。因此,在這種情況下,我們無法確定是否在我們的分支中包含一些幹線提交。我對嗎? – KutaBeach
@KutaBeach - 起點和修訂列表是不同的問題。檢查分支根目錄中的'svn:mergeinfo'屬性,以便合併到來自其他子樹的分支修訂中 –
If(revisionOfBranchCreation> revisionInQuestionIntrunk)Then Yes否則檢查分支的合併信息 –