feat(editor,firmware): add :gl fast-forward pull command

Add Effect::Pull and the `:gl` command (fetch + fast-forward only, refuse on
divergence). The editor side is host-tested; the firmware arm is a stub posting
"pull: not wired yet (v0.7)" — the on-device fetch/fast-forward in git_sync is
v0.7 work (only push is wired today).
This commit is contained in:
Julien Calixte
2026-07-11 19:32:02 +02:00
parent 1d7448ba75
commit cb3160541d
2 changed files with 16 additions and 0 deletions

View File

@@ -83,6 +83,10 @@ pub enum Effect {
/// `:sync` — publish the buffer (save, then git push). The host saves
/// first: publishing an unsaved buffer is meaningless.
Publish,
/// `:gl` — pull from the remote: fetch, then **fast-forward only**. The host
/// refuses (and surfaces) a divergence rather than merging, and never
/// touches local commits. Complements `:sync` (push) as the download half.
Pull,
}
/// A pending operator awaiting a motion or text object (`d`elete / `c`hange).
@@ -462,6 +466,7 @@ impl Editor {
}
"w" | "wq" | "x" => Effect::Save,
"sync" => Effect::Publish,
"gl" => Effect::Pull,
_ => Effect::None,
}
}
@@ -1616,6 +1621,11 @@ mod tests {
assert_eq!(command("sync").1, Effect::Publish);
}
#[test]
fn gl_command_signals_pull() {
assert_eq!(command("gl").1, Effect::Pull);
}
#[test]
fn wq_and_x_alias_save_dropping_the_quit() {
assert_eq!(command("wq").1, Effect::Save);