e47d2c90113be8bb4a7d7f4191e9a923e6591505

Author
TheEdgeOfRage <git@theedgeofrage.com>
Committer
TheEdgeOfRage <git@theedgeofrage.com>
Date

Message

Allow Git revision suffixes

Diff

 1diff --git a/src/core/deterministic.ts b/src/core/deterministic.ts
 2index 48b0b8897c011585c818eb99a2142fef06b9dfbb..bff7b0762bf024a44db9115d9859a8e093305e85 100644
 3--- a/src/core/deterministic.ts
 4+++ b/src/core/deterministic.ts
 5@@ -210,10 +210,8 @@ function hasUnsafeWordSyntax(command: string, allowStaticGlobs = false, program?
 6       !(program === "grep" && isSafeGrepIncludeGlob(command, wordStart))
 7     )
 8       return true;
 9-    if (character === "~") {
10-      if (wordStarted || (nextCharacter !== undefined && nextCharacter !== "/" && !/\s/.test(nextCharacter))) {
11-        return true;
12-      }
13+    if (character === "~" && !wordStarted) {
14+      if (nextCharacter !== undefined && nextCharacter !== "/" && !/\s/.test(nextCharacter)) return true;
15     }
16     if (!wordStarted) wordStart = index;
17     wordStarted = true;
18diff --git a/test/core/deterministic.test.ts b/test/core/deterministic.test.ts
19index ec323aa0d550afd30b2f94cbbdac8f088aa04a2c..22f8c9687d5015ea68ffc629543179baa5f8c106 100644
20--- a/test/core/deterministic.test.ts
21+++ b/test/core/deterministic.test.ts
22@@ -26,6 +26,7 @@ test("allows recognized deterministic command grammars", () => {
23     "echo 'a|b'",
24     "git add src/core/rules.ts",
25     "git checkout main",
26+    "git diff main~1 --stat",
27     "git commit -m 'Allow deterministic Git changes'",
28     "git commit -m 'sudo rm -rf /'",
29     "cp README.md README.copy",