vscode-git-monolithic-extension

Fork of the built-in VSCode Git extension which includes optimisations for monolithic repositories.

MIT License

Stars
1

Bot releases are visible (Hide)

vscode-git-monolithic-extension - v0.1.19 Latest Release

Published by Silic0nS0ldier 4 months ago

✨ This extension is now public and published on the VSCode Marketplace! ✨

The main changes since v0.1.12 are;

  • Now using Bazel to build the extension.
  • Developmental releases now have a timestamp attached to their version (the reason for the missing 0.1.13 -> 0.1.18 releases).
  • Many dependency updates.
vscode-git-monolithic-extension - v0.1.12

Published by Silic0nS0ldier over 2 years ago

Like last release, there are many major internal changes. Unlike last time there is a major new restored feature.

Note that the minimum VSCode version is now 1.66.2.

Stage Selected Ranges

The builtin Git support offers this, but uses an experimental API which has been flagged for removal in favour of a different approach. Rather than waiting, I rewrote the implementation to work without it. To use it;

  1. Select a file in "Tracked" or "Untracked" under the source control panel.
  2. Highlight the parts of the file you want to keep.
  3. Pick on "..." in the editor panel then "Stage Selected Changes". Alternatively cmd+k cmd+alt+s.

There are some considerations here.

  1. The implementation relies on the editor remaining visible early on.
  2. If there are multiple visible editors for the file (e.g. diff and regular) it will give up.
  3. If the diff is visible in multiple panels (e.g. has been split) it will give up.
    These restrictions may be relaxed in time, for this initial release the checks are strict to help rule out inconsistencies.

If this misbehaves let me know. A key part of this feature relies on a VSCode internal (the diffing algorithm) which has been used via the vscode-diff package. It can easily end up out of sync with VSCode.

Internal

  • Eliminated a heavy dependency (offsetting stage selected changes addition).
  • Bundling step (via Rollup) now uses the NodeJS resolver. It's not perfect, but closer to reality.
  • Cleaned up unit test scripts, fixed some broken tests.
  • Updated to TypeScript 4.7 beta, decommissioned patched fork.
  • Integrated TypeScript into lint scripts (was removed from build in last release).
  • Now using builtin AbortSignal and AggregateError.
  • Eliminated several instances of explicit any usage.
  • Cleaned up utility functions, removing those which are now covered by builtin API.
  • Removed risky !. usage.
  • Migrated locale strings into single location, consolidating many duplicates and fixing some potential string interpolation issues.
  • Consolidated bulk of configuration to create a SSOT.
  • ESLint made stricter and given test and deprecation linting capabilities. Functions were also made to require and explicit return type to reduce time TS spends resolving implicit types.
vscode-git-monolithic-extension - v0.1.11

Published by Silic0nS0ldier over 2 years ago

  • Source control section statuses are now shown in their labels instead of a ghost file.
  • Diff view can now be opened for source control panel items during the refresh grace period.
  • Grace period will no longer be applied if files list has not changed.
  • Improved logging, fixed some cases where errors and warnings were sent to into oblivion.

Internal, but noteworthy

  • Major refactor, now uses native private fields (#repository vs. private repository) to ensure internals aren't leaking.
  • Major refactor, enum TypeScript construct is no longer used internally to keep source as close to standard JavaScript as possible.
  • 70% improvement to build speed (10s to 3s) by replacing tsc usage with custom WASM compiler built of swc.
vscode-git-monolithic-extension - v0.1.10

Published by Silic0nS0ldier over 2 years ago

Fixed duplicated commands in source control panel, added grace period to source control panel (items will go grey and unusable for a short duration to prevent misclicks), untracked changes are now processed separately (tracked changes panel should update sooner as a result), (items may be missing) will appear in source control panel when there are a lot of changes (the number is capped for performance reasons, a heuristic is used to detect this currently), significantly reduced extension size with removal of unneeded encoding detection dependencies, and the usual large number of internal refactorings made in preparation for future changes.

vscode-git-monolithic-extension - v0.1.9

Published by Silic0nS0ldier over 2 years ago

Fixed issue where the "too many files active" warning would prevent the source control panel updates, leaving it in a "loading" state until the warning was completely dismissed. Always show untracked changes separate to tracked changes.

vscode-git-monolithic-extension - v0.1.8

Published by Silic0nS0ldier over 2 years ago

Minor watcher improvements, migration of more commands to git interop library, considerable improvements to git interop library logging and considerable progress breaking up balls-of-mud.

vscode-git-monolithic-extension - v0.1.7

Published by Silic0nS0ldier over 2 years ago

Optimised command logging, repository detection watcher optimisations, migrated handful of simple git operations to git interop library, and broke up monolithic repository class.

vscode-git-monolithic-extension - v0.1.6

Published by Silic0nS0ldier over 2 years ago

Refactored git locator to resolve version from git interop package.

vscode-git-monolithic-extension - v0.1.5

Published by Silic0nS0ldier over 2 years ago

Bumped up dependencies.

vscode-git-monolithic-extension - v0.1.4

Published by Silic0nS0ldier almost 3 years ago

Fixed an issue where the watcher would fire events for each watched file, causing loops due to a separate bug where the watcher is being unnecessary recreated.

vscode-git-monolithic-extension - v0.1.3

Published by Silic0nS0ldier almost 3 years ago

Major git watcher optimisations (including ignoring events while index.lock exists), shedding a bunch of dead code, deferred activation to keep VSCode snappy during startup.

vscode-git-monolithic-extension - v0.1.2

Published by Silic0nS0ldier almost 3 years ago

Optimised watcher.

vscode-git-monolithic-extension - v0.1.1

Published by Silic0nS0ldier about 3 years ago

  • Removed bindings for unsupported commands.
  • Changed package publisher (make sure old release is uninstalled, it won't be automatically replaced).
vscode-git-monolithic-extension - v0.1.0

Published by Silic0nS0ldier about 3 years ago

Initial release.

Timeline functionality (which depends on experimental APIs which only VSCode included extensions can use) has been removed.

A filter for Facebook Watchman git events has been implemented which should improve performance in monorepos compared to the built-in git integration.