There has been a lot of interesting discussion on this topic. Some of
that involves some decently significant changes from v3, so I wanted to
summarize my understanding of the feedback and seek out more feedback
from reviewers before rolling v4.
If we have consensus on these topics, then I'll re-roll on Friday, Feb
16th. Please let me know if you are planning on reviewing v3 and need
more time than that.
* Graph Storage:
- Move the graph files to a different directory than the "pack"
directory. Currently considering ".git/objects/info"
- Change the "--pack-dir" command-line arguments to "--object-dir"
arguments.
- Keep a "graph_head" file, but expand on the reasons (as discussed
[1]) in the commit message.
- Adjust "graph_head" and the "--graph-id" argument to use a full
filename (assuming based in {object-dir}/info/).
- Remove "pack_dir" from struct commit_graph and
load_commit_graph_one().
- Drop "git commit-graph clear" subcommand.
* Graph format:
- remove redundant hash type & length bytes in favor of a combined
type/length enum byte.
- emphasize the fact that the file can contain chunk ids unknown to
Git and will be ignored on read. Also fix the read code to not die() on
unknown chunk ids.
- Don't write the large-edge chunk if it is going to be empty.
Modify tests to verify this.
* Tests:
- Format (last apostrophe on new line)
- Bug check (--stdin-commits should limit by reachability)
* Other style fixes.
[1]
https://public-inbox.org/git/99543db0-26e4-8daa-a580-b618497e48ba@xxxxxxxxx/