Pijul source control integration extension for Visual Studio Code
README.md

Pijul for VS Code

Pijul for VS Code is an extension for Visual Studio Code which adds integration with Pijul as a source control management system.

Why develop my own extension instead of contributing to the existing one? It didn't even occur to me to check if one already existed when I started, and when I did my own extension had enough distinct features to set it apart.

Features

At present, this extension offers most of the basic features necessary for local Pijul development on a single channel. It includes basic commands for initializing a repository in a VS Code workspace.

  • Add, Reset, or Record one, some, or all of the files in the Pijul Repository.
  • Decorations in the file tree indicating the current state of each file.
  • VS Code comparison integration for diffing files with their last recorded versions.
  • Basic views for the change log and the channels

Everything else still needs to be done on the command line.

Requirements

Requires an existing Pijul installation. Instructions for installing Pijul can be found here. The primary development environment for the extension is WSL2 and at this early stage I can't guarantee that it will work on other platforms. If you are using or have tried using the extension on a different platform, please feel free to open a discussion with any issues you have encountered.

Known Issues

  • On the Source Control View, deleted files show up as their parent directory (This is the result of a Pijul CLI limitation).

Installation

Pijul for VS Code hasn't been published on the extension marketplace yet, so it needs to be built and installed from the source. To do so, follow these steps:

  1. Clone the repository
  2. Install Visual Studio Code Extensions (VSCE)
npm install --global @vscode/vsce
  1. Package the extension
# Windows users might need to set env var NODE_OPTIONS=--openssl-legacy-provider vsce package
vsce package
  1. In VS Code, open the Command Palette (Ctrl + Shift + P) and run the "Extensions: Install from VSIX..." to install the VSIX file you created in the last step

Roadmap

With the eventual goal of releasing on the Extension Marketplace with the same level of quality as other source control extensions, there are a number of areas which will require a great deal of further refinement:

  • Proper handling of VS Code workspaces with multiple folders
  • Automatic detection of Pijul installations
  • More robust .ignore file handling
  • Greater configurability

There are also a number of Pijul features which still need to be implemented to reach a publishable minimum viable product, suitable for local Pijul development:

  • Amending changes
  • Moving and removing files
  • Ignore file management
  • Signing changes

In the long term, I would like to offer more in-depth Pijul integration, with the goal of providing a better experience than can be offered on the command line:

  • Remote management
  • Inline pijul credit annotations
  • IntelliJ style changeset system
  • Splitting/Combining existing changes
  • Conflict management

Each category probably could probably fit a couple more points that I haven't thought of.

Contributing

Pijul for VS Code welcomes all contributions. Before contributing, please be sure to add the following hook to your Pijul config file:

[hooks]
record = ["yarn run lint"]