Download rtk/filters/gitDiff.js from kirimdata369/task-manager-pro: direct link, hf CLI and curl.
- Browser
- Download file 2.61 kB
-
https://huggingface.co/spaces/kirimdata369/task-manager-pro/resolve/main/rtk/filters/gitDiff.js
- Command line
-
hf download hf://spaces/kirimdata369/task-manager-pro/rtk/filters/gitDiff.js
-
curl -L -o gitDiff.js https://huggingface.co/spaces/kirimdata369/task-manager-pro/resolve/main/rtk/filters/gitDiff.js
2.61 kB
| // Port of Rust git::compact_diff (src/cmds/git/git.rs L325-413) | |
| // Compacts unified diff: file headers, hunk-level truncation at 100 lines, +/-/context counting | |
| const { GIT_DIFF_HUNK_MAX_LINES } = require("../constants.js"); | |
| function gitDiff(diff, maxLines = 500) { | |
| const result = []; | |
| let currentFile = ""; | |
| let added = 0; | |
| let removed = 0; | |
| let inHunk = false; | |
| let hunkShown = 0; | |
| let hunkSkipped = 0; | |
| let wasTruncated = false; | |
| const maxHunkLines = GIT_DIFF_HUNK_MAX_LINES; | |
| const lines = diff.split("\n"); | |
| outer: for (const line of lines) { | |
| if (line.startsWith("diff --git")) { | |
| if (hunkSkipped > 0) { | |
| result.push(` ... (${hunkSkipped} lines truncated)`); | |
| wasTruncated = true; | |
| hunkSkipped = 0; | |
| } | |
| if (currentFile && (added > 0 || removed > 0)) { | |
| result.push(` +${added} -${removed}`); | |
| } | |
| const parts = line.split(" b/"); | |
| currentFile = parts.length > 1 ? parts.slice(1).join(" b/") : "unknown"; | |
| result.push(`\n${currentFile}`); | |
| added = 0; | |
| removed = 0; | |
| inHunk = false; | |
| hunkShown = 0; | |
| } else if (line.startsWith("@@")) { | |
| if (hunkSkipped > 0) { | |
| result.push(` ... (${hunkSkipped} lines truncated)`); | |
| wasTruncated = true; | |
| hunkSkipped = 0; | |
| } | |
| inHunk = true; | |
| hunkShown = 0; | |
| result.push(` ${line}`); | |
| } else if (inHunk) { | |
| if (line.startsWith("+") && !line.startsWith("+++")) { | |
| added += 1; | |
| if (hunkShown < maxHunkLines) { | |
| result.push(` ${line}`); | |
| hunkShown += 1; | |
| } else { | |
| hunkSkipped += 1; | |
| } | |
| } else if (line.startsWith("-") && !line.startsWith("---")) { | |
| removed += 1; | |
| if (hunkShown < maxHunkLines) { | |
| result.push(` ${line}`); | |
| hunkShown += 1; | |
| } else { | |
| hunkSkipped += 1; | |
| } | |
| } else if (hunkShown < maxHunkLines && !line.startsWith("\\")) { | |
| if (hunkShown > 0) { | |
| result.push(` ${line}`); | |
| hunkShown += 1; | |
| } | |
| } | |
| } | |
| if (result.length >= maxLines) { | |
| result.push("\n... (more changes truncated)"); | |
| wasTruncated = true; | |
| break outer; | |
| } | |
| } | |
| if (hunkSkipped > 0) { | |
| result.push(` ... (${hunkSkipped} lines truncated)`); | |
| wasTruncated = true; | |
| } | |
| if (currentFile && (added > 0 || removed > 0)) { | |
| result.push(` +${added} -${removed}`); | |
| } | |
| if (wasTruncated) { | |
| result.push("[full diff: rtk git diff --no-compact]"); | |
| } | |
| return result.join("\n"); | |
| } | |
| gitDiff.filterName = "git-diff"; | |
| module.exports = { gitDiff }; | |