)]}'
{
  "commit": "bcc1c41fbb3a2b36f012d698d9dc02bda5cc9b19",
  "tree": "89a63acd37aa8a24392b2425174f644b2c22afa2",
  "parents": [
    "dee39e0926915213ccb6722a7e24b8ac7288bd87"
  ],
  "author": {
    "name": "Josh Bleecher Snyder",
    "email": "josharian@gmail.com",
    "time": "Thu May 29 00:36:49 2025 +0000"
  },
  "committer": {
    "name": "Josh Bleecher Snyder",
    "email": "josharian@gmail.com",
    "time": "Thu May 29 12:50:41 2025 -0700"
  },
  "message": "git_tools: add rename detection and proper handling of moved files\n\nEnhance GitRawDiff to properly handle file renames and moves by:\n\n1. Add -M flag to git diff commands to enable rename detection\n2. Update parseRawDiff to handle the different output format for renames:\n   - Rename format: :oldmode newmode oldhash newhash R100 old_path new_path\n   - Split rename operations into separate delete and add entries\n   - This allows Monaco diff view to display both old and new files\n\n3. Update DiffFile comment to document rename/copy status codes\n\nThe fix addresses GitHub issue #120 where Monaco diff view would error\nwhen displaying files that were both modified and renamed. By splitting\nrenames into delete/add pairs, the existing UI can handle moved files\nwithout requiring frontend changes.\n\nFixes #120\n\nCo-Authored-By: sketch \u003chello@sketch.dev\u003e\nChange-ID: s172724445cadbd68k\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "fa53e8de1cc0b6f17d826cddb3162569972b9aa4",
      "old_mode": 33188,
      "old_path": "git_tools/git_tools.go",
      "new_id": "18a241d9183b579c14e1057b1eebe9bd37509ced",
      "new_mode": 33188,
      "new_path": "git_tools/git_tools.go"
    },
    {
      "type": "modify",
      "old_id": "665be50c74453ddcff4f928b4a6dd86461ddb0ae",
      "old_mode": 33188,
      "old_path": "git_tools/git_tools_test.go",
      "new_id": "e26af434b88fd96f318d6dc5fa49868235c1b57e",
      "new_mode": 33188,
      "new_path": "git_tools/git_tools_test.go"
    },
    {
      "type": "modify",
      "old_id": "5031739b272a3caebd0327860b3936466e8d0b78",
      "old_mode": 33188,
      "old_path": "webui/src/types.ts",
      "new_id": "53cc96f06e3478d1b3f9179579078b179c05adc6",
      "new_mode": 33188,
      "new_path": "webui/src/types.ts"
    },
    {
      "type": "modify",
      "old_id": "648ca652d13ffed80ace469b2549fda16c461a5b",
      "old_mode": 33188,
      "old_path": "webui/src/web-components/demo/mock-git-data-service.ts",
      "new_id": "894d9aab07f1934942423130cbbdc318abd45c32",
      "new_mode": 33188,
      "new_path": "webui/src/web-components/demo/mock-git-data-service.ts"
    },
    {
      "type": "modify",
      "old_id": "eb94a5f8107729bb8e67bd5ac1d3d44404b908bc",
      "old_mode": 33188,
      "old_path": "webui/src/web-components/sketch-diff-file-picker.ts",
      "new_id": "cadafaecba7fb35b5f37098822f58c5c5003d1c6",
      "new_mode": 33188,
      "new_path": "webui/src/web-components/sketch-diff-file-picker.ts"
    }
  ]
}
