配置SVN内单个目录的子目录

时间:2013-11-25 09:54:03

标签: git svn subgit

我正在尝试为庞大的SVN存储库设置subgit。这个存储库很老,所以为了整理一下这个结构,我想为各个子目录制作单独的git-repositories。

假设SVN位于/svn并且具有子目录project1project2等。

这有效

$ 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,我该如何解决?

1 个答案:

答案 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中找到有关配置和安装阶段的更多信息。

希望有所帮助。