2015-06-01 17 views
1

我在我的mercurial存儲庫中找到了一個無名節點。擺脫mercurial存儲庫中的「無名」節點

在執行標籤列表命令「hg tags」作爲生成輸出的一部分時,我找到了兩次提到的相同節點。

汞標籤命令的輸出包含以下重複的節點:

xyz_release_tag     daa262c10 
            daa262c10 

在其中一個條目,節點有一個名字,但其他條目的節點沒有名字。

我正在將mercurial存儲庫遷移到git,我正在使用快速導出進行轉換。 此「無名稱」節點的存在會在轉換過程中導致錯誤。已經在以下網址討論了類似的問題:https://github.com/frej/fast-export/issues/1

作爲一種快速解決方法,我對本地存儲庫緩存文件進行了快速更改。有一個名爲「tags2-visible」的文件,在我運行hg tags命令進行列表後創建。一旦我修改此文件以刪除無名節點的條目,它將消失並且轉換過程成功。

我不是很確定這是否是正確的做法,或者是否有任何其他方式。

有什麼想法?

+0

您可以澄清並舉例說明您在標記節點的上下文中討論「無名節點」時所瞭解的內容嗎? – planetmaker

+0

@planetmaker我用命令輸出的摘錄更新了我的問題。 – SoDa

+0

也許這個節點有幾個標籤,其中一個是一個非常不可見的(幾乎)不可見的標籤。通過hg log -rdaa262c10檢查連接到該節點的所有標籤(不知道如何選擇該標籤,hg不會讓我選擇一個空標籤;也許有些其他工具可以讓你做到這一點) – planetmaker

回答

1

所得的quickfix:

hg tags # Creates .hg/cache/tags2-visible 
# Fix the nameless tag 
sed -rie 's/^([^ ]+) $/\1 \1/' .hg/cache/tags2-visible 

如何我來到了解決方案:

$ hg tags | tail -3 
PRODUCION_18032010    216:3e0a6415bbde 
           166:809065c08005 
PRODUCION      125:d98f65c06bac 
$ # Where is the problem? 
$ grep -r 809065c08005 
.hg/cache/tags2-visible:809065c08005ef2d261f10f72f17ea5fcd1e7540 
$ # Add " test" to the end of this line 
$ sed -i .hg/cache/tags2-visible -e 's/809065c08005ef2d261f10f72f17ea5fcd1e7540/809065c08005ef2d261f10f72f17ea5fcd1e7540 test/' 
$ # Checking the edition 
$ grep -r 809065c08005 
.hg/cache/tags2-visible:809065c08005ef2d261f10f72f17ea5fcd1e7540 test 
$ # Checking the validity of the hack 
$ hg tags | tail -3 
PRODUCION_18032010    216:3e0a6415bbde 
test        166:809065c08005 
PRODUCION      125:d98f65c06bac 

編輯.hg /緩存/ tags2可見添加標籤分支快速出口爲我工作後。

任何人都可以看到在編輯.hg/cache/tags2-visible這樣的任何問題?