使用Ansible的git pull命令

使用Ansible的git pull命令,git,ansible,Git,Ansible,有人能告诉我下面的ansible git模块和git命令有什么区别吗 当我在playbook中使用git模块时,它会覆盖一个不应该覆盖的文件,而git命令不会覆盖该文件 我尝试将GIT命令转换为剧本中的任务 ANSIBLE GIT模块 GIT命令 如果是,将丢弃工作存储库中的任何修改文件。在0.7之前,此选项始终为“是”,无法禁用。在1.9之前,默认值为yes 也就是说,将force=no设置为不覆盖文件。中的代码是清晰的: 其他: #否则就拉一下 local_mods=具有_local_mo

有人能告诉我下面的ansible git模块和git命令有什么区别吗

当我在playbook中使用git模块时,它会覆盖一个不应该覆盖的文件,而git命令不会覆盖该文件

我尝试将GIT命令转换为剧本中的任务

ANSIBLE GIT模块 GIT命令

如果是,将丢弃工作存储库中的任何修改文件。在0.7之前,此选项始终为“是”,无法禁用。在1.9之前,默认值为
yes

也就是说,将
force=no
设置为不覆盖文件。

中的代码是清晰的:

其他:
#否则就拉一下
local_mods=具有_local_mods(模块、git_路径、dest、bare)
结果['before']=get_版本(模块、git_路径、dest)
如果是本地模块:
#无论检查模式如何,都应发生故障
如果不强制:
module.fail_json(msg=“存储库中存在本地修改(force=no)。”,**结果)
因此,需要在“before”
git pull
部分上获取此错误消息

功能是:

def具有本地模块(模块、git路径、dest、bare):
如果没有:
返回错误
cmd=“%s状态--陶瓷”%(git_路径)
rc,stdout,stderr=module.run_命令(cmd,cwd=dest)
lines=stdout.splitlines()
lines=list(筛选器(lambda c:not re.search(“^\\?\\?*$”,c),行))
返回长度(线)>0
当我在playbook中使用git模块时,它会覆盖一个不应该覆盖的文件,而git命令不会覆盖该文件


这就是令人费解的部分:仔细检查
git状态--
输出(在命令行中完成时),以查看您的文件是否实际被修改。

playbook失败,如果force=no设置为致命:[]:失败!=>{“before”:“23300BF0EAB215BC21CBA21CBA285C2A43C39BA004B24”,“changed”:false,“msg”:“存储库中存在本地修改(force=no)。}似乎模块
git
不允许在修改后拉入回购。我的建议是使用
命令
shell
模块。或在拉动之前/之后隐藏/取消搁置修改。
- name: pull v016 repo from git
    git: repo=https://{{ githubuser }}:{{ githubpassword|urlencode }}@git.abc.com/abc/abc.git
         dest=/tmp/test/abc
         accept_hostkey=yes
         update=yes
         clone=no
         force=yes
         remote=origin
         version=20190524v016
git pull origin 20190524v016 --tags
force=yes