толчок hg-git молча терпит неудачу - PullRequest
12 голосов
/ 14 ноября 2011

Я пытаюсь использовать hg push для git-репозитория, но он молча терпит неудачу.Я обнаружил одно сообщение в списке рассылки и зарегистрированную проблему 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-2, поставляемые с Ubuntu 11.10, и последнюю версию с тегами, 0.3.1.Мой mercurial - версия 1.9.1

Я даже попробовал два предложенных обходных пути: hg update master до принятия и hg bookmark -f master после принятия, но оба дали ошибку.

ОБНОВЛЕНИЕ:

Я создал новый выпуск для этого

1 Ответ

19 голосов
/ 20 декабря 2011

Здесь есть две проблемы: 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), кажется, работает нормально.

...