我正在尝试为庞大的SVN存储库设置subgit
。这个存储库很老,所以为了整理一下这个结构,我想为各个子目录制作单独的git-repositories。
假设SVN位于/svn
并且具有子目录project1
,project2
等。
这有效
$ subgit configure --svn-url file:///svn/ git.git
$ subgit install git.git
这也有效,但会创建一个空的存储库
$ subgit configure --svn-url file:///svn/project1/ /tmp/project1.git
$ subgit install /tmp/project1.git
[...]
Translating Subversion revisions to Git commits...
Subversion revisions translated: 6563.
Total time: 1 seconds.
INSTALLATION SUCCESSFUL
[...]
$ git clone /tmp/project1.git
Cloning into 'project1'...
warning: You appear to have cloned an empty repository.
done.
在SVN中,实际上有project1
内的文件。为什么它不适用于subgit,我该如何解决?
答案 0 :(得分:2)
请注意,在运行subgit configure
之后和运行subgit install
之前,您必须在$GIT_REPO/subgit/config
调整配置文件。默认情况下,SubGit会在那里生成以下选项:
[svn]
url = file:///svn/project1
trunk = trunk:refs/heads/master
branches = branches/*:refs/heads/*
tags = tags/*:refs/tags/*
shelves = shelves/*:refs/shelves/*
我想你的Subversion存储库有一些非标准的布局;在这种情况下,您必须正确指定分支和标签选项,因此SubGit可以正确检测和转换它们。
如果您可以列出 file:/// svn / project1 目录的子项并帮助我描述如何在此存储库中创建和合并分支和标记,这将对我有所帮助。
E.g。如果整个项目只有一个分支,并且该分支是 file:/// svn / project1 ,那么您可以使用以下选项:
[svn]
url = file:///svn/
trunk = project1:refs/heads/master
branches = branches/project1/*:refs/heads/*
tags = tags/project1/*:refs/tags/*
shelves = shelves/project1/*:refs/shelves/*
请在SubGit Book中找到有关配置和安装阶段的更多信息。
希望有所帮助。