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