13

git リポジトリを使用しようとしてhg pushいますが、黙って失敗します。メーリング リストで 1 つの投稿登録済みの 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

hg-git 0.2.6-2Ubuntu 11.10 に同梱されているものと、最新のタグ付きバージョンの両方を試しまし0.3.1た。私のmercurialはバージョン1.9.1です

hg update masterコミット前とコミット後に、提案された 2 つの回避策を試してみhg bookmark -f masterましたが、どちらもエラーが発生しました。

アップデート:

このために新しい問題を作成しました

4

1 に答える 1

19

ここには2つの問題があります。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、取り付けを行いました。今、それは私のために働きます。Mercurialバージョン()は正常に機能しているようです。0.8hg-git1.9.1

于 2011-12-20T00:46:01.130 に答える