1

我正在尝试建立subgit一个巨大的 SVN 存储库。这个存储库很旧,所以为了稍微整理一下结构,我想为各个子目录创建单独的 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,我该如何解决?

4

1 回答 1

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目录的子目录并描述如何在此存储库中创建和合并分支和标签,这将对我有所帮助。

例如,如果整个项目只有一个分支并且这个分支是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中找到有关配置和安装阶段的更多信息。

希望有帮助。

于 2013-11-25T13:12:46.817 回答