From b17f5105d8ad55964c371318de6533e253196232 Mon Sep 17 00:00:00 2001 From: Peter Evans <18365890+peter-evans@users.noreply.github.com> Date: Fri, 27 Dec 2024 10:51:52 +0000 Subject: [PATCH] fix: preserve unicode in filepaths when commit signing (#3588) --- __test__/entrypoint.sh | 8 ++++---- __test__/git-command-manager.int.test.ts | 6 +++--- dist/index.js | 2 ++ src/git-command-manager.ts | 2 ++ 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/__test__/entrypoint.sh b/__test__/entrypoint.sh index 064e6ba..eac9013 100755 --- a/__test__/entrypoint.sh +++ b/__test__/entrypoint.sh @@ -19,15 +19,15 @@ git clone git://127.0.0.1/repos/test-base.git /git/local/repos/test-base cd /git/local/repos/test-base git config --global user.email "you@example.com" git config --global user.name "Your Name" -echo "#test-base" > README_TEMP.md +echo "#test-base" > README→TEMP.md git add . git commit -m "initial commit" git commit --allow-empty -m "empty commit for tests" -echo "#test-base :sparkles:" > README_TEMP.md +echo "#test-base :sparkles:" > README→TEMP.md git add . git commit -m "add sparkles" -m "Change description: -- updates README_TEMP.md to add sparkles to the title" -mv README_TEMP.md README.md +- updates README→TEMP.md to add sparkles to the title" +mv README→TEMP.md README.md git add . git commit -m "rename readme" git push -u diff --git a/__test__/git-command-manager.int.test.ts b/__test__/git-command-manager.int.test.ts index 415637c..360cd86 100644 --- a/__test__/git-command-manager.int.test.ts +++ b/__test__/git-command-manager.int.test.ts @@ -20,7 +20,7 @@ describe('git-command-manager integration tests', () => { expect(initialCommit.signed).toBeFalsy() expect(initialCommit.changes[0].mode).toEqual('100644') expect(initialCommit.changes[0].status).toEqual('A') - expect(initialCommit.changes[0].path).toEqual('README_TEMP.md') + expect(initialCommit.changes[0].path).toEqual('README→TEMP.md') // filename contains unicode expect(emptyCommit.subject).toEqual('empty commit for tests') expect(emptyCommit.tree).toEqual(initialCommit.tree) // empty commits have no tree and reference the parent's @@ -33,7 +33,7 @@ describe('git-command-manager integration tests', () => { expect(modifiedCommit.signed).toBeFalsy() expect(modifiedCommit.changes[0].mode).toEqual('100644') expect(modifiedCommit.changes[0].status).toEqual('M') - expect(modifiedCommit.changes[0].path).toEqual('README_TEMP.md') + expect(modifiedCommit.changes[0].path).toEqual('README→TEMP.md') expect(headCommit.subject).toEqual('rename readme') expect(headCommit.parents[0]).toEqual(modifiedCommit.sha) @@ -43,6 +43,6 @@ describe('git-command-manager integration tests', () => { expect(headCommit.changes[0].path).toEqual('README.md') expect(headCommit.changes[1].mode).toEqual('100644') expect(headCommit.changes[1].status).toEqual('D') - expect(headCommit.changes[1].path).toEqual('README_TEMP.md') + expect(headCommit.changes[1].path).toEqual('README→TEMP.md') }) }) diff --git a/dist/index.js b/dist/index.js index a5d374a..83837b3 100644 --- a/dist/index.js +++ b/dist/index.js @@ -774,6 +774,8 @@ class GitCommandManager { return __awaiter(this, void 0, void 0, function* () { const endOfBody = '###EOB###'; const output = yield this.exec([ + '-c', + 'core.quotePath=false', 'show', '--raw', '--cc', diff --git a/src/git-command-manager.ts b/src/git-command-manager.ts index 7d60950..9be35e4 100644 --- a/src/git-command-manager.ts +++ b/src/git-command-manager.ts @@ -157,6 +157,8 @@ export class GitCommandManager { async getCommit(ref: string): Promise { const endOfBody = '###EOB###' const output = await this.exec([ + '-c', + 'core.quotePath=false', 'show', '--raw', '--cc',