gpt4 book ai didi

mercurial - 不同位置的相同标签名称会导致问题

转载 作者:行者123 更新时间:2023-12-02 23:32:05 27 4
gpt4 key购买 nike

我正在使用 Mercurial 和 Fabric 来部署我的网站。我以前从未使用过 Fabric,因此我在线复制了一个示例 fab 文件,然后更改了 var 以匹配我自己的网站。

以下是代码行:

def prod():
env.hosts = ['kevinburke.webfactional.com']
env.user = 'kevinburke'

def deploy():
require('hosts' , provided_by=[prod])

local ("hg tag --local --force production")
local ("hg push --remotecmd /home/kburke/bin/hg") # this works fine
run ("cd /my/web/directory; hg update -C production")

这是从命令行调用的

fab prod deploy

当我是唯一部署该站点的人时,这没有任何问题。但最近我添加了两个运行相同 fabfile 的提交者,当他们尝试部署站点时,站点的远程版本不会更新到最新版本 - 它仅更新到标记为生产,而不是他们标记的那个。

我希望它会使用他们的“生产”标签来更新文件。为什么会出现这种情况?我怎样才能让程序在未来按照我的预期运行?

谢谢,凯文

最佳答案

您无法发布本地标签。这意味着您的第一步已经在 /my/web/directory 存储库中执行,或者已经有一个名为 revision 的 生产(您可以使用 hg 标签hg 分支hg 书签)。

您有多种方法来修复您的工作流程(按优先顺序排列):

  • 使用通用前缀标签来区分不同的生产版本,例如 生产-23生产-42,您可以在生产框上解析它们。
  • 创建一个生产分支,其中要交付的每个修订版本都会 merge 到该分支中。如果您已经有分支机构的经验,我推荐这个。
  • 使用bookmark扩展,并创建一个生产书签来跟踪您部署的版本。这看起来像是您当前想要建立的解决方案。当你想使用书签时,你需要在服务器和所有客户端上启用它们,并使用hg push -B Production将书签的当前状态推送到服务器。此过程的一个缺点是您永远不会看到是否有人将其他书签推送到服务器,因为书签的传输会默默地重写服务器上的书签。
  • 使用常规标签来跟踪生产版本。一方面,使用标签进行这种跟踪似乎是错误的,因为标签是静态的。另一方面,您可以跟踪哪些修订在某个时间点仍然有效。但第一个解决方案的跟踪工作要好得多。

关于mercurial - 不同位置的相同标签名称会导致问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5796931/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com