Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save OmarIthawi/7ce3b1772399cf637905a1769b722174 to your computer and use it in GitHub Desktop.
Save OmarIthawi/7ce3b1772399cf637905a1769b722174 to your computer and use it in GitHub Desktop.
Git sparse-checkout changelog from 3.34.0 to 2.40.0
Git sparse checkout changed some breaking code changes:
2.34.0.txt: * In cone mode, the sparse-index code path learned to remove ignored
2.34.0.txt: files (like build artifacts) outside the sparse cone, allowing the
2.34.0.txt: entire directory outside the sparse cone to be removed, which is
2.34.0.txt: especially useful when the sparse patterns change.
2.34.0.txt- * "git add", "git mv", and "git rm" have been adjusted to avoid
2.34.0.txt: updating paths outside of the sparse-checkout definition unless
2.34.0.txt: the user specifies a "--sparse" option.
2.34.0.txt: * "git add" can work better with the sparse index.
2.34.0.txt: * Prevent "make sparse" from running for the source files that
2.34.0.txt- haven't been modified.
2.34.0.txt: * The sparse-index support can corrupt the index structure by storing
2.34.0.txt- a stale and/or uninitialized data, which has been corrected.
2.34.0.txt: * Recent sparse-index work broke safety against attempts to add paths
2.34.0.txt- with trailing slashes to the index, which has been corrected.
2.34.0.txt- (merge c8ad9d04c6 rs/make-verify-path-really-verify-again later to maint).
2.34.0.txt: * Recent sparse-index addition, namely any use of index_name_pos(),
2.34.0.txt: can expand sparse index entries and breaks any code that walks
2.34.0.txt- cache-tree or existing index entries. One such instance of such a
2.34.0.txt- breakage has been corrected.
2.34.0.txt: * Drop "git sparse-checkout" from the list of common commands.
2.34.0.txt: (merge 6a9a50a8af sg/sparse-index-not-that-common-a-command later to maint).
2.35.0.txt- * Various operating modes of "git reset" have been made to work
2.35.0.txt: better with the sparse index.
2.35.0.txt: * The "init" and "set" subcommands in "git sparse-checkout" have been
2.35.0.txt- unified for a better user experience and performance.
2.35.0.txt: * Ensure that the sparseness of the in-core index matches the
2.35.0.txt: index.sparse configuration specified by the repository immediately
2.35.0.txt- after the on-disk index file is read.
2.35.0.txt: * diff and blame commands have been taught to work better with sparse
2.35.0.txt- index.
2.35.0.txt: * "git fetch" and "git pull" are now declared sparse-index clean.
2.35.0.txt: Also "git ls-files" learns the "--sparse" option to help debugging.
2.35.0.txt: * The sparse-index/sparse-checkout feature had a bug in its use of
2.35.0.txt- the matching code to determine which path is in or outside the
2.35.0.txt: sparse checkout patterns.
2.35.0.txt: * Certain sparse-checkout patterns that are valid in non-cone mode
2.35.0.txt- led to segfault in cone mode, which has been corrected.
2.36.0.txt- * The command line completion (in contrib/) learns to complete
2.36.0.txt: arguments to give to "git sparse-checkout" command.
2.36.0.txt: * In sparse-checkouts, files mis-marked as missing from the working tree
2.36.0.txt- could lead to later problems. Such files were hard to discover, and
2.36.0.txt- harder to correct. Automatically detecting and correcting the marking
2.36.0.txt- of such files has been added to avoid these problems.
2.36.0.txt- * "git update-index", "git checkout-index", and "git clean" are
2.36.0.txt: taught to work better with the sparse checkout feature.
2.36.0.txt: * "git sparse-checkout init" failed to write into $GIT_DIR/info
2.36.0.txt- directory when the repository was created without one, which has
2.36.0.txt- been corrected to auto-create it.
2.36.0.txt: (merge 7f44842ac1 jt/sparse-checkout-leading-dir-fix later to maint).
2.36.0.txt: * Mark in various places in the code that the sparse index and the
2.36.0.txt- split index features are mutually incompatible.
2.36.0.txt: (merge 451b66c533 js/sparse-vs-split-index later to maint).
2.36.0.txt: * "git sparse-checkout" wants to work with per-worktree configuration,
2.36.0.txt- but did not work well in a worktree attached to a bare repository.
2.37.0.txt: * Deprecate non-cone mode of the sparse-checkout feature.
2.37.0.txt: * "git stash" works better with sparse index entries.
2.37.0.txt: * "git show :<path>" learned to work better with the sparse-index
2.37.0.txt- feature.
2.37.0.txt: * "sparse-checkout" learns to work better with the sparse-index
2.37.0.txt- feature.
2.37.3.txt: * Fixes to sparse index compatibility work for "reset" and "checkout"
2.37.3.txt- commands.
2.38.0.txt: * "git mv A B" in a sparsely populated working tree can be asked to
2.38.0.txt- move a path between directories that are "in cone" (i.e. expected
2.38.0.txt- to be materialized in the working tree) and "out of cone"
2.38.0.txt- (i.e. expected to be hidden). The handling of such cases has been
2.38.0.txt: * "git rm" has become more aware of the sparse-index feature.
2.38.0.txt: * "git mv A B" in a sparsely populated working tree can be asked to
2.38.0.txt- move a path from a directory that is "in cone" to another directory
2.38.0.txt- that is "out of cone". Handling of such a case has been improved.
2.38.0.txt-
2.38.0.txt: * Fixes to sparse index compatibility work for "reset" and "checkout"
2.38.0.txt- commands.
2.38.0.txt- * Segfault fix-up to an earlier fix to the topic to teach "git reset"
2.38.0.txt: and "git checkout" work better in a sparse checkout.
2.38.0.txt: (merge 037f8ea6d9 vd/sparse-reset-checkout-fixes later to maint).
2.39.0.txt: * "git grep" learned to expand the sparse-index more lazily and on
2.39.0.txt: demand in a sparse checkout.
2.39.0.txt- * Add trace2 counters to the region to clear skip worktree bits in a
2.39.0.txt: sparse checkout.
2.39.0.txt: * A design document for sparse-checkout's future directions has been
2.39.0.txt- added.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment