git-svn多branches路径

最近,由于我的建议,组里采用开发分支与测试分支分离的方案,branches/*为测试分支,branches/dev/*为卡发分支。问题来了,我本地的git-svn把整个dev目录别为一个分支,如何把dev目录底下的目录显示出来呢

背景

最近,由于我的建议,组里采用开发分支与测试分支分离的方案,branches/*为测试分支,branches/dev/*为开发分支。问题来了,我本地的git-svn把整个dev目录别为一个分支,如何把dev目录底下的目录显示出来呢?

方案一(失败)

由于branches目录下,其他分支都是以一个统一前缀开头,通过在git-svn的配置下配置多个branches来实现区分。

branches = ^branches/prefix*:refs/remotes/origin/* # prefix分支统一前缀
branches = ^branches/dev/*:refs/remotes/origin/dev/*

执行git svn fetch,返回Invalid pattern in '^branches/prefix*': prefix的错误,可能是Ubuntu16.04上的版本比较老,不支持这种写法,在arch上是没有问题的。

方案二

依然是多个branches,但是通过ignore-refs参数控制,不让git-svn为dev目录创建分支。

branches = ^branches/*:refs/remotes/origin/*
branches = ^branches/dev/*:refs/remotes/origin/dev/*
ignore-refs = ^refs/remotes/origin/dev

这次成功忽略dev目录,并为dev目录底下目录创建dev/目录名的分支。

其他配置项

在查找解决方案时,研究了一下ignore-paths,include-paths:

  • ignore-paths: 忽略匹配到的路径,优先级比include-paths高
  • include-paths: 包含匹配到的路径,不匹配的路径会被忽略