我有一个大型 svn 存储库,我正在尝试迁移到 git。现在我正在努力使用 --ignore-paths 和 git-svn 来过滤一些路径。
我有这个存储库:https://svn.host.co.mz/svn/sistemas 然后我有一个名为project1的项目,在project1内我有两个分支。 在开发内部,我有一个名为 archive、dev_demo 和 sprints 的目录。
项目1
项目2
我只想克隆和获取开发内部的 sprint 和 dev_demo,但它总是带有存档路径。
我尝试实现下面的 .git/config 但它不起作用。
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[svn-remote "svn"]
url = https://svn.host.co.mz/svn/sistemas/project1
fetch = :refs/remotes/origin/project1
ignore-paths = ^branches/development/(archive|[^/]*/archive)/
我想要一个与我的路径结构匹配并排除存档目录的正则表达式。
如果 svn 存储库包含“太多东西”,但您确切地知道自己需要什么 - 让我建议将方法从“减法”更改为“加法”。应该更干净、更容易理解。
我的意思是,不要试图用忽略来过滤掉垃圾,而是明确地列出你需要的内容:
[svn-remote "svn"]
# NOTE: it should point to svn repo root, ↓↓↓ no /project1 here
url = https://svn.host.co.mz/svn/sistemas
# ↑↑↑
branches = project1/{development,production}:refs/remotes/project1/branches/*
fetch = project2/production:refs/remotes/project2/branches/production
fetch = project2/dev-demo:refs/remotes/project2/branches/development/dev_demo
branches = project2/sprints/*:refs/remotes/project2/branches/development/sprints/*
文档 --> https://git-scm.com/docs/git-svn <--
还可以通过在大括号内使用逗号分隔的名称列表来获取分支或标签的子集
支持多个
、fetch
和branches
键tags