一个git仓库中的多个项目?

时间:2011-08-11 22:18:21

标签: git svn

我现在是SVN用户,正在考虑将我的项目转移到git。

我使用一个SVN存储库来保存我创建的所有项目。我的结构是这样的:

/
    /group1
        /subgroup1
            /project1
                /branches
                    ...
                /tags
                    ...
                /trunk
                    ...
            /project2
                ...
        /subgroup2
            /project3
                ...
            /project4
                ...
    /group2
        /subgroup3
            ...
        /subgroup4
            ...
    /lib
        /lib1
        /lib2
        /lib3

如您所见,我将项目保持在组中,/lib包含项目之间共享的库。

我选择了这种排序结构,因为:

  1. 在我学习使用SVN的公司中使用了类似的repo结构。
  2. 允许我在我的计算机上运行svnserve作为服务/守护程序,其上托管了所有项目(我不喜欢文件路径方法)。
  3. 现在......到了这一点。我在想:

    如果我转向git,这种工作流程会如何运作?

    具体做法是:

    1. 将repo树迁移到git是否很简单?
    2. 假设每个项目都需要单独的回购*,我将如何通过svnserve git等价物为所有项目提供服务(理想情况下以类似的方式分组)。
    3. *)我读了git,我明白是这样,但我想与经验丰富的人仔细检查。

3 个答案:

答案 0 :(得分:29)

在Git中,最好让每个项目都在自己的仓库中,如果需要,可以在另一个仓库中使用库,并在每个项目中用作子模块(相当于svn externals)。

这是因为在Git中,repo是一个比SVN更轻量级的概念,而且更重要的是,没有能力像你一样单独在一个repo中克隆单个文件夹(不要与稀疏结账混淆)签出并处理SVN中的各个文件夹。因此,如果您将所有项目都放在一个仓库中,则必须全部克隆它们。

使用smart-http,git守护进程和ssh提供Git repos非常简单。还有Gitolite用于管理多个存储库(包括授权和身份验证)。阅读有关服务Git repos- http://progit.org/book/ch4-2.html

的ProGit链接章节

来到你的分组,你可以根据你的分组结构将repos放在文件夹中,并使用智能http方法服务,其中repo url看起来就像你将用于SVN的url,将是所有项目似乎属于分组等。

答案 1 :(得分:5)

除了其他答案,您还可以使用GitSlave将多个git repos链接在一起。

答案 2 :(得分:1)

可以将所有项目都放在一个存储库中,但这真的很糟糕,因为你总是需要使用整个存储库。

要运行git服务器,如果只需要一个用户(你),那么安装了git和ssh访问权限的服务器就足够了。请参阅示例this article