hg-git push无声地失败

时间:2011-11-13 21:53:46

标签: git mercurial hg-git

我正在尝试将hg push用于git存储库,但它会无声地失败。我找到了a single post on the mailing lista registered hg-git issue,但两者都是半年左右没有太多活动。所以我开始认为我误解/错误配置了一些东西。 我的~/.hgrc包含

[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

我尝试了Ubuntu 11.10附带的hg-git 0.2.6-2和最新的标记版本0.3.1。我的好消息是版本1.9.1

我甚至在提交之前尝试了两个提议的解决方法hg update master,并在提交后尝试了hg bookmark -f master,但两者都给出了错误。

更新:

我创建了new issue for this

1 个答案:

答案 0 :(得分:19)

这里有两个问题:push应该明确失败,而hg-git应该报告它(但它没有)。

推送失败,给出"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,并根据0.8网站安装了hg-git。现在,它对我有用。 mercurial版本(1.9.1)似乎工作正常。