有一个主要的RoR项目和另外两个项目共享主要项目的一些部分 - 模型,插件等。
目前,所有项目都在相同的svn存储库下,共享部件的svn外部。
将这种布局移动到git的最佳方法是什么?
答案 0 :(得分:3)
您将需要每个部件的存储库。 (每个项目和一个或多个共享部分)。
要包含这些共享部分,有两种可能性。
首先,您可以为共享部件创建一个(私有)gem,这意味着您不需要链接任何内容,只需将 gem [gemname] 添加到您的Gemfile即可。更新gem时,所有项目都将使用更改的代码。
如果要在项目中包含外部代码,则需要进行一些组织。您可以创建根映射,以便将共享和项目存储库都克隆到。然后,您创建一个(相对)符号链接到共享代码文件夹。您只需将此符号链接添加到您的git存储库并提交即可。您必须单独更新和提交两个存储库。
第二种方法的一个例子:
- projectfolder
--- shared code
--- project code
----- lib
------- shared (link to shared code)
共享代码的链接由命令 ln -s“../../../shared code”shared
创建当然,这仅适用于支持符号链接的系统(mac和* nix)
答案 1 :(得分:2)
尽管我接受了第一个答案,但我们选择了不同的方法。
由于基本上所有应用程序只是1个项目(前端,后端和api)的不同方面,因此它们共享A LOT因此我们决定将它们全部放入1个存储库和符号链接共享部分(git可以处理它)。
这简化了存储库组织,但稍微使部署脚本复杂化,这对我们来说是很好的权衡。