2011-11-13 84 views
12

我正在嘗試使用hg push到git存儲庫,但它默默地失敗。我發現a single post on the mailing lista registered hg-git issue,但都是大約半年沒有太多活動。所以我開始認爲我誤解/錯誤配置了某些東西。 我~/.hgrc包含hg-git默默推送失敗

[extensions] 
hgext.bookmarks = 
hgext.git = 
#hggit = /path/to/hg-git-0.3.1/hggit 
[bookmarks] 
track.current = True 

這個片段重現問題:

mkdir /tmp/Git 
cd /tmp/Git 
git init 
echo 'something' > myfile 
git add . 
git commit -m 'Started' 
cd .. 
hg clone /tmp/Git /tmp/Hg 
cd /tmp/Hg 
echo 'another thing' >> myfile 
hg ci -m 'Working' 
hg log 
# Two items listed 
hg push 
cd ../Git 
git log 
# Only one item listed, but two expected 

我都嘗試hg-git 0.2.6-2附帶的Ubuntu 11.10,以及最新的標記的形式,0.3.1。我的mercurial是版本1.9.1

我甚至嘗試了兩個建議的解決方法,hg update master之前承諾,和hg bookmark -f master承諾後,但都給出了一個錯誤。

UPDATE:

我創建了一個new issue for this

回答

19

這裏有兩個問題:推應該明確地失敗,HG-混帳應該報告(但事實並非如此)。

推送失敗,給"abort: git remote error: refs/heads/master failed to update" when pushing to local clone,因爲它是推送到非裸倉庫(請參閱more on that from a mercurial user's perspective)。上面的代碼片段的工作版本是這樣的(請注意使用Bare存儲庫)。

mkdir /tmp/Git 
cd /tmp/Git 
git init 
echo 'something' > myfile 
git add . 
git commit -m 'Started' 
cd .. 
git clone --bare -l /tmp/Git /tmp/Bare 
hg clone /tmp/Bare/ /tmp/Hg 
cd /tmp/Hg 
echo 'another thing' >> myfile 
hg ci -m 'Working' 
hg log 
# Two items listed 
hg push 
cd ../Bare 
git log 
# Two items listed 

至於,爲什麼hg-git隱藏這個錯誤,我懷疑這是用隨Ubuntu的最新版本中的問題。我所做的是

apt-get remove mercurial-git python-dulwich 
easy_install hg-git 

它可以除去dulwich 0.7.1,並安裝它根據hg-git網站需要0.8。現在,它適用於我。 mercurial版本(1.9.1)似乎工作正常。