# Test the depth option and fetching revisions that were ignored first - name: DEPTH | clear checkout_dir file: state: absent path: "{{ checkout_dir }}" - name: DEPTH | Clone example git repo with depth 1 git: repo: 'file://{{ repo_dir|expanduser }}/shallow' dest: '{{ checkout_dir }}' depth: 1 - name: DEPTH | try to access earlier commit command: "git checkout {{git_shallow_head_1.stdout}}" register: checkout_early failed_when: False args: chdir: '{{ checkout_dir }}' - name: DEPTH | make sure the old commit was not fetched assert: that: 'checkout_early.rc != 0' when: git_version.stdout is version(git_version_supporting_depth, '>=') # tests https://github.com/ansible/ansible/issues/14954 - name: DEPTH | fetch repo again with depth=1 git: repo: 'file://{{ repo_dir|expanduser }}/shallow' dest: '{{ checkout_dir }}' depth: 1 register: checkout2 - assert: that: "checkout2 is not changed" when: git_version.stdout is version(git_version_supporting_depth, '>=') - name: DEPTH | again try to access earlier commit shell: "git checkout {{git_shallow_head_1.stdout}}" register: checkout_early failed_when: False args: chdir: '{{ checkout_dir }}' - name: DEPTH | again make sure the old commit was not fetched assert: that: 'checkout_early.rc != 0' when: git_version.stdout is version(git_version_supporting_depth, '>=') # make sure we are still able to fetch other versions - name: DEPTH | Clone same repo with older version git: repo: 'file://{{ repo_dir|expanduser }}/shallow' dest: '{{ checkout_dir }}' depth: 1 version: earlytag register: cloneold - assert: that: cloneold is successful - name: DEPTH | try to access earlier commit shell: "git checkout {{git_shallow_head_1.stdout}}" args: chdir: '{{ checkout_dir }}' - name: DEPTH | clear checkout_dir file: state: absent path: "{{ checkout_dir }}" # Test for https://github.com/ansible/ansible/issues/21316 - name: DEPTH | Shallow clone with tag git: repo: 'file://{{ repo_dir|expanduser }}/shallow' dest: '{{ checkout_dir }}' depth: 1 version: earlytag register: cloneold - assert: that: cloneold is successful - name: DEPTH | clear checkout_dir file: state: absent path: "{{ checkout_dir }}" # Test for https://github.com/ansible/ansible-modules-core/issues/3456 # clone a repo with depth and version specified - name: DEPTH | clone repo with both version and depth specified git: repo: 'file://{{ repo_dir|expanduser }}/shallow' dest: '{{ checkout_dir }}' depth: 1 version: master - name: DEPTH | run a second time (now fetch, not clone) git: repo: 'file://{{ repo_dir|expanduser }}/shallow' dest: '{{ checkout_dir }}' depth: 1 version: master register: git_fetch - name: DEPTH | ensure the fetch succeeded assert: that: git_fetch is successful - name: DEPTH | clear checkout_dir file: state: absent path: "{{ checkout_dir }}" - name: DEPTH | clone repo with both version and depth specified git: repo: 'file://{{ repo_dir|expanduser }}/shallow' dest: '{{ checkout_dir }}' depth: 1 version: master - name: DEPTH | switch to older branch with depth=1 (uses fetch) git: repo: 'file://{{ repo_dir|expanduser }}/shallow' dest: '{{ checkout_dir }}' depth: 1 version: earlybranch register: git_fetch - name: DEPTH | ensure the fetch succeeded assert: that: git_fetch is successful - name: DEPTH | clear checkout_dir file: state: absent path: "{{ checkout_dir }}" # test for https://github.com/ansible/ansible-modules-core/issues/3782 # make sure shallow fetch works when no version is specified - name: DEPTH | checkout old repo git: repo: 'file://{{ repo_dir|expanduser }}/shallow' dest: '{{ checkout_dir }}' depth: 1 - name: DEPTH | "update repo" shell: echo "3" > a; git commit -a -m "3" args: chdir: "{{ repo_dir }}/shallow" - name: DEPTH | fetch updated repo git: repo: 'file://{{ repo_dir|expanduser }}/shallow' dest: '{{ checkout_dir }}' depth: 1 register: git_fetch ignore_errors: yes - name: DEPTH | get "a" file slurp: src: '{{ checkout_dir }}/a' register: a_file - name: DEPTH | check update arrived assert: that: - "{{ a_file.content | b64decode | trim }} == 3" - git_fetch is changed - name: DEPTH | clear checkout_dir file: state: absent path: "{{ checkout_dir }}" # # Make sure shallow fetch works when switching to (fetching) a new a branch # - name: DEPTH | clone from branch with depth specified git: repo: 'file://{{ repo_dir|expanduser }}/shallow_branches' dest: '{{ checkout_dir }}' depth: 1 version: test_branch - name: DEPTH | check if clone is shallow stat: path={{ checkout_dir }}/.git/shallow register: is_shallow when: git_version.stdout is version(git_version_supporting_depth, '>=') - name: DEPTH | assert that clone is shallow assert: that: - is_shallow.stat.exists when: git_version.stdout is version(git_version_supporting_depth, '>=') - name: DEPTH | switch to new branch (fetch) with the shallow clone git: repo: 'file://{{ repo_dir|expanduser }}/shallow_branches' dest: '{{ checkout_dir }}' depth: 1 version: new_branch register: git_fetch - name: DEPTH | assert if switching a shallow clone to a new branch worked assert: that: - git_fetch is changed - name: DEPTH | check if clone is still shallow stat: path={{ checkout_dir }}/.git/shallow register: is_shallow when: git_version.stdout is version(git_version_supporting_depth, '>=') - name: DEPTH | assert that clone still is shallow assert: that: - is_shallow.stat.exists when: git_version.stdout is version(git_version_supporting_depth, '>=') - name: DEPTH | clear checkout_dir file: state: absent path: "{{ checkout_dir }}"