基本上,我想嘗試的是將實驗回購分支的hg修訂版拉入主線的克隆。但我想放棄分支名稱,所以我可以直接推入服務器端的主線庫。這也可能是最好舉個簡單的例子:在hg中,如何在重新綁定和/或從另一個repo移植時刪除分支名稱?
hg init hg_mainline
pushd hg_mainline
touch foo
hg add foo
hg commit -m 'foo'
popd
hg clone hg_mainline hg_experimental
pushd hg_experimental
hg branch bar_branch
touch bar
hg add bar
hg commit -m 'bar'
popd
pushd hg_mainline
hg pull ../hg_experimental
hg log
正如你所看到的,現在主線包括有REV「分支:bar_branch。」我不希望這個修訂版有一個分支(即它應該是默認的)。
如果這需要使用rebase,transplant或其他工具重寫歷史記錄,這是可以的。我已經嘗試了這兩種方法,但無法使其工作。兩次回購之間最新的修訂哈希結果可能不同。
所以我想hg_mainline的最高版本的樣子:
changeset: 1:xxxxxxxxxxxx
tag: tip
user: ...
date: ...
summary: ...
沒有命名的分支。
再說一次,如果哈希不是從hg_experimental保存的,那也沒關係。
我目前使用Ubuntu PPA的hg 1.6.2 + 55-18e1e7520b67。
編輯:
我也用過1.3.1。我在兩者上都測試了下面的結果,這裏的結果是一樣的。
我得到它與移植工作,但只有與grep -v
kludge。
hg transplant -s ../hg_experimental 1 --filter "grep -v '^branch:'"
有了:
hg transplant -s ../hg_experimental 1
汞出口也不能工作,有或沒有合適的grep。
的變更補丁的樣子:
# HG changeset patch
# User Matthew Flaschen <EMAIL>
# Date 1282942390 14400
# Branch bar_branch
# Node ID b8e36efea72642f0a0194301489d5c48f619a921
# Parent 85d9b9773d4ec09676dfcc4af89c142c46279444
bar
我從實驗導出的:
hg export 1 -o '/tmp/%b_%H_%R'
,並試圖導入一起主線:
hg import /tmp/hg_experimental_b8e36efea72642f0a0194301489d5c48f619a921_1
它失敗:
abort: no diffs found
編輯2:
如前所述,出口方法只因爲這些文件是空的失敗。它可以與--git
或非空文件正常工作。
移植只是一個包裝出口/進口與一個小重複檢測 – 2010-08-27 19:15:41
我得到「中止:沒有差異發現」與hg 1.3.1或最近的汞。我在版本中導出和導入,爲了安全起見。 – 2010-08-27 21:24:11
@Matthew:對不起,以前很匆忙。用適合你的命令更新我的答案。 – 2010-08-27 21:48:08