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

通过git子模块管理厨师食谱

  •  1
  • aphexlog  · 技术社区  · 7 年前

    目前,我正在尝试通过git子模块管理我所有的烹饪书,我只是想确保我在组织它的方式上不会有任何未来的问题。

    我考虑到,从可管理性的角度来看,将所有回购放在一个篮子(单个厨师回购)中是很流行的,但我也不想告诉我的开发人员,在执行厨师运行测试之前,他们必须单独管理和拉/克隆每个回购他们的代码(我们也在使用berks和一个chef服务器)。

    因此,以下git子模块策略是我的解决方案:

    chef-repo < main >
    ├── chef-repo/LICENSE
    ├── chef-repo/README.md
    ├── chef-repo/chefignore
    ├── chef-repo/cookbooks
    │   ├── chef-repo/cookbooks/README.md
    │   ├── chef-repo/cookbooks/active-directory < submodule >
    │   │   ├── chef-repo/cookbooks/active-directory/Berksfile
    │   │   ├── chef-repo/cookbooks/active-directory/attributes
    │   │   │   └── chef-repo/cookbooks/active-directory/attributes/default.rb
    │   │   │   ├── chef-repo/cookbooks/active-directory/libraries/cmd_helper.rb
    │   │   ├── chef-repo/cookbooks/active-directory/recipes
    │   │   └── chef-repo/cookbooks/active-directory/resources
    │   │       ├── chef-repo/cookbooks/active-directory/resources/computer.rb
    │   ├── chef-repo/cookbooks/example
    │   ├── chef-repo/cookbooks/java < submodule >
    │   │   ├── chef-repo/cookbooks/java/Berksfile
    │   │   ├── chef-repo/cookbooks/java/recipes
    │   │   ├── chef-repo/cookbooks/java/templates
    │   ├── chef-repo/cookbooks/redhat_subscription_manager < submodule >
    │   └── chef-repo/cookbooks/windows < submodule >
    ├── chef-repo/data_bags
    ├── chef-repo/environments
    ├── chef-repo/roles
    

    我知道子模块也不是很受欢迎,所以我采用了这种方法,这样开发人员就可以将整个chef repo作为一个整体进行复制,但他们会将代码提交给各个repo。

    有更好的方法来做这个吗?

    谢谢:

    1 回复  |  直到 7 年前
        1
  •  0
  •   VonC    7 年前

    更好的方法?子模块已经足够了,即使您可以签出 subtrees (我 illustrate here )

    但是对于子模块,特别是如果您的贡献者仍然在各自子模块repo的主分支上,请不要忘记以下命令:

    git submodule update --remote --recursive
    

    这足以将所有子模块更新为其最新提交 master .