Skip to content

Instantly share code, notes, and snippets.

@jnareb
Created May 16, 2018 11:53
Show Gist options
  • Save jnareb/49034922e3435e1ac3bc3a8786ab95b1 to your computer and use it in GitHub Desktop.
Save jnareb/49034922e3435e1ac3bc3a8786ab95b1 to your computer and use it in GitHub Desktop.
Serialized Commit Graph sketch - for Git Rev News

Rough timeline

  • Re: What's cooking in git.git (Jan 2018, #03; Tue, 23) by Jeff Hostetler, 24 Jan 2018 -- announcement that Derrick Stolee is working on the commit-graph feature

  • [PATCH 00/14] Serialized Commit Graph by Derrick Stolee, 25 Jan 2018 -- first version of first patch series (ds/commit-graph)

  • Git Merge contributor summit notes by Alex Vandiver, 9 Mar 2018 -- in Git Rev News Edition 37

    Serialized commit graph (stolee)

    • current patch includes a way to write a file which is commit history
    • replaces object database lookups by separate file
    • stores object id, commit date, parent information
    • parent information includes reference id
    • git log --graph is 10% of the time it used to be
    • putting generation numbers in speeds things up further
    • queued up for the next series
    • generation is an integer, guarantees that everything that it can reach is lower
    • root is id 1, every child is max(parents)+1 [...]
  • Making Git for Windows - Git Merge 2018 Derrick Stolee part starts at 14:50 information that videos of the 2018 Git Merge talks have been released in Git Rev News Edition 38

  • [PATCH v2 00/12] Integrate commit-graph into fsck and gc by Derrick Stolee, 11 May 2018 -- currently most recent series

  • Re: [RFC] Other chunks for commit-graph, part 1 - Bloom filters, topo order, etc. by Derrick Stolee, 14 May 2018 -- milestones

    I suppose that is what I intended in the "Future Work" section of Documentation/technical/commit-graph.txt. It gives a set of things that need to be done in order to make this a default feature, not just an expert-level feature. When I wrote the section, I was focused entirely on "commit-graph version 1.0" and I didn't know how long that would take. The series have been getting interest and review (in great part to your interest, Jakub) so they have been moving to 'next' faster than I anticipated.

    I'll plan on writing a more detailed list of future directions, but for now I'll list the things I know about and how I see them in priority order:

    Commit-graph v1.0:

    • ds/generation-numbers
    • 'verify' and fsck/gc integration
    • correct behavior with shallow clones, replace-objects, and grafts

    Commit-graph v1.1:

    • Place commit-graph storage in the_repository
    • 'git tag --merged' use generation numbers
    • 'git log --graph' use generation numbers

    Commit-graph v1.X:

    • Protocol v2 verb for sending commit-graph
    • Bloom filters for changed paths
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment