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
Другие вопросы по тегам