13

我正在尝试使用hg pushgit 存储库,但它默默地失败了。我在邮件列表中找到了一个帖子一个已注册的 hg-git 问题,但两者都大约半年没有太多活动。所以我开始认为我误解/错误配置了一些东西。我的~/.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

我尝试了hg-git 0.2.6-2Ubuntu 11.10 和最新的标记版本0.3.1. 我的 mercurial 版本是 1.9.1

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

更新:

为此创建了一个新问题

4

1 回答 1

19

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

推送应该失败,"abort: git remote error: refs/heads/master failed to update" when pushing to local clone因为它是对非裸存储库的推送(从 mercurial 用户的角度查看更多信息)。上述代码片段的工作版本是这个(注意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站点需要安装。现在,它对我有用。善变的版本 ( 1.9.1) 似乎工作正常。

于 2011-12-20T00:46:01.130 回答