fix: git compat improvements — for-each-ref, rebase, commit-graph, issue dep#90
Merged
Conversation
Implement `git commit-graph write/verify` command handler: - write: supports --reachable, --stdin-packs, --stdin-commits, --object-dir, --append, --changed-paths (accepted/ignored) - verify: validates signature, hash-version, checksum trailer - Register "commit-graph" in main.mbt dispatch Add commit-graph and multi-pack-index to git shim command lists (GIT_SHIM_STRICT_CMDS_ALL, GIT_SHIM_RANDOM_CMDS, GIT_SHIM_FULL_CMDS) so t5318/t5319/t6500 tests exercise the bit implementation rather than falling through to real git. Closes #85 (partial — t5318, t5319, t6500 coverage)
…ean options - Add version/v atoms to is_known_atom and format evaluator - Fix trailers option validation to accept valueonly=true/false, unfold=true/false, only=... with = suffix - Fix trailers evaluation to properly parse boolean =true/false/yes/no https://claude.ai/code/session_0159rAapXhARokV9Si1wvgoa
… messages - %(align:N) inside a suppressed %(if)%(then) branch no longer emits spurious padding; align_stack push is guarded by output-active check so scope_stack still tracks the %(end) correctly - Fix error messages to drop double-% escaping (%%(if) → %(if), etc.) - Change "unknown field name 'X'" → "unknown field name: X" to match git - Change "%(end) without corresponding %(if)/%(align)" → "without corresponding atom" to match git - Add validation for atoms that do not take arguments: objecttype, deltabase - Add argument validation for objectsize, upstream, push, symref https://claude.ai/code/session_0159rAapXhARokV9Si1wvgoa
Replace ad-hoc %0a/%0d/%00 special cases with a general %NN two-digit hex escape handler. This matches git's behaviour where %09 emits a tab, %0a a newline, %1b an escape, etc. The %xNN form (already supported) is kept alongside; git itself does not recognise %xNN but it is harmless. https://claude.ai/code/session_0159rAapXhARokV9Si1wvgoa
…eserve-merges ## bit issue dep (issue #31) Add dependency tracking to bit issue: - `bit issue dep add <id> <blocked-by-id>` — mark one issue as blocked by another - `bit issue dep remove <id> <blocked-by-id>` — remove the dependency - `bit issue dep list <id>` — show blocked-by and blocking relationships Implementation: - Add `blocked_by` and `blocking` fields to Issue and WorkItem structs - Serialize as `blocked-by <id>` / `blocking <id>` lines in the work-item format - Hub::add_dep / Hub::remove_dep maintain bidirectional consistency - Both legacy Issue and WorkItem serialization/deserialization updated ## rebase fixes (issue #88) - Write REBASE_HEAD to .git/ when a conflict occurs (used by hooks/tools) - Remove REBASE_HEAD when rebase state is cleared (--continue/--abort/--skip) - Accept --preserve-merges as alias for --rebase-merges (deprecated but used in some scripts) https://claude.ai/code/session_0159rAapXhARokV9Si1wvgoa
…ure constants #88: Accept --apply/--merge backend selection flags and rebase.backend config value; bit uses a unified backend so these are no-ops needed for git compat tests (GIT_TEST_REBASE_USE_BUILTIN_BACKEND). #86: Fix %(subject:sanitize) to replace all non-filename-safe characters (not just spaces) with a single '-' and strip trailing dashes, matching git's ref-filter behavior. #29: Extract component_impl_fixture_remote_url and component_impl_fixture_default_branch constants; add component_impl_assert_remote_fetch_target() helper; update all component/impl wbtests to use these constants instead of inline strings. https://claude.ai/code/session_0159rAapXhARokV9Si1wvgoa
#86: Add --merged/--no-merged/--points-at space-separated argument form (--merged <ref> was accepted only as --merged=<ref>; bare --merged now defaults to HEAD matching git behavior). #85: Fix commit-graph reader date_hi bit extraction (bits 1-0, not 31-30) matching the format written by the writer. Add gc.writeCommitGraph config check — skip writing commit-graph when explicitly disabled. #88: Silently accept --stat/--no-stat/--diffstat, --signoff, --ignore- whitespace, --whitespace=, --empty=, --reschedule-failed-exec, --reset- author-date, --committer-date-is-author-date, and read rebase.stat config for compat with t3400 test variants. https://claude.ai/code/session_0159rAapXhARokV9Si1wvgoa
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
bit issue#31bit issue dep add/remove/list— bidirectional blocked-by/blocking dependency trackingcomponent_impl_fixture_remote_url,component_impl_fixture_default_branch, andcomponent_impl_assert_remote_fetch_target()helper; centralize inline URL strings across all component/impl wbtests%(align)in suppressed%(if)branches emitting spurious padding%%(if)→%(if))objecttype,objectsize,upstream,push,symref%NNtwo-digit hex escape support (e.g.%09for tab)%(subject:sanitize)to replace all non-filename-safe chars with-and compress runs--merged/--no-merged/--points-atspace-separated argument form (bare--mergeddefaults to HEAD)date_hibit extraction in reader (bits 1-0, not 31-30 — format spec bug)gc.writeCommitGraphconfig check ingit gcREBASE_HEADon conflict--preserve-mergesalias for--rebase-merges--apply/--mergebackend flags andrebase.backendconfig silently--stat/--no-stat,--signoff,--ignore-whitespace,--whitespace=,--empty=,--reschedule-failed-exec,--reset-author-date,--committer-date-is-author-daterebase.statconfig for compatTest plan
moon check— 0 errorsmoon build --target native— cleanmoon test --target native -p bitlib— 297/297 passedmoon test --target wasm— passedhttps://claude.ai/code/session_0159rAapXhARokV9Si1wvgoa
Generated by Claude Code