2015-11-12 7 views
1

У меня есть задача переместить проект из SVN в Git, и я следил за учебником в https://git-scm.com/book/it/v2/Git-and-Other-Systems-Migrating-to-Git. Хороший момент: это сработало! Печальный момент, урок кажется устаревшим, когда дело доходит до перемещения удаленных ссылок на теги и ветки.Git move from SVN: Где git 2.6 хранит ветви отслеживания svn?

В учебник состояния, что они хранятся в

.git/refs/remotes/origin/tags/*

однако, в моем SVN клон, этот каталог пуст. Кажется, что они хранятся в

.git/svn/refs/remotes/origin/tags/*

же для филиалов, я ожидал, что они в

.git/refs/remotes/

но нашел их в

.git/svn/refs/remotes/

Итак, мой вопрос вы сейчас: безопасно следовать учебнику, но заменять соответствующие пути с одним, я нашел?

Edit 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 

То же самое касается ветвей. Я думаю, это не то, что должно быть ...

Как это исправить?

ответ

0

Я думаю, что это довольно безопасно. Обратите внимание, что вы всегда можете создать резервную копию, прежде чем перемещать их.

Другой подход заключается в использовании шагов от this учебника.

В принципе, вы можете сделать:

for tag in `git branch -r | grep "tags/" | sed 's/ tags\///'`; do 
    git tag -a -m"Converting SVN tags" $tag refs/remotes/$tag 
done 
+0

Этот учебник, кажется, устаревают, а также. «$ Tag» будет называться 'origin/tags/1.0.0', а не' 1.0.0'. Однако он дал понять, как это исправить. –

+0

Да, это не последнее, но концепция остается в силе. Вы также можете разделить исходный/тег, выполнив: 'sed '/ origin \/tags \ ///'' – dan

+0

, когда вы разделите 'origin/tags', вы должны добавить его в' refs/remote/$ tag' поэтому он становится: 'ref/remote/origin/tags/$ tag', иначе вы получите' fatal: не удалось разрешить 'refs/remotes/MyTag' как действительный ref'. Так что теперь я получил теги. К сожалению, веткам не так-то просто, поскольку нет путей 'branch /'. Филиалы расположены непосредственно под 'origin /'. Есть идеи? –

 Смежные вопросы

  • Нет связанных вопросов^_^