--- # test change of repo url # see https://github.com/ansible/ansible-modules-core/pull/721 - name: clear checkout_dir file: state=absent path={{ checkout_dir }} - name: Clone example git repo git: repo: '{{ repo_update_url_1 }}' dest: '{{ checkout_dir }}' - name: Clone repo with changed url to the same place git: repo: '{{ repo_update_url_2 }}' dest: '{{ checkout_dir }}' register: clone2 - assert: that: "clone2|success" - name: check url updated shell: git remote show origin | grep Fetch register: remote_url args: chdir: '{{ checkout_dir }}' environment: LC_ALL: C - assert: that: - "'git-test-new' in remote_url.stdout" - "'git-test-old' not in remote_url.stdout" - name: check for new content in git-test-new stat: path={{ checkout_dir }}/newfilename register: repo_content - name: assert presence of new file in repo (i.e. working copy updated) assert: that: "repo_content.stat.exists" # Make sure 'changed' result is accurate in check mode. # See https://github.com/ansible/ansible-modules-core/pull/4243 - name: clear checkout_dir file: state=absent path={{ checkout_dir }} - name: clone repo git: repo={{ repo_update_url_1 }} dest={{ checkout_dir }} - name: clone repo with same url to same destination git: repo={{ repo_update_url_1 }} dest={{ checkout_dir }} register: checkout_same_url - name: check repo not changed assert: that: - not checkout_same_url|changed - name: clone repo with new url to same destination git: repo={{ repo_update_url_2 }} dest={{ checkout_dir }} register: checkout_new_url - name: check repo changed assert: that: - checkout_new_url|changed - name: clone repo with new url in check mode git: repo={{ repo_update_url_1 }} dest={{ checkout_dir }} register: checkout_new_url_check_mode check_mode: True - name: check repo reported changed in check mode assert: that: - checkout_new_url_check_mode|changed when: git_version.stdout | version_compare("{{git_version_supporting_ls_remote}}", '>=') - name: clone repo with new url after check mode git: repo={{ repo_update_url_1 }} dest={{ checkout_dir }} register: checkout_new_url_after_check_mode - name: check repo still changed after check mode assert: that: - checkout_new_url_after_check_mode|changed # Test that checkout by branch works when the branch is not in our current repo but the sha is - name: clear checkout_dir file: state=absent path={{ checkout_dir }} - name: "Clone example git repo that we're going to modify" git: repo: '{{ repo_update_url_1 }}' dest: '{{ checkout_dir }}/repo' - name: Clone the repo again - this is what we test git: repo: '{{ checkout_dir }}/repo' dest: '{{ checkout_dir }}/checkout' - name: Add a branch to the repo command: git branch new-branch args: chdir: '{{ checkout_dir }}/repo' - name: Checkout the new branch in the checkout git: repo: '{{ checkout_dir}}/repo' version: 'new-branch' dest: '{{ checkout_dir }}/checkout'