Git: как работает git svn fetch?


Как работает git svn fetch? Где находится та ветвь, которая извлекается, чтобы я мог слиться или перебазироваться с моим мастером или другой ветвью? Откуда берутся данные, потому что git remote ничего не дает мне в моем хранилище git svn?

3 13

3 ответа:

Вот как работает git svn fetch:

При использовании git-svn у вас нет remotes сервера svn, как у вас есть при использовании git, у вас просто есть ссылка на удаленный svn сервер в вашем локальном .файл gitconfig .

Если вы хотите обновить текущую ветвь до последней редакции, вы можете использовать git svn rebase. Но если ваш проект svn большой, вы можете оказаться в ситуации, когда вы не знаете, является ли ваша последняя версия успешной сборкой. А если ты ... хотите обновить до определенной ревизии, которая, как вы уверены, является успешной сборкой, например, вы используете Jenkins, который дает вам последнюю успешную сборку, вы должны сначала извлечь в нужную ревизию, а затем перебазировать с извлеченными коммитами.

Для этого можно git svn fetch -r <revision>. Это приведет к локальному извлечению коммитов до нужной ревизии. Для перебазирования полученных данных необходимо использовать git svn rebase -l или git svn rebase --local. Вам не нужно быть онлайн, чтобы сделать локальную перебазировку.

По умолчанию ветвь отслеживания git-svn является remotes/git-svn, вы можете использовать ее для объединения или перебазирования своей работы поверх изменений, полученных с помощью git svn fetch.

Инструмент git-svn, к сожалению, на самом деле не превращает удаленные ветви SVN в настоящие git remotes. Они выглядят как пульты дистанционного управления, но на самом деле они не функционируют как пульты дистанционного управления. git-svn отслеживает ветви внутри, и я тоже нашел это немного разочаровывающим.

Однако вы можете ветвиться от ветвей SVN или сливаться с ними. Запустите git branch -r, чтобы просмотреть все удаленные ветви отслеживания, включая псевдо-ветви, созданные git-svn:
$ git branch -r
svn/SVNBranch1
svn/SVNBranch2
$ git checkout -b branch1 svn/SVNBranch1