|
| 1 | +Git 2.6 Release Notes |
| 2 | +===================== |
| 3 | + |
| 4 | +Updates since v2.5 |
| 5 | +------------------ |
| 6 | + |
| 7 | +UI, Workflows & Features |
| 8 | + |
| 9 | + * An asterisk as a substring (as opposed to the entirety) of a path |
| 10 | + component for both side of a refspec, e.g. |
| 11 | + "refs/heads/o*:refs/remotes/heads/i*", is now allowed. |
| 12 | + |
| 13 | + * New userdiff pattern definition for fountain screenwriting markup |
| 14 | + format has been added. |
| 15 | + |
| 16 | + * "git log" and friends learned a new "--date=format:..." option to |
| 17 | + format timestamps using system's strftime(3). |
| 18 | + |
| 19 | + * "git fast-import" learned to respond to the get-mark command via |
| 20 | + its cat-blob-fd interface. |
| 21 | + |
| 22 | + * "git rebase -i" learned "drop commit-object-name subject" command |
| 23 | + as another way to skip replaying of a commit. |
| 24 | + |
| 25 | + * A new configuration variable can enable "--follow" automatically |
| 26 | + when "git log" is run with one pathspec argument. |
| 27 | + |
| 28 | + * "git status" learned to show a more detailed information regarding |
| 29 | + the "rebase -i" session in progress. |
| 30 | + |
| 31 | + * "git cat-file" learned "--batch-all-objects" option to enumerate all |
| 32 | + available objects in the repository more quickly than "rev-list |
| 33 | + --all --objects" (the output includes unreachable objects, though). |
| 34 | + |
| 35 | + * "git fsck" learned to ignore errors on a set of known-to-be-bad |
| 36 | + objects, and also allows the warning levels of various kinds of |
| 37 | + non-critical breakages to be tweaked. |
| 38 | + |
| 39 | + * "git rebase -i"'s list of todo is made configurable. |
| 40 | + |
| 41 | + * "git send-email" now performs alias-expansion on names that are |
| 42 | + given via --cccmd, etc. |
| 43 | + |
| 44 | + * An environment variable GIT_REPLACE_REF_BASE tells Git to look into |
| 45 | + refs hierarchy other than refs/replace/ for the object replacement |
| 46 | + data. |
| 47 | + |
| 48 | + |
| 49 | +Performance, Internal Implementation, Development Support etc. |
| 50 | + |
| 51 | + * In preparation for allowing different "backends" to store the refs |
| 52 | + in a way different from the traditional "one ref per file in |
| 53 | + $GIT_DIR or in a $GIT_DIR/packed-refs file" filesystem storage, |
| 54 | + direct filesystem access to ref-like things like CHERRY_PICK_HEAD |
| 55 | + from scripts and programs has been reduced. |
| 56 | + |
| 57 | + * Computation of untracked status indicator by bash prompt |
| 58 | + script (in contrib/) has been optimized. |
| 59 | + |
| 60 | + * Memory use reduction when commit-slab facility is used to annotate |
| 61 | + sparsely (which is not recommended in the first place). |
| 62 | + |
| 63 | + * Clean up refs API and make "git clone" less intimate with the |
| 64 | + implementation detail. |
| 65 | + |
| 66 | + * "git pull" was reimplemented in C. |
| 67 | + |
| 68 | + * The packet tracing machinery allows to capture an incoming pack |
| 69 | + data to a file for debugging. |
| 70 | + |
| 71 | + * Move machinery to parse human-readable scaled numbers like 1k, 4M, |
| 72 | + and 2G as an option parameter's value from pack-objects to |
| 73 | + parse-options API, to make it available to other codepaths. |
| 74 | + |
| 75 | + * "git verify-tag" and "git verify-commit" have been taught to share |
| 76 | + more code, and then learned to optionally show the verification |
| 77 | + message from the underlying GPG implementation. |
| 78 | + |
| 79 | + * Various enhancements around "git am" reading patches generated by |
| 80 | + foreign SCM have been made. |
| 81 | + |
| 82 | + * Ref listing by "git branch -l" and "git tag -l" commands has |
| 83 | + started to be rebuilt, based on the for-each-ref machinery. |
| 84 | + |
| 85 | + |
| 86 | +Also contains various documentation updates and code clean-ups. |
| 87 | + |
| 88 | + |
| 89 | +Fixes since v2.5 |
| 90 | +---------------- |
| 91 | + |
| 92 | +Unless otherwise noted, all the fixes since v2.5 in the maintenance |
| 93 | +track are contained in this release (see the maintenance releases' |
| 94 | +notes for details). |
| 95 | + |
| 96 | + * "git subtree" (in contrib/) depended on "git log" output to be |
| 97 | + stable, which was a no-no. Apply a workaround to force a |
| 98 | + particular date format. |
| 99 | + (merge e7aac44 da/subtree-date-confusion later to maint). |
| 100 | + |
| 101 | + * An attempt to delete a ref by pushing into a repositorywhose HEAD |
| 102 | + symbolic reference points at an unborn branch that cannot be |
| 103 | + created due to ref D/F conflict (e.g. refs/heads/a/b exists, HEAD |
| 104 | + points at refs/heads/a) failed. |
| 105 | + (merge b112b14 jx/do-not-crash-receive-pack-wo-head later to maint). |
| 106 | + |
| 107 | + * The low-level "git send-pack" did not honor 'user.signingkey' |
| 108 | + configuration variable when sending a signed-push. |
| 109 | + (merge d830d39 db/send-pack-user-signingkey later to maint). |
| 110 | + |
| 111 | + * "sparse checkout" misbehaved for a path that is excluded from the |
| 112 | + checkout when switching between branches that differ at the path. |
| 113 | + (merge 7d78241 as/sparse-checkout-removal later to maint). |
| 114 | + |
| 115 | + * An experimental "untracked cache" feature used uname(2) in a |
| 116 | + slightly unportable way. |
| 117 | + (merge 100e433 cb/uname-in-untracked later to maint). |
| 118 | + |
| 119 | + * A "rebase" replays changes of the local branch on top of something |
| 120 | + else, as such they are placed in stage #3 and referred to as |
| 121 | + "theirs", while the changes in the new base, typically a foreign |
| 122 | + work, are placed in stage #2 and referred to as "ours". Clarify |
| 123 | + the "checkout --ours/--theirs". |
| 124 | + (merge f303016 se/doc-checkout-ours-theirs later to maint). |
| 125 | + |
| 126 | + * The "rev-parse --parseopt" mode parsed the option specification |
| 127 | + and the argument hint in a strange way to allow '=' and other |
| 128 | + special characters in the option name while forbidding them from |
| 129 | + the argument hint. This made it impossible to define an option |
| 130 | + like "--pair <key>=<value>" with "pair=key=value" specification, |
| 131 | + which instead would have defined a "--pair=key <value>" option. |
| 132 | + (merge 2d893df ib/scripted-parse-opt-better-hint-string later to maint). |
| 133 | + |
| 134 | + * Often a fast-import stream builds a new commit on top of the |
| 135 | + previous commit it built, and it often unconditionally emits a |
| 136 | + "from" command to specify the first parent, which can be omitted in |
| 137 | + such a case. This caused fast-import to forget the tree of the |
| 138 | + previous commit and then re-read it from scratch, which was |
| 139 | + inefficient. Optimize for this common case. |
| 140 | + (merge 0df3245 mh/fast-import-optimize-current-from later to maint). |
| 141 | + |
| 142 | + * Running an aliased command from a subdirectory when the .git thing |
| 143 | + in the working tree is a gitfile pointing elsewhere did not work. |
| 144 | + (merge d95138e nd/export-worktree later to maint). |
| 145 | + |
| 146 | + * "Is this subdirectory a separate repository that should not be |
| 147 | + touched?" check "git clean" was inefficient. This was replaced |
| 148 | + with a more optimized check. |
| 149 | + (merge 38ae878 ee/clean-remove-dirs later to maint). |
| 150 | + |
| 151 | + * Code cleanups and documentation updates. |
| 152 | + (merge 1c601af es/doc-clean-outdated-tools later to maint). |
| 153 | + (merge 3581304 kn/tag-doc-fix later to maint). |
| 154 | + (merge 3a59e59 kb/i18n-doc later to maint). |
0 commit comments