rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5 heartwood2450401e2e0f53a1fce66ff925cb59d5e1b3fc35
{
"request": "trigger",
"version": 1,
"event_type": "patch",
"repository": {
"id": "rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5",
"name": "heartwood",
"description": "Radicle Heartwood Protocol & Stack",
"private": false,
"default_branch": "master",
"delegates": [
"did:key:z6MksFqXN3Yhqk8pTJdUGLwATkRfQvwZXPqR2qMEhbS9wzpT",
"did:key:z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM",
"did:key:z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz"
]
},
"action": "Created",
"patch": {
"id": "2adac77df74fa5049383206997f94e9171b10ea2",
"author": {
"id": "did:key:z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM",
"alias": null
},
"title": "cli: idempotent `rad id update`",
"state": {
"status": "merged",
"conflicts": []
},
"before": "f26be552c20e8db05ce9e0aad9d61ab6e4e2bf48",
"after": "2450401e2e0f53a1fce66ff925cb59d5e1b3fc35",
"commits": [
"2450401e2e0f53a1fce66ff925cb59d5e1b3fc35"
],
"target": "d285eccb23f3986bfa88fc1af033e6dcb0dc3a65",
"labels": [],
"assignees": [],
"revisions": [
{
"id": "2adac77df74fa5049383206997f94e9171b10ea2",
"author": {
"id": "did:key:z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM",
"alias": null
},
"description": "Instead of producing an error when there is no update during `rad id update`, a\nwarning is issued with helpful tips. The command is considered is still\nconsidered successful.",
"base": "6598e7745640cd060616230adc18e122af49343a",
"oid": "d4b51bdf23d214760fc8b903f52ddfbf27e4fee9",
"timestamp": 1718896966
},
{
"id": "af54a39af69f467818eebb0bb5460f5a7dbedd78",
"author": {
"id": "did:key:z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM",
"alias": null
},
"description": "Changes:\n- Updated to idempotent warning in rad-id-private test",
"base": "f26be552c20e8db05ce9e0aad9d61ab6e4e2bf48",
"oid": "e5633a3d28427d52aeee36e327b0c31a609ed143",
"timestamp": 1718897225
},
{
"id": "27353d36e5388e31c1cb38463c5101d2638313d8",
"author": {
"id": "did:key:z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM",
"alias": null
},
"description": "Changes:\n- Change the warning to a plain message",
"base": "f26be552c20e8db05ce9e0aad9d61ab6e4e2bf48",
"oid": "2450401e2e0f53a1fce66ff925cb59d5e1b3fc35",
"timestamp": 1718959692
},
{
"id": "9a5f26a595693fa478a54c39e108cea731a215a3",
"author": {
"id": "did:key:z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM",
"alias": null
},
"description": "Rebase, small tweaks.",
"base": "42ffbf3fe66b5d7a78604bd3c7d73f57ef9e9487",
"oid": "80f1e6516cfb2412988c72deb3dd024c2a920bf3",
"timestamp": 1718967731
}
]
}
}
{
"response": "triggered",
"run_id": {
"id": "51d1b0cd-5bd4-4ab9-ba57-0941c6ee1f97"
},
"info_url": "https://cci.rad.levitte.org//51d1b0cd-5bd4-4ab9-ba57-0941c6ee1f97.html"
}
Started at: 2026-09-07 20:09:40.184070+02:00
Commands:
$ rad clone rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5 .
✓ Creating checkout in ./...
✓ Remote cloudhead@z6MksFqXN3Yhqk8pTJdUGLwATkRfQvwZXPqR2qMEhbS9wzpT added
✓ Remote-tracking branch cloudhead@z6MksFqXN3Yhqk8pTJdUGLwATkRfQvwZXPqR2qMEhbS9wzpT/master created for z6MksFqXN3Yhqk8pTJdUGLwATkRfQvwZXPqR2qMEhbS9wzpT
✓ Remote fintohaps@z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM added
✓ Remote-tracking branch fintohaps@z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM/master created for z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM
✓ Remote lorenz@z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz added
✓ Remote-tracking branch lorenz@z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz/master created for z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz
✓ Repository successfully cloned under /opt/radcis/ci.rad.levitte.org/cci/state/51d1b0cd-5bd4-4ab9-ba57-0941c6ee1f97/w/
╭────────────────────────────────────╮
│ heartwood │
│ Radicle Heartwood Protocol & Stack │
│ 189 issues · 38 patches │
╰────────────────────────────────────╯
Run `cd ./.` to go to the repository directory.
Exit code: 0
$ rad patch checkout 2adac77df74fa5049383206997f94e9171b10ea2
✓ Switched to branch patch/2adac77 at revision 27353d3
✓ Branch patch/2adac77 setup to track rad/patches/2adac77df74fa5049383206997f94e9171b10ea2
Exit code: 0
$ git config advice.detachedHead false
Exit code: 0
$ git checkout 2450401e2e0f53a1fce66ff925cb59d5e1b3fc35
HEAD is now at 2450401e cli: idempotent `rad id update`
Exit code: 0
$ rad patch show 2adac77df74fa5049383206997f94e9171b10ea2 -p
╭─────────────────────────────────────────────────────────────────────────────────╮
│ Title cli: idempotent `rad id update` │
│ Patch 2adac77df74fa5049383206997f94e9171b10ea2 │
│ Author fintohaps z6Mkire…SQZ3voM │
│ Head 2450401e2e0f53a1fce66ff925cb59d5e1b3fc35 │
│ Base f26be552c20e8db05ce9e0aad9d61ab6e4e2bf48 │
│ Target master │
│ Branches patch/2adac77 │
│ Commits ahead 1, behind 1280 │
│ Status merged │
│ │
│ Instead of producing an error when there is no update during `rad id update`, a │
│ warning is issued with helpful tips. The command is considered is still │
│ considered successful. │
├─────────────────────────────────────────────────────────────────────────────────┤
│ 2450401 cli: idempotent `rad id update` │
├─────────────────────────────────────────────────────────────────────────────────┤
│ ● Revision 2adac77 @ 6598e77..d4b51bd by fintohaps z6Mkire…SQZ3voM 2 years ago │
│ ↑ Revision af54a39 @ f26be55..e5633a3 by fintohaps z6Mkire…SQZ3voM 2 years ago │
│ ↑ Revision 27353d3 @ f26be55..2450401 by fintohaps z6Mkire…SQZ3voM 2 years ago │
│ ↑ Revision 9a5f26a @ 42ffbf3..80f1e65 by cloudhead z6MksFq…bS9wzpT 2 years ago │
│ └─ ✓ merged by cloudhead z6MksFq…bS9wzpT │
╰─────────────────────────────────────────────────────────────────────────────────╯
commit 2450401e2e0f53a1fce66ff925cb59d5e1b3fc35
Author: Fintan Halpenny <fintan.halpenny@gmail.com>
Date: Thu Jun 20 17:21:18 2024 +0200
cli: idempotent `rad id update`
Instead of producing an error when there is no update during `rad id update`, a
message that the document is up to date is printed. The command is considered is
considered successful.
Signed-off-by: Fintan Halpenny <fintan.halpenny@gmail.com>
X-Clacks-Overhead: GNU Terry Pratchett
diff --git a/radicle-cli/examples/rad-id-private.md b/radicle-cli/examples/rad-id-private.md
index b09a34a89..a4c8e27ad 100644
--- a/radicle-cli/examples/rad-id-private.md
+++ b/radicle-cli/examples/rad-id-private.md
@@ -62,17 +62,16 @@ $ rad id update --title "Remove allow list" --description "" --allow did:key:z6M
✗ Error: `--allow` and `--disallow` must not overlap: ["did:key:z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk"]
```
-Allowing or disallowing the same peer twice will result in an error the second
-call, since there is no update specified:
+Allowing or disallowing the same peer twice will result in a message saying that
+the document is already up to date:
```
$ rad id update --title "Allow Bob" --description "" --allow did:key:z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk -q
...
```
-``` (fails)
+```
$ rad id update --title "Allow Bob" --description "" --allow did:key:z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk -q
-✗ Error: no update specified
-✗ Hint: an update to the identity must be specified, run `rad id update -h` to see the available options
+Nothing to do. The document is up to date. See `rad inspect --identity`
```
If we attempt to change the list while also changing the repository to `public`,
diff --git a/radicle-cli/examples/rad-id.md b/radicle-cli/examples/rad-id.md
index 259c8456d..b75a7d4b8 100644
--- a/radicle-cli/examples/rad-id.md
+++ b/radicle-cli/examples/rad-id.md
@@ -174,10 +174,9 @@ $ rad id accept 0ca42d376bd566631083c8913cf86bec722da392
✗ Error: [..]
```
-If no updates are specified then the update will fail:
+If no updates are specified then we are told that our command had no effect:
-``` (fail)
+```
$ rad id update --title "Update canonical branch" --description "Update the canonical branch to `main`"
-✗ Error: no update specified
-✗ Hint: an update to the identity must be specified, run `rad id update -h` to see the available options
+Nothing to do. The document is up to date. See `rad inspect --identity`
```
diff --git a/radicle-cli/src/commands/id.rs b/radicle-cli/src/commands/id.rs
index 215b2f845..f9aee9ef5 100644
--- a/radicle-cli/src/commands/id.rs
+++ b/radicle-cli/src/commands/id.rs
@@ -470,10 +470,10 @@ pub fn run(options: Options, ctx: impl term::Context) -> anyhow::Result<()> {
proposal
};
if proposal == current.doc {
- return Err(Error::WithHint {
- err: anyhow!("no update specified"),
- hint: "an update to the identity must be specified, run `rad id update -h` to see the available options"
- }.into());
+ term::print(term::format::italic(
+ "Nothing to do. The document is up to date. See `rad inspect --identity`",
+ ));
+ return Ok(());
}
let revision = update(title, description, proposal, &mut identity, &signer)?;
Exit code: 0
shell: 'cargo --version rustc --version cargo fmt --check cargo clippy --all-targets --workspace -- --deny clippy::all cargo build --all-targets --workspace cargo doc --workspace cargo test --workspace --no-fail-fast '
Commands:
$ podman run --name 51d1b0cd-5bd4-4ab9-ba57-0941c6ee1f97 -v /opt/radcis/ci.rad.levitte.org/cci/state/51d1b0cd-5bd4-4ab9-ba57-0941c6ee1f97/s:/51d1b0cd-5bd4-4ab9-ba57-0941c6ee1f97/s:ro -v /opt/radcis/ci.rad.levitte.org/cci/state/51d1b0cd-5bd4-4ab9-ba57-0941c6ee1f97/w:/51d1b0cd-5bd4-4ab9-ba57-0941c6ee1f97/w -w /51d1b0cd-5bd4-4ab9-ba57-0941c6ee1f97/w -v /opt/radcis/ci.rad.levitte.org/.radicle:/${id}/.radicle:ro -e RAD_HOME=/${id}/.radicle rust:trixie bash /51d1b0cd-5bd4-4ab9-ba57-0941c6ee1f97/s/script.sh
+ cargo --version
info: syncing channel updates for '1.77-x86_64-unknown-linux-gnu'
info: latest update on 2024-04-09, rust version 1.77.2 (25ef9e3d8 2024-04-09)
info: downloading component 'cargo'
info: downloading component 'rust-std'
info: downloading component 'rustc'
info: installing component 'cargo'
info: installing component 'rust-std'
info: installing component 'rustc'
cargo 1.77.2 (e52e36006 2024-03-26)
+ rustc --version
rustc 1.77.2 (25ef9e3d8 2024-04-09)
+ cargo fmt --check
error: 'cargo-fmt' is not installed for the toolchain '1.77-x86_64-unknown-linux-gnu'.
To install, run `rustup component add --toolchain 1.77-x86_64-unknown-linux-gnu rustfmt`
Exit code: 1
{
"response": "finished",
"result": "failure"
}