Git -svn: не удается настроить информацию отслеживания; отправной точкой является не ветка

В git 1.7.9.5 Я могу запустить следующие строки без ошибок:

export SVNPASS=readonly
git clone [email protected]:dtenenbaum/RGalaxy.test.git
cd RGalaxy.test/
git config --add svn-remote.hedgehog.url https://hedgehog.fhcrc.org/bioconductor/trunk/madman/Rpacks/RGalaxy
git config --add svn-remote.hedgehog.fetch :refs/remotes/hedgehog
# the following is a shortcut to avoid fetching every commit since antiquity, since I happen to know the commit number
# where this folder was added to svn:
echo $SVNPASS | git svn fetch --username readonly hedgehog -r 65762:HEAD
git checkout -b local-hedgehog -t hedgehog

В git 1.8.3.4 и 1.8.4.1 последняя строка приводит к:

fatal: Cannot setup tracking information; starting point 'hedgehog' is not a branch.

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

Кстати, "git branch -a" возвращает:

* master
  remotes/hedgehog
  remotes/origin/HEAD -> origin/master
  remotes/origin/master

Ответ 1

Это не считается ошибкой разработчиков git -svn. По сути, это результат исправления ошибок в v1.8.3.2. Настройка локального local-hedgehog для отслеживания git -svn hedgehog больше не будет работать.

Отныне просто делая

git checkout -b hedgehog remotes/hedgehog

достаточно, чтобы выполнить все ваши обычные операции git -svn (git svn rebase, git svn dcommit и т.д.).

Вот объяснение Йохана Херланда:

До v1.8.3.2 это все еще сортировка работ (как вы видите ниже) потому что код не понимает, что пульт недействителен и падает к установке branch.feat-bar.remote = "." (т.е. текущее репо). Эта может показаться хорошей практикой, пока вы не поймете, что "git push" назад к этому недопустимому восходящему потоку с радостью будет перезаписано refs/remotes/(mirror/) feat-bar и, следовательно, нарушают внутреннее состояние git -svn.

Эта ошибка была исправлена ​​в v1.8.3.2, более конкретно 41c21f22 (branch.c: Проверять ветки отслеживания с помощью refspecs вместо refs/remotes/*), и вы можете узнать больше об обосновании этого сообщения.

Конечный результат для вас заключается в том, что настройка локального feat-bar для отслеживания git -svn feat-bar больше не будет приниматься после обновления до >= v1.8.3.2. Правильный способ настроить локальную ветку feat-bar для работы top of git -svn feat-bar вместо этого отказывается от отношения вверх по течению и просто выполните "git checkout -b feat-bar refs/remotes/(mirror/) feat-bar".

Если вы хотите получить более подробную информацию, я предлагаю прочитать его весь пост.

Ответ 2

В SourceTree просто снимите флажок с галочкой "Локальная ветка должна отслеживать удаленную ветку".

Ответ 3

Я использую это: git branch --set-upstream remotes/git -svn