Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/check-style.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ jobs:
jobname: ClangFormat
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
with:
fetch-depth: 0

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/check-whitespace.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ jobs:
check-whitespace:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
with:
fetch-depth: 0

Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/coverity.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,10 +38,10 @@ jobs:
COVERITY_LANGUAGE: cxx
COVERITY_PLATFORM: overridden-below
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
- name: install minimal Git for Windows SDK
if: contains(matrix.os, 'windows')
uses: git-for-windows/setup-git-for-windows-sdk@v1
uses: git-for-windows/setup-git-for-windows-sdk@v2
- run: ci/install-dependencies.sh
if: contains(matrix.os, 'ubuntu') || contains(matrix.os, 'macos')
env:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/l10n.yml
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ jobs:
cat git-po-helper.out
exit $exit_code
- name: Create comment in pull request for report
uses: mshick/add-pr-comment@v2
uses: mshick/add-pr-comment@v3
if: >-
always() &&
github.event_name == 'pull_request_target' &&
Expand Down
58 changes: 29 additions & 29 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ jobs:
echo "skip_concurrent=$skip_concurrent" >>$GITHUB_OUTPUT
- name: skip if the commit or tree was already tested
id: skip-if-redundant
uses: actions/github-script@v8
uses: actions/github-script@v9
if: steps.check-ref.outputs.enabled == 'yes'
with:
github-token: ${{secrets.GITHUB_TOKEN}}
Expand Down Expand Up @@ -112,8 +112,8 @@ jobs:
group: windows-build-${{ github.ref }}
cancel-in-progress: ${{ needs.ci-config.outputs.skip_concurrent == 'yes' }}
steps:
- uses: actions/checkout@v5
- uses: git-for-windows/setup-git-for-windows-sdk@v1
- uses: actions/checkout@v6
- uses: git-for-windows/setup-git-for-windows-sdk@v2
- name: build
shell: bash
env:
Expand All @@ -123,7 +123,7 @@ jobs:
- name: zip up tracked files
run: git archive -o artifacts/tracked.tar.gz HEAD
- name: upload tracked files and build artifacts
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v7
with:
name: windows-artifacts
path: artifacts
Expand All @@ -140,14 +140,14 @@ jobs:
cancel-in-progress: ${{ needs.ci-config.outputs.skip_concurrent == 'yes' }}
steps:
- name: download tracked files and build artifacts
uses: actions/download-artifact@v6
uses: actions/download-artifact@v8
with:
name: windows-artifacts
path: ${{github.workspace}}
- name: extract tracked files and build artifacts
shell: bash
run: tar xf artifacts.tar.gz && tar xf tracked.tar.gz
- uses: git-for-windows/setup-git-for-windows-sdk@v1
- uses: git-for-windows/setup-git-for-windows-sdk@v2
- name: test
shell: bash
run: . /etc/profile && ci/run-test-slice.sh $((${{matrix.nr}} + 1)) 10
Expand All @@ -157,7 +157,7 @@ jobs:
run: ci/print-test-failures.sh
- name: Upload failed tests' directories
if: failure() && env.FAILED_TEST_ARTIFACTS != ''
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v7
with:
name: failed-tests-windows-${{ matrix.nr }}
path: ${{env.FAILED_TEST_ARTIFACTS}}
Expand All @@ -173,10 +173,10 @@ jobs:
group: vs-build-${{ github.ref }}
cancel-in-progress: ${{ needs.ci-config.outputs.skip_concurrent == 'yes' }}
steps:
- uses: actions/checkout@v5
- uses: git-for-windows/setup-git-for-windows-sdk@v1
- uses: actions/checkout@v6
- uses: git-for-windows/setup-git-for-windows-sdk@v2
- name: initialize vcpkg
uses: actions/checkout@v5
uses: actions/checkout@v6
with:
repository: 'microsoft/vcpkg'
path: 'compat/vcbuild/vcpkg'
Expand All @@ -186,7 +186,7 @@ jobs:
repository: git/git
definitionId: 9
- name: add msbuild to PATH
uses: microsoft/setup-msbuild@v2
uses: microsoft/setup-msbuild@v3
- name: copy dlls to root
shell: cmd
run: compat\vcbuild\vcpkg_copy_dlls.bat release
Expand All @@ -208,7 +208,7 @@ jobs:
- name: zip up tracked files
run: git archive -o artifacts/tracked.tar.gz HEAD
- name: upload tracked files and build artifacts
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v7
with:
name: vs-artifacts
path: artifacts
Expand All @@ -224,9 +224,9 @@ jobs:
group: vs-test-${{ matrix.nr }}-${{ github.ref }}
cancel-in-progress: ${{ needs.ci-config.outputs.skip_concurrent == 'yes' }}
steps:
- uses: git-for-windows/setup-git-for-windows-sdk@v1
- uses: git-for-windows/setup-git-for-windows-sdk@v2
- name: download tracked files and build artifacts
uses: actions/download-artifact@v6
uses: actions/download-artifact@v8
with:
name: vs-artifacts
path: ${{github.workspace}}
Expand All @@ -244,7 +244,7 @@ jobs:
run: ci/print-test-failures.sh
- name: Upload failed tests' directories
if: failure() && env.FAILED_TEST_ARTIFACTS != ''
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v7
with:
name: failed-tests-windows-vs-${{ matrix.nr }}
path: ${{env.FAILED_TEST_ARTIFACTS}}
Expand All @@ -258,7 +258,7 @@ jobs:
group: windows-meson-build-${{ github.ref }}
cancel-in-progress: ${{ needs.ci-config.outputs.skip_concurrent == 'yes' }}
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
- uses: actions/setup-python@v6
- name: Set up dependencies
shell: pwsh
Expand All @@ -270,7 +270,7 @@ jobs:
shell: pwsh
run: meson compile -C build
- name: Upload build artifacts
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v7
with:
name: windows-meson-artifacts
path: build
Expand All @@ -286,13 +286,13 @@ jobs:
group: windows-meson-test-${{ matrix.nr }}-${{ github.ref }}
cancel-in-progress: ${{ needs.ci-config.outputs.skip_concurrent == 'yes' }}
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
- uses: actions/setup-python@v6
- name: Set up dependencies
shell: pwsh
run: pip install meson ninja
- name: Download build artifacts
uses: actions/download-artifact@v6
uses: actions/download-artifact@v8
with:
name: windows-meson-artifacts
path: build
Expand All @@ -305,7 +305,7 @@ jobs:
run: ci/print-test-failures.sh
- name: Upload failed tests' directories
if: failure() && env.FAILED_TEST_ARTIFACTS != ''
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: failed-tests-windows-meson-${{ matrix.nr }}
path: ${{env.FAILED_TEST_ARTIFACTS}}
Expand Down Expand Up @@ -341,15 +341,15 @@ jobs:
TEST_OUTPUT_DIRECTORY: ${{github.workspace}}/t
runs-on: ${{matrix.vector.pool}}
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
- run: ci/install-dependencies.sh
- run: ci/run-build-and-tests.sh
- name: print test failures
if: failure() && env.FAILED_TEST_ARTIFACTS != ''
run: ci/print-test-failures.sh
- name: Upload failed tests' directories
if: failure() && env.FAILED_TEST_ARTIFACTS != ''
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v7
with:
name: failed-tests-${{matrix.vector.jobname}}
path: ${{env.FAILED_TEST_ARTIFACTS}}
Expand All @@ -362,7 +362,7 @@ jobs:
CI_JOB_IMAGE: ubuntu-latest
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
- run: ci/install-dependencies.sh
- run: ci/run-build-and-minimal-fuzzers.sh
dockerized:
Expand Down Expand Up @@ -439,7 +439,7 @@ jobs:
else
apt-get -q update && apt-get -q -y install git
fi
- uses: actions/checkout@v5
- uses: actions/checkout@v6
- run: ci/install-dependencies.sh
- run: useradd builder --create-home
- run: chown -R builder .
Expand All @@ -449,7 +449,7 @@ jobs:
run: sudo --preserve-env --set-home --user=builder ci/print-test-failures.sh
- name: Upload failed tests' directories
if: failure() && env.FAILED_TEST_ARTIFACTS != ''
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v7
with:
name: failed-tests-${{matrix.vector.jobname}}
path: ${{env.FAILED_TEST_ARTIFACTS}}
Expand All @@ -464,7 +464,7 @@ jobs:
group: static-analysis-${{ github.ref }}
cancel-in-progress: ${{ needs.ci-config.outputs.skip_concurrent == 'yes' }}
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
- run: ci/install-dependencies.sh
- run: ci/run-static-analysis.sh
- run: ci/check-directional-formatting.bash
Expand All @@ -480,7 +480,7 @@ jobs:
group: rust-analysis-${{ github.ref }}
cancel-in-progress: ${{ needs.ci-config.outputs.skip_concurrent == 'yes' }}
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
- run: ci/install-dependencies.sh
- run: ci/run-rust-checks.sh
sparse:
Expand All @@ -494,7 +494,7 @@ jobs:
group: sparse-${{ github.ref }}
cancel-in-progress: ${{ needs.ci-config.outputs.skip_concurrent == 'yes' }}
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
- name: Install other dependencies
run: ci/install-dependencies.sh
- run: make sparse
Expand All @@ -510,6 +510,6 @@ jobs:
CI_JOB_IMAGE: ubuntu-latest
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
- run: ci/install-dependencies.sh
- run: ci/test-documentation.sh
21 changes: 21 additions & 0 deletions Documentation/RelNotes/2.55.0.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@ UI, Workflows & Features
* The userdiff driver for the Scheme language has been extended to
cover other Lisp dialects.

* Terminal control sequences coming over the sideband while talking
to a remote repository are mostly disabled by default, except for
ANSI color escape sequences.


Performance, Internal Implementation, Development Support etc.
--------------------------------------------------------------
Expand Down Expand Up @@ -38,6 +42,23 @@ Fixes since v2.54
detect misspelled test commands.
(merge ffe8005b9d ps/test-set-e-clean later to maint).

* Revert a recent change that introduced a regression to help mksh users.
(merge 8b44deebaf jk/revert-aa-reap-transport-child-processes later to maint).

* Other code cleanup, docfix, build fix, etc.
(merge 80f4b802e9 ja/doc-difftool-synopsis-style later to maint).
(merge b96490241e jc/doc-timestamps-in-stat later to maint).

* Update various GitHub Actions versions.
(merge 4a6ed9d09f js/ci-github-actions-update later to maint).

* Avoid hitting the pathname limit for socks proxy socket during the
test..
(merge b33bea27a2 js/t5564-socks-use-short-path later to maint).

* Test fix.
(merge 66ae1a48ec jc/t5551-fix-expensive later to maint).

* To help Windows 10 installations, avoid removing files whose
contents are still mmap()'ed.
(merge 4bb086cfa2 js/maintenance-fix-deadlock-on-win10 later to maint).
1 change: 1 addition & 0 deletions builtin/gc.c
Original file line number Diff line number Diff line change
Expand Up @@ -1590,6 +1590,7 @@ static int maintenance_task_geometric_repack(struct maintenance_run_opts *opts,
pack_geometry_split(&geometry);

child.git_cmd = 1;
child.odb_to_close = the_repository->objects;

strvec_pushl(&child.args, "repack", "-d", "-l", NULL);
if (geometry.split < geometry.pack_nr)
Expand Down
47 changes: 45 additions & 2 deletions compat/mingw.c
Original file line number Diff line number Diff line change
Expand Up @@ -449,20 +449,63 @@ static wchar_t *normalize_ntpath(wchar_t *wbuf)
return wbuf;
}

/*
* Use SetFileInformationByHandle(FileDispositionInfo) to force legacy
* (non-POSIX) delete semantics. On Windows 11, DeleteFileW() uses POSIX
* delete semantics internally, allowing deletion even with active
* MapViewOfFile views. This helper simulates Windows 10 behavior where
* deletion fails if a file mapping exists.
*
* Returns nonzero on success (like DeleteFileW), 0 on failure.
*/
static int legacy_delete_file(const wchar_t *wpathname)
{
FILE_DISPOSITION_INFO fdi = { TRUE };
DWORD gle;
HANDLE h = CreateFileW(wpathname, DELETE,
FILE_SHARE_READ | FILE_SHARE_WRITE |
FILE_SHARE_DELETE,
NULL, OPEN_EXISTING,
FILE_FLAG_OPEN_REPARSE_POINT, NULL);
if (h == INVALID_HANDLE_VALUE)
return 0;

if (SetFileInformationByHandle(h, FileDispositionInfo,
&fdi, sizeof(fdi))) {
CloseHandle(h);
return 1;
}
gle = GetLastError();
CloseHandle(h);
SetLastError(gle);
return 0;
}

static int try_delete_file(const wchar_t *wpathname, int use_legacy)
{
if (use_legacy)
return legacy_delete_file(wpathname);
return DeleteFileW(wpathname);
}

int mingw_unlink(const char *pathname, int handle_in_use_error)
{
static int use_legacy_delete = -1;
int tries = 0;
wchar_t wpathname[MAX_PATH];
if (xutftowcs_path(wpathname, pathname) < 0)
return -1;

if (DeleteFileW(wpathname))
if (use_legacy_delete < 0)
use_legacy_delete = git_env_bool("GIT_TEST_LEGACY_DELETE", 0);

if (try_delete_file(wpathname, use_legacy_delete))
return 0;

do {
/* read-only files cannot be removed */
_wchmod(wpathname, 0666);
if (!_wunlink(wpathname))
if (try_delete_file(wpathname, use_legacy_delete))
return 0;
if (!is_file_in_use_error(GetLastError()))
break;
Expand Down
4 changes: 0 additions & 4 deletions connect.c
Original file line number Diff line number Diff line change
Expand Up @@ -1054,8 +1054,6 @@ static struct child_process *git_proxy_connect(int fd[2], char *host)
strvec_push(&proxy->args, port);
proxy->in = -1;
proxy->out = -1;
proxy->clean_on_exit = 1;
proxy->wait_after_clean = 1;
if (start_command(proxy))
die(_("cannot start proxy %s"), git_proxy_command);
fd[0] = proxy->out; /* read from proxy stdout */
Expand Down Expand Up @@ -1517,8 +1515,6 @@ struct child_process *git_connect(int fd[2], const char *url,
}
strvec_push(&conn->args, cmd.buf);

conn->clean_on_exit = 1;
conn->wait_after_clean = 1;
if (start_command(conn))
die(_("unable to fork"));

Expand Down
Loading