github unisonweb/unison release/M5a

latest releases: trunk-build, release/0.5.49, release/0.5.48...
2 years ago

What's New

Support for projects in UCM and Unison Share:
Screenshot 2023-06-28 at 3 11 33 PM

In UCM, there's several new project-related commands:

Command Description
create.project Create a new project
clone Download a project branch from Share
branch Create a new branch forked off the current branch
branch.empty Create a new empty branch
switch Switch to a different project/branch
projects List your projects
branches List your branches
rename.branch Rename a branch
rename.project Rename a project
delete.branch Delete a branch
delete.project Delete a project

See the official docs for more details.

Numerous VSCode / LSP improvements (like docs on hover)

Screenshot 2023-06-28 at 3 24 26 PM

... and many other performance fixes!

Known Issues

A few commands' outputs aren't fully Projects-aware yet; this means long scary identifiers in certain spots:

image

In particular, undo and reset-root commands aren't project-aware yet. If you use them to undo or revert past a branch or project creation, the project or branch will continue to exist, but with branches reset to the empty branch. Use project.delete or branch.delete if you wish to undo a project or branch creation.

If you use undo or reset-root to undo a project or branch deletion, it will resurrect the namespace(s) that were deleted, but won't associate those namespaces with any projects or branches. Use the procedure below to find those namespaces and bring their contents back into a branch.

All changes since last release

New Contributors

Full Changelog: release/M4i...release/M5a

Appendix: Re-creating a deleted project or branch

Suppose you've accidentally deleted a project or branch. You can still get it back using the following (somewhat kludgy) procedure. A later release of UCM will have something more streamlined for this, but for now:

  1. Use reflog and reset-root to go back in time before the deletion. This will recreate the namespace(s) in the (hidden) __projects namespace. The __projects namespace has a subnamespace per project, and per branch, but they have GUIDs instead of meaningful names. A database table maps these GUIDs to project and branch names.
  2. Use reflog again, then diff.namespace 2 1 to diff the last two entries in the reflog. From the diff, note what namespace(s) were created or deleted. Suppose that was the namespace .__projects.abc_123.branches.efg_456
  3. Use project.create (or branch.empty) to recreate an empty project or branch, then do merge .__projects.abc_123.branches.efg_456 to bring that resurrected namespace back into your branch.
  4. You can now optionally namespace.delete the namespace you got from step two, since its contents have been merged into the new branch.

Come by the Slack #troubleshooting channel if you have any difficulties.

Don't miss a new unison release

NewReleases is sending notifications on new releases.