【发布时间】:2017-08-03 23:48:45
【问题描述】:
tl;dr;
如果 ~/prod/ 不为空,hg clone ssh://hg@bitbucket.org/team/repo ~/prod/ 将失败并显示“目标不为空”。我可以强制克隆吗?
我正在尝试编写我的第一个 Ansible 剧本,它应该将我的代码从 Bitbucket Mercurial 存储库部署到我的服务器。有一个部署路径~/prod,其中包含所有代码文件以及~/prod/media和~/prod/db.db中的数据。为了确保即使 ~/prod 目录为空或不存在,剧本也能正常工作,这就是我目前所拥有的:
- name: create directory
file: path=/home/user/prod state=directory
- name: clone repo
hg:
repo: ssh://hg@bitbucket.org/team/repo
dest: /home/user/prod
force: yes
据我了解,它确保部署目录存在,然后将 repo 克隆到那里。如果目录不存在或为空,它会很好地工作。但是,一旦我克隆了一次 repo,这个剧本就会失败,destination is not empty。
我可以先将媒体和 db.db 移出,然后删除所有其他文件,然后克隆,然后将数据移回。但是看起来很麻烦。
我只是想强制克隆。但我找不到办法。大概这是错误的,以至于 Mercurial 不允许我这样做。为什么以及什么是更好的方法?
【问题讨论】:
-
@ngoldbaum,谢谢,我看过那个帖子,但是在提供选项时,它没有回答是否可以进行这种克隆的问题。我假设不是。