From: "Ævar Arnfjörð Bjarmason" <avarab@gmail.com> To: Derrick Stolee via GitGitGadget <gitgitgadget@gmail.com> Cc: git@vger.kernel.org, sandals@crustytoothpaste.net, Junio C Hamano <gitster@pobox.com>, Derrick Stolee <dstolee@microsoft.com> Subject: Re: [PATCH 5/6] commit-graph: implement file format version 2 Date: Thu, 24 Jan 2019 10:40:09 +0100 Message-ID: <878sza4cna.fsf@evledraar.gmail.com> (raw) In-Reply-To: <c55e0a738c79c30affcf2cb68564c01c36c66dff.1548280753.git.gitgitgadget@gmail.com> On Wed, Jan 23 2019, Derrick Stolee via GitGitGadget wrote: > From: Derrick Stolee <dstolee@microsoft.com> > > The commit-graph file format had some shortcomings which we now > correct: > > 1. The hash algorithm was determined by a single byte, instead > of the 4-byte format identifier. > > 2. There was no way to update the reachability index we used. > We currently only support generation numbers, but that will > change in the future. > > 3. Git did not fail with error if the unused eighth byte was > non-zero, so we could not use that to indicate an incremental > file format without breaking compatibility across versions. > > The new format modifies the header of the commit-graph to solve > these problems. We use the 4-byte hash format id, freeing up a byte > in our 32-bit alignment to introduce a reachability index version. > We can also fail to read the commit-graph if the eighth byte is > non-zero. I haven't tested, but it looks from the patch like we can transparently read existing v1 data and then will write v2 the next time. Would be helpful for reviewers if this was noted explicitly in the commit message. Should there be a GIT_TEST_COMMIT_GRAPH_VERSION=[12] going forward to test the non-default version, or do you feel confident the tests added here test the upgrade path & old code well enough? > The 'git commit-graph read' subcommand needs updating to show the > new data. Let's say "The ... subcommand has been updated to show the new data". This sounds like a later patch is going to do that, but in fact it's done here. > Set the default file format version to 2, and adjust the tests to > expect the new 'git commit-graph read' output. > > Signed-off-by: Derrick Stolee <dstolee@microsoft.com> > --- > .../technical/commit-graph-format.txt | 26 +++++++++- > builtin/commit-graph.c | 9 ++++ > commit-graph.c | 47 ++++++++++++++++--- > commit-graph.h | 1 + > t/t5318-commit-graph.sh | 9 +++- > 5 files changed, 83 insertions(+), 9 deletions(-) > > diff --git a/Documentation/technical/commit-graph-format.txt b/Documentation/technical/commit-graph-format.txt > index 16452a0504..e367aa94b1 100644 > --- a/Documentation/technical/commit-graph-format.txt > +++ b/Documentation/technical/commit-graph-format.txt > @@ -31,13 +31,22 @@ and hash type. > > All 4-byte numbers are in network order. > > +There are two versions available, 1 and 2. These currently differ only in > +the header. Shouldn't this be s/currently/ / ? Won't we add a version 3 if we make new changes?
next prev parent reply other threads:[~2019-01-24 9:40 UTC|newest] Thread overview: 89+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-01-23 21:59 [PATCH 0/6] Create commit-graph file format v2 Derrick Stolee via GitGitGadget 2019-01-23 21:59 ` [PATCH 1/6] commit-graph: return with errors during write Derrick Stolee via GitGitGadget 2019-01-23 21:59 ` [PATCH 2/6] commit-graph: collapse parameters into flags Derrick Stolee via GitGitGadget 2019-01-23 21:59 ` [PATCH 3/6] commit-graph: create new version flags Derrick Stolee via GitGitGadget 2019-01-23 21:59 ` [PATCH 4/6] commit-graph: add --version=<n> option Derrick Stolee via GitGitGadget 2019-01-24 9:31 ` Ævar Arnfjörð Bjarmason 2019-01-23 21:59 ` [PATCH 5/6] commit-graph: implement file format version 2 Derrick Stolee via GitGitGadget 2019-01-23 23:56 ` Jonathan Tan 2019-01-24 9:40 ` Ævar Arnfjörð Bjarmason [this message] 2019-01-24 14:34 ` Derrick Stolee 2019-03-21 9:21 ` Ævar Arnfjörð Bjarmason 2019-01-23 21:59 ` [PATCH 6/6] commit-graph: test verifying a corrupt v2 header Derrick Stolee via GitGitGadget 2019-01-23 23:59 ` Jonathan Tan 2019-01-24 23:05 ` [PATCH 0/6] Create commit-graph file format v2 Junio C Hamano 2019-01-24 23:39 ` Junio C Hamano 2019-01-25 13:54 ` Derrick Stolee 2019-04-24 19:58 ` [PATCH v2 0/5] " Derrick Stolee via GitGitGadget 2019-04-24 19:58 ` [PATCH v2 1/5] commit-graph: return with errors during write Derrick Stolee via GitGitGadget 2019-04-24 19:58 ` [PATCH v2 2/5] commit-graph: collapse parameters into flags Derrick Stolee via GitGitGadget 2019-04-25 5:21 ` Junio C Hamano 2019-04-24 19:58 ` [PATCH v2 3/5] commit-graph: create new version flags Derrick Stolee via GitGitGadget 2019-04-25 5:29 ` Junio C Hamano 2019-04-25 11:09 ` Derrick Stolee 2019-04-25 21:31 ` Ævar Arnfjörð Bjarmason 2019-04-26 2:20 ` Junio C Hamano 2019-04-24 19:58 ` [PATCH v2 4/5] commit-graph: add --version=<n> option Derrick Stolee via GitGitGadget 2019-04-24 19:58 ` [PATCH v2 5/5] commit-graph: implement file format version 2 Derrick Stolee via GitGitGadget 2019-04-25 22:09 ` [PATCH v2 0/5] Create commit-graph file format v2 Ævar Arnfjörð Bjarmason 2019-04-26 2:28 ` Junio C Hamano 2019-04-26 8:33 ` Ævar Arnfjörð Bjarmason 2019-04-26 12:06 ` Derrick Stolee 2019-04-26 13:55 ` Ævar Arnfjörð Bjarmason 2019-04-27 12:57 ` Ævar Arnfjörð Bjarmason 2019-05-01 13:11 ` [PATCH v3 0/6] " Derrick Stolee via GitGitGadget 2019-05-01 13:11 ` [PATCH v3 1/6] commit-graph: return with errors during write Derrick Stolee via GitGitGadget 2019-05-01 14:46 ` Ævar Arnfjörð Bjarmason 2019-05-01 13:11 ` [PATCH v3 2/6] commit-graph: collapse parameters into flags Derrick Stolee via GitGitGadget 2019-05-01 13:11 ` [PATCH v3 3/6] commit-graph: create new version parameter Derrick Stolee via GitGitGadget 2019-05-01 13:11 ` [PATCH v3 4/6] commit-graph: add --version=<n> option Derrick Stolee via GitGitGadget 2019-05-01 13:11 ` [PATCH v3 5/6] commit-graph: implement file format version 2 Derrick Stolee via GitGitGadget 2019-05-01 19:12 ` Ævar Arnfjörð Bjarmason 2019-05-01 19:56 ` Derrick Stolee 2019-05-01 13:11 ` [PATCH v3 6/6] commit-graph: remove Future Work section Derrick Stolee via GitGitGadget 2019-05-01 14:58 ` Ævar Arnfjörð Bjarmason 2019-05-01 19:59 ` Derrick Stolee 2019-05-01 20:25 ` [PATCH v3 0/6] Create commit-graph file format v2 Ævar Arnfjörð Bjarmason 2019-05-02 13:26 ` Derrick Stolee 2019-05-02 18:02 ` Ævar Arnfjörð Bjarmason 2019-05-03 12:47 ` Derrick Stolee 2019-05-03 13:41 ` Ævar Arnfjörð Bjarmason 2019-05-06 8:27 ` Christian Couder 2019-05-06 13:47 ` Derrick Stolee 2019-05-03 14:16 ` SZEDER Gábor 2019-05-03 15:11 ` Derrick Stolee 2019-05-09 14:22 ` [PATCH v4 00/11] Commit-graph write refactor (was: Create commit-graph file format v2) Derrick Stolee via GitGitGadget 2019-05-09 14:22 ` [PATCH v4 01/11] commit-graph: fix the_repository reference Derrick Stolee via GitGitGadget 2019-05-13 2:56 ` Junio C Hamano 2019-05-09 14:22 ` [PATCH v4 02/11] commit-graph: return with errors during write Derrick Stolee via GitGitGadget 2019-05-13 3:13 ` Junio C Hamano 2019-05-13 11:04 ` Derrick Stolee 2019-05-13 11:22 ` Derrick Stolee 2019-05-09 14:22 ` [PATCH v4 03/11] commit-graph: collapse parameters into flags Derrick Stolee via GitGitGadget 2019-05-13 3:44 ` Junio C Hamano 2019-05-13 11:07 ` Derrick Stolee 2019-05-09 14:22 ` [PATCH v4 04/11] commit-graph: remove Future Work section Derrick Stolee via GitGitGadget 2019-05-09 14:22 ` [PATCH v4 05/11] commit-graph: create write_commit_graph_context Derrick Stolee via GitGitGadget 2019-05-09 14:22 ` [PATCH v4 07/11] commit-graph: extract fill_oids_from_commit_hex() Derrick Stolee via GitGitGadget 2019-05-09 14:22 ` [PATCH v4 06/11] commit-graph: extract fill_oids_from_packs() Derrick Stolee via GitGitGadget 2019-05-13 5:05 ` Junio C Hamano 2019-05-09 14:22 ` [PATCH v4 08/11] commit-graph: extract fill_oids_from_all_packs() Derrick Stolee via GitGitGadget 2019-05-09 14:22 ` [PATCH v4 09/11] commit-graph: extract count_distinct_commits() Derrick Stolee via GitGitGadget 2019-05-09 14:22 ` [PATCH v4 10/11] commit-graph: extract copy_oids_to_commits() Derrick Stolee via GitGitGadget 2019-05-09 14:22 ` [PATCH v4 11/11] commit-graph: extract write_commit_graph_file() Derrick Stolee via GitGitGadget 2019-05-13 5:09 ` Junio C Hamano 2019-05-09 17:58 ` [PATCH v4 00/11] Commit-graph write refactor (was: Create commit-graph file format v2) Josh Steadmon 2019-06-12 13:29 ` [PATCH v5 " Derrick Stolee via GitGitGadget 2019-06-12 13:29 ` [PATCH v5 01/11] commit-graph: fix the_repository reference Derrick Stolee via GitGitGadget 2019-06-12 13:29 ` [PATCH v5 02/11] commit-graph: return with errors during write Derrick Stolee via GitGitGadget 2019-06-29 17:23 ` SZEDER Gábor 2019-07-01 12:19 ` Derrick Stolee 2019-06-12 13:29 ` [PATCH v5 03/11] commit-graph: collapse parameters into flags Derrick Stolee via GitGitGadget 2019-06-12 13:29 ` [PATCH v5 04/11] commit-graph: remove Future Work section Derrick Stolee via GitGitGadget 2019-06-12 13:29 ` [PATCH v5 05/11] commit-graph: create write_commit_graph_context Derrick Stolee via GitGitGadget 2019-06-12 13:29 ` [PATCH v5 06/11] commit-graph: extract fill_oids_from_packs() Derrick Stolee via GitGitGadget 2019-06-12 13:29 ` [PATCH v5 08/11] commit-graph: extract fill_oids_from_all_packs() Derrick Stolee via GitGitGadget 2019-06-12 13:29 ` [PATCH v5 07/11] commit-graph: extract fill_oids_from_commit_hex() Derrick Stolee via GitGitGadget 2019-06-12 13:29 ` [PATCH v5 09/11] commit-graph: extract count_distinct_commits() Derrick Stolee via GitGitGadget 2019-06-12 13:29 ` [PATCH v5 10/11] commit-graph: extract copy_oids_to_commits() Derrick Stolee via GitGitGadget 2019-06-12 13:29 ` [PATCH v5 11/11] commit-graph: extract write_commit_graph_file() Derrick Stolee via GitGitGadget
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style List information: http://vger.kernel.org/majordomo-info.html * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=878sza4cna.fsf@evledraar.gmail.com \ --to=avarab@gmail.com \ --cc=dstolee@microsoft.com \ --cc=git@vger.kernel.org \ --cc=gitgitgadget@gmail.com \ --cc=gitster@pobox.com \ --cc=sandals@crustytoothpaste.net \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
git@vger.kernel.org list mirror (unofficial, one of many) This inbox may be cloned and mirrored by anyone: git clone --mirror https://public-inbox.org/git git clone --mirror http://ou63pmih66umazou.onion/git git clone --mirror http://czquwvybam4bgbro.onion/git git clone --mirror http://hjrcffqmbrq6wope.onion/git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V1 git git/ https://public-inbox.org/git \ git@vger.kernel.org public-inbox-index git Example config snippet for mirrors. Newsgroups are available over NNTP: nntp://news.public-inbox.org/inbox.comp.version-control.git nntp://ou63pmih66umazou.onion/inbox.comp.version-control.git nntp://czquwvybam4bgbro.onion/inbox.comp.version-control.git nntp://hjrcffqmbrq6wope.onion/inbox.comp.version-control.git nntp://news.gmane.io/gmane.comp.version-control.git note: .onion URLs require Tor: https://www.torproject.org/ code repositories for the project(s) associated with this inbox: https://80x24.org/mirrors/git.git AGPL code for this site: git clone https://public-inbox.org/public-inbox.git