我们有几个项目正在共享其大部分代码/配置文件。我们使用的框架具有某些目录和文件依赖性,这限制了我们可以分隔多少公共代码。例如,在'common','projectA'和'projectB'之间我们可能有:
/了projectA
/项目B
我们目前使用3个Git项目来管理它:'common','projectA'和'projectB',公共文件被分成他们自己项目中的'common'和项目特定文件。 'projectA'和'projectB'有一个.gitignore,其中包含所有公共目录的条目以及每个共享目录下的所有公共文件。脚本将“common”复制到您要使用的项目中,并在那里进行开发。完成更改后,另一个脚本会将所有常用目录和公共文件复制回“common”。然后可以通过'git status'看到对'common'和项目的更改。
这显然带来了在'共同'之间来回复制,保持.gitignore准确以及在'projectA'和'projectB'内切换分支的麻烦。然而,正如我们计划'projectC-F'一样,这种方法似乎很好,因为我们可以避免将常见的更改合并到N个项目中。
寻求有关如何更好地维护此类结构的建议。由于缺乏隔离,子模块似乎是可以撤销的,除非我们做了很多。我已经看到了一些使用符号链接的有前途的替代方案,但这也伴随着它的问题。任何建议将不胜感激。
答案 0 :(得分:2)
您是否考虑过git子树?
可以这样做:
git remote add common git://server/common.git
git fetch common
git checkout -b common_branch common/master
git checkout master
git read-tree --prefix=common/ -u common_branch
请阅读以下链接中的更多内容:
http://www.kernel.org/pub/software/scm/git/docs/howto/using-merge-subtree.html
答案 1 :(得分:1)
如果您愿意将共享代码放在单独的git存储库中,您可能会对git submodules
感兴趣。子模块允许您在另一个仓库中包含一个git仓库。
以下是几个链接: