git svn rebase всегда переустанавливает мастер?

Я пытаюсь создать репозиторий git с несколькими ветвями, каждая из которых отслеживает другой репозиторий svn. Я хочу, чтобы master был ветвью только для git, а не одной из ветвей svn.

Вот моя первоначальная установка:

$ mkdir repo
$ cd repo
$ git init
$ touch README
$ git add .
$ git commit -m "Initial Commit"
$ git svn init -Rsvn1 --prefix svn1/ svn://...
$ git svn fetch svn1
$ git checkout --track -b svn1 svn1/git-svn

Пока все хорошо: git branch -a показывает мне локальную ветку с именем master (которая содержит только файл README), локальную ветку с именем svn1 (которая содержит мой клон репозитория svn) и ветку remotes/svn1/git-svn . Я могу создать svn2, svn3 и т. д., повторив последние три команды.

Проблема заключается в получении обновлений: если я запускаю «git svn rebase», когда у меня есть svn1, мастер перебазируется вместо svn1. Это происходит, даже если я использую «git svn rebase svn1» или «git svn rebase svn1 svn1».

Есть ли способ заставить git svn rebase оставить моего мастера в покое?


person DougWebb    schedule 07.10.2011    source источник
comment
Я не уверен, что вы должны использовать параметр --track для клонов svn.   -  person the.malkolm    schedule 10.10.2011


Ответы (2)


Если вы просто хотите получать обновления svn без перезагрузки чего-либо, используйте команду git svn fetch. Вы можете использовать git svn fetch --fetch-all для получения обновлений svn из всех определенных репозиториев svn.

Если вы хотите выполнить перебазирование с другой веткой вместо master, сначала переключитесь на другую ветку и только потом выполните git svn rebase. Эта команда перебазируется с текущим HEAD.

person the.malkolm    schedule 09.10.2011
comment
git svn fetch обновляет мои удаленные ветки, но не обновляет мои локальные ветки, которые отслеживают удаленные. Я запускаю git svn rebase, когда моя локальная ветка проверена, а не в мастере. Это та проблема, о которой я спрашиваю. - person DougWebb; 10.10.2011
comment
Дважды проверил на моем хосте. git svn rebase перебазирует текущий HEAD, а не мастер. - person the.malkolm; 10.10.2011

Вам нужно выяснить все ветви, которые у вас есть. Git должен отслеживать удаленные устройства, поэтому перечислите их и найдите тот, который вы хотите перебазировать:

$ git branch -a
* master
remotes/trunk
$ git svn fetch
$ git rebase remotes/trunk
person Filip Dupanović    schedule 17.11.2012