我现在是SVN用户,正在考虑将我的项目转移到git。
我使用一个SVN存储库来保存我创建的所有项目。我的结构是这样的:
/
/group1
/subgroup1
/project1
/branches
...
/tags
...
/trunk
...
/project2
...
/subgroup2
/project3
...
/project4
...
/group2
/subgroup3
...
/subgroup4
...
/lib
/lib1
/lib2
/lib3
如您所见,我将项目保持在组中,/lib
包含项目之间共享的库。
我选择了这种排序结构,因为:
svnserve
作为服务/守护程序,其上托管了所有项目(我不喜欢文件路径方法)。现在......到了这一点。我在想:
如果我转向git,这种工作流程会如何运作?
具体做法是:
svnserve
git等价物为所有项目提供服务(理想情况下以类似的方式分组)。*)我读了git,我明白是这样,但我想与经验丰富的人仔细检查。
答案 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。