OXYGENHUB
# 26410312ce16 oxygen-vscode / README.md
7.3 KiB · Markdown · last changed Oxygen colours, a Get started walkthrough, Create Identity (0.14.0) 1 month ago renderedsource blame history raw
bed495a9 Andy McCall ↶ 1
# Oxygen for Visual Studio Code
2
cdcffe39 Andy McCall ↶ 3
Source control for Oxygen (`oxy`) repositories. It adds:
4
5
- a Source Control view with changes and conflicts
6
- diffs against the working copy's base and quick-diff gutters
7
- decorations in the explorer and a status bar item
8
- a history graph
9
- blame, bisect and trust views
10
- links to your forge
11
12
The design, milestone by milestone, is in `docs/spec.md` in this repository.
bed495a9 Andy McCall ↶ 13
14
## Requirements
15
16
- Visual Studio Code 1.137 or later.
cdcffe39 Andy McCall ↶ 17
- `oxy` 0.1 or later. The extension looks for it in the `oxygen.path` setting first, then on your PATH, then at `~/.local/bin/oxy`.
18
- The extension drives `oxy --json` and never reads `.oxy/` itself, so anything it does, you can also do in a terminal.
19
20
## Getting started
21
22
1. Open a folder that is an Oxygen repository, or run **Oxygen: Initialize Repository** in a plain folder, or **Oxygen: Clone Repository** to start from a URL.
23
2. The Source Control view shows an **Oxygen** provider. The status bar shows the bookmark, the working copy and the state. Click it to switch, create, merge or delete bookmarks.
24
3. If you have no signing identity yet, the commit box says "unsigned: no identity". Run `oxy identity create` once in a terminal.
25
26
## Walkthroughs
27
28
### Commit
29
30
1. Edit files. They appear under **Changes**, with gutters in the editor and letters in the explorer.
31
2. Click a file to see its diff against the working copy's base.
32
3. Type a message in the commit box and press `Ctrl+Enter`. The box also tells you whether the change will be signed, sealed at push, or unsigned.
33
34
Variations:
35
36
- **Only some files:** right-click them and choose **Commit Selected**.
37
- **Only some hunks:** use **Commit Hunks…** from the view's menu. Anything a chosen hunk needs comes along with it.
38
- **Fix up the last change:** click the pencil in the view's title bar for **amend mode**. `Ctrl+Enter` then amends, and the box starts from the last change's message. Click the cross to leave amend mode.
39
- **Reuse a message:** **Previous Commit Messages…** puts a recent one back in the box.
40
41
If a file still holds conflict markers, whether Oxygen's or Git's, committing asks first and can open that file for you.
42
43
### Resolve a conflict
44
45
Conflicts are ordinary state in Oxygen. You can commit, push and pull them, and resolve them whenever you like.
46
47
1. Conflicted files appear under **Conflicts**.
48
2. In the editor, CodeLens actions above each marker accept one side, all sides, or a deletion.
49
3. For a conflict in the tree, such as two files given the same name, **Keep This Candidate** on the candidate you want.
50
4. Choose **Mark Resolved**, then commit. The commit box reads "Describe the resolution".
51
f532c426 Andy McCall ↶ 52
OxygenHub's conflict resolver also offers **Resolve in VS Code**. The link opens this extension, which switches your checkout to the conflict's bookmark (after asking), pulls it, and opens the file here.
53
19639205 Andy McCall ↶ 54
### Squash or rebase from a proposal's swimlanes
55
56
On a proposal's swimlane board in OxygenHub, drag a change onto another to plan a squash (into it) or a rebase (onto it). **Apply in VS Code** opens this extension. It confirms the plan, switches to the proposal's bookmark, pulls it, and rewrites the changes here, where they are signed with your key. It then offers to push the bookmark.
57
cdcffe39 Andy McCall ↶ 58
### Sync with a remote
59
60
- The status bar's sync counter shows changes to pull and to push. Click it to **Sync**.
61
- **Fetch**, **Pull**, **Push** and **Push Bookmark** are in the view's `…` menu.
62
- Pushing asks first unless `oxygen.confirmSync` is off.
63
64
### Read and rewrite history
65
66
1. **Show History** draws the bookmark's changes as a graph of dependencies. Independent changes sit side by side, and there are no merge nodes.
67
2. Click a change to diff it, check out its state, describe it, tag it or abandon it.
68
3. The same menu, or right-clicking a row, rewrites history:
69
   - **Split** a head: the files you choose become a separate first change.
70
   - **Squash** a change into one of its dependencies.
71
   - **Rebase** a change onto a bookmark, change or tag.
72
73
Every rewrite asks first and then offers **Undo**. The **Oxygen Operations** view can undo back to any point.
74
75
For one file:
76
77
- **File History** lists the changes that touched it, with diffs between versions.
78
- **Toggle Inline Blame** shows each line's change, author and age.
79
80
### Find a regression
81
82
The **Oxygen Bisect** view starts a bisection. Mark changes good, bad or skip, or give it a command to run. It shows the first bad change when it finds it.
83
84
### Link to lines on your forge
85
86
With a forge extension such as OxygenHub installed, right-click a line number, or inside the editor:
87
88
- **Open on Remote** opens the file at those lines.
89
- **Copy Remote Link** copies a link that follows the bookmark.
90
- **Copy Permalink** copies a link to the bookmark's current state, so it keeps showing these lines after later changes.
91
92
The link covers the line you clicked, or your selection. If the file has uncommitted edits, a note says the lines may not match the remote.
93
94
### Check trust
95
96
The **Oxygen Trust** view shows the repository's trust policy and each change's signature. **Verify Signatures** checks them all.
97
013fefef Andy McCall ↶ 98
## Colours and getting started
99
100
The history graph and the file letters use Oxygen's own themeable colours: `oxygen.lane1`…`oxygen.lane8` for the graph's lanes, plus `oxygen.head`, `oxygen.workingCopy`, `oxygen.signed`, `oxygen.sealed`, `oxygen.invalid` and `oxygen.added`/`modified`/`removed`/`renamed`/`conflict`/`resolved`. Set them under `workbench.colorCustomizations`. **Get started with Oxygen**, on the Welcome page, walks through a first repository. **Oxygen: Create Identity…** makes your signing key.
101
cdcffe39 Andy McCall ↶ 102
## Settings
103
104
| Setting | Default | What it does |
105
|---|---|---|
106
| `oxygen.path` | empty | Path to the `oxy` binary. Empty means `oxy` on PATH, then `~/.local/bin/oxy`. |
107
| `oxygen.autoRefresh` | `true` | Refresh the Source Control view when files in the workspace change. Off means refresh by hand. |
108
| `oxygen.decorations.enabled` | `true` | Status letters and colours in the explorer and on editor tabs. |
109
| `oxygen.inlineBlame` | `false` | Show each line's introducing change, author and age at the end of the line. Also toggled from the editor context menu. |
110
| `oxygen.confirmSync` | `true` | Ask before pushing. |
111
| `oxygen.showSnapshotOperations` | `false` | List snapshot operations in the Oxygen Operations view as well as commits, pulls and the rest. |
112
| `oxygen.statusBar.enabled` | `true` | Show the bookmark, working copy and state in the status bar. |
113
114
## For other extensions
115
116
The extension exports an API (`OxygenAPI`, version 1) with the repositories, their status and bookmarks, and a way to register a remote provider. It is what lets OxygenHub, or any forge, answer **Open on Remote**. See `src/api.ts`.
bed495a9 Andy McCall ↶ 117
118
## Building
119
120
```
121
npm install
122
npm run check          # typecheck, bundle, and test against the oxy binary
123
npm run package        # oxygen-vscode-<version>.vsix
cdcffe39 Andy McCall ↶ 124
code --install-extension oxygen-vscode-<version>.vsix
bed495a9 Andy McCall ↶ 125
```
126
cdcffe39 Andy McCall ↶ 127
`npm run watch` rebuilds on change. Press F5 in VS Code to launch an Extension Development Host with the bundle. The tests run the real `oxy`; set `OXY_BIN` to choose which one.
9020cf61 Andy McCall ↶ 128
bed495a9 Andy McCall ↶ 129
## Status
130
cdcffe39 Andy McCall ↶ 131
The spec's milestones 0.1 to 0.6 are done, and so are the additions listed in CHANGELOG.md. Left for 1.0: tests on macOS and Windows, a Marketplace publisher, and the spec's open questions.
bed495a9 Andy McCall ↶ 132
133
## Licence
134
135
MIT or Apache-2.0, at your option, as for Oxygen itself.