таинственное поведение мерзавца - PullRequest
10 голосов
/ 12 апреля 2011

С тех пор я исправил эту проблему. Но я до сих пор не знаю, почему то, что я сделал, сработало.

У нас есть svn-репозиторий для нашего кода на работе. У меня есть локальный репозиторий git-svn, потому что я <3 Git. :) Мы используем Windows, поэтому я использую Cygwin. Я думаю, что последняя версия в Cygwin - это Git 1.7.0.4. В пятницу я без проблем отправил свой код, ушел домой. Утром в понедельник я вернулся и попытался «git svn rebase», потому что кто-то зафиксировал код на выходных (переигрыватели). </p>

Все началось нормально, а потом вдруг решил, что не может найти багажник. К сожалению, я потерял точное сообщение об ошибке, но он орал о том, что я не найду / refs / remotes / trunk ... и я очень испугался. К счастью, у меня не было незафиксированного кода. Нечего терять. Тем не менее, каждый раз, когда я пытался «git svn rebase» после этого, он зависал всегда, и тогда я получал следующую ошибку:

Невозможно определить восходящую информацию SVN из истории рабочего дерева

Я исследовал это целый день. Я попытался изменить URL-адрес svn-remote с https://xxx.xxx.xxx/xxx/xxx на https://xxx.xxx.xxx/xxx/xxx/ настолько нелепо, как кажется. Затем я сделал 'git svn fetch' ... и он заново извлек весь ствол (все 1682 коммитов). Но ребаз все равно не сработает. Поэтому я отказался от этого дня и решил, что на следующий день я просто создам новый репозиторий и начну все сначала (на это уйдет целый день). Этим утром я пошел задавать вопрос здесь, прежде чем я безоговорочно удалил свой репозиторий. Я сталкивался с этим:

git-svn rebase прошел ужасно неправильно

что не было точно моей проблемой, но я решил попробовать 'git reset --hard trunk', потому что это то, что я хотел. И это сработало. Теперь все хорошо.

Однако.

Почему он это сделал в первую очередь? Насколько я знаю, я ничего не изменил, потому что не был на работе в выходные. Какие вещи вызвали бы эту ошибку? Я предполагаю, что я рассеянно сделал что-то ужасное, но мне нужно знать, что, поэтому я не делаю это снова. :)

Заранее спасибо.

1 Ответ

2 голосов
/ 22 мая 2011

Эта ошибка:

Unable to determine upstream SVN information from working tree history

Похоже, ваша текущая история git вообще не основана на истории svn, и поэтому rebase не может найти общего предка.

Изменяя URL, я думаю, что все коммиты имеют СЛИШКОМ разные сообщения о коммитах и, следовательно, разные хэши sha1, и поэтому ваши старые предки не совпадают с новыми, что приводит к сбою rebase.

Относительно того, почему ствол исчез / вышел из строя, было бы довольно трудно понять, что произошло без сообщения об ошибке.

...