Subject: [PATCH] MIDX: revert the default version to v1

From: Junio C Hamano <[email-masked]>
Date: Thu, 16 Apr 2026 11:45:49 -0700

From: Jeff King <[email-masked]>

Dscho reports that fetching into a repository with Git 2.54-rc2 made
it unusable with Git 2.53, as the recent code by default writes
version 2 multi-pack-index files.  Version 2 is the base of more
advanced features to come, but using it where these features are not
used is a strict regression.

As deployed versions of Git and its reimplementations may not be
ready for the format bump, let's revert the default version of MIDX
file we write back to V1, and adjust tests that exercise V2-specific
features to explicitly request V2.

Signed-off-by: Junio C Hamano <[email-masked]>
---

 * Let me reword the proposed log message to talk about background a
   bit more why we want to do this.

 midx-write.c                        | 2 +-
 t/t5319-multi-pack-index.sh         | 5 ++++-
 t/t5335-compact-multi-pack-index.sh | 7 +++++++
 3 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/midx-write.c b/midx-write.c
index 0ff2e45aa7..607de889f9 100644
--- a/midx-write.c
+++ b/midx-write.c
@@ -1259,7 +1259,7 @@ static int write_midx_internal(struct write_midx_opts *opts)
 	struct tempfile *incr;
 	struct write_midx_context ctx = {
 		.preferred_pack_idx = NO_PREFERRED_PACK,
-		.version = MIDX_VERSION_V2,
+		.version = MIDX_VERSION_V1,
 	 };
 	struct multi_pack_index *midx_to_free = NULL;
 	int bitmapped_packs_concat_len = 0;
diff --git a/t/t5319-multi-pack-index.sh b/t/t5319-multi-pack-index.sh
index 58e0b685b1..ed1f993a74 100755
--- a/t/t5319-multi-pack-index.sh
+++ b/t/t5319-multi-pack-index.sh
@@ -19,9 +19,12 @@ midx_read_expect () {
 	NUM_CHUNKS=$3
 	OBJECT_DIR=$4
 	EXTRA_CHUNKS="$5"
+	# This reflects the default midx version we write; it should switch
+	# to 2 if we flip the default.
+	VERSION=1
 	{
 		cat <<-EOF &&
-		header: 4d494458 2 $HASH_LEN $NUM_CHUNKS $NUM_PACKS
+		header: 4d494458 $VERSION $HASH_LEN $NUM_CHUNKS $NUM_PACKS
 		chunks: pack-names oid-fanout oid-lookup object-offsets$EXTRA_CHUNKS
 		num_objects: $NUM_OBJECTS
 		packs:
diff --git a/t/t5335-compact-multi-pack-index.sh b/t/t5335-compact-multi-pack-index.sh
index 40f3844282..4ad007169a 100755
--- a/t/t5335-compact-multi-pack-index.sh
+++ b/t/t5335-compact-multi-pack-index.sh
@@ -57,6 +57,13 @@ test_midx_layer_object_uniqueness () {
 	done <$midx_chain
 }
 
+# MIDX compaction requires the v2 format, so make it the default
+# for the rest of this script. We check below that trying
+# compaction with v1 fails using "git -c", which will override this.
+test_expect_success 'set midx version config' '
+	git config --global midx.version 2
+'
+
 test_expect_success 'MIDX compaction with lex-ordered pack names' '
 	git init midx-compact-lex-order &&
 	(
-- 
2.54.0-rc2-109-g879cd67f0d