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,135 @@
|
|
|
1
|
+
import { DiffSelectionType } from './diff/index.js';
|
|
2
|
+
export var GitStatusEntry;
|
|
3
|
+
(function (GitStatusEntry) {
|
|
4
|
+
GitStatusEntry["Modified"] = "M";
|
|
5
|
+
GitStatusEntry["Added"] = "A";
|
|
6
|
+
GitStatusEntry["Deleted"] = "D";
|
|
7
|
+
GitStatusEntry["Renamed"] = "R";
|
|
8
|
+
GitStatusEntry["Copied"] = "C";
|
|
9
|
+
GitStatusEntry["Unchanged"] = ".";
|
|
10
|
+
GitStatusEntry["Untracked"] = "?";
|
|
11
|
+
GitStatusEntry["Ignored"] = "!";
|
|
12
|
+
GitStatusEntry["UpdatedButUnmerged"] = "U";
|
|
13
|
+
})(GitStatusEntry || (GitStatusEntry = {}));
|
|
14
|
+
export var AppFileStatusKind;
|
|
15
|
+
(function (AppFileStatusKind) {
|
|
16
|
+
AppFileStatusKind["New"] = "New";
|
|
17
|
+
AppFileStatusKind["Modified"] = "Modified";
|
|
18
|
+
AppFileStatusKind["Deleted"] = "Deleted";
|
|
19
|
+
AppFileStatusKind["Copied"] = "Copied";
|
|
20
|
+
AppFileStatusKind["Renamed"] = "Renamed";
|
|
21
|
+
AppFileStatusKind["Conflicted"] = "Conflicted";
|
|
22
|
+
AppFileStatusKind["Untracked"] = "Untracked";
|
|
23
|
+
})(AppFileStatusKind || (AppFileStatusKind = {}));
|
|
24
|
+
export function isConflictedFileStatus(appFileStatus) {
|
|
25
|
+
return appFileStatus.kind === AppFileStatusKind.Conflicted;
|
|
26
|
+
}
|
|
27
|
+
export function isConflictWithMarkers(conflictedFileStatus) {
|
|
28
|
+
return 'conflictMarkerCount' in conflictedFileStatus;
|
|
29
|
+
}
|
|
30
|
+
export var UnmergedEntrySummary;
|
|
31
|
+
(function (UnmergedEntrySummary) {
|
|
32
|
+
UnmergedEntrySummary["AddedByUs"] = "added-by-us";
|
|
33
|
+
UnmergedEntrySummary["DeletedByUs"] = "deleted-by-us";
|
|
34
|
+
UnmergedEntrySummary["AddedByThem"] = "added-by-them";
|
|
35
|
+
UnmergedEntrySummary["DeletedByThem"] = "deleted-by-them";
|
|
36
|
+
UnmergedEntrySummary["BothDeleted"] = "both-deleted";
|
|
37
|
+
UnmergedEntrySummary["BothAdded"] = "both-added";
|
|
38
|
+
UnmergedEntrySummary["BothModified"] = "both-modified";
|
|
39
|
+
})(UnmergedEntrySummary || (UnmergedEntrySummary = {}));
|
|
40
|
+
export class FileChange {
|
|
41
|
+
path;
|
|
42
|
+
status;
|
|
43
|
+
id;
|
|
44
|
+
constructor(path, status) {
|
|
45
|
+
this.path = path;
|
|
46
|
+
this.status = status;
|
|
47
|
+
if (status.kind === AppFileStatusKind.Renamed ||
|
|
48
|
+
status.kind === AppFileStatusKind.Copied) {
|
|
49
|
+
this.id = `${status.kind}+${path}+${status.oldPath}`;
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
this.id = `${status.kind}+${path}`;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
isDeleted() {
|
|
56
|
+
return this.status.kind === AppFileStatusKind.Deleted;
|
|
57
|
+
}
|
|
58
|
+
isNew() {
|
|
59
|
+
return this.status.kind === AppFileStatusKind.New;
|
|
60
|
+
}
|
|
61
|
+
isModified() {
|
|
62
|
+
return this.status.kind === AppFileStatusKind.Modified;
|
|
63
|
+
}
|
|
64
|
+
isUntracked() {
|
|
65
|
+
return this.status.kind === AppFileStatusKind.Untracked;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
export class WorkingDirectoryFileChange extends FileChange {
|
|
69
|
+
selection;
|
|
70
|
+
constructor(path, status, selection) {
|
|
71
|
+
super(path, status);
|
|
72
|
+
this.selection = selection;
|
|
73
|
+
}
|
|
74
|
+
withIncludeAll(include) {
|
|
75
|
+
const newSelection = include
|
|
76
|
+
? this.selection.withSelectAll()
|
|
77
|
+
: this.selection.withSelectNone();
|
|
78
|
+
return this.withSelection(newSelection);
|
|
79
|
+
}
|
|
80
|
+
withSelection(selection) {
|
|
81
|
+
return new WorkingDirectoryFileChange(this.path, this.status, selection);
|
|
82
|
+
}
|
|
83
|
+
isIncludedInCommit() {
|
|
84
|
+
return this.selection.getSelectionType() === DiffSelectionType.All;
|
|
85
|
+
}
|
|
86
|
+
isExcludedFromCommit() {
|
|
87
|
+
return this.selection.getSelectionType() === DiffSelectionType.None;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
export class CommittedFileChange extends FileChange {
|
|
91
|
+
commitish;
|
|
92
|
+
parentCommitish;
|
|
93
|
+
constructor(path, status, commitish, parentCommitish) {
|
|
94
|
+
super(path, status);
|
|
95
|
+
this.commitish = commitish;
|
|
96
|
+
this.parentCommitish = parentCommitish;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
export class WorkingDirectoryStatus {
|
|
100
|
+
files;
|
|
101
|
+
includeAll;
|
|
102
|
+
static fromFiles(files) {
|
|
103
|
+
return new WorkingDirectoryStatus(files, getIncludeAllState(files));
|
|
104
|
+
}
|
|
105
|
+
fileIxById = new Map();
|
|
106
|
+
constructor(files, includeAll = true) {
|
|
107
|
+
this.files = files;
|
|
108
|
+
this.includeAll = includeAll;
|
|
109
|
+
files.forEach((f, ix) => this.fileIxById.set(f.id, ix));
|
|
110
|
+
}
|
|
111
|
+
withIncludeAllFiles(includeAll) {
|
|
112
|
+
const newFiles = this.files.map(f => f.withIncludeAll(includeAll));
|
|
113
|
+
return new WorkingDirectoryStatus(newFiles, includeAll);
|
|
114
|
+
}
|
|
115
|
+
findFileWithID(id) {
|
|
116
|
+
const ix = this.fileIxById.get(id);
|
|
117
|
+
return ix !== undefined ? this.files[ix] || null : null;
|
|
118
|
+
}
|
|
119
|
+
findFileIndexByID(id) {
|
|
120
|
+
const ix = this.fileIxById.get(id);
|
|
121
|
+
return ix !== undefined ? ix : -1;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
function getIncludeAllState(files) {
|
|
125
|
+
if (!files.length)
|
|
126
|
+
return true;
|
|
127
|
+
const allSelected = files.every(f => f.selection.getSelectionType() === DiffSelectionType.All);
|
|
128
|
+
const noneSelected = files.every(f => f.selection.getSelectionType() === DiffSelectionType.None);
|
|
129
|
+
if (allSelected)
|
|
130
|
+
return true;
|
|
131
|
+
if (noneSelected)
|
|
132
|
+
return false;
|
|
133
|
+
return null;
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/models/status.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export type SubmoduleEntry = {
|
|
2
|
+
readonly path: string;
|
|
3
|
+
readonly url: string;
|
|
4
|
+
readonly describe?: string;
|
|
5
|
+
readonly sha: string;
|
|
6
|
+
readonly status: SubmoduleStatus;
|
|
7
|
+
};
|
|
8
|
+
export type SubmoduleStatus = {
|
|
9
|
+
readonly commitChanged: boolean;
|
|
10
|
+
readonly modifiedChanges: boolean;
|
|
11
|
+
readonly untrackedChanges: boolean;
|
|
12
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"submodule.js","sourceRoot":"","sources":["../../src/models/submodule.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export type WorktreeType = 'main' | 'linked';
|
|
2
|
+
export type WorktreeEntry = {
|
|
3
|
+
readonly path: string;
|
|
4
|
+
readonly head: string;
|
|
5
|
+
readonly branch: string | null;
|
|
6
|
+
readonly isDetached: boolean;
|
|
7
|
+
readonly type: WorktreeType;
|
|
8
|
+
readonly isLocked: boolean;
|
|
9
|
+
readonly isPrunable: boolean;
|
|
10
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worktree.js","sourceRoot":"","sources":["../../src/models/worktree.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
|
@@ -1,23 +1,62 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "git-chopstick-core",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
|
|
3
|
+
"version": "0.1.3",
|
|
5
4
|
"type": "module",
|
|
6
|
-
"main": "./
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"types": "./dist/index.d.ts",
|
|
7
7
|
"exports": {
|
|
8
8
|
".": {
|
|
9
|
-
"import": "./
|
|
9
|
+
"import": "./dist/index.js",
|
|
10
|
+
"types": "./dist/index.d.ts"
|
|
11
|
+
},
|
|
12
|
+
"./git": {
|
|
13
|
+
"import": "./dist/git/index.js",
|
|
14
|
+
"types": "./dist/git/index.d.ts"
|
|
15
|
+
},
|
|
16
|
+
"./models": {
|
|
17
|
+
"import": "./dist/models/index.js",
|
|
18
|
+
"types": "./dist/models/index.d.ts"
|
|
19
|
+
},
|
|
20
|
+
"./models/diff": {
|
|
21
|
+
"import": "./dist/models/diff/index.js",
|
|
22
|
+
"types": "./dist/models/diff/index.d.ts"
|
|
23
|
+
},
|
|
24
|
+
"./lib/progress": {
|
|
25
|
+
"import": "./dist/lib/progress/index.js",
|
|
26
|
+
"types": "./dist/lib/progress/index.d.ts"
|
|
27
|
+
},
|
|
28
|
+
"./*": {
|
|
29
|
+
"import": "./dist/*.js",
|
|
30
|
+
"types": "./dist/*.d.ts"
|
|
10
31
|
}
|
|
11
32
|
},
|
|
33
|
+
"files": [
|
|
34
|
+
"dist"
|
|
35
|
+
],
|
|
12
36
|
"description": "Git backend library extracted from GitHub Desktop",
|
|
13
37
|
"scripts": {
|
|
14
|
-
"
|
|
38
|
+
"clean": "rm -rf dist",
|
|
39
|
+
"build": "npm run clean && tsc",
|
|
40
|
+
"typecheck": "tsc --noEmit",
|
|
41
|
+
"prepublishOnly": "npm run build"
|
|
15
42
|
},
|
|
16
43
|
"dependencies": {
|
|
17
44
|
"byline": "^5.0.0",
|
|
18
45
|
"ignore": "^7.0.5",
|
|
19
46
|
"memoize-one": "^6.0.0"
|
|
20
47
|
},
|
|
48
|
+
"peerDependencies": {
|
|
49
|
+
"@types/byline": "*",
|
|
50
|
+
"@types/node": ">=20.0.0"
|
|
51
|
+
},
|
|
52
|
+
"peerDependenciesMeta": {
|
|
53
|
+
"@types/byline": {
|
|
54
|
+
"optional": true
|
|
55
|
+
},
|
|
56
|
+
"@types/node": {
|
|
57
|
+
"optional": true
|
|
58
|
+
}
|
|
59
|
+
},
|
|
21
60
|
"devDependencies": {
|
|
22
61
|
"@types/byline": "^4.2.36",
|
|
23
62
|
"@types/node": "^22.19.20",
|
package/examples/get-status.ts
DELETED
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Example: Open a repo and show its current status.
|
|
3
|
-
*
|
|
4
|
-
* Usage:
|
|
5
|
-
* bun examples/get-status.ts /path/to/some/repo
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import { Repository } from '../src/models/repository'
|
|
9
|
-
import { getStatus } from '../src/git/status'
|
|
10
|
-
|
|
11
|
-
async function main() {
|
|
12
|
-
const repoPath = process.argv[2]
|
|
13
|
-
if (!repoPath) {
|
|
14
|
-
console.error('Usage: bun examples/get-status.ts <path-to-repo>')
|
|
15
|
-
process.exit(1)
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
const repo = new Repository(repoPath, 1)
|
|
19
|
-
|
|
20
|
-
console.log(`\n📂 Repository: ${repo.name}`)
|
|
21
|
-
console.log(` Path: ${repo.path}\n`)
|
|
22
|
-
|
|
23
|
-
const status = await getStatus(repo)
|
|
24
|
-
|
|
25
|
-
if (!status) {
|
|
26
|
-
console.log('❌ Could not read repository status (not a git repo?)')
|
|
27
|
-
process.exit(1)
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
// Branch info
|
|
31
|
-
console.log(`🌿 Branch: ${status.currentBranch ?? '(detached HEAD)'}`)
|
|
32
|
-
if (status.currentUpstreamBranch) {
|
|
33
|
-
console.log(` Upstream: ${status.currentUpstreamBranch}`)
|
|
34
|
-
}
|
|
35
|
-
if (status.branchAheadBehind) {
|
|
36
|
-
const { ahead, behind } = status.branchAheadBehind
|
|
37
|
-
console.log(` Ahead: ${ahead} | Behind: ${behind}`)
|
|
38
|
-
}
|
|
39
|
-
console.log(` Tip: ${status.currentTip?.slice(0, 7) ?? 'N/A'}`)
|
|
40
|
-
|
|
41
|
-
// Conflicted files
|
|
42
|
-
if (status.doConflictedFilesExist) {
|
|
43
|
-
console.log(`\n⚠️ Conflicts detected!`)
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
// Working directory changes
|
|
47
|
-
const files = status.workingDirectory.files
|
|
48
|
-
console.log(`\n📝 Changed files: ${files.length}`)
|
|
49
|
-
|
|
50
|
-
// Group by status kind
|
|
51
|
-
const byKind = new Map<string, string[]>()
|
|
52
|
-
for (const file of files) {
|
|
53
|
-
const kind = file.status.kind
|
|
54
|
-
const list = byKind.get(kind) ?? []
|
|
55
|
-
list.push(file.status.kind === 'Renamed' || file.status.kind === 'Copied'
|
|
56
|
-
? `${file.path} (was: ${file.status.oldPath})`
|
|
57
|
-
: file.path)
|
|
58
|
-
byKind.set(kind, list)
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
for (const [kind, paths] of byKind) {
|
|
62
|
-
console.log(` ${kind}:`)
|
|
63
|
-
for (const p of paths) {
|
|
64
|
-
console.log(` - ${p}`)
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
// Merge/rebase state
|
|
69
|
-
if (status.mergeHeadFound) {
|
|
70
|
-
console.log(`\n🔀 Merge in progress`)
|
|
71
|
-
}
|
|
72
|
-
if (status.rebaseInternalState) {
|
|
73
|
-
console.log(`\n🔄 Rebase in progress`)
|
|
74
|
-
console.log(` Target: ${status.rebaseInternalState.targetBranch}`)
|
|
75
|
-
}
|
|
76
|
-
if (status.isCherryPickingHeadFound) {
|
|
77
|
-
console.log(`\n🍒 Cherry-pick in progress`)
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
main().catch(err => {
|
|
82
|
-
console.error('Error:', err)
|
|
83
|
-
process.exit(1)
|
|
84
|
-
})
|
package/src/git/add.ts
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { git } from './core'
|
|
2
|
-
import { Repository } from '../models/repository'
|
|
3
|
-
import { WorkingDirectoryFileChange } from '../models/status'
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Add a conflicted file to the index.
|
|
7
|
-
*
|
|
8
|
-
* Typically done after having resolved conflicts either manually
|
|
9
|
-
* or through checkout --theirs/--ours.
|
|
10
|
-
*/
|
|
11
|
-
export async function addConflictedFile(
|
|
12
|
-
repository: Repository,
|
|
13
|
-
file: WorkingDirectoryFileChange
|
|
14
|
-
) {
|
|
15
|
-
await git(['add', '--', file.path], repository.path, 'addConflictedFile')
|
|
16
|
-
}
|
package/src/git/apply.ts
DELETED
|
@@ -1,154 +0,0 @@
|
|
|
1
|
-
import { GitError as DugiteError } from './exec'
|
|
2
|
-
import { git } from './core'
|
|
3
|
-
import {
|
|
4
|
-
WorkingDirectoryFileChange,
|
|
5
|
-
AppFileStatusKind,
|
|
6
|
-
} from '../models/status'
|
|
7
|
-
import { DiffType, ITextDiff, DiffSelection } from '../models/diff'
|
|
8
|
-
import { Repository } from '../models/repository'
|
|
9
|
-
import { getWorkingDirectoryDiff } from './diff'
|
|
10
|
-
import { formatPatch, formatPatchToDiscardChanges } from '../lib/patch-formatter'
|
|
11
|
-
import { assertNever } from '../lib/fatal-error'
|
|
12
|
-
|
|
13
|
-
export async function applyPatchToIndex(
|
|
14
|
-
repository: Repository,
|
|
15
|
-
file: WorkingDirectoryFileChange
|
|
16
|
-
): Promise<void> {
|
|
17
|
-
// If the file was a rename we have to recreate that rename since we've
|
|
18
|
-
// just blown away the index. Think of this block of weird looking commands
|
|
19
|
-
// as running `git mv`.
|
|
20
|
-
if (file.status.kind === AppFileStatusKind.Renamed) {
|
|
21
|
-
// Make sure the index knows of the removed file. We could use
|
|
22
|
-
// update-index --force-remove here but we're not since it's
|
|
23
|
-
// possible that someone staged a rename and then recreated the
|
|
24
|
-
// original file and we don't have any guarantees for in which order
|
|
25
|
-
// partial stages vs full-file stages happen. By using git add the
|
|
26
|
-
// worst that could happen is that we re-stage a file already staged
|
|
27
|
-
// by updateIndex.
|
|
28
|
-
await git(
|
|
29
|
-
['add', '--update', '--', file.status.oldPath],
|
|
30
|
-
repository.path,
|
|
31
|
-
'applyPatchToIndex'
|
|
32
|
-
)
|
|
33
|
-
|
|
34
|
-
// Figure out the blob oid of the removed file
|
|
35
|
-
// <mode> SP <type> SP <object> TAB <file>
|
|
36
|
-
const oldFile = await git(
|
|
37
|
-
['ls-tree', 'HEAD', '--', file.status.oldPath],
|
|
38
|
-
repository.path,
|
|
39
|
-
'applyPatchToIndex'
|
|
40
|
-
)
|
|
41
|
-
|
|
42
|
-
const [info] = oldFile.stdout.split('\t', 1)
|
|
43
|
-
const [mode, , oid] = info.split(' ', 3)
|
|
44
|
-
|
|
45
|
-
// Add the old file blob to the index under the new name
|
|
46
|
-
await git(
|
|
47
|
-
['update-index', '--add', '--cacheinfo', mode, oid, file.path],
|
|
48
|
-
repository.path,
|
|
49
|
-
'applyPatchToIndex'
|
|
50
|
-
)
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
const applyArgs: string[] = [
|
|
54
|
-
'apply',
|
|
55
|
-
'--cached',
|
|
56
|
-
'--unidiff-zero',
|
|
57
|
-
'--whitespace=nowarn',
|
|
58
|
-
'-',
|
|
59
|
-
]
|
|
60
|
-
|
|
61
|
-
const diff = await getWorkingDirectoryDiff(repository, file)
|
|
62
|
-
|
|
63
|
-
if (diff.kind !== DiffType.Text && diff.kind !== DiffType.LargeText) {
|
|
64
|
-
const { kind } = diff
|
|
65
|
-
switch (diff.kind) {
|
|
66
|
-
case DiffType.Binary:
|
|
67
|
-
case DiffType.Submodule:
|
|
68
|
-
case DiffType.Image:
|
|
69
|
-
throw new Error(
|
|
70
|
-
`Can't create partial commit in binary file: ${file.path}`
|
|
71
|
-
)
|
|
72
|
-
case DiffType.Unrenderable:
|
|
73
|
-
throw new Error(
|
|
74
|
-
`File diff is too large to generate a partial commit: ${file.path}`
|
|
75
|
-
)
|
|
76
|
-
default:
|
|
77
|
-
assertNever(diff, `Unknown diff kind: ${kind}`)
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
const patch = await formatPatch(repository, file, file.selection)
|
|
82
|
-
await git(applyArgs, repository.path, 'applyPatchToIndex', { stdin: patch })
|
|
83
|
-
|
|
84
|
-
return Promise.resolve()
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
/**
|
|
88
|
-
* Test a patch to see if it will apply cleanly.
|
|
89
|
-
*
|
|
90
|
-
* @param workTree work tree (which should be checked out to a specific commit)
|
|
91
|
-
* @param patch a Git patch (or patch series) to try applying
|
|
92
|
-
* @returns whether the patch applies cleanly
|
|
93
|
-
*
|
|
94
|
-
* See `formatPatch` to generate a patch series from existing Git commits
|
|
95
|
-
*/
|
|
96
|
-
export async function checkPatch(
|
|
97
|
-
workTree: { path: string },
|
|
98
|
-
patch: string
|
|
99
|
-
): Promise<boolean> {
|
|
100
|
-
const result = await git(
|
|
101
|
-
['apply', '--check', '-'],
|
|
102
|
-
workTree.path,
|
|
103
|
-
'checkPatch',
|
|
104
|
-
{
|
|
105
|
-
stdin: patch,
|
|
106
|
-
encoding: 'utf8' as any,
|
|
107
|
-
expectedErrors: new Set<DugiteError>([DugiteError.PatchDoesNotApply]),
|
|
108
|
-
}
|
|
109
|
-
)
|
|
110
|
-
|
|
111
|
-
if (result.gitError === DugiteError.PatchDoesNotApply) {
|
|
112
|
-
// other errors will be thrown if encountered, so this is fine for now
|
|
113
|
-
return false
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
return true
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
/**
|
|
120
|
-
* Discards the local changes for the specified file based on the passed diff
|
|
121
|
-
* and a selection of lines from it.
|
|
122
|
-
*
|
|
123
|
-
* When passed an empty selection, this method won't do anything. When passed a
|
|
124
|
-
* full selection, all changes from the file will be discarded.
|
|
125
|
-
*
|
|
126
|
-
* @param repository The repository in which to update the working directory
|
|
127
|
-
* with information from the index
|
|
128
|
-
*
|
|
129
|
-
* @param filePath The relative path in the working directory of the file to use
|
|
130
|
-
*
|
|
131
|
-
* @param diff The diff containing the file local changes
|
|
132
|
-
*
|
|
133
|
-
* @param selection The selection of changes from the diff to discard
|
|
134
|
-
*/
|
|
135
|
-
export async function discardChangesFromSelection(
|
|
136
|
-
repository: Repository,
|
|
137
|
-
filePath: string,
|
|
138
|
-
diff: ITextDiff,
|
|
139
|
-
selection: DiffSelection
|
|
140
|
-
) {
|
|
141
|
-
const file = new WorkingDirectoryFileChange(filePath, { kind: AppFileStatusKind.Modified }, selection)
|
|
142
|
-
const patch = await formatPatchToDiscardChanges(repository, file)
|
|
143
|
-
|
|
144
|
-
if (patch === null || patch === '') {
|
|
145
|
-
// When the patch is null we don't need to apply it since it will be a noop.
|
|
146
|
-
return
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
const args = ['apply', '--unidiff-zero', '--whitespace=nowarn', '-']
|
|
150
|
-
|
|
151
|
-
await git(args, repository.path, 'discardChangesFromSelection', {
|
|
152
|
-
stdin: patch,
|
|
153
|
-
})
|
|
154
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { GitError as DugiteError } from './exec'
|
|
2
|
-
|
|
3
|
-
/** Get the environment for authenticating remote operations. */
|
|
4
|
-
export function envForAuthentication(): Record<string, string | undefined> {
|
|
5
|
-
return {
|
|
6
|
-
// supported since Git 2.3, this is used to ensure we never interactively prompt
|
|
7
|
-
// for credentials - even as a fallback
|
|
8
|
-
GIT_TERMINAL_PROMPT: '0',
|
|
9
|
-
GIT_TRACE: localStorage.getItem('git-trace') || '0',
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
/** The set of errors which fit under the "authentication failed" umbrella. */
|
|
14
|
-
export const AuthenticationErrors: ReadonlySet<DugiteError> = new Set([
|
|
15
|
-
DugiteError.HTTPSAuthenticationFailed,
|
|
16
|
-
DugiteError.SSHAuthenticationFailed,
|
|
17
|
-
DugiteError.HTTPSRepositoryNotFound,
|
|
18
|
-
DugiteError.SSHRepositoryNotFound,
|
|
19
|
-
])
|