首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >hg-git推流静默失败

hg-git推流静默失败
EN

Stack Overflow用户
提问于 2011-11-14 05:53:46
回答 1查看 3K关注 0票数 13

我尝试使用hg push访问git存储库,但它无声无息地失败了。我找到了a single post on the mailing lista registered hg-git issue,但它们都只有半年大,没有太多的活动。所以我开始认为我误解了/错误地配置了一些东西。我的~/.hgrc包含

代码语言:javascript
复制
[extensions]
hgext.bookmarks =
hgext.git =
#hggit = /path/to/hg-git-0.3.1/hggit
[bookmarks]
track.current = True

这段代码重现了这个问题:

代码语言:javascript
复制
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

我既试过Ubuntu11.10附带的hg-git 0.2.6-2,也试过最新的标记版本0.3.1。我的mercurial是1.9.1版

我甚至尝试了两个建议的变通方法,提交前的hg update master和提交后的hg bookmark -f master,但都给出了错误。

更新:

我创建了一个new issue for this

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-20 08:46:01

这里有两个问题:推送应该明确失败,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存储库的使用)。

代码语言:javascript
复制
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附带的最新版本的问题。我所做的是

代码语言:javascript
复制
apt-get remove mercurial-git python-dulwich
easy_install hg-git

它删除了dulwich 0.7.1,并根据hg-git站点安装了所需的0.8。现在,它对我很有效。mercurial版本(1.9.1)似乎运行良好。

票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8115044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档