Context
Venfork updates the venfork-config orphan branch with --force-with-lease=venfork-config:<read-sha> (per the README's concurrency section). That makes the branch effectively force-pushed to origin after every config-mutating command (stage --pr, pull-request, issue stage, issue pull, sync upstream-pr/<n>).
Any tool that reads venfork-config from a long-lived clone (downstream automation, CI, bots) hits a sharp edge: a plain git fetch origin venfork-config:venfork-config is rejected as non-fast-forward after every venfork update, leaving the local ref at a stale state with no warning.
Repro
In a venfork clone with an existing venfork-config local ref:
- From another machine, run
venfork issue pull <N> against the same mirror — venfork force-pushes venfork-config.
- From the original clone:
git fetch origin venfork-config:venfork-config
exits 1 with ! [rejected] venfork-config -> venfork-config (non-fast-forward).
git show venfork-config:.venfork/config.json returns the OLD config — the new pulledIssues entry is missing.
How I hit it
Built honey — an autonomous triage bot that consumes venfork-config.pulledIssues to dedupe upstream-issue-pull operations. After honey ran venfork issue pull and re-read the config, it consistently saw stale data and assumed the pull had failed ("venfork issue pull reported success but no pulledIssues entry on re-read"). Real cause was the non-fast-forward fetch.
Suggested fix
Two options, not mutually exclusive:
- Document in the README's concurrency section that consumers must use
+venfork-config:venfork-config (or git fetch -f) to keep their local ref in sync — i.e. that the ref is rebased/replaced, not appended to.
- Surface a venfork-side helper / library export for reading the config that handles the force-fetch internally, so downstream tools don't each have to figure this out independently.
In honey we just changed our `readVenforkConfig` helper to use `+venfork-config:venfork-config` — one-character fix once you know.
Current workaround
Always pass `+` when fetching the config branch, or run `git fetch --force origin venfork-config`.
Context
Venfork updates the
venfork-configorphan branch with--force-with-lease=venfork-config:<read-sha>(per the README's concurrency section). That makes the branch effectively force-pushed tooriginafter every config-mutating command (stage --pr,pull-request,issue stage,issue pull,sync upstream-pr/<n>).Any tool that reads venfork-config from a long-lived clone (downstream automation, CI, bots) hits a sharp edge: a plain
git fetch origin venfork-config:venfork-configis rejected as non-fast-forward after every venfork update, leaving the local ref at a stale state with no warning.Repro
In a venfork clone with an existing
venfork-configlocal ref:venfork issue pull <N>against the same mirror — venfork force-pushesvenfork-config.! [rejected] venfork-config -> venfork-config (non-fast-forward).git show venfork-config:.venfork/config.jsonreturns the OLD config — the newpulledIssuesentry is missing.How I hit it
Built honey — an autonomous triage bot that consumes
venfork-config.pulledIssuesto dedupe upstream-issue-pull operations. After honey ranvenfork issue pulland re-read the config, it consistently saw stale data and assumed the pull had failed ("venfork issue pull reported success but no pulledIssues entry on re-read"). Real cause was the non-fast-forward fetch.Suggested fix
Two options, not mutually exclusive:
+venfork-config:venfork-config(orgit fetch -f) to keep their local ref in sync — i.e. that the ref is rebased/replaced, not appended to.In honey we just changed our `readVenforkConfig` helper to use `+venfork-config:venfork-config` — one-character fix once you know.
Current workaround
Always pass `+` when fetching the config branch, or run `git fetch --force origin venfork-config`.