【发布时间】:2013-11-25 12:23:46
【问题描述】:
我有一些结构简单的 SVN 存储库的旧转储:
trunk/src/
folder1/
folder2/
folder3/
...
我知道每个 folder 实际上是一个单独的项目,所以我想将这个 svn repo 克隆到 git 中,但将每个 folder 拆分到单独的 git 存储库中并保留历史记录。我该怎么做?
我不需要魔法循环脚本。我可以手动命名每个文件夹。我只想知道如何将特定文件夹从 svn 克隆到新的 git 存储库中保存历史记录。
[更新]
我只有一个 SVN 存储库的转储,没有 SVN 服务器。所以我做不到
git svn clone svn://path/to/my/trunk/src/folder1
我正在使用
git svn clone file://path/to/my/dump
[我试过的]
我使用svnadmin 创建了一个svn 转储文件,然后使用svndumpfilter 仅过滤掉我需要的文件夹。我设法将原始 svn 转储拆分为单独的文件,每个文件一个 folder。
svnadmin dump /svn/old_repos > ./repository.dump
svndumpfilter include /trunk/scr/folder1
--drop-empty-revs
--renumber-revs
--preserve-revprops
< ./repository.dump > ./folder1.dump
我尝试使用git svn clone file:///path/to/my/folder1.dump,但出现此错误:
Couldn't open a repository:
Unable to open an ra_local session to URL:
Unable to open repository `file://path/to/my/filtered/dump/folder1.dump`
at /usr/lib/git-core/git-svn line 2143
看起来转储文件已损坏。我尝试了svndump load /repos/folder1 < /path/to/my/folder1.dump,但又遇到了另一个错误,这次来自 svnadmin:
svnadmin: File not found: transaction `0-0`, path `trunk/src/folder1
有什么想法吗?
【问题讨论】:
-
转储 SVN 存储库?如
svnadmin dump?当我遇到这个问题时,我设置了临时的本地 SVN 存储库,将转储导入那里,然后运行 git svn clone。 -
@Vi。 SVN repo 的转储 - 如
cp -r /path/to/repo/root /some/other/place:) -
所以尝试使用常规的 Subversion 工具检查(或打印信息
svn info)您要克隆的目录,然后,当您确定我们正确的路径语法时,将其插入到git svn clone.