2012-02-11 67 views
1

我工作的一個Git倉庫,現在我需要將其轉換爲某種原因汞庫。我原來的git倉庫有41個提交,大小爲320MB。轉換混帳回購協議含汞回購

我試圖使用hg convert git-repo hg-repo庫轉換。這個命令開始將git repo轉換爲hg,但在版本號18處中途掛起(不停止)。我檢查了此時hg repo的大小是50Mb。我知道rev no。 18和size = 15M都不是那麼重要,但是hg convert不會打印任何我可以調試的錯誤。

在某個不知名的地點是否汞柱打印錯誤?儲存庫的大小是否對「hg convert」程序有影響?

+1

你能和'HG-git'試試?的 – knittl 2012-02-11 12:18:35

+1

可能重複[如何轉換一個Git倉庫含汞?](http://stackoverflow.com/questions/491554/how-do-i-convert-a-git-repository-to-mercurial) - 此外,你應該向Selenic報告錯誤。 – Kimvais 2012-02-11 12:18:51

+0

如果這是一個錯誤,您應該直接向Mercurial開發人員報告,比如@Kimvais。 – krtek 2012-02-11 13:12:50

回答

1

hg convert在我的經驗中並不是最容易使用的工具,但hg-git一直對我完美無瑕。既然你提到有一些麻煩與Git倉庫而回,你應該嘗試的全面完整性檢查:

git fsck-objects --full 

(我假設庫是本地的,但如果沒有,做一個本地克隆並檢查有)

它不應該是必要的,但你可以強制垃圾收集,然後再繼續。

git gc 

,如果你真的偏執,你可以遵循了另一個完整性檢查。使用hg git(請確保您有它安裝在.hgrc啓用),它是很容易做到的一個本地的Mercurial克隆:

hg clone path/to/git/repo path/to/hg/repo 

(這可能需要一些時間 - 你是一個經歷了修訂一個)

現在,hg克隆實際上會有一個內部存儲的git repo的隱藏副本 - 您可以通過在克隆目錄內運行git status來查看此副本。這個隱藏的副本將不會轉移在拉或推,所以如果你真的想擺脫git的遺產,你可以做另一個克隆:

hg clone path/to/hg/repo path/to/new/repo 

如果在某些時候你決定要回去混帳,你也可以做到這一點使用隱藏的混帳回購協議從hg-git

git init path/to/new/git/repo 
cd path/to/new/git/repo 
git pull path/to/hg/repo/.hg/git 

如果你不還有混合回購遊逛,您可以通過地方hg gexport(的hg-git一部分)重新創建或使用的東西如git-hghg/brz-bridge for git。另見Git interoperability with a Mercurial Repository