]> git.ipfire.org Git - thirdparty/git.git/commitdiff
Merge branch 'ab/ci-use-macos-12' into maint-2.38
authorJunio C Hamano <gitster@pobox.com>
Sat, 10 Dec 2022 05:02:09 +0000 (14:02 +0900)
committerJunio C Hamano <gitster@pobox.com>
Sat, 10 Dec 2022 05:02:09 +0000 (14:02 +0900)
CI fix.

* ab/ci-use-macos-12:
  CI: upgrade to macos-12, and pin OSX version

.github/workflows/l10n.yml
.github/workflows/main.yml
sequencer.c
t/t3404-rebase-interactive.sh

index 27f72f0ff34482912ee894570ff277e43d5d3ddf..f7ea0f00a449cfafd5dc006e59267e464f753387 100644 (file)
@@ -23,8 +23,8 @@ jobs:
             base=${{ github.event.before }}
             head=${{ github.event.after }}
           fi
-          echo "::set-output name=base::$base"
-          echo "::set-output name=head::$head"
+          echo base=$base >>$GITHUB_OUTPUT
+          echo head=$head >>$GITHUB_OUTPUT
       - name: Run partial clone
         run: |
           git -c init.defaultBranch=master init --bare .
index 3413a2a1d4b50857198389eb3ae9bab36d6841f7..d5587e6b1b085bd37ff6b2f4d9587293d558ade0 100644 (file)
@@ -34,7 +34,7 @@ jobs:
           then
             enabled=no
           fi
-          echo "::set-output name=enabled::$enabled"
+          echo "enabled=$enabled" >>$GITHUB_OUTPUT
       - name: skip if the commit or tree was already tested
         id: skip-if-redundant
         uses: actions/github-script@v3
@@ -83,7 +83,7 @@ jobs:
     if: needs.ci-config.outputs.enabled == 'yes'
     runs-on: windows-latest
     steps:
-    - uses: actions/checkout@v2
+    - uses: actions/checkout@v3
     - uses: git-for-windows/setup-git-for-windows-sdk@v1
     - name: build
       shell: bash
@@ -138,10 +138,10 @@ jobs:
       GIT_CONFIG_PARAMETERS: "'user.name=CI' 'user.email=ci@git'"
     runs-on: windows-latest
     steps:
-    - uses: actions/checkout@v2
+    - uses: actions/checkout@v3
     - uses: git-for-windows/setup-git-for-windows-sdk@v1
     - name: initialize vcpkg
-      uses: actions/checkout@v2
+      uses: actions/checkout@v3
       with:
         repository: 'microsoft/vcpkg'
         path: 'compat/vcbuild/vcpkg'
@@ -258,13 +258,11 @@ jobs:
       runs_on_pool: ${{matrix.vector.pool}}
     runs-on: ${{matrix.vector.pool}}
     steps:
-    - uses: actions/checkout@v2
+    - uses: actions/checkout@v3
     - run: ci/install-dependencies.sh
     - run: ci/run-build-and-tests.sh
-    - name: print test failures
+    - run: ci/print-test-failures.sh
       if: failure() && env.FAILED_TEST_ARTIFACTS != ''
-      shell: bash
-      run: ci/print-test-failures.sh
     - name: Upload failed tests' directories
       if: failure() && env.FAILED_TEST_ARTIFACTS != ''
       uses: actions/upload-artifact@v2
@@ -291,13 +289,14 @@ jobs:
     runs-on: ubuntu-latest
     container: ${{matrix.vector.image}}
     steps:
+    - uses: actions/checkout@v3
+      if: matrix.vector.jobname != 'linux32'
     - uses: actions/checkout@v1
+      if: matrix.vector.jobname == 'linux32'
     - run: ci/install-docker-dependencies.sh
     - run: ci/run-build-and-tests.sh
-    - name: print test failures
+    - run: ci/print-test-failures.sh
       if: failure() && env.FAILED_TEST_ARTIFACTS != ''
-      shell: bash
-      run: ci/print-test-failures.sh
     - name: Upload failed tests' directories
       if: failure() && env.FAILED_TEST_ARTIFACTS != ''
       uses: actions/upload-artifact@v1
@@ -311,7 +310,7 @@ jobs:
       jobname: StaticAnalysis
     runs-on: ubuntu-22.04
     steps:
-    - uses: actions/checkout@v2
+    - uses: actions/checkout@v3
     - run: ci/install-dependencies.sh
     - run: ci/run-static-analysis.sh
     - run: ci/check-directional-formatting.bash
@@ -331,7 +330,7 @@ jobs:
         artifact: sparse-20.04
     - name: Install the current `sparse` package
       run: sudo dpkg -i sparse-20.04/sparse_*.deb
-    - uses: actions/checkout@v2
+    - uses: actions/checkout@v3
     - name: Install other dependencies
       run: ci/install-dependencies.sh
     - run: make sparse
@@ -343,6 +342,6 @@ jobs:
       jobname: Documentation
     runs-on: ubuntu-latest
     steps:
-    - uses: actions/checkout@v2
+    - uses: actions/checkout@v3
     - run: ci/install-dependencies.sh
     - run: ci/test-documentation.sh
index debb2ecbafe2efdff334042b00c85badf7b88dfe..0cf3842201a85d05bf77ba2cac4bbef57d681c9a 100644 (file)
@@ -4130,11 +4130,14 @@ static int write_update_refs_state(struct string_list *refs_to_oids)
        struct string_list_item *item;
        char *path;
 
-       if (!refs_to_oids->nr)
-               return 0;
-
        path = rebase_path_update_refs(the_repository->gitdir);
 
+       if (!refs_to_oids->nr) {
+               if (unlink(path) && errno != ENOENT)
+                       result = error_errno(_("could not unlink: %s"), path);
+               goto cleanup;
+       }
+
        if (safe_create_leading_directories(path)) {
                result = error(_("unable to create leading directories of %s"),
                               path);
index 688b01e3eb6a387c0d9ad36031dd8beab46d9419..f0a0a54fba43d3a0a49b9df59c9aeb4996c2a85f 100755 (executable)
@@ -1964,6 +1964,113 @@ test_expect_success 'respect user edits to update-ref steps' '
        test_cmp_rev HEAD refs/heads/no-conflict-branch
 '
 
+test_expect_success '--update-refs: all update-ref lines removed' '
+       git checkout -b test-refs-not-removed no-conflict-branch &&
+       git branch -f base HEAD~4 &&
+       git branch -f first HEAD~3 &&
+       git branch -f second HEAD~3 &&
+       git branch -f third HEAD~1 &&
+       git branch -f tip &&
+
+       test_commit test-refs-not-removed &&
+       git commit --amend --fixup first &&
+
+       git rev-parse first second third tip no-conflict-branch >expect-oids &&
+
+       (
+               set_cat_todo_editor &&
+               test_must_fail git rebase -i --update-refs base >todo.raw &&
+               sed -e "/^update-ref/d" <todo.raw >todo
+       ) &&
+       (
+               set_replace_editor todo &&
+               git rebase -i --update-refs base
+       ) &&
+
+       # Ensure refs are not deleted and their OIDs have not changed
+       git rev-parse first second third tip no-conflict-branch >actual-oids &&
+       test_cmp expect-oids actual-oids
+'
+
+test_expect_success '--update-refs: all update-ref lines removed, then some re-added' '
+       git checkout -b test-refs-not-removed2 no-conflict-branch &&
+       git branch -f base HEAD~4 &&
+       git branch -f first HEAD~3 &&
+       git branch -f second HEAD~3 &&
+       git branch -f third HEAD~1 &&
+       git branch -f tip &&
+
+       test_commit test-refs-not-removed2 &&
+       git commit --amend --fixup first &&
+
+       git rev-parse first second third >expect-oids &&
+
+       (
+               set_cat_todo_editor &&
+               test_must_fail git rebase -i \
+                       --autosquash --update-refs \
+                       base >todo.raw &&
+               sed -e "/^update-ref/d" <todo.raw >todo
+       ) &&
+
+       # Add a break to the end of the todo so we can edit later
+       echo "break" >>todo &&
+
+       (
+               set_replace_editor todo &&
+               git rebase -i --autosquash --update-refs base &&
+               echo "update-ref refs/heads/tip" >todo &&
+               git rebase --edit-todo &&
+               git rebase --continue
+       ) &&
+
+       # Ensure first/second/third are unchanged, but tip is updated
+       git rev-parse first second third >actual-oids &&
+       test_cmp expect-oids actual-oids &&
+       test_cmp_rev HEAD tip
+'
+
+test_expect_success '--update-refs: --edit-todo with no update-ref lines' '
+       git checkout -b test-refs-not-removed3 no-conflict-branch &&
+       git branch -f base HEAD~4 &&
+       git branch -f first HEAD~3 &&
+       git branch -f second HEAD~3 &&
+       git branch -f third HEAD~1 &&
+       git branch -f tip &&
+
+       test_commit test-refs-not-removed3 &&
+       git commit --amend --fixup first &&
+
+       git rev-parse first second third tip no-conflict-branch >expect-oids &&
+
+       (
+               set_cat_todo_editor &&
+               test_must_fail git rebase -i \
+                       --autosquash --update-refs \
+                       base >todo.raw &&
+               sed -e "/^update-ref/d" <todo.raw >todo
+       ) &&
+
+       # Add a break to the beginning of the todo so we can resume with no
+       # update-ref lines
+       echo "break" >todo.new &&
+       cat todo >>todo.new &&
+
+       (
+               set_replace_editor todo.new &&
+               git rebase -i --autosquash --update-refs base &&
+
+               # Make no changes when editing so update-refs is still empty
+               cat todo >todo.new &&
+               git rebase --edit-todo &&
+               git rebase --continue
+       ) &&
+
+       # Ensure refs are not deleted and their OIDs have not changed
+       git rev-parse first second third tip no-conflict-branch >actual-oids &&
+       test_cmp expect-oids actual-oids
+'
+
 test_expect_success '--update-refs: check failed ref update' '
        git checkout -B update-refs-error no-conflict-branch &&
        git branch -f base HEAD~4 &&