没有自己的文件夹的git子模块

时间:2012-08-25 14:58:13

标签: git

我想制作项目的一些部分,比如我的jQuery插件外部。为此目的我正在研究子模块。 它们看起来非常完美,因为它们可以在一个集中点进行管理和更新。我唯一的问题是,他们克隆到一个文件夹。 这让我有了这样的结构。

/js
   /plugin_one
      plugin_one.js
   /plugin_two
      plugin_two.js

我想要的更像是这样。

/js
   plugin_one.js
   plugin_two.js

子模块是否可以实现,或者我使用了错误的工具?

干杯。

1 个答案:

答案 0 :(得分:1)

子模块非常适合将几个repo链接到一组固定的配置中(即SHA1的集合代表每个子模块的固定集合,由其父代repo记录)

但是,它们总是克隆在自己的目录中 他们也有很多其他的gocha(参见" Why your company shouldn’t use Git submodules")。

解决这个问题的一种方法是维护两组不同的工作树:

一个没有版本,一起包含所有文件。 一个正常克隆的repos(即子模块在他们自己的目录中)。

你可以完成所有正常操作,但是:

    每个git命令的
  • --git-tree选项,--git-tree指向第一个集合( all 其中包含文件的那个
  • 足够完整.gitignore能够忽略任何不属于其特定回购的文件。

这不是很令人满意,并指出子模块(即使在提供它们的其他VCS中--Hg和subrepos,ClearCase和UCM组件......)应该保持独立。

因此,共享一个JQuery插件可能首先需要对文件组织进行一些重新思考,以确定这些文件是否确实可以被视为"子模块"。