代码之家  ›  专栏  ›  技术社区  ›  Mayank Jain

使用开源厨师食谱时,我们应该在Berksfile中克隆或引用吗?

  •  1
  • Mayank Jain  · 技术社区  · 10 年前

    假设我正在构建我的/my_company_cookbooks集合,我想使用Github提供的很棒的社区食谱。

    我有两个选择

    1. 通过在我的Berksfile中添加一行来引用github中的烹饪书(烹饪书“石墨”,git:'git://github.com/hw-cookbooks/graphite.git' )
    2. 本地副本-将烹饪书克隆到my_company_coookbooks文件夹中,并保留对其的本地引用。

    每种策略似乎都有优缺点。

    Github的优点

    • 无本地副本
    • 作者易于修复

    Github的缺点 -我如何确定我的制作食谱完全取决于我在舞台上测试的食谱版本。作者可以在仍然进行代码更改的同时忘记升级烹饪书版本。未经测试的代码更改将到达我的生产环境

    本地副本的优点 我可以100%确定地测试并推动生产;调试更容易

    本地副本的缺点

    • 如何获取食谱的更新副本(再次复制?)
    • 我会在一个git回购中使用git回购?
    • 通过本地副本,其他烹饪书开发人员可以修改克隆的烹饪书,这使得在github上发布新版本的烹饪书时更难同步

    在这件事上有什么想法或最佳做法吗?

    谢谢

    2 回复  |  直到 10 年前
        1
  •  3
  •   Mark O'Connor    10 年前

    在可能的情况下,从社区“超市”仓库中购买食谱。例如,以下内容将检索最新版本的石墨:

    source 'https://supermarket.chef.io'
    
    cookbook "graphite"
    

    文档显示,该食谱由 heavywater dudes :

    为什么?当从源代码库中使用烹饪书时,将相同版本的替代副本加载到厨师服务器中的风险很小。


    嗯?请解释一下!

    采用以下场景:

    1. 厨师开发人员对他的烹饪书做了一个小改动,但没有增加烹饪书版本号1.1
    2. 你把你认为是1.1版的食谱拿下来。
    3. 厨师开发人员对食谱进行了更实质性的更改,但同样没有增加版本号(因为他还没有准备好发布)。

    您的厨师服务器现在有一个版本1.1的副本,与版本控制系统中的最新版本1.1不匹配。。。。

    为了解决这个问题,你需要明确地运行一个“berks更新”,然后强制将烹饪书重新加载到你的厨师服务器中(记住berkshelf冻结了烹饪书)……这可能会成为一个无关紧要的问题,我不止一次被这个问题困扰(奇怪的是,超市里没有开放堆栈的烹饪书)。

    在一天结束时,如果你与其他开发团队同名,则从源代码消费:-)如果你渴望稳定,另一个解决方案是只从Git标签消费,这是厨师超市里的食谱都遵循的最佳做法。

    厨师超市提供的是厨师食谱的发布管理流程。Git应该跟踪对食谱中文件的所有更改。但它无法检测烹饪书何时可以发布。这是开发人员的工作,如果他表现良好并遵循合理的工作流程,他会标记代码,然后将其推送到某种存储库中,供第三方下载。这是超市提供的加工和储存设施。这是你的朋友,我强烈建议使用它:-)

    为长篇大论道歉!治疗:-)

        2
  •  2
  •   Tensibai    10 年前

    引用 Berkshelf documentation :

    GitHub位置

    从1.0.0版开始,您现在可以使用GitHub速记来指定 地方

    烹饪书“神器”,github:“RiotGames/神器烹饪书”,标签: “0.9.8”举个例子,RiotGames的神器食谱 工件烹饪书库中的组织,标记为0.9.8 将被克隆到伯克利。

    我假设这消除了github的缺点,那么你现在就没有理由不使用它了。