Ветки перенесенные с svn2git - PullRequest
       1

Ветки перенесенные с svn2git

7 голосов
/ 08 сентября 2010

Этот вопрос может быть связан с тем, что я не понимаю, как ветвление работает технически в SVN и Git.

Но когда я использую svn2git, некоторые ветки находятся в refs / remotes /, а некоторые нет,Например, транк - это /refs/remotes/trunk.

И когда я проверяю основную ветку в новом git-репо, это не ствол svn, а какая-то старая ветка прошлого года (и похоже, что она выбранасовершенно случайно).Теги перемещаются правильно.

Если я смотрю на репозиторий svn в Trac, то выглядит, что макет правильный (ствол, ветви, теги) и ствол указывает на то, где он должен.Также похоже, что ветви, которые отображаются правильно (без удаленных), находятся в .git / config, а остальные нет.

Что здесь происходит и что я должен сделать, чтобы правильно преобразовать репозиторий SVN?Должен ли я просто добавить определения для удаленных веток в .git / config?Это не решило бы проблему со стволом, как бы то ни было.

РЕДАКТИРОВАТЬ: Я только что понял, что удаленные ветви точно такие же, как локальные ветви, с той разницей, что есть локальный филиал "master" и удаленный филиал "remotes / trunk", все остальные 19 филиалов кажутся похожими,Кажется, проблема в том, что мастер указывает не на «remote / trunk», а на случайный коммит.

Это просто ошибка в svn2git?

1 Ответ

0 голосов
/ 16 августа 2011

Это должно быть ошибка. Согласно readme в github для git2svn

и что код, зарегистрированный в master, в конечном итоге становится тем, что в данный момент в вашем стволе SVN, а не в зависимости от того, какая ветка SVN ваш последний коммит был в.

Вы можете попробовать вручную указать ветви вручную, чтобы увидеть, получат ли они более согласованные результаты

 svn2git http://svn.example.com/path/to/repo --trunk trunk --tags tags --branches branches

Если это не сработает, вы можете добавить псевдоним в ваш файл .gitconfig, который вы можете запустить после svn2git, который заменит master на trunk

[alias]
  fixport = !sh -c 'git checkout remotes/trunk trunk && git checkout master && git reset --hard trunk'

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...