Git从SVN迁移:Git2.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

分支机构也是如此。我认为,这不是它应该是什么…

我该怎么解决?

我认为它非常安全。请注意,您总是可以在移动它们之前创建一个备份。

另一种方法是使用本教程中的步骤。

基本上,你可以做:

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

最新更新