Git-Repository中的Git-Repository(无子模块)

时间:2014-06-24 18:17:26

标签: git

我想在另一个gitrepository中使用gitrepository。我知道有子模块,但我经常读到它们并不是那么棒。现在我创建了一个git存储库,添加了.gitignore并且只通过白名单接受了一些文件。现在我在其中创建了另一个目录,并使用git init在根存储库中创建了一个新的git存储库。现在它没有任何问题......

我试图想象这种情况:

Root-Repository
- .git
- script.bat
- readme.md
- .gitignore (which ignores everything with * and whitelists !script.bat !readme.md !.gitignore)
- Directory
- - .git
- - .gitignore
- - other files...

我想要实现什么? Root-Repository应该是每个开发人员提取的第一个存储库。然后他运行脚本(git克隆一些项目,添加环境变量,构建依赖项等等。)。

可以,还是有任何缺点?

1 个答案:

答案 0 :(得分:0)

我还没有使用过git子模块,所以我无法比较这两种解决方案。出于类似的原因,我做了类似的事情,区别在于根项目不是git存储库。我的情况是这样的:

ROOT_DIRECTORY    - git_repo_1    - git_repo_2    - ...(更多回购)    - project_build_repository。

项目构建存储库包含用于克隆整个项目和构建的脚本(整个项目是从各个子项目构建的,每个子项目都可以独立构建或使用)。

做这样的事情有一些缺点,你所采取的方法还有一个额外的缺点,这在我所做的变种中并不存在。

一般的缺点是,只要您必须对所有/多个存储库应用操作,您必须手动管理或管理脚本。这会导致各种各样的派生问题 - 你忘了一些东西,你必须维护脚本,你偏离了使用git做事的习惯方式 - 取决于你如何解决根本问题。

你的方法对我的方法的不利之处是含糊不清。一个天真的用户可能会执行git命令(状态,推送等)并期望子模块能够被正确处理,但它们不会。这将使我在前一段中讨论的问题更加复杂。

我不一定会推荐我的方法(我将评估git子模块的使用并在不久的将来比较权衡),但在我的方法中,用户执行以下操作:

  1. 创建项目目录。
  2. 在项目目录中,克隆project_build_repo。
  3. 运行初始克隆脚本,该脚本会检出正确路径中的所有子模块。
  4. 在这种情况下,所有readme等信息都在project_build_repo中。

    祝你好运。