Skip to content

Commit

Permalink
fix(utils): getFileCommitDate should support log.showSignature=true (
Browse files Browse the repository at this point in the history
  • Loading branch information
slorber committed Apr 5, 2024
1 parent 5bb4832 commit 6e1364b
Showing 1 changed file with 16 additions and 6 deletions.
22 changes: 16 additions & 6 deletions packages/docusaurus-utils/src/gitUtils.ts
Expand Up @@ -107,21 +107,29 @@ export async function getFileCommitDate(
);
}

// We add a "RESULT:" prefix to make parsing easier
// See why: https://github.com/facebook/docusaurus/pull/10022
const resultFormat = includeAuthor ? 'RESULT:%ct,%an' : 'RESULT:%ct';

const args = [
`--format=%ct${includeAuthor ? ',%an' : ''}`,
`--format=${resultFormat}`,
'--max-count=1',
age === 'oldest' ? '--follow --diff-filter=A' : undefined,
]
.filter(Boolean)
.join(' ');

const command = `git -c log.showSignature=false log ${args} -- "${path.basename(
file,
)}"`;

const result = await new Promise<{
code: number;
stdout: string;
stderr: string;
}>((resolve) => {
shell.exec(
`git log ${args} -- "${path.basename(file)}"`,
command,
{
// Setting cwd is important, see: https://github.com/facebook/docusaurus/pull/5048
cwd: path.dirname(file),
Expand All @@ -138,10 +146,12 @@ export async function getFileCommitDate(
`Failed to retrieve the git history for file "${file}" with exit code ${result.code}: ${result.stderr}`,
);
}
let regex = /^(?<timestamp>\d+)$/;
if (includeAuthor) {
regex = /^(?<timestamp>\d+),(?<author>.+)$/;
}

// We only parse the output line starting with our "RESULT:" prefix
// See why https://github.com/facebook/docusaurus/pull/10022
const regex = includeAuthor
? /(?:^|\n)RESULT:(?<timestamp>\d+),(?<author>.+)(?:$|\n)/
: /(?:^|\n)RESULT:(?<timestamp>\d+)(?:$|\n)/;

const output = result.stdout.trim();

Expand Down

0 comments on commit 6e1364b

Please sign in to comment.