布局是:
Branches\
Project1/
Branch11/
...
Branch1N/
Project2/
Branch21/
ProjectX/ # not anywhere else
Excluded1\
Excluded2\
Excluded3\
Excluded4\
Programs\
Excluded11\
...
Excluded1N\
Project1/ # the main one
Project2/
...
ProjectN/
Tags\
Project1/
Release1/
...
Release69/
排除我设法排除 - 但我完全无法理解如何将分支/标签映射到 git 分支/标签 - 最好是事后(每个克隆需要约 5 小时)。
请记住,我是 SVN 的新手——我不知道也不了解分支/标记系统。
我在windoz上-svn2git是没有选择的(无论如何我对克隆后如何执行此操作感兴趣,或者更糟糕的是再次克隆但仅使用香草git )
而且我不打算将其作为永久迁移,它将充当桥梁在 SVN 和 dev 中使用的新 git repo 之间 - 所以我想保留尽可能多的信息 - 但不超过需要。在某些时候它可能会变成永久性的——我猜我需要在哪里过滤掉空提交(到被排除的项目)(?)
命令 :
$ git svn clone --ignore-paths="^(?:Releases|Projects|Scripts|Games|)/|^Programs/(?:Nif Scanner|Nif Viewer|Raziel23x's Oblivion Toolset|Shader Disasm|Shader Editor)/" --authors-file=authors_with_emails.txt svn://svn.code.sf.net/p/oblivionworks/code/。
克隆后我有:
$ git branch -r
git-svn
$ git branch
* master
回顾:我已经克隆了不包括我想要排除的东西 - 现在我想对 git 说“为这些 svn 分支中的每一个创建一个 git 分支 - 一个真正的 git 分支,它计算增量并压缩它们并删除文件夹Branches
- 和跟踪它们 - 这个(700 mb)标签目录只是标签 - 你能做些什么(他们做不是对应于提交)?”
我看不到邪恶的树干
我的config
:
[core]
repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = true
symlinks = false
ignorecase = true
hideDotFiles = dotGitOnly
[svn-remote "svn"]
ignore-paths = ^(?:Releases|Projects|Scripts|Games|)/|^Programs/(?:Nif Scanner|Nif Viewer|Raziel23x's Oblivion Toolset|Shader Disasm|Shader Editor)/
url = svn://svn.code.sf.net/p/oblivionworks/code
fetch = :refs/remotes/git-svn
[svn]
authorsfile = authors_with_emails.txt
[gui]
wmstate = zoomed
geometry = 787x377+54+59 305 1127
[remote "github"]
url = https://github.com/Utumno/wrye_bash_refactoring.git
fetch = +refs/heads/*:refs/remotes/github/*
[branch "master"]
remote = github
merge = refs/heads/master