Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
pack-objects: allow --path-walk with --shallow
The --path-walk option is important to reduce the size of pushes from certain pipelines, but many of those pipelines use shallow clones. This results in the 'git push' process passing the '--shallow' option to the underlying 'git pack-objects' process. The previous implementation would disable the --path-walk option in this case, making the feature ineffective. The only change that the --shallow option provides is that the revision walk gains the --objects-edge-aggressive option. This is not necessary for satisfying the requirements of 'git pack-objects', but helps when performing shallow fetches. We already recommend that servers do not use pack.usePathWalk=true, so there is little risk in enabling this option for clients at this time. We may consider expanding the implementation in the future to have this aggressive edge walk, but it doesn't work with the current way that the commit walk is used in the path-walk API. The only necessary change to the test suite (when running with GIT_TEST_PACK_PATH_WALK=1) is to change the number of objects fetched in an example where a new shallow commit is created and a --depth=1 fetch is run. In this case, three objects are fetched instead of one. This is due to the lack of the aggressive edge walk, but would not affect client-side pushes. Signed-off-by: Derrick Stolee <[email protected]>
- Loading branch information