首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >svn2git无法正确导入标记

svn2git无法正确导入标记
EN

Stack Overflow用户
提问于 2013-11-22 09:04:18
回答 2查看 1.4K关注 0票数 2

我有一个SVN-repository,我想把它转换成git-repository。我正在使用svn2git来实现这一目标。不幸的是,这个工具似乎在正确的标记上遇到了问题。我的SVN-repository看起来如下:

代码语言:javascript
复制
.../branches
.../tags
        project-version-5.2.5/
        project-version-5.3.0/
        project-version-5.3.1/
        project-version-5.4.0/
        project-version-5.5.0/
        project-version-5.5.1/
        project-version-5.5.2/
        project-version-5.5.3/
        project-version-5.5.4/
        project-version-5.6.0/
        project-version-5.6.1/
        project-version-5.6.2/
        project-version-5.6.3/
        project-version-5.6.4/
        project-version-5.6.5/
        project-version-5.6.6/
        project-version-6.0.0/
        project-version-6.0.1/
        project-version-6.0.2/
        project-version-6.1.0/
        project-version-6.1.1/
        project-version-6.1.2/
        project-version-6.2.0/
        project-version-6.2.1/
.../trunk

但是git存储库并不代表这一点。这些标签如下所示:

代码语言:javascript
复制
bash:~$ git tag
project-version-5.2.5
project-version-5.3.0
project-version-5.3.1
project-version-5.3.1@3812 <-- I have no idea, where that is coming from...
project-version-5.4.0
project-version-5.5.0
project-version-5.5.1
project-version-5.5.2
project-version-5.5.3
project-version-5.5.4
project-version-5.6.0
project-version-5.6.1
project-version-5.6.2
project-version-5.6.3
project-version-5.6.4
project-version-5.6.5

注意丢失的标签。由于某些原因,它们存储为远程分支:

代码语言:javascript
复制
bash:~$ git branch -r
  svn/tags/project-version-5.6.5@4990 <-- Yay, random numbers!
  svn/tags/project-version-5.6.6
  svn/tags/project-version-5.6.6@5620 <-- And another one. 
  svn/tags/project-version-6.0.0
  svn/tags/project-version-6.0.1
  svn/tags/project-version-6.0.2
  svn/tags/project-version-6.1.0
  svn/tags/project-version-6.1.1
  svn/tags/project-version-6.1.2
  svn/tags/project-version-6.2.0
  svn/tags/project-version-6.2.1
  svn/trunk

这里发生了什么事?

编辑:我忘记添加命令:svn2git http://path/to/repository --no-minimize-url --verbose --username='username' --trunk trunk --nobranches --tags tags

Edit2:我刚刚检查并发现,看似随机的数字实际上是SVN-repository中的修订,而标签是由它生成的。奇怪的是,在20种标签中,只有3种得到了修改.

Edit3:很明显,这个问题与包含"的一个标记的注释有关。在该标记之后的所有标记都保存为分支,因为svn2git不会转义"并尝试执行以下操作

代码语言:javascript
复制
git tag -a -m "blablabla "blablabla"." "project-version-5.6.5@4990" "svn/tags/project-version-5.6.5@4990"

因为明显的原因而失败了。我仍然不知道,为什么有些标签会添加修改号。如果有人对如何解决这个问题有任何建议的话,我将非常感谢。

Edit4:我找到了逃逸问题的解决方案。svn2git-source中的转义函数只是一种weird...It,它只能用'\''替换单引号(')。我受够了..。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-22 13:01:57

我通过增加双引号转义来解决这个问题。由于这个更改已经在github上被建议,所以我没有启动另一个请求。尽管对于下一个有同样问题的人,下面是我所做的:

  1. locate migration.rb --在我的例子中,这是在/var/lib/gems/1.9.1/gems/svn2git-2.2.2/lib/svn2git/migration.rb
  2. 查找escape_quotes()的定义(当前可在335-337行中找到)
  3. .gsub("\"", "\\\"")添加到主体中

我希望这能帮助有同样问题的人:)

票数 1
EN

Stack Overflow用户

发布于 2016-01-12 08:15:59

当我还想知道那些@nnn标记时,我发现了这个问题。因此,如果其他人正在寻找相同的信息,这将在git svn手册中进行描述。

如果将git svn配置为获取分支(并且--跟踪分支有效),它有时会为一个SVN分支创建多个Git分支,其中附加分支具有表单分支名@ nnn (带有nnn和SVN修订号)的名称。如果git svn无法为SVN分支中的第一个提交找到父提交,则创建这些附加分支,以便将分支连接到其他分支的历史记录。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20140827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档