Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Mercurial存储库克隆到非空目录中_Mercurial_Web Deployment - Fatal编程技术网

将Mercurial存储库克隆到非空目录中

将Mercurial存储库克隆到非空目录中,mercurial,web-deployment,Mercurial,Web Deployment,tl;博士 hg克隆ssh://hg@如果~/prod/不为空,则bitbucket.org/team/repo~/prod/将失败并显示“目的地不为空”。我可以强制克隆吗 我正在尝试编写我的第一本Ansible playbook,它应该将我的代码从Bitbucket Mercurial存储库部署到我的服务器上。有一个部署路径,~/prod,它包含所有代码文件以及~/prod/media和~/prod/db.db中的数据。为了确保即使~/prod目录为空或不存在,playbook也能正常工作,我

tl;博士
hg克隆ssh://hg@如果~/prod/不为空,则bitbucket.org/team/repo~/prod/
将失败并显示“目的地不为空”。我可以强制克隆吗

我正在尝试编写我的第一本Ansible playbook,它应该将我的代码从Bitbucket Mercurial存储库部署到我的服务器上。有一个部署路径,
~/prod
,它包含所有代码文件以及
~/prod/media
~/prod/db.db
中的数据。为了确保即使
~/prod
目录为空或不存在,playbook也能正常工作,我目前所做的是:

- 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,这个剧本就会失败,因为
目的地不为空

我可以先将媒体和db.db移出,然后删除所有其他文件,然后克隆,再将数据移回。但它看起来很笨重


我只是想强迫克隆。但是我找不到办法。想必这是非常错误的,Mercurial不允许我这样做。为什么,还有什么更好的方法呢?

尽管我还没有在任何地方读过它,但强制克隆似乎是不可能的。然后,如中关于相同主题的说明,这两个备选方案是:

  • 实际上,将.hg文件夹克隆到另一个目录,然后将其移动到目标目录
  • 或者,
    hgint/home/user/prod
    然后
    hg pullssh://hg@org/team/repo/home/user/prod;hg update-C-R/home/user/prod
对于第二个,可以优化Ansible任务,仅在目标目录不包含.hg时执行此操作:

- name: recreate repo
  command: 
    hg ssh://hg@bitbucket.org/team/repo -R /home/user/prod 
    creates=/home/user/prod/.hg  # <-- only execute command if .hg does not exist
- name: update files
  hg:
    repo: ssh://hg@bitbucket.org/team/repo
    dest: /home/user/prod
    clone: no
    update: yes                  # optional, for readability
    force: yes
  notify: "restart web services"
-名称:重新创建回购
命令:
汞ssh://hg@bitbucket.org/team/repo-R/home/user/prod

creates=/home/user/prod/.hg#可能是@ngoldbaum的副本,谢谢,我已经看到了这个线程,但是在提供选项时,它没有回答这样的克隆是否可行的问题。我想不是。