[PATCH v3 0/4] object checking related additions and fixes for bundles in fetches
- From
- blanet via GitGitGadget <gitgitgadget@gmail.com>
- Date
- May 27, 2024, 15:41 UTC
- Message-ID
- <pull.1730.v3.git.1716824518.gitgitgadget@gmail.com>
- In-Reply-To
- <pull.1730.v2.git.1716208605926.gitgitgadget@gmail.com>
While attempting to fix a reference negotiation bug in bundle-uri, we discovered that the fetch process are missing some helpful object validation logic when processing bundles. The main issues are:
* In the bundle-uri scenario, we did not validate object IDs before writing bundle references. This is the root cause of the original negotiation bug in bundle-uri, and can cause potential repository corruption. * The existing fetch.fsckObjects and transfer.fsckObjects are not detected when directly fetching bundles. In fact there is no object validation support for unbundle.
The first patch fixes the bundle-uri negotiation issue by dropping the REF_SKIP_OID_VERIFICATION flag when writing bundle references.
Patch 2~4 extend bundle.c:unbundle with a unbundle_fsck_flags to control object fscking in different scenarios, the implementation mainly follows what Junio suggested on the mailing list.
Xing Xin (4): bundle-uri: verify oid before writing refs unbundle: introduce unbundle_fsck_flags for fsckobjects handling fetch-pack: expose fsckObjects configuration logic unbundle: introduce new option UNBUNDLE_FSCK_FOLLOW_FETCH
builtin/bundle.c | 2 +- bundle-uri.c | 5 +- bundle.c | 20 ++++- bundle.h | 9 +- fetch-pack.c | 18 ++-- fetch-pack.h | 2 + t/t5558-clone-bundle-uri.sh | 163 +++++++++++++++++++++++++++++++++++- t/t5607-clone-bundle.sh | 23 +++++ transport.c | 2 +- 9 files changed, 227 insertions(+), 17 deletions(-)
base-commit: b9cfe4845cb2562584837bc0101c0ab76490a239 Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1730%2Fblanet%2Fxx%2Fbundle-uri-bug-using-bundle-list-v3 Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1730/blanet/xx/bundle-uri-bug-using-bundle-list-v3 Pull-Request: https://github.com/gitgitgadget/git/pull/1730
Range-diff vs v2:
1: 8bdeacf1360 = 1: 8f488a5eeaa bundle-uri: verify oid before writing refs -: ----------- > 2: 057c697970f unbundle: introduce unbundle_fsck_flags for fsckobjects handling -: ----------- > 3: 67401d4fbcb fetch-pack: expose fsckObjects configuration logic -: ----------- > 4: c19b8f633cb unbundle: introduce new option UNBUNDLE_FSCK_FOLLOW_FETCH
-- gitgitgadget