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

Mic*_*l M 21 svn git

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

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

/
    /group1
        /subgroup1
            /project1
                /branches
                    ...
                /tags
                    ...
                /trunk
                    ...
            /project2
                ...
        /subgroup2
            /project3
                ...
            /project4
                ...
    /group2
        /subgroup3
            ...
        /subgroup4
            ...
    /lib
        /lib1
        /lib2
        /lib3
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我将项目保存在组中,并/lib包含项目之间共享的库.

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

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

现在......到了这一点.我在想:

如果我要转向git,这种工作流程将如何工作?

特别:

  1. 将repo树迁移到git会很简单吗?
  2. 假设每个项目都需要单独的repo*,我将如何通过svnservegit等效服务所有项目(理想情况下以类似的方式分组).

*)我读了git,我明白是这样,但我想与有经验的人仔细检查.

man*_*lds 29

在Git中,最好将每个项目放在自己的repo中,如果需要,可以将库放在另一个repo中,并在每个项目中用作子模块(相当于svn externals).

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

服务Git repos,使用smart-http,git守护进程和ssh非常简单.还有Gitolite用于管理多个回购(包括授权和认证).在服务Git repos- http://progit.org/book/ch4-2.html上阅读关于ProGit的链接章节

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


Cod*_*ike 5

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