Pijul source control integration extension for Visual Studio Code
# 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]https://pijul.org/manual/installing.html.
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
```

3. Package the extension

```bash
# Windows users might need to set env var NODE_OPTIONS=--openssl-legacy-provider vsce package
vsce package
```

4. 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"]
```