Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
KDE svn2git规则-定义多个文件夹_Git_Svn_Migration_Kde_Svn2git - Fatal编程技术网

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

KDE svn2git规则-定义多个文件夹,git,svn,migration,kde,svn2git,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 r

我的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 repo中创建所有文件夹,还是svn2git会为我创建这些文件夹?

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

虽然你的规则不正确,但我认为应该是这样的

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

不,您的规则不正确,我可以给您更正的版本,但我需要一些更多的信息。1.文件夹,特别是
文件夹b
主干之间的
文件夹n
是否在名称中有空格?2.您希望每个
文件夹n
都有一个Git repo,还是带有路径前缀的多功能Git repo.3.为什么您要将标记作为分支前缀,而不是直接创建正确命名的标记?如果在单独的存储库中,它们应该位于您直接执行
svn2git
的第一级还是在
repo/Project A/Folder b/
中?我根据我的问题的假设答案添加了一个答案。1.一些文件夹rs在每个级别都有空格,包括文件夹ns中的一些空格。2.最终结果,我想要一个Git repo,里面有许多文件夹,当然在这些文件夹中会有子文件夹。3.我实际上想在Git中创建适当的标记。我只包含这样的规则,因为我在网上看到了一个示例,我确实看到了我不明白规则。
s//
是什么意思?我的SVN repo的结构是:-顶层有许多文件夹和几个文件-每个文件夹都有许多子文件夹和下一层的文件,依此类推。-有些文件夹和文件的名称中有空格。-有些文件夹中有一个主干和标记文件夹,有些没有d有些只是有trunk或tags文件夹。这不是我自己的个人回购协议,而是一个非常混乱的公司回购协议。相信我,它不会像我目前正在处理的那个一样混乱,如果你做得对,规则足以解决混乱问题。:-DIf如果我正确理解你的答案,更新的规则应该可以。空格只是存储库名称中的一个“问题”,因为
svn2git
目前不支持空格。因此,替换规则将空格替换为下划线。感谢更新的规则,我慢慢地了解了它们。前缀规则做了什么?那么在第一条规则中,
prefix\1
是否对应于“项目a”?此外,我的SVN存储库没有任何明确的“分支”文件夹。这是否意味着我不需要第二条规则来匹配分支?