Здесь есть две проблемы: push должен явно потерпеть неудачу, и hg-git должен сообщить об этом (но это не так).
Нажатие должно дать сбой, давая "abort: git remote error: refs/heads/master failed to update" when pushing to local clone
, потому что это толчок крепозиторий non-bare (см. подробнее об этом с точки зрения пользователя 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
.Теперь это работает для меня.Mercurial версия (1.9.1
), кажется, работает нормально.