代码之家  ›  专栏  ›  技术社区  ›  K. Norbert

从shell脚本增量部署

  •  2
  • K. Norbert  · 技术社区  · 14 年前

    我有一个项目,在那里我被迫使用ftp作为一种手段部署文件到实时服务器。 我是在linux上开发的,所以我编写了一个bash脚本来备份ftp服务器的内容, 删除ftp上的所有文件,并从mercurial存储库上载所有新文件。 (以及处理用户上传的文件和文件夹,以及进行部署后更改等)

    它工作得很好,但是项目开始变得足够大,以至于部署过程太长。

    我想修改脚本以查找已更改的文件,并且只部署已修改的文件(备份很好(尽管如此)

    我使用mercurial作为VCS,所以我的想法是在两次修订之间请求更改的文件,迭代更改的文件, 上传每个修改过的文件,删除每个删除的文件。

    我可以用汞 log -vr rev1:rev2 ,并且从输出中,我可以用grep/sed/等来雕刻出更改过的文件。

    两个问题:

    hg log ,变量将经历分词和各种转换。

    汞测井

    那么,正确的方法是什么呢?我使用yafc作为ftp客户端,以防需要,但愿意切换。

    1 回复  |  直到 14 年前
        1
  •  3
  •   richq luc    14 年前

    您可以使用自定义样式为您进行解析。

    hg log --rev rev1:rev2 --style mystyle
    

    然后把它输送到 sort -u 获取文件的唯一列表。文件“mystyle”如下所示:

    changeset = '{file_mods}{file_adds}\n'
    file_mod = '{file_mod}\n'
    file_add = '{file_add}\n'
    

    file_dels file_del 已删除文件的模板。

    hg status -ma --rev rev1-1:rev2 这增加了 或者一个 A 在修改/添加文件之前。您需要传递一个不同的修订范围,比rev1小一个,因为它是自那个“基线”以来的状态。删除的文件是类似的-您需要-d标志和 D