This release has some far-reaching changes and big quality-of-life improvements for managing codebase state:
New project-based scoping for UCM commands
Prior to the 0.5.25 release, the Unison Codebase Manager (UCM) had a global log for undoing codebase changes. We’ve revamped the core experience of managing codebase history so that the updated UCM commands are scoped to a project or named appropriately.
🪵 reflog
aka branch.reflog
shows the history of the current branch.
⏪ reset #someHash /optionalBranch
resets a branch to the given state.
🗂️ project.reflog
shows reflog entries across all branches in the project.
🌐 global.reflog
shows reflog entries across all projects in the codebase.
New features and improvements
🔝 Absolute paths now refer to the root of the project
🌳 More commands now accept paths/names from other branches in the form /branch:path.in.project
🏎️ Increased scratch file parsing speed (faster watch expressions!)
✍️ Error message improvements
Warnings - please read
🏗️ This deprecates the old non-project workspace (it used to be accessible from an absolute path like .old.legacy.stuff
) Everything in the non-project legacy code space will be moved to a project called “legacy” for you. (Thanks UCM!)
✋ After upgrading to the newest version of the UCM, your reflog
will look empty (since it's now a log of something based on the project, not the global scope).
👽 The old reset-root
command is deprecated. Using it could lead to weird codebase states.
🪿 This version will perform a codebase migration
Community Contributions
🏆 With gratitude to new UCM contributor Eduard and the continued hard work of the UCM team!
Share the news