2011-01-19 82 views
1

我有一個條件我不明白的回購。 2個星期前,我標記了一個發佈,以標記我可能需要回頭的一個特定點。後來,我決定進行分支,並且還從另一個回購(我最初克隆的回購)中引入了變化。幫助與mercurial repo問題

原來的轉速是令人感興趣的是52:

changeset: 52:5044a88ba2a9 
date:  Mon Jan 10 18:09:30 2011 -0500 

幾個提交後,我支到「多分區」(我應該立即進行,但我沒有預料到需要它)。

經過一些工作後,我從姐妹回購中獲得了更改(所有更改都不會與我在分支中的工作相沖突,因此它是安全的)。

這是我現在看到:

$ hg branches 
MultiPartition    75:9fd803c56505 
default      72:3939850a77e2 (inactive) 

在那裏我多分區我工作,默認值是從姐姐回購尖端。

如果看我的頭:

$ hg heads 
changeset: 75:9fd803c56505 
branch:  MultiPartition 
tag:   tip 
date:  Tue Jan 18 18:32:38 2011 -0500 

changeset: 72:3939850a77e2 
parent:  69:997a5b43216d 
date:  Tue Jan 18 13:26:48 2011 -0500 

changeset: 54:4ad1d36a79aa 
date:  Thu Jan 13 19:14:57 2011 -0500 

還有的修訂版54掛在那裏,我沒有(故意)的意思是留下。

這裏是奇怪的地方:changeset 52不在我當前的MultiPartition提示中(雖然它實際上在我的磁盤上的源代碼中,正如我所料)。我在底部附加了一個變更集的圖形日誌。

如果我使用hgcontains擴展,我看到:

$ hg headscontaining 52 
changeset: 75:9fd803c56505 
branch:  MultiPartition 
tag:   tip 
date:  Tue Jan 18 18:32:38 2011 -0500 

告訴我,轉52(其中有新的文件,我想在當前分支)的內容應該是尖這個分支。然而,hg update -C MultiPartition從我希望他們在目錄中刪除新的文件。

如果我使用hgtk log和過濾器由感興趣的目錄,我看到了52變更它增加了文件,但沒有新的變更有任何文件中刪除從這個目錄。

唯一讓我想知道的是:Changeset 71是原始回購合併。在該回購中,這些新文件不存在。日誌對於changset是:

| o changeset: 71:ba4c67a24185 
|/| branch:  MultiPartition 
| | parent:  70:2dcbf69c325d 
| | parent:  69:997a5b43216d 
| | date:  Mon Jan 17 17:55:10 2011 -0500 

這是我的核心問題

  1. 如果父70:已經我所期待的,但父母69:沒有,這是怎麼認爲解決?
  2. 我該如何檢查其他遺漏?有沒有辦法看到這種行爲?
  3. 我想沒有多個頭,但我似乎無法「合併」它們。從技術上講,他們已經合併(我認爲)。我應該如何清理它?

如果很抱歉,這是複雜的,但我不知道該怎麼問這樣的問題,除了給一噸的信息的。

完全graphlog:

o changeset: 75:9fd803c56505 
| branch:  MultiPartition 
| tag:   tip 
| date:  Tue Jan 18 18:32:38 2011 -0500 
| 
o changeset: 74:be7df4e2579c 
|\ branch:  MultiPartition 
| | parent:  73:3e7ac80ab37a 
| | parent:  72:3939850a77e2 
| | date:  Tue Jan 18 18:31:24 2011 -0500 
| | 
| o changeset: 73:3e7ac80ab37a 
| | branch:  MultiPartition 
| | parent:  71:ba4c67a24185 
| | date:  Tue Jan 18 18:28:51 2011 -0500 
| | 
o | changeset: 72:3939850a77e2 
| | parent:  69:997a5b43216d 
| | date:  Tue Jan 18 13:26:48 2011 -0500 
| | 
| o changeset: 71:ba4c67a24185 
|/| branch:  MultiPartition 
| | parent:  70:2dcbf69c325d 
| | parent:  69:997a5b43216d 
| | date:  Mon Jan 17 17:55:10 2011 -0500 
| | 
| o changeset: 70:2dcbf69c325d 
| | branch:  MultiPartition 
| | parent:  66:79272b7e7c01 
| | date:  Mon Jan 17 17:42:04 2011 -0500 
| | 
o | changeset: 69:997a5b43216d 
| | date:  Mon Jan 17 12:00:09 2011 -0500 
| | 
o | changeset: 68:b39f8a7af0c5 
| | date:  Sun Jan 16 20:23:43 2011 -0500 
| | 
o | changeset: 67:63d3b40427e0 
| | parent:  58:29029a74e351 
| | date:  Sun Jan 16 18:07:49 2011 -0500 
| | 
| o changeset: 66:79272b7e7c01 
| | branch:  MultiPartition 
| | date:  Mon Jan 17 09:43:32 2011 -0500 
| | 
| o changeset: 65:b33eb978d647 
| | branch:  MultiPartition 
| | date:  Mon Jan 17 09:39:54 2011 -0500 
| | 
| o changeset: 64:1fdafb6d0e84 
| | branch:  MultiPartition 
| | date:  Sun Jan 16 17:48:09 2011 -0500 
| | 
| o changeset: 63:74942ab5113d 
| | branch:  MultiPartition 
| | date:  Sun Jan 16 17:46:15 2011 -0500 
| | 
| o changeset: 62:2cd5a6d9d120 
| | branch:  MultiPartition 
| | date:  Sun Jan 16 01:55:23 2011 -0500 
| | 
| o changeset: 61:acc73e7a35fc 
|/| branch:  MultiPartition 
| | parent:  60:c10e217081f0 
| | parent:  58:29029a74e351 
| | date:  Sun Jan 16 01:53:01 2011 -0500 
| | 
| o changeset: 60:c10e217081f0 
| | branch:  MultiPartition 
| | date:  Sun Jan 16 01:45:16 2011 -0500 
| | 
| o changeset: 59:2709b82b3ac0 
| | branch:  MultiPartition 
| | parent:  54:4ad1d36a79aa 
| | date:  Sun Jan 16 01:42:34 2011 -0500 
| | 
o | changeset: 58:29029a74e351 
| | date:  Sun Jan 16 01:36:44 2011 -0500 
| | 
o | changeset: 57:48840b75e37b 
| | date:  Fri Jan 14 11:04:06 2011 -0500 
| | 
o | changeset: 56:dab5f0d40be9 
| | date:  Thu Jan 13 15:51:11 2011 -0500 
| | 
o | changeset: 55:214ac45834fd 
| | parent:  51:7d0a1da31199 
| | date:  Wed Jan 12 16:49:00 2011 -0500 
| | 
| @ changeset: 54:4ad1d36a79aa 
| | date:  Thu Jan 13 19:14:57 2011 -0500 
| | 
| o changeset: 53:8f06d69177d6 
| | date:  Thu Jan 13 14:02:42 2011 -0500 
| | 
| o changeset: 52:5044a88ba2a9 
| date:  Mon Jan 10 18:09:30 2011 -0500 
| 
o 
+0

您是如何在變更集71執行合併的?你有什麼特別的嗎?或者你是否正常使用合併功能? – 2011-01-19 08:39:12

回答

2

你居然還對默認分公司兩個頭,並在多分區分支一個頭,如hg heads已經顯示出你。無論分支如何,使用hg heads -t可查看實際頭像。它看起來像使用graphlog擴展名,所以使用hg glog -r "branch(default)"可視化您的默認分支。

至於你的問題:

  1. 如果父70:已經我所期待的,但父母69:沒有,這是怎麼認爲解決?

您可以hg export -r 52 >52.patch然後hg import 52.patch在尖端。這將重新應用這些更改。您的一個合併必須刪除內容。

  1. 如何檢查其他遺漏?有沒有辦法看到這種行爲?

不是真的。就Mercurial而言,52是您小費的祖先。如果更改在稍後的更改集中被刪除,Mercurial並不知道。您可以hg diff兩個不同的變更集並追蹤它被刪除的位置(可能在合併中)。

  1. 我想沒有多頭,但我似乎無法「合併」他們。從技術上講,他們已經合併(我認爲)。我應該如何清理它?

默認通常,你希望所有的開發結束。您可以合併兩個默認正面,然後hg ci --closebranchMultiPartition併合併到默認

0

1:如果父母70:有什麼我的預期,但父母69:沒有,這是怎麼認爲解決?

我猜這些文件在61或71合併中被刪除。你可以用「diff to second parent」選項在hgtk中檢查。

3:我想沒有多個頭,但我似乎無法「合併」它們。從技術上講,他們已經合併(我認爲)。我應該如何清理它?

在默認分支上有兩個匿名頭(54和72,其中72是默認的提示),只要MultiPartition分支沒有合併回默認值,它們就會保持打開狀態。儘管稍後在MultiPartition分支中進行了合併,但它們仍然是默認分支的頭,因爲mercurial不會將後續分支視爲分支的新頭。這種治療的原因是,當你hg update branch時,你通常希望最新的版本是一個分支。

當您將MultiPartition合併回默認值時,您可以擺脫兩個默認標題。當您完成MultiPartition時,您也可以使用hg ci --close-branch關閉此分支(從技術上講,您不能移除MultiPartition頭,但是當它關​​閉時hg heads不會將其視爲主動頭)。