Git move from SVN: Где git 2.6 хранит ветки отслеживания SVN?
У меня есть задача переместить проект из SVN в Git, и я следовал учебному руководству в https://git-scm.com/book/it/v2/Git-and-Other-Systems-Migrating-to-Git. Хорошая мысль: это сработало! Грустный момент, учебник кажется устаревшим, когда речь идет о перемещении удаленных ссылок для тегов и веток.
Учебник утверждает, что они хранятся в
.git/refs/remotes/origin/tags/*
однако в моем SVN-клоне этот каталог пуст. Кажется, они хранятся в
.git/svn/refs/remotes/origin/tags/*
То же самое для филиалов, я ожидал их в
.git/refs/remotes/
но нашел их в
.git/svn/refs/remotes/
Итак, мой вопрос к вам сейчас: безопасно ли следовать учебному пособию, но заменить соответствующие пути на тот, который я нашел?
Изменить 1:
Предполагая, что это действительно безопасно, я скопировал ссылки на их новое место назначения. К сожалению, это не работает для меня:
$ git tag --list
$
Хотя папка .git/ref/tags/
не пусто Там я нахожу теговые папки со следующими файлами:
-rw-r--r-- 1 delo 1049089 96 Nov 12 10:00 .rev_map.9585454d-0aa9-4b53-3453-ca0f383a6637
-rw-r--r-- 1 delo 1049089 247K Nov 12 10:00 index
-rw-r--r-- 1 delo 1049089 24 Nov 12 10:00 unhandled.log
То же самое для филиалов. Я думаю, это не то, что должно быть...
Как мне это исправить?
1 ответ
Я думаю, что это довольно безопасно. Обратите внимание, что вы всегда можете создать резервную копию перед их перемещением.
Другой подход заключается в использовании шагов из этого урока.
По сути, вы можете сделать:
for tag in `git branch -r | grep "tags/" | sed 's/ tags\///'`; do
git tag -a -m"Converting SVN tags" $tag refs/remotes/$tag
done