Security
- Don't expand config
includedirectives when parsing.gitmodules, so a crafted.gitmodulesin a cloned repository can no longer makeclone --recurse-submodulesread arbitrary files. - Validate ref names before resolving them to a path, so a client-supplied name like
../../secretcan no longer read a file outside the ref store. Closes a traversal via git-upload-archive'sargumentand other lookup paths. (#2212) - Reject pack names containing path separators in the dumb HTTP transport, so a malicious server can no longer escape the temporary directory. (#2213)
- Verify that an object retrieved by id actually hashes to the requested id, raising
ChecksumMismatchotherwise. (#2223)
New features
- Add
porcelain.request_pulland adulwich request-pullcommand, likegit request-pull. (#1823) - Add
porcelain.range_diffand adulwich range-diffcommand, likegit range-diff(requires thedulwich[range_diff]extra). (#1828)
Fixes
- Check out files whose names contain a colon or backslash on NTFS, instead of silently dropping them on clone, and abort the checkout on a genuinely invalid path. (#2205)
- Fix
apply_patchwriting index entries with mode0, which made native git abort. (#2218) - Fix deepening of a local shallow fetch not transferring newly-uncovered commits.
- Several
gc/repackfixes on Windows (read-only pack files, leaked temporary packs, files-in-use). - Discover and serve packs with non-
pack-names such asloose-<hash>(written bygit maintenance). (#2229)
See NEWS for the full changelog.