feature:unlock
Introduction
feature:unlock turns a pinned feature into an editable one, a git working copy on main at the workspace root. The running product uses it at once. Run it when you need to change a feature your product pins.
splent feature:unlock splent_feature_notes
notes (v1.2.0) -> editable
copying to workspace root...
reinstalling in web container...
ready.
The product’s link moves from the read-only snapshot in .splent_cache to <workspace>/splent_feature_notes/, and the entry loses its @version. Comments, blank lines, key order and quote style stay as they were in pyproject.toml.
Unlocking every pinned feature
splent feature:unlock --all
Every pinned feature is converted in turn. When at least one converts, product:resolve and product:restart run after.
Converting 3 feature(s) to editable:
...
3/3 converted.
What your working copy gets
The snapshot is copied to the workspace root and made writable. A copy already there is kept.
origin points at the configured forge, over SSH when a key reaches it and HTTPS otherwise. The full history is fetched, and main is checked out and pulled. When origin pointed at another namespace, you are told the old URL.
A feature with webpack assets or a frontend/ folder is compiled too.
When you cannot push to it
note: no push access to splent-io/splent_feature_notes
use 'splent feature:fork' to work on your own copy
With a forge token set, the forge is asked whether you can push. When you cannot, work on your own copy with feature:fork.
A conversion that fails is undone, and the copy this run made is removed. A working copy that is not a git repository of its own is refused.
Reference
| Argument or option | Description |
|---|---|
FEATURE_NAME |
splent_feature_notes or splent-io/splent_feature_notes |
--all |
Every pinned feature of the product |
--force |
Accepted, with no effect |
Pass a feature name or --all, not both.
| Message | Exit | What to do |
|---|---|---|
already editable |
0 | Nothing to do |
<feature> not found in pyproject. |
1 | Check the name the product declares |
cached version not found: <path> |
1 | Fetch it with feature:clone |
git setup failed: ... |
1 | Read git’s error. The copy was removed |
Requirements
- A selected product (
SPLENT_APP) that declares the feature. - The feature’s snapshot in
.splent_cache.
See also
feature:releasepublishes your changes and pins the release again.feature:addadds an editable copy you already have.- SPLENT Cache explains pinned and editable features.