KDE svn2git规则 - 定义多个文件夹

时间:2018-01-30 14:56:30

标签: git svn migration kde svn2git

我有以下SVN结构:

- Project A
  - Folder 1
    - Folder a
    - Folder b
      - Folder 1
        - trunk
        - tags
          ...
      - Folder n
        - trunk
        - tags
  - Folder 2
  - Folder 3
- Project B

在为svn2git编写KDE匹配规则方面,如下正确:

create repository repo
end repository

match Project A/Folder 1/Folder b/([^/]+)/trunk/([^/]+)/
  repository repo/Project A/Folder b/([^/]+)
  branch master
end match

# Add a prefix to all tag branches so we can fix them later.
match Project A/Folder 1/Folder b/([^/]+)/tags/([^/]+)/
  repository repo/Project A/Folder b/([^/]+)
  branch tag--\1
end match

# Ignore all other directories.
match /
end match

另外,我是否必须事先在我的Git仓库中创建所有文件夹,或者svn2git会为我做这件事吗?

1 个答案:

答案 0 :(得分:1)

svn2git将为您创建目录,但您必须在规则文件中明确定义存储库。如果您引用了一个注释定义的存储库(例如,因为匹配正则表达式匹配了您没有创建的内容,那么迁移将停止并显示错误消息。

你的规则不正确,我认为应该更像

create repository repo
end repository

match /(Project A/Folder 1/Folder b/[^/]+/)trunk/
  repository repo
  prefix \1
  branch master
end match

match /(Project A/Folder 1/Folder b/[^/]+/)tags/([^/]+)/
  repository repo
  prefix \1
  branch refs/tags/\2
end match

# Ignore all other directories.
match /
end match