svn2git迁移:规则

时间:2016-05-09 13:55:12

标签: git svn git-svn svn2git

所以我决定在一个可靠的推荐之后使用svn2git工具。为了迁移存储库,我需要authors文件和规则文件以及存储库本身。我编写了这三个,并将它们放在一个目录下,我暂时将其称为myRepository_test。我希望我的新git存储库在迁移后就在这里。

这是我目前拥有的存储库结构:

- myRepository
  -- myRepository.release
  -- myRepository.mapping
  -- myRepository.base
  -- ..

总共我在这里有大约30个项目。

我将共享将要使用的文件:

authormap.txt:

egent = Emma Gent <emma.gent@someDomain.com>
gstar = Gabriel Star <gabriel.star@someDomain.com>
.
.

目前,我只想尝试2个项目,所以:

myRepository.rules:

create repository myRepository
end repository

# main history

match /trunk/myRepository/myRepository.release/
  repository myRepository
  branch master
end match

match /trunk/myRepository/myRepository.mapping/
  repository myRepository
  branch master
end match

# Ignore everything else
match /
end match

发出最后的命令:

./svn-all-fast-export --identity-map authormap.txt --rules myRepository.rules --add-metadata http://address/svn/myRepository

结束为:

Loading rules from: "myRepository.rules" 
Loading rules from "myRepository.rules" 
Could not read the rules file: myRepository.rules
Aborted (core dumped)

我不太确定规则文件的内容,如果有人可以帮我解决这个问题会很好。

提前致谢。

1 个答案:

答案 0 :(得分:1)

你得到的消息并不意味着语法是假的,语法看起来很好。它实际上无法找到或读取文件本身。您是否从svn-all-fast-export文件所在的目录中调用myRepository.rules。您是否已将该文件的读取权限视为您呼叫svn-all-fast-export的用户?

关于规则文件的内容,我认为它不完全正确。您将myRepository.releasemyRepository.mapping的内容存储到存储库的根目录中。如果这是你的意图,那很好。如果没有,您应该在prefix块中使用match规则,以便将内容添加到单独的子目录中。但是,无论如何,在能够成功运行该工具之后,您将看到这一点。

还有一点需要注意,match表达式是正则表达式,因此您可能想要转义.并拥有match /trunk/myRepository/myRepository\.release/。或者,如果你真的想要在同一个文件夹中的内容

match /trunk/myRepository/myRepository\.(release|mapping)/
  repository myRepository
  branch master
end match

或者如果你想要子目录

match /trunk/myRepository/myRepository\.(release|mapping)/
  repository myRepository
  branch master
  prefix \1
end match

match /trunk/myRepository/(myRepository\.(release|mapping))/
  repository myRepository
  branch master
  prefix \1
end match