2012-01-26 52 views
2

我想要做的是有一个名为'lib'的根目录的主repo,内有2个子目录'js'和'html'。在创建基于'lib'的本地/ dev分支时,我需要拉出主'html'目录,但在该目录内我需要最新的'js'目录。 'js'包含我们自己的Javascript库,但也包括第三方:jquery,YUI,Cufon等。理想情况下,我想尽可能从第三方回购协议中提取,尽管如此我可以暂时没有这种生活。在我的情况下,'js'应该与'html'分开,因为其他项目与'html'目录无关,但基于'html'模板的项目总是需要'js ”。Git如何在本地嵌套远程目录?

所以我的问题:

  • 难道我能在 'HTML' 鸟巢 'JS' 的开发/本地分支机构?

read about submodules in this SO questionsparse checkouts,但我不知道如何任一能够达到上述的 - 除非我会克隆“/ lib目录”和稀疏结账“/ lib中/ HTML /模板1 /”的例如,然后在'/ lib/html/template1/js /'里面克隆相同的回购和稀疏结账'/ lib/js'。在这种情况下,我的第二个问题:

  • 如果我窝稀疏签出回购的,当我一个)在较高的水平(提交“/ lib中/ HTML /模板1 /”),并且当我会发生什么在嵌套级别提交('/ lib/html/template1/js /')?这听起来有点狡猾。

当工作完成在当地的分支机构(ES),我们会与Dev分支合并。项目完成后,我们会将开发人员与主人合并。所以第三个问题:

  • 提出的解决方案是否允许上述目录结构和描述的工作流?

图概述了建议的工作流程: Diagram outlining the proposed workflow


我很乐意告诉我有这个概念是扭曲的,但如果是这样,请通过解释为什么帮我,怎么我可能会达到上述目的。我绝对没有Git专业版,我正在尝试与Git合作。

回答

1

注:一个子模块,可以检查出不惜一切分支你需要:你可以在父回购分行A,并在子模块的分支B,母公司回购并不关心。所有父级回购记录都是子模块回购的提交SHA1。

  • 保持lib回购
  • 内三个独立的Git回购(libjshtml
  • 链接jshtml为子模块(:

    使用稀疏结账,但我真的建议这是个诀窍)维护一个单独的lib目录结构,其中包含符号链接htmljs

换句话说:

  • 你克隆lib,并初始化你htmljs回购,这不给你预期的目录结构(你甚至不用内htmljs目录lib,因为你没有更新你的子模块)。
  • 你克隆html并分别
  • 您创建一个单独的目录结构(非GIT)js回购:
    • 符号链接lib克隆回购
    • lib/html被一个符号链接html克隆回购
    • lib/html/js作为符号链接js克隆回购

为了你的父母回购lib(与子模块初始化但不更新)从你的两个子模块检测到的变化,您还可以从你的lib回购符号链接到两个独立的htmljs克隆回购。
这样,您可以使用新更新的两个子模块提交lib回购。

但是,您当前的所有开发都是遵循您的预期组织制定的非git目录结构。

+0

以下是我在哪里:我在github上设置了3个单独的回购站。在本地克隆lib,将js&html添加为子模块。它们出现在本地lib文件夹以及一些Git系统文件中。我认为我的困惑开始于你说连接子模块,但也因为我没有更新我的子模块,所以我没有html和js dirs在lib中 - 但它们实际上在那里......我没有clone html,但是当我将它作为子模块添加到lib时,它将所有html文件都克隆到lib(位于submodule html dir内)。如果这没有发生?我几乎跟着,我会尝试符合上面清楚。 – danjah

+0

@Danjah当我谈到“你克隆lib库并初始化你的'html'和'js' repo”时,我正在谈论一个'lib',其中'html'和'js'已被添加为子模块。即关于“lib”的第二个克隆(在此之后,您在第一个中声明/添加子模块) – VonC