代码之家  ›  专栏  ›  技术社区  ›  devth

为项目的变体使用Git分支

  •  3
  • devth  · 技术社区  · 14 年前

    我正在使用Git的分支功能来管理一个小网站的5个变体。有5个版本都将在生产中的不同子目录中。我检查各个分支到各自文件夹的方法是:

    mkdir foo && cd foo
    git init
    git remote add origin git@...:project.git
    git fetch origin foo:foo
    

    其中“foo”是给定的分支名称。这很好,除了它将我的整个repo(设计、as3源等)拉到那些分支文件夹中,而不仅仅是公共的www文件夹,这是我在生产中真正想要的东西。

    有更干净的方法来处理这个吗?Git不能克隆子目录,对吗?

    3 回复  |  直到 14 年前
        1
  •  2
  •   Community rcollyer    7 年前

    DVCS的工作方式(推/拉 全部的 回购)迫使你在 component (coherent set of files ,有自己的提交生命周期)

    你的 www 文件夹应该在您的案例A中 submodule (Git) or subRepo (Mercurial) .
    这样,你就能把一切都拉出来。


    另一个解决方案(如果你想保持回购的方式是)是定义一个特殊的“发布”分支( release_foo 对于 foo )你把所有东西都移走了 万维网 .
    当开发 准备好释放,合并 释放foo 然后移到 那个 分出你不需要的。
    不是一个 理想的 解决方案,但可行。


    我最初忘记提到的最后一个解决方案是从git1.7开始提供的:

    sparse checkout

    克隆存储库后,读取树技巧将存储库的“视图”限制为 只有位于 .git/info/sparse-checkout 文件 .

    在您的情况下,您可以创建一个 .git/info/sparse签出 在更新工作树时,只有该目录(如 )会出现。
    这是另一个解决方案:

    • 允许您保持存储库未被修改
    • 交货前避免任何“维护”工作。
        2
  •  1
  •   Peter Loron    14 年前

    不要把你想保密的东西混入你的可发布产品中。

    我建议您将产品(HTML、PHP、JS、IMG等)与源代码分开。将源保存在一个或多个项目中,并将产品单独保存在另一个项目中。或者,甚至只需使用复制/生成/等源代码输出的构建脚本动态地根据需要构建产品。这样就很容易指出哪些源产生了什么输出。

        3
  •  0
  •   metasim    14 年前

    目前(afaik)Git只克隆整个存储库。可以选择使用单独的存储库进行部署。考虑到Git的灵活性,如果您可以从主开发存储库推/拉,并且只从同一本地将一个分支推到第二个部署存储库,我不会感到惊讶。但我从未尝试过。