git-chopstick-core 0.1.1 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +324 -32
- package/dist/git/add.d.ts +9 -0
- package/dist/git/add.js +11 -0
- package/dist/git/add.js.map +1 -0
- package/dist/git/apply.d.ts +33 -0
- package/dist/git/apply.js +103 -0
- package/dist/git/apply.js.map +1 -0
- package/dist/git/authentication.d.ts +5 -0
- package/dist/git/authentication.js +19 -0
- package/dist/git/authentication.js.map +1 -0
- package/dist/git/branch.d.ts +43 -0
- package/dist/git/branch.js +150 -0
- package/dist/git/branch.js.map +1 -0
- package/dist/git/checkout-index.d.ts +19 -0
- package/{src/git/checkout-index.ts → dist/git/checkout-index.js} +11 -22
- package/dist/git/checkout-index.js.map +1 -0
- package/dist/git/checkout.d.ts +46 -0
- package/dist/git/checkout.js +126 -0
- package/dist/git/checkout.js.map +1 -0
- package/dist/git/cherry-pick.d.ts +82 -0
- package/dist/git/cherry-pick.js +371 -0
- package/dist/git/cherry-pick.js.map +1 -0
- package/dist/git/clean.d.ts +5 -0
- package/dist/git/clean.js +8 -0
- package/dist/git/clean.js.map +1 -0
- package/dist/git/clone.d.ts +22 -0
- package/dist/git/clone.js +58 -0
- package/dist/git/clone.js.map +1 -0
- package/dist/git/coerce-to-buffer.d.ts +1 -0
- package/dist/git/coerce-to-buffer.js +2 -0
- package/dist/git/coerce-to-buffer.js.map +1 -0
- package/dist/git/coerce-to-string.d.ts +1 -0
- package/dist/git/coerce-to-string.js +2 -0
- package/dist/git/coerce-to-string.js.map +1 -0
- package/dist/git/commit.d.ts +25 -0
- package/dist/git/commit.js +99 -0
- package/dist/git/commit.js.map +1 -0
- package/dist/git/config.d.ts +98 -0
- package/dist/git/config.js +249 -0
- package/dist/git/config.js.map +1 -0
- package/dist/git/core.d.ts +167 -0
- package/dist/git/core.js +368 -0
- package/dist/git/core.js.map +1 -0
- package/dist/git/create-tail-stream.d.ts +4 -0
- package/dist/git/create-tail-stream.js +30 -0
- package/dist/git/create-tail-stream.js.map +1 -0
- package/dist/git/credential.d.ts +5 -0
- package/dist/git/credential.js +64 -0
- package/dist/git/credential.js.map +1 -0
- package/dist/git/description.d.ts +5 -0
- package/dist/git/description.js +24 -0
- package/dist/git/description.js.map +1 -0
- package/dist/git/diff-check.d.ts +7 -0
- package/dist/git/diff-check.js +17 -0
- package/dist/git/diff-check.js.map +1 -0
- package/dist/git/diff-index.d.ts +31 -0
- package/dist/git/diff-index.js +76 -0
- package/dist/git/diff-index.js.map +1 -0
- package/dist/git/diff.d.ts +81 -0
- package/dist/git/diff.js +611 -0
- package/dist/git/diff.js.map +1 -0
- package/dist/git/environment.d.ts +51 -0
- package/dist/git/environment.js +97 -0
- package/dist/git/environment.js.map +1 -0
- package/dist/git/exec.d.ts +109 -0
- package/dist/git/exec.js +224 -0
- package/dist/git/exec.js.map +1 -0
- package/dist/git/fetch.d.ts +25 -0
- package/dist/git/fetch.js +100 -0
- package/dist/git/fetch.js.map +1 -0
- package/dist/git/for-each-ref.d.ts +13 -0
- package/dist/git/for-each-ref.js +114 -0
- package/dist/git/for-each-ref.js.map +1 -0
- package/dist/git/format-patch.d.ts +10 -0
- package/dist/git/format-patch.js +16 -0
- package/dist/git/format-patch.js.map +1 -0
- package/dist/git/git-delimiter-parser.d.ts +38 -0
- package/dist/git/git-delimiter-parser.js +79 -0
- package/dist/git/git-delimiter-parser.js.map +1 -0
- package/dist/git/gitignore.d.ts +26 -0
- package/dist/git/gitignore.js +124 -0
- package/dist/git/gitignore.js.map +1 -0
- package/dist/git/index.d.ts +46 -0
- package/dist/git/index.js +47 -0
- package/dist/git/index.js.map +1 -0
- package/dist/git/init.d.ts +2 -0
- package/dist/git/init.js +7 -0
- package/dist/git/init.js.map +1 -0
- package/{src/git/interpret-trailers.ts → dist/git/interpret-trailers.d.ts} +9 -97
- package/dist/git/interpret-trailers.js +130 -0
- package/dist/git/interpret-trailers.js.map +1 -0
- package/dist/git/lfs.d.ts +25 -0
- package/dist/git/lfs.js +73 -0
- package/dist/git/lfs.js.map +1 -0
- package/dist/git/log.d.ts +56 -0
- package/dist/git/log.js +258 -0
- package/dist/git/log.js.map +1 -0
- package/dist/git/merge-tree.d.ts +13 -0
- package/dist/git/merge-tree.js +24 -0
- package/dist/git/merge-tree.js.map +1 -0
- package/dist/git/merge.d.ts +50 -0
- package/dist/git/merge.js +111 -0
- package/dist/git/merge.js.map +1 -0
- package/dist/git/multi-operation-terminal-output.d.ts +20 -0
- package/dist/git/multi-operation-terminal-output.js +56 -0
- package/dist/git/multi-operation-terminal-output.js.map +1 -0
- package/dist/git/pull.d.ts +24 -0
- package/dist/git/pull.js +91 -0
- package/dist/git/pull.js.map +1 -0
- package/{src/git/push-terminal-chunk.ts → dist/git/push-terminal-chunk.d.ts} +1 -23
- package/dist/git/push-terminal-chunk.js +36 -0
- package/dist/git/push-terminal-chunk.js.map +1 -0
- package/dist/git/push.d.ts +42 -0
- package/dist/git/push.js +80 -0
- package/dist/git/push.js.map +1 -0
- package/dist/git/rebase.d.ts +119 -0
- package/dist/git/rebase.js +415 -0
- package/dist/git/rebase.js.map +1 -0
- package/dist/git/reflog.d.ts +14 -0
- package/dist/git/reflog.js +88 -0
- package/dist/git/reflog.js.map +1 -0
- package/dist/git/refs.d.ts +26 -0
- package/dist/git/refs.js +53 -0
- package/dist/git/refs.js.map +1 -0
- package/dist/git/remote.d.ts +31 -0
- package/dist/git/remote.js +81 -0
- package/dist/git/remote.js.map +1 -0
- package/dist/git/reorder.d.ts +23 -0
- package/dist/git/reorder.js +111 -0
- package/dist/git/reorder.js.map +1 -0
- package/dist/git/reset.d.ts +41 -0
- package/dist/git/reset.js +86 -0
- package/dist/git/reset.js.map +1 -0
- package/dist/git/rev-list.d.ts +67 -0
- package/dist/git/rev-list.js +157 -0
- package/dist/git/rev-list.js.map +1 -0
- package/dist/git/rev-parse.d.ts +24 -0
- package/dist/git/rev-parse.js +65 -0
- package/dist/git/rev-parse.js.map +1 -0
- package/dist/git/revert.d.ts +12 -0
- package/dist/git/revert.js +30 -0
- package/dist/git/revert.js.map +1 -0
- package/dist/git/rm.d.ts +12 -0
- package/dist/git/rm.js +22 -0
- package/dist/git/rm.js.map +1 -0
- package/dist/git/show.d.ts +42 -0
- package/{src/git/show.ts → dist/git/show.js} +17 -46
- package/dist/git/show.js.map +1 -0
- package/dist/git/spawn.d.ts +18 -0
- package/dist/git/spawn.js +16 -0
- package/dist/git/spawn.js.map +1 -0
- package/dist/git/squash.d.ts +28 -0
- package/dist/git/squash.js +127 -0
- package/dist/git/squash.js.map +1 -0
- package/dist/git/stage.d.ts +21 -0
- package/dist/git/stage.js +72 -0
- package/dist/git/stage.js.map +1 -0
- package/dist/git/stash.d.ts +53 -0
- package/dist/git/stash.js +204 -0
- package/dist/git/stash.js.map +1 -0
- package/dist/git/status.d.ts +39 -0
- package/dist/git/status.js +293 -0
- package/dist/git/status.js.map +1 -0
- package/dist/git/submodule.d.ts +20 -0
- package/dist/git/submodule.js +153 -0
- package/dist/git/submodule.js.map +1 -0
- package/dist/git/tag.d.ts +32 -0
- package/dist/git/tag.js +101 -0
- package/dist/git/tag.js.map +1 -0
- package/dist/git/update-index.d.ts +11 -0
- package/dist/git/update-index.js +99 -0
- package/dist/git/update-index.js.map +1 -0
- package/dist/git/update-ref.d.ts +23 -0
- package/{src/git/update-ref.ts → dist/git/update-ref.js} +10 -28
- package/dist/git/update-ref.js.map +1 -0
- package/dist/git/var.d.ts +18 -0
- package/{src/git/var.ts → dist/git/var.js} +16 -25
- package/dist/git/var.js.map +1 -0
- package/dist/git/worktree-include.d.ts +42 -0
- package/dist/git/worktree-include.js +109 -0
- package/dist/git/worktree-include.js.map +1 -0
- package/dist/git/worktree.d.ts +25 -0
- package/dist/git/worktree.js +139 -0
- package/dist/git/worktree.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/api.d.ts +2 -0
- package/dist/lib/api.js +7 -0
- package/dist/lib/api.js.map +1 -0
- package/dist/lib/diff-parser.d.ts +20 -0
- package/dist/lib/diff-parser.js +184 -0
- package/dist/lib/diff-parser.js.map +1 -0
- package/dist/lib/directory-exists.d.ts +1 -0
- package/dist/lib/directory-exists.js +11 -0
- package/dist/lib/directory-exists.js.map +1 -0
- package/dist/lib/errno-exception.d.ts +6 -0
- package/dist/lib/errno-exception.js +6 -0
- package/dist/lib/errno-exception.js.map +1 -0
- package/dist/lib/fatal-error.d.ts +4 -0
- package/dist/lib/fatal-error.js +18 -0
- package/dist/lib/fatal-error.js.map +1 -0
- package/dist/lib/feature-flag.d.ts +14 -0
- package/dist/lib/feature-flag.js +25 -0
- package/dist/lib/feature-flag.js.map +1 -0
- package/dist/lib/file-system.d.ts +1 -0
- package/dist/lib/file-system.js +7 -0
- package/dist/lib/file-system.js.map +1 -0
- package/dist/lib/get-old-path.d.ts +2 -0
- package/dist/lib/get-old-path.js +9 -0
- package/dist/lib/get-old-path.js.map +1 -0
- package/dist/lib/git/environment.d.ts +3 -0
- package/dist/lib/git/environment.js +7 -0
- package/dist/lib/git/environment.js.map +1 -0
- package/dist/lib/git-perf.d.ts +1 -0
- package/dist/lib/git-perf.js +4 -0
- package/dist/lib/git-perf.js.map +1 -0
- package/dist/lib/helpers/default-branch.d.ts +1 -0
- package/dist/lib/helpers/default-branch.js +4 -0
- package/dist/lib/helpers/default-branch.js.map +1 -0
- package/dist/lib/helpers/path.d.ts +1 -0
- package/dist/lib/helpers/path.js +5 -0
- package/dist/lib/helpers/path.js.map +1 -0
- package/dist/lib/hooks/with-hooks-env.d.ts +3 -0
- package/dist/lib/hooks/with-hooks-env.js +4 -0
- package/dist/lib/hooks/with-hooks-env.js.map +1 -0
- package/dist/lib/merge.d.ts +1 -0
- package/dist/lib/merge.js +4 -0
- package/dist/lib/merge.js.map +1 -0
- package/dist/lib/noop.d.ts +1 -0
- package/dist/lib/noop.js +2 -0
- package/dist/lib/noop.js.map +1 -0
- package/dist/lib/patch-formatter.d.ts +5 -0
- package/dist/lib/patch-formatter.js +7 -0
- package/dist/lib/patch-formatter.js.map +1 -0
- package/dist/lib/path-exists.d.ts +1 -0
- package/dist/lib/path-exists.js +3 -0
- package/dist/lib/path-exists.js.map +1 -0
- package/dist/lib/progress/from-process.d.ts +2 -0
- package/dist/lib/progress/from-process.js +4 -0
- package/dist/lib/progress/from-process.js.map +1 -0
- package/dist/lib/progress/index.d.ts +49 -0
- package/dist/lib/progress/index.js +32 -0
- package/dist/lib/progress/index.js.map +1 -0
- package/dist/lib/progress/revert.d.ts +8 -0
- package/dist/lib/progress/revert.js +15 -0
- package/dist/lib/progress/revert.js.map +1 -0
- package/dist/lib/rebase.d.ts +1 -0
- package/dist/lib/rebase.js +4 -0
- package/dist/lib/rebase.js.map +1 -0
- package/dist/lib/remove-remote-prefix.d.ts +1 -0
- package/dist/lib/remove-remote-prefix.js +5 -0
- package/dist/lib/remove-remote-prefix.js.map +1 -0
- package/dist/lib/resolve-git-proxy.d.ts +1 -0
- package/dist/lib/resolve-git-proxy.js +4 -0
- package/dist/lib/resolve-git-proxy.js.map +1 -0
- package/dist/lib/round.d.ts +1 -0
- package/dist/lib/round.js +5 -0
- package/dist/lib/round.js.map +1 -0
- package/dist/lib/split-buffer.d.ts +1 -0
- package/dist/lib/split-buffer.js +15 -0
- package/dist/lib/split-buffer.js.map +1 -0
- package/dist/lib/status-parser.d.ts +19 -0
- package/dist/lib/status-parser.js +125 -0
- package/dist/lib/status-parser.js.map +1 -0
- package/dist/lib/stores/helpers/find-default-remote.d.ts +1 -0
- package/dist/lib/stores/helpers/find-default-remote.js +4 -0
- package/dist/lib/stores/helpers/find-default-remote.js.map +1 -0
- package/dist/lib/trampoline/trampoline-environment.d.ts +1 -0
- package/dist/lib/trampoline/trampoline-environment.js +4 -0
- package/dist/lib/trampoline/trampoline-environment.js.map +1 -0
- package/dist/models/branch.d.ts +44 -0
- package/dist/models/branch.js +59 -0
- package/dist/models/branch.js.map +1 -0
- package/dist/models/cherry-pick.d.ts +11 -0
- package/dist/models/cherry-pick.js +2 -0
- package/dist/models/cherry-pick.js.map +1 -0
- package/dist/models/clone-options.d.ts +6 -0
- package/dist/models/clone-options.js +2 -0
- package/dist/models/clone-options.js.map +1 -0
- package/dist/models/commit-identity.d.ts +9 -0
- package/dist/models/commit-identity.js +34 -0
- package/dist/models/commit-identity.js.map +1 -0
- package/dist/models/commit.d.ts +30 -0
- package/dist/models/commit.js +32 -0
- package/dist/models/commit.js.map +1 -0
- package/dist/models/computed-action.d.ts +6 -0
- package/dist/models/computed-action.js +8 -0
- package/dist/models/computed-action.js.map +1 -0
- package/dist/models/diff/diff-data.d.ts +53 -0
- package/dist/models/diff/diff-data.js +19 -0
- package/dist/models/diff/diff-data.js.map +1 -0
- package/dist/models/diff/diff-line.d.ts +18 -0
- package/dist/models/diff/diff-line.js +33 -0
- package/dist/models/diff/diff-line.js.map +1 -0
- package/dist/models/diff/diff-selection.d.ts +22 -0
- package/dist/models/diff/diff-selection.js +127 -0
- package/dist/models/diff/diff-selection.js.map +1 -0
- package/dist/models/diff/image-diff.d.ts +6 -0
- package/dist/models/diff/image-diff.js +8 -0
- package/dist/models/diff/image-diff.js.map +1 -0
- package/dist/models/diff/image.d.ts +7 -0
- package/dist/models/diff/image.js +13 -0
- package/dist/models/diff/image.js.map +1 -0
- package/dist/models/diff/index.d.ts +6 -0
- package/dist/models/diff/index.js +7 -0
- package/dist/models/diff/index.js.map +1 -0
- package/dist/models/diff/raw-diff.d.ts +32 -0
- package/dist/models/diff/raw-diff.js +38 -0
- package/dist/models/diff/raw-diff.js.map +1 -0
- package/dist/models/git-author.d.ts +7 -0
- package/dist/models/git-author.js +18 -0
- package/dist/models/git-author.js.map +1 -0
- package/dist/models/index.d.ts +21 -0
- package/dist/models/index.js +20 -0
- package/dist/models/index.js.map +1 -0
- package/dist/models/manual-conflict-resolution.d.ts +4 -0
- package/dist/models/manual-conflict-resolution.js +6 -0
- package/dist/models/manual-conflict-resolution.js.map +1 -0
- package/dist/models/merge.d.ts +6 -0
- package/dist/models/merge.js +2 -0
- package/dist/models/merge.js.map +1 -0
- package/dist/models/multi-commit-operation.d.ts +6 -0
- package/dist/models/multi-commit-operation.js +8 -0
- package/dist/models/multi-commit-operation.js.map +1 -0
- package/dist/models/progress.d.ts +41 -0
- package/dist/models/progress.js +7 -0
- package/dist/models/progress.js.map +1 -0
- package/dist/models/rebase.d.ts +17 -0
- package/dist/models/rebase.js +8 -0
- package/dist/models/rebase.js.map +1 -0
- package/dist/models/remote.d.ts +5 -0
- package/dist/models/remote.js +8 -0
- package/dist/models/remote.js.map +1 -0
- package/dist/models/repository.d.ts +7 -0
- package/dist/models/repository.js +15 -0
- package/dist/models/repository.js.map +1 -0
- package/dist/models/stash-entry.d.ts +20 -0
- package/dist/models/stash-entry.js +7 -0
- package/dist/models/stash-entry.js.map +1 -0
- package/dist/models/status.d.ts +166 -0
- package/dist/models/status.js +135 -0
- package/dist/models/status.js.map +1 -0
- package/dist/models/submodule.d.ts +12 -0
- package/dist/models/submodule.js +2 -0
- package/dist/models/submodule.js.map +1 -0
- package/dist/models/worktree.d.ts +10 -0
- package/dist/models/worktree.js +2 -0
- package/dist/models/worktree.js.map +1 -0
- package/package.json +44 -5
- package/examples/get-status.ts +0 -84
- package/src/git/add.ts +0 -16
- package/src/git/apply.ts +0 -154
- package/src/git/authentication.ts +0 -19
- package/src/git/branch.ts +0 -206
- package/src/git/checkout.ts +0 -235
- package/src/git/cherry-pick.ts +0 -504
- package/src/git/clean.ts +0 -9
- package/src/git/clone.ts +0 -86
- package/src/git/coerce-to-buffer.ts +0 -4
- package/src/git/coerce-to-string.ts +0 -4
- package/src/git/commit.ts +0 -136
- package/src/git/config.ts +0 -392
- package/src/git/core.ts +0 -625
- package/src/git/create-tail-stream.ts +0 -36
- package/src/git/credential.ts +0 -83
- package/src/git/description.ts +0 -33
- package/src/git/diff-check.ts +0 -27
- package/src/git/diff-index.ts +0 -116
- package/src/git/diff.ts +0 -880
- package/src/git/environment.ts +0 -116
- package/src/git/exec.ts +0 -285
- package/src/git/fetch.ts +0 -141
- package/src/git/for-each-ref.ts +0 -160
- package/src/git/format-patch.ts +0 -17
- package/src/git/git-delimiter-parser.ts +0 -95
- package/src/git/gitignore.ts +0 -157
- package/src/git/index.ts +0 -36
- package/src/git/init.ts +0 -11
- package/src/git/lfs.ts +0 -100
- package/src/git/log.ts +0 -376
- package/src/git/merge-tree.ts +0 -42
- package/src/git/merge.ts +0 -154
- package/src/git/multi-operation-terminal-output.ts +0 -68
- package/src/git/pull.ts +0 -130
- package/src/git/push.ts +0 -119
- package/src/git/rebase.ts +0 -627
- package/src/git/reflog.ts +0 -127
- package/src/git/refs.ts +0 -63
- package/src/git/remote.ts +0 -143
- package/src/git/reorder.ts +0 -153
- package/src/git/reset.ts +0 -101
- package/src/git/rev-list.ts +0 -201
- package/src/git/rev-parse.ts +0 -92
- package/src/git/revert.ts +0 -55
- package/src/git/rm.ts +0 -31
- package/src/git/spawn.ts +0 -38
- package/src/git/squash.ts +0 -173
- package/src/git/stage.ts +0 -97
- package/src/git/stash.ts +0 -302
- package/src/git/status.ts +0 -502
- package/src/git/submodule.ts +0 -212
- package/src/git/tag.ts +0 -134
- package/src/git/update-index.ts +0 -169
- package/src/git/worktree-include.ts +0 -146
- package/src/git/worktree.ts +0 -219
- package/src/index.ts +0 -23
- package/src/lib/api.ts +0 -7
- package/src/lib/diff-parser.ts +0 -249
- package/src/lib/directory-exists.ts +0 -10
- package/src/lib/errno-exception.ts +0 -12
- package/src/lib/fatal-error.ts +0 -23
- package/src/lib/feature-flag.ts +0 -29
- package/src/lib/file-system.ts +0 -7
- package/src/lib/get-old-path.ts +0 -11
- package/src/lib/git/environment.ts +0 -14
- package/src/lib/git-perf.ts +0 -3
- package/src/lib/helpers/default-branch.ts +0 -3
- package/src/lib/helpers/path.ts +0 -5
- package/src/lib/hooks/with-hooks-env.ts +0 -7
- package/src/lib/merge.ts +0 -3
- package/src/lib/noop.ts +0 -1
- package/src/lib/patch-formatter.ts +0 -18
- package/src/lib/path-exists.ts +0 -7
- package/src/lib/progress/from-process.ts +0 -10
- package/src/lib/progress/index.ts +0 -43
- package/src/lib/progress/revert.ts +0 -17
- package/src/lib/rebase.ts +0 -3
- package/src/lib/remove-remote-prefix.ts +0 -4
- package/src/lib/resolve-git-proxy.ts +0 -3
- package/src/lib/round.ts +0 -4
- package/src/lib/split-buffer.ts +0 -14
- package/src/lib/status-parser.ts +0 -188
- package/src/lib/stores/helpers/find-default-remote.ts +0 -3
- package/src/lib/trampoline/trampoline-environment.ts +0 -8
- package/src/models/branch.ts +0 -78
- package/src/models/cherry-pick.ts +0 -12
- package/src/models/clone-options.ts +0 -6
- package/src/models/commit-identity.ts +0 -35
- package/src/models/commit.ts +0 -44
- package/src/models/computed-action.ts +0 -6
- package/src/models/diff/diff-data.ts +0 -78
- package/src/models/diff/diff-line.ts +0 -36
- package/src/models/diff/diff-selection.ts +0 -165
- package/src/models/diff/image-diff.ts +0 -6
- package/src/models/diff/image.ts +0 -8
- package/src/models/diff/index.ts +0 -6
- package/src/models/diff/raw-diff.ts +0 -41
- package/src/models/git-author.ts +0 -16
- package/src/models/manual-conflict-resolution.ts +0 -4
- package/src/models/merge.ts +0 -6
- package/src/models/multi-commit-operation.ts +0 -6
- package/src/models/progress.ts +0 -67
- package/src/models/rebase.ts +0 -20
- package/src/models/remote.ts +0 -10
- package/src/models/repository.ts +0 -16
- package/src/models/stash-entry.ts +0 -25
- package/src/models/status.ts +0 -275
- package/src/models/submodule.ts +0 -13
- package/src/models/worktree.ts +0 -11
- package/tsconfig.json +0 -17
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import * as Fs from 'fs';
|
|
2
|
+
import * as Path from 'path';
|
|
3
|
+
import { readFile, copyFile, mkdir } from 'fs/promises';
|
|
4
|
+
import ignore from 'ignore';
|
|
5
|
+
import { git } from './core.js';
|
|
6
|
+
import { addWorktree, getMainWorktreePath } from './worktree.js';
|
|
7
|
+
const WorktreeIncludeFile = '.worktreeinclude';
|
|
8
|
+
/**
|
|
9
|
+
* Reads the patterns from the `.worktreeinclude` file at the root of the
|
|
10
|
+
* given repository path.
|
|
11
|
+
*
|
|
12
|
+
* The file uses `.gitignore` syntax. Blank lines and lines starting with `#`
|
|
13
|
+
* are ignored.
|
|
14
|
+
*
|
|
15
|
+
* Returns an empty array if the file does not exist.
|
|
16
|
+
*/
|
|
17
|
+
export async function readWorktreeIncludePatterns(repositoryPath) {
|
|
18
|
+
const filePath = Path.join(repositoryPath, WorktreeIncludeFile);
|
|
19
|
+
let contents;
|
|
20
|
+
try {
|
|
21
|
+
contents = await readFile(filePath, 'utf8');
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
return [];
|
|
25
|
+
}
|
|
26
|
+
return contents
|
|
27
|
+
.split('\n')
|
|
28
|
+
.map(line => line.trim())
|
|
29
|
+
.filter(line => line.length > 0 && !line.startsWith('#'));
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Returns the list of gitignored files in `repositoryPath` that match any of
|
|
33
|
+
* the given patterns.
|
|
34
|
+
*
|
|
35
|
+
* Only files that are both gitignored **and** matched by a `.worktreeinclude`
|
|
36
|
+
* pattern are returned — tracked files are never included.
|
|
37
|
+
*/
|
|
38
|
+
export async function getIgnoredFilesMatchingPatterns(repository, patterns) {
|
|
39
|
+
if (patterns.length === 0) {
|
|
40
|
+
return [];
|
|
41
|
+
}
|
|
42
|
+
const result = await git(['ls-files', '--others', '--ignored', '--exclude-standard', '-z'], repository.path, 'getIgnoredFiles');
|
|
43
|
+
// Files are NUL-separated; filter out empty entries from the split
|
|
44
|
+
const ignoredFiles = result.stdout.split('\0').filter(f => f.length > 0);
|
|
45
|
+
const ig = ignore().add(patterns);
|
|
46
|
+
return ignoredFiles.filter(f => ig.ignores(f));
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Copies each file in `files` (relative paths) from `sourcePath` to
|
|
50
|
+
* `destinationPath`, preserving the directory structure.
|
|
51
|
+
*
|
|
52
|
+
* Files that cannot be copied (e.g. because they no longer exist at the
|
|
53
|
+
* source) are skipped silently — a failure to copy a single file never
|
|
54
|
+
* prevents the others from being copied.
|
|
55
|
+
*/
|
|
56
|
+
export async function copyWorktreeIncludeFiles(sourcePath, destinationPath, files) {
|
|
57
|
+
for (const file of files) {
|
|
58
|
+
const src = Path.join(sourcePath, file);
|
|
59
|
+
const dest = Path.join(destinationPath, file);
|
|
60
|
+
// Guard against path traversal: the resolved destination must be
|
|
61
|
+
// inside the worktree directory.
|
|
62
|
+
const resolvedDest = Path.resolve(dest);
|
|
63
|
+
const resolvedWorktreeRoot = Path.resolve(destinationPath);
|
|
64
|
+
if (!resolvedDest.startsWith(resolvedWorktreeRoot + Path.sep)) {
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
try {
|
|
68
|
+
// eslint-disable-next-line no-sync
|
|
69
|
+
if (!Fs.existsSync(src)) {
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
await mkdir(Path.dirname(dest), { recursive: true });
|
|
73
|
+
await copyFile(src, dest);
|
|
74
|
+
}
|
|
75
|
+
catch (e) {
|
|
76
|
+
console.warn(`[worktree-include] Failed to copy '${file}' to worktree`, e instanceof Error ? e : undefined);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Creates a new git worktree and then copies any gitignored files listed in
|
|
82
|
+
* the `.worktreeinclude` file from the main worktree into the newly created
|
|
83
|
+
* worktree.
|
|
84
|
+
*
|
|
85
|
+
* The copy step is best-effort: failures are logged but do not prevent the
|
|
86
|
+
* worktree from being used.
|
|
87
|
+
*
|
|
88
|
+
* @param repository The repository to create the worktree in.
|
|
89
|
+
* @param path The absolute path where the new worktree should be created.
|
|
90
|
+
* @param options Options forwarded to `addWorktree`.
|
|
91
|
+
*/
|
|
92
|
+
export async function addWorktreeWithIncludes(repository, path, options = {}) {
|
|
93
|
+
await addWorktree(repository, path, options);
|
|
94
|
+
try {
|
|
95
|
+
const mainPath = (await getMainWorktreePath(repository)) ?? repository.path;
|
|
96
|
+
const patterns = await readWorktreeIncludePatterns(mainPath);
|
|
97
|
+
if (patterns.length === 0) {
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
const files = await getIgnoredFilesMatchingPatterns(repository, patterns);
|
|
101
|
+
if (files.length > 0) {
|
|
102
|
+
await copyWorktreeIncludeFiles(mainPath, path, files);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
catch (e) {
|
|
106
|
+
console.warn('[worktree-include] Failed to process .worktreeinclude; worktree was still created', e instanceof Error ? e : undefined);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=worktree-include.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worktree-include.js","sourceRoot":"","sources":["../../src/git/worktree-include.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Repository } from '../models/repository.js';
|
|
2
|
+
import type { WorktreeEntry } from '../models/worktree.js';
|
|
3
|
+
/**
|
|
4
|
+
* Get the set of canonical branch refs (e.g. `refs/heads/feature`)
|
|
5
|
+
* checked out in any worktree (main or linked).
|
|
6
|
+
*/
|
|
7
|
+
export declare function getWorktreeCheckedOutBranches(repository: Repository): Promise<ReadonlySet<string>>;
|
|
8
|
+
export interface IWorktreePathInfo {
|
|
9
|
+
readonly isLinkedWorktree: boolean;
|
|
10
|
+
readonly mainWorktreePath: string | null;
|
|
11
|
+
}
|
|
12
|
+
export declare function parseWorktreePorcelainOutput(stdout: string): ReadonlyArray<WorktreeEntry>;
|
|
13
|
+
export declare function listWorktrees(repository: Repository): Promise<ReadonlyArray<WorktreeEntry>>;
|
|
14
|
+
export declare function addWorktree(repository: Repository, path: string, options?: {
|
|
15
|
+
readonly branch?: string;
|
|
16
|
+
readonly createBranch?: string;
|
|
17
|
+
readonly detach?: boolean;
|
|
18
|
+
readonly commitish?: string;
|
|
19
|
+
}): Promise<void>;
|
|
20
|
+
export declare function removeWorktree(repository: Repository, path: string): Promise<void>;
|
|
21
|
+
export declare function pruneWorktrees(repository: Repository): Promise<void>;
|
|
22
|
+
export declare function moveWorktree(repository: Repository, oldPath: string, newPath: string): Promise<void>;
|
|
23
|
+
export declare function isLinkedWorktree(repository: Repository): Promise<boolean>;
|
|
24
|
+
export declare function getMainWorktreePath(repository: Repository): Promise<string | null>;
|
|
25
|
+
export declare function getWorktreePathInfoSync(repositoryPath: string): IWorktreePathInfo | null;
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { git } from './core.js';
|
|
2
|
+
import * as Path from 'path';
|
|
3
|
+
import * as Fs from 'fs';
|
|
4
|
+
import { normalizePath } from '../lib/helpers/path.js';
|
|
5
|
+
/**
|
|
6
|
+
* Get the set of canonical branch refs (e.g. `refs/heads/feature`)
|
|
7
|
+
* checked out in any worktree (main or linked).
|
|
8
|
+
*/
|
|
9
|
+
export async function getWorktreeCheckedOutBranches(repository) {
|
|
10
|
+
const result = await git(['worktree', 'list', '--porcelain', '-z'], repository.path, 'getWorktreeCheckedOutBranches');
|
|
11
|
+
const branches = new Set();
|
|
12
|
+
// With -z, lines are NUL-terminated and blocks are separated by
|
|
13
|
+
// double NUL (i.e. an empty string between two NUL terminators).
|
|
14
|
+
const blocks = result.stdout.split('\0\0');
|
|
15
|
+
for (const block of blocks) {
|
|
16
|
+
for (const line of block.split('\0')) {
|
|
17
|
+
if (line.startsWith('branch ')) {
|
|
18
|
+
branches.add(line.substring('branch '.length));
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return branches;
|
|
23
|
+
}
|
|
24
|
+
function getDotGitPath(repositoryPath) {
|
|
25
|
+
return Path.join(repositoryPath, '.git');
|
|
26
|
+
}
|
|
27
|
+
export function parseWorktreePorcelainOutput(stdout) {
|
|
28
|
+
if (stdout.trim().length === 0) {
|
|
29
|
+
return [];
|
|
30
|
+
}
|
|
31
|
+
const blocks = stdout.trim().split('\n\n');
|
|
32
|
+
const entries = [];
|
|
33
|
+
for (let i = 0; i < blocks.length; i++) {
|
|
34
|
+
const lines = blocks[i].split('\n');
|
|
35
|
+
let path = '';
|
|
36
|
+
let head = '';
|
|
37
|
+
let branch = null;
|
|
38
|
+
let isDetached = false;
|
|
39
|
+
let isLocked = false;
|
|
40
|
+
let isPrunable = false;
|
|
41
|
+
for (const line of lines) {
|
|
42
|
+
if (line.startsWith('worktree ')) {
|
|
43
|
+
path = line.substring('worktree '.length);
|
|
44
|
+
}
|
|
45
|
+
else if (line.startsWith('HEAD ')) {
|
|
46
|
+
head = line.substring('HEAD '.length);
|
|
47
|
+
}
|
|
48
|
+
else if (line.startsWith('branch ')) {
|
|
49
|
+
branch = line.substring('branch '.length);
|
|
50
|
+
}
|
|
51
|
+
else if (line === 'detached') {
|
|
52
|
+
isDetached = true;
|
|
53
|
+
}
|
|
54
|
+
else if (line === 'locked' || line.startsWith('locked ')) {
|
|
55
|
+
isLocked = true;
|
|
56
|
+
}
|
|
57
|
+
else if (line === 'prunable' || line.startsWith('prunable ')) {
|
|
58
|
+
isPrunable = true;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
const type = i === 0 ? 'main' : 'linked';
|
|
62
|
+
entries.push({ path, head, branch, isDetached, type, isLocked, isPrunable });
|
|
63
|
+
}
|
|
64
|
+
return entries;
|
|
65
|
+
}
|
|
66
|
+
export async function listWorktrees(repository) {
|
|
67
|
+
const result = await git(['worktree', 'list', '--porcelain'], repository.path, 'listWorktrees');
|
|
68
|
+
return parseWorktreePorcelainOutput(result.stdout);
|
|
69
|
+
}
|
|
70
|
+
export async function addWorktree(repository, path, options = {}) {
|
|
71
|
+
const args = ['worktree', 'add'];
|
|
72
|
+
if (options.detach) {
|
|
73
|
+
args.push('--detach');
|
|
74
|
+
}
|
|
75
|
+
if (options.createBranch) {
|
|
76
|
+
args.push('-b', options.createBranch);
|
|
77
|
+
}
|
|
78
|
+
args.push(path);
|
|
79
|
+
if (options.branch) {
|
|
80
|
+
args.push(options.branch);
|
|
81
|
+
}
|
|
82
|
+
else if (options.commitish) {
|
|
83
|
+
args.push(options.commitish);
|
|
84
|
+
}
|
|
85
|
+
await git(args, repository.path, 'addWorktree');
|
|
86
|
+
}
|
|
87
|
+
export async function removeWorktree(repository, path) {
|
|
88
|
+
const args = ['worktree', 'remove', '--force', path];
|
|
89
|
+
await git(args, repository.path, 'removeWorktree');
|
|
90
|
+
}
|
|
91
|
+
export async function pruneWorktrees(repository) {
|
|
92
|
+
await git(['worktree', 'prune'], repository.path, 'pruneWorktrees');
|
|
93
|
+
}
|
|
94
|
+
export async function moveWorktree(repository, oldPath, newPath) {
|
|
95
|
+
await git(['worktree', 'move', oldPath, newPath], repository.path, 'moveWorktree');
|
|
96
|
+
}
|
|
97
|
+
export async function isLinkedWorktree(repository) {
|
|
98
|
+
const worktrees = await listWorktrees(repository);
|
|
99
|
+
const repoPath = normalizePath(repository.path);
|
|
100
|
+
return worktrees.some(wt => wt.type === 'linked' && normalizePath(wt.path) === repoPath);
|
|
101
|
+
}
|
|
102
|
+
export async function getMainWorktreePath(repository) {
|
|
103
|
+
const worktrees = await listWorktrees(repository);
|
|
104
|
+
const main = worktrees.find(wt => wt.type === 'main');
|
|
105
|
+
return main?.path ?? null;
|
|
106
|
+
}
|
|
107
|
+
export function getWorktreePathInfoSync(repositoryPath) {
|
|
108
|
+
try {
|
|
109
|
+
const dotGit = getDotGitPath(repositoryPath);
|
|
110
|
+
// eslint-disable-next-line no-sync
|
|
111
|
+
const stats = Fs.statSync(dotGit);
|
|
112
|
+
if (stats.isDirectory()) {
|
|
113
|
+
return { isLinkedWorktree: false, mainWorktreePath: repositoryPath };
|
|
114
|
+
}
|
|
115
|
+
if (!stats.isFile()) {
|
|
116
|
+
return null;
|
|
117
|
+
}
|
|
118
|
+
// eslint-disable-next-line no-sync
|
|
119
|
+
const contents = Fs.readFileSync(dotGit, 'utf8').trim();
|
|
120
|
+
if (!contents.startsWith('gitdir: ')) {
|
|
121
|
+
return null;
|
|
122
|
+
}
|
|
123
|
+
const gitDirPath = Path.resolve(repositoryPath, contents.substring('gitdir: '.length));
|
|
124
|
+
// eslint-disable-next-line no-sync
|
|
125
|
+
const commondir = Fs.readFileSync(Path.join(gitDirPath, 'commondir'), 'utf8').trim();
|
|
126
|
+
if (commondir.length === 0) {
|
|
127
|
+
return null;
|
|
128
|
+
}
|
|
129
|
+
const commonGitDir = Path.resolve(gitDirPath, commondir);
|
|
130
|
+
return {
|
|
131
|
+
isLinkedWorktree: true,
|
|
132
|
+
mainWorktreePath: Path.dirname(commonGitDir),
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
catch {
|
|
136
|
+
return null;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=worktree.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worktree.js","sourceRoot":"","sources":["../../src/git/worktree.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
// ── All git operations ──
|
|
2
|
+
export * from './git/index.js';
|
|
3
|
+
// ── Git error codes enum (renamed to avoid conflict with GitError class from core.js) ──
|
|
4
|
+
export { GitError as GitErrorCodes } from './git/exec.js';
|
|
5
|
+
// ── All domain models ──
|
|
6
|
+
export * from './models/index.js';
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAC3B,cAAc,gBAAgB,CAAA;AAE9B,0FAA0F;AAC1F,OAAO,EAAE,QAAQ,IAAI,aAAa,EAAyB,MAAM,eAAe,CAAA;AAEhF,0BAA0B;AAC1B,cAAc,mBAAmB,CAAA"}
|
package/dist/lib/api.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,UAAU;IACxB,OAAO,oBAAoB,CAAA;AAC7B,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,OAAO,IAAI,CAAA;AACb,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { IRawDiff } from '../models/diff/index.js';
|
|
2
|
+
export declare const HiddenBidiCharsRegex: RegExp;
|
|
3
|
+
export declare class DiffParser {
|
|
4
|
+
private ls;
|
|
5
|
+
private le;
|
|
6
|
+
private text;
|
|
7
|
+
constructor();
|
|
8
|
+
private reset;
|
|
9
|
+
private nextLine;
|
|
10
|
+
private readLine;
|
|
11
|
+
private lineStartsWith;
|
|
12
|
+
private lineEndsWith;
|
|
13
|
+
private peek;
|
|
14
|
+
private parseDiffHeader;
|
|
15
|
+
private numberFromGroup;
|
|
16
|
+
private parseHunkHeader;
|
|
17
|
+
private parseLinePrefix;
|
|
18
|
+
private parseHunk;
|
|
19
|
+
parse(text: string): IRawDiff;
|
|
20
|
+
}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
import { DiffHunk, DiffHunkHeader, DiffLine, DiffLineType, DiffHunkExpansionType, } from '../models/diff/index.js';
|
|
2
|
+
import { assertNever } from './fatal-error.js';
|
|
3
|
+
const diffHeaderRe = /^@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@/;
|
|
4
|
+
export const HiddenBidiCharsRegex = /[\u202A-\u202E]|[\u2066-\u2069]/;
|
|
5
|
+
const DiffPrefixAdd = '+';
|
|
6
|
+
const DiffPrefixDelete = '-';
|
|
7
|
+
const DiffPrefixContext = ' ';
|
|
8
|
+
const DiffPrefixNoNewline = '\\';
|
|
9
|
+
const DiffLinePrefixChars = new Set([
|
|
10
|
+
DiffPrefixAdd,
|
|
11
|
+
DiffPrefixDelete,
|
|
12
|
+
DiffPrefixContext,
|
|
13
|
+
DiffPrefixNoNewline,
|
|
14
|
+
]);
|
|
15
|
+
function getLargestLineNumber(hunks) {
|
|
16
|
+
let largest = 0;
|
|
17
|
+
for (const hunk of hunks) {
|
|
18
|
+
for (const line of hunk.lines) {
|
|
19
|
+
if (line.originalLineNumber !== null && line.originalLineNumber > largest) {
|
|
20
|
+
largest = line.originalLineNumber;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return largest;
|
|
25
|
+
}
|
|
26
|
+
function getHunkHeaderExpansionType(_hunkIndex, _header, _previousHunk) {
|
|
27
|
+
return DiffHunkExpansionType.None;
|
|
28
|
+
}
|
|
29
|
+
export class DiffParser {
|
|
30
|
+
ls;
|
|
31
|
+
le;
|
|
32
|
+
text;
|
|
33
|
+
constructor() {
|
|
34
|
+
this.reset();
|
|
35
|
+
}
|
|
36
|
+
reset() {
|
|
37
|
+
this.ls = 0;
|
|
38
|
+
this.le = -1;
|
|
39
|
+
this.text = '';
|
|
40
|
+
}
|
|
41
|
+
nextLine() {
|
|
42
|
+
this.ls = this.le + 1;
|
|
43
|
+
if (this.ls >= this.text.length)
|
|
44
|
+
return false;
|
|
45
|
+
this.le = this.text.indexOf('\n', this.ls);
|
|
46
|
+
if (this.le === -1)
|
|
47
|
+
this.le = this.text.length;
|
|
48
|
+
return this.ls !== this.le;
|
|
49
|
+
}
|
|
50
|
+
readLine() {
|
|
51
|
+
return this.nextLine() ? this.text.substring(this.ls, this.le) : null;
|
|
52
|
+
}
|
|
53
|
+
lineStartsWith(searchString) {
|
|
54
|
+
return this.text.startsWith(searchString, this.ls);
|
|
55
|
+
}
|
|
56
|
+
lineEndsWith(searchString) {
|
|
57
|
+
return this.text.endsWith(searchString, this.le);
|
|
58
|
+
}
|
|
59
|
+
peek() {
|
|
60
|
+
const p = this.le + 1;
|
|
61
|
+
return p < this.text.length ? this.text[p] : null;
|
|
62
|
+
}
|
|
63
|
+
parseDiffHeader() {
|
|
64
|
+
while (this.nextLine()) {
|
|
65
|
+
if (this.lineStartsWith('Binary files ') && this.lineEndsWith('differ')) {
|
|
66
|
+
return { isBinary: true };
|
|
67
|
+
}
|
|
68
|
+
if (this.lineStartsWith('+++')) {
|
|
69
|
+
return { isBinary: false };
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
numberFromGroup(m, group, defaultValue = null) {
|
|
75
|
+
const str = m[group];
|
|
76
|
+
if (!str) {
|
|
77
|
+
if (defaultValue === null) {
|
|
78
|
+
throw new Error(`Group ${group} missing from regexp match and no defaultValue was provided`);
|
|
79
|
+
}
|
|
80
|
+
return defaultValue;
|
|
81
|
+
}
|
|
82
|
+
const num = parseInt(str, 10);
|
|
83
|
+
if (isNaN(num)) {
|
|
84
|
+
throw new Error(`Could not parse capture group ${group} into number: ${str}`);
|
|
85
|
+
}
|
|
86
|
+
return num;
|
|
87
|
+
}
|
|
88
|
+
parseHunkHeader(line) {
|
|
89
|
+
const m = diffHeaderRe.exec(line);
|
|
90
|
+
if (!m)
|
|
91
|
+
throw new Error('Invalid hunk header format');
|
|
92
|
+
const oldStartLine = this.numberFromGroup(m, 1);
|
|
93
|
+
const oldLineCount = this.numberFromGroup(m, 2, 1);
|
|
94
|
+
const newStartLine = this.numberFromGroup(m, 3);
|
|
95
|
+
const newLineCount = this.numberFromGroup(m, 4, 1);
|
|
96
|
+
return new DiffHunkHeader(oldStartLine, oldLineCount, newStartLine, newLineCount);
|
|
97
|
+
}
|
|
98
|
+
parseLinePrefix(c) {
|
|
99
|
+
if (c && c.length && DiffLinePrefixChars.has(c[0])) {
|
|
100
|
+
return c[0];
|
|
101
|
+
}
|
|
102
|
+
return null;
|
|
103
|
+
}
|
|
104
|
+
parseHunk(linesConsumed, _hunkIndex, _previousHunk) {
|
|
105
|
+
const headerLine = this.readLine();
|
|
106
|
+
if (!headerLine)
|
|
107
|
+
throw new Error('Expected hunk header but reached end of diff');
|
|
108
|
+
const header = this.parseHunkHeader(headerLine);
|
|
109
|
+
const lines = new Array();
|
|
110
|
+
lines.push(new DiffLine(headerLine, DiffLineType.Hunk, 1, null, null));
|
|
111
|
+
let rollingDiffBeforeCounter = header.oldStartLine;
|
|
112
|
+
let rollingDiffAfterCounter = header.newStartLine;
|
|
113
|
+
let diffLineNumber = linesConsumed;
|
|
114
|
+
let c;
|
|
115
|
+
while ((c = this.parseLinePrefix(this.peek()))) {
|
|
116
|
+
const line = this.readLine();
|
|
117
|
+
if (!line)
|
|
118
|
+
throw new Error('Expected unified diff line but reached end of diff');
|
|
119
|
+
if (c === DiffPrefixNoNewline) {
|
|
120
|
+
if (line.length < 12) {
|
|
121
|
+
throw new Error(`Expected "no newline at end of file" marker to be at least 12 bytes long`);
|
|
122
|
+
}
|
|
123
|
+
const previousLineIndex = lines.length - 1;
|
|
124
|
+
lines[previousLineIndex] = lines[previousLineIndex].withNoTrailingNewLine(true);
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
127
|
+
diffLineNumber++;
|
|
128
|
+
let diffLine;
|
|
129
|
+
if (c === DiffPrefixAdd) {
|
|
130
|
+
diffLine = new DiffLine(line, DiffLineType.Add, diffLineNumber, null, rollingDiffAfterCounter++);
|
|
131
|
+
}
|
|
132
|
+
else if (c === DiffPrefixDelete) {
|
|
133
|
+
diffLine = new DiffLine(line, DiffLineType.Delete, diffLineNumber, rollingDiffBeforeCounter++, null);
|
|
134
|
+
}
|
|
135
|
+
else if (c === DiffPrefixContext) {
|
|
136
|
+
diffLine = new DiffLine(line, DiffLineType.Context, diffLineNumber, rollingDiffBeforeCounter++, rollingDiffAfterCounter++);
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
return assertNever(c, `Unknown DiffLinePrefix: ${c}`);
|
|
140
|
+
}
|
|
141
|
+
lines.push(diffLine);
|
|
142
|
+
}
|
|
143
|
+
if (lines.length === 1) {
|
|
144
|
+
throw new Error('Malformed diff, empty hunk');
|
|
145
|
+
}
|
|
146
|
+
return new DiffHunk(header, lines, linesConsumed, linesConsumed + lines.length - 1, getHunkHeaderExpansionType(_hunkIndex, header, _previousHunk));
|
|
147
|
+
}
|
|
148
|
+
parse(text) {
|
|
149
|
+
this.text = text;
|
|
150
|
+
try {
|
|
151
|
+
const headerInfo = this.parseDiffHeader();
|
|
152
|
+
const headerEnd = this.le;
|
|
153
|
+
const header = this.text.substring(0, headerEnd);
|
|
154
|
+
if (!headerInfo) {
|
|
155
|
+
return { header, contents: '', hunks: [], isBinary: false, maxLineNumber: 0, hasHiddenBidiChars: false };
|
|
156
|
+
}
|
|
157
|
+
if (headerInfo.isBinary) {
|
|
158
|
+
return { header, contents: '', hunks: [], isBinary: true, maxLineNumber: 0, hasHiddenBidiChars: false };
|
|
159
|
+
}
|
|
160
|
+
const hunks = new Array();
|
|
161
|
+
let linesConsumed = 0;
|
|
162
|
+
do {
|
|
163
|
+
const hunk = this.parseHunk(linesConsumed, hunks.length, null);
|
|
164
|
+
hunks.push(hunk);
|
|
165
|
+
linesConsumed += hunk.lines.length;
|
|
166
|
+
} while (this.peek());
|
|
167
|
+
const contents = this.text
|
|
168
|
+
.substring(headerEnd + 1, this.le)
|
|
169
|
+
.replace(/\n\/g, '');
|
|
170
|
+
return {
|
|
171
|
+
header,
|
|
172
|
+
contents,
|
|
173
|
+
hunks,
|
|
174
|
+
isBinary: headerInfo.isBinary,
|
|
175
|
+
maxLineNumber: getLargestLineNumber(hunks),
|
|
176
|
+
hasHiddenBidiChars: HiddenBidiCharsRegex.test(text),
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
finally {
|
|
180
|
+
this.reset();
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
//# sourceMappingURL=diff-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff-parser.js","sourceRoot":"","sources":["../../src/lib/diff-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const directoryExists: (path: string) => Promise<boolean>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"directory-exists.js","sourceRoot":"","sources":["../../src/lib/directory-exists.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAElC,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAAE,IAAY,EAAE,EAAE;IACpD,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAA;QAC1B,OAAO,CAAC,CAAC,WAAW,EAAE,CAAA;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errno-exception.js","sourceRoot":"","sources":["../../src/lib/errno-exception.ts"],"names":[],"mappings":"AAKA,MAAM,UAAU,gBAAgB,CAAC,GAAQ;IACvC,OAAO,CACL,GAAG,YAAY,KAAK;QACpB,OAAQ,GAAW,CAAC,IAAI,KAAK,QAAQ;QACrC,OAAQ,GAAW,CAAC,OAAO,KAAK,QAAQ,CACzC,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare function fatalError(msg: string): never;
|
|
2
|
+
export declare function assertNever(_x: never, message: string): never;
|
|
3
|
+
export declare function forceUnwrap<T>(message: string, x: T | null | undefined): T;
|
|
4
|
+
export declare function assertNonNullable<T>(x: T, message: string): asserts x is NonNullable<T>;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export function fatalError(msg) {
|
|
2
|
+
throw new Error(msg);
|
|
3
|
+
}
|
|
4
|
+
export function assertNever(_x, message) {
|
|
5
|
+
throw new Error(message);
|
|
6
|
+
}
|
|
7
|
+
export function forceUnwrap(message, x) {
|
|
8
|
+
if (x == null) {
|
|
9
|
+
return fatalError(message);
|
|
10
|
+
}
|
|
11
|
+
return x;
|
|
12
|
+
}
|
|
13
|
+
export function assertNonNullable(x, message) {
|
|
14
|
+
if (x == null) {
|
|
15
|
+
return fatalError(message);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=fatal-error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fatal-error.js","sourceRoot":"","sources":["../../src/lib/fatal-error.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAA;AACtB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,EAAS,EAAE,OAAe;IACpD,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAA;AAC1B,CAAC;AAED,MAAM,UAAU,WAAW,CAAI,OAAe,EAAE,CAAuB;IACrE,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;QACd,OAAO,UAAU,CAAC,OAAO,CAAC,CAAA;IAC5B,CAAC;IACD,OAAO,CAAC,CAAA;AACV,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,CAAI,EACJ,OAAe;IAEf,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;QACd,OAAO,UAAU,CAAC,OAAO,CAAC,CAAA;IAC5B,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare function enableImagePreviewsForDDSFiles(): boolean;
|
|
2
|
+
export declare function enableReadmeOverwriteWarning(): boolean;
|
|
3
|
+
export declare function enableWSLDetection(): boolean;
|
|
4
|
+
export declare function enablePreviousTagSuggestions(): boolean;
|
|
5
|
+
export declare function enablePullRequestQuickView(): boolean;
|
|
6
|
+
export declare const enableCustomIntegration: () => boolean;
|
|
7
|
+
export declare const enableResizingToolbarButtons: () => boolean;
|
|
8
|
+
export declare const enableHooksEnvironment: () => boolean;
|
|
9
|
+
export declare const enableHooksByDefault: () => boolean;
|
|
10
|
+
export declare const enableFormattingPreferences: () => boolean;
|
|
11
|
+
export declare const enableCopilotConflictResolution: () => boolean;
|
|
12
|
+
export declare const enableTestMenuItems: () => boolean;
|
|
13
|
+
export declare const enableCommitMessageGeneration: () => boolean;
|
|
14
|
+
export declare const enableCopilotSdkCommitMessageGeneration: () => boolean;
|