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:
@@ -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);
|
||||
|
||||
@@ -175,6 +175,12 @@ fn main() -> anyhow::Result<()> {
|
||||
#[cfg(not(feature = "git"))]
|
||||
log::info!(":sync — saved; light build (no `git` feature) — push skipped");
|
||||
}
|
||||
Effect::Pull => {
|
||||
// `:gl` — fetch + fast-forward from the remote. The on-device
|
||||
// fetch/fast-forward on the git thread is v0.7 work (git_sync
|
||||
// only exposes push today), so acknowledge and no-op for now.
|
||||
ed.set_notice("pull: not wired yet (v0.7)");
|
||||
}
|
||||
}
|
||||
|
||||
// Keyboard attach/detach feeds the panel's disconnect flag.
|
||||
|
||||
Reference in New Issue
Block a user