Merge branch 'dt/untracked-sparse'
[git/mingw.git] / Documentation / RelNotes / 2.6.0.txt
blob3f1b4cd551f8b706c87acdc828fdb850aaec630a
1 Git 2.6 Release Notes
2 =====================
4 Updates since v2.5
5 ------------------
7 UI, Workflows & Features
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.
13  * New userdiff pattern definition for fountain screenwriting markup
14    format has been added.
16  * "git log" and friends learned a new "--date=format:..." option to
17    format timestamps using system's strftime(3).
19  * "git fast-import" learned to respond to the get-mark command via
20    its cat-blob-fd interface.
22  * "git rebase -i" learned "drop commit-object-name subject" command
23    as another way to skip replaying of a commit.
25  * A new configuration variable can enable "--follow" automatically
26    when "git log" is run with one pathspec argument.
28  * "git status" learned to show a more detailed information regarding
29    the "rebase -i" session in progress.
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).
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.
39  * "git rebase -i"'s list of todo is made configurable.
41  * "git send-email" now performs alias-expansion on names that are
42    given via --cccmd, etc.
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.
49 Performance, Internal Implementation, Development Support etc.
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.
57  * Computation of untracked status indicator by bash prompt
58    script (in contrib/) has been optimized.
60  * Memory use reduction when commit-slab facility is used to annotate
61    sparsely (which is not recommended in the first place).
63  * Clean up refs API and make "git clone" less intimate with the
64    implementation detail.
66  * "git pull" was reimplemented in C.
68  * The packet tracing machinery allows to capture an incoming pack
69    data to a file for debugging.
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.
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.
79  * Various enhancements around "git am" reading patches generated by
80    foreign SCM have been made.
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.
85  * The code to perform multi-tree merges has been taught to repopulate
86    the cache-tree upon a successful merge into the index, so that
87    subsequent "diff-index --cached" (hence "status") and "write-tree"
88    (hence "commit") will go faster.
90    The same logic in "git checkout" may now be removed, but that is a
91    separate issue.
93  * Tests that assume how reflogs are represented on the filesystem too
94    much have been corrected.
96  * "git am" has been rewritten in "C".
99 Also contains various documentation updates and code clean-ups.
102 Fixes since v2.5
103 ----------------
105 Unless otherwise noted, all the fixes since v2.5 in the maintenance
106 track are contained in this release (see the maintenance releases'
107 notes for details).
109  * "git subtree" (in contrib/) depended on "git log" output to be
110    stable, which was a no-no.  Apply a workaround to force a
111    particular date format.
112    (merge e7aac44 da/subtree-date-confusion later to maint).
114  * An attempt to delete a ref by pushing into a repositorywhose HEAD
115    symbolic reference points at an unborn branch that cannot be
116    created due to ref D/F conflict (e.g. refs/heads/a/b exists, HEAD
117    points at refs/heads/a) failed.
118    (merge b112b14 jx/do-not-crash-receive-pack-wo-head later to maint).
120  * The low-level "git send-pack" did not honor 'user.signingkey'
121    configuration variable when sending a signed-push.
122    (merge d830d39 db/send-pack-user-signingkey later to maint).
124  * "sparse checkout" misbehaved for a path that is excluded from the
125    checkout when switching between branches that differ at the path.
126    (merge 7d78241 as/sparse-checkout-removal later to maint).
128  * An experimental "untracked cache" feature used uname(2) in a
129    slightly unportable way.
130    (merge 100e433 cb/uname-in-untracked later to maint).
132  * A "rebase" replays changes of the local branch on top of something
133    else, as such they are placed in stage #3 and referred to as
134    "theirs", while the changes in the new base, typically a foreign
135    work, are placed in stage #2 and referred to as "ours".  Clarify
136    the "checkout --ours/--theirs".
137    (merge f303016 se/doc-checkout-ours-theirs later to maint).
139  * The "rev-parse --parseopt" mode parsed the option specification
140    and the argument hint in a strange way to allow '=' and other
141    special characters in the option name while forbidding them from
142    the argument hint.  This made it impossible to define an option
143    like "--pair <key>=<value>" with "pair=key=value" specification,
144    which instead would have defined a "--pair=key <value>" option.
145    (merge 2d893df ib/scripted-parse-opt-better-hint-string later to maint).
147  * Often a fast-import stream builds a new commit on top of the
148    previous commit it built, and it often unconditionally emits a
149    "from" command to specify the first parent, which can be omitted in
150    such a case.  This caused fast-import to forget the tree of the
151    previous commit and then re-read it from scratch, which was
152    inefficient.  Optimize for this common case.
153    (merge 0df3245 mh/fast-import-optimize-current-from later to maint).
155  * Running an aliased command from a subdirectory when the .git thing
156    in the working tree is a gitfile pointing elsewhere did not work.
157    (merge d95138e nd/export-worktree later to maint).
159  * "Is this subdirectory a separate repository that should not be
160    touched?" check "git clean" was inefficient.  This was replaced
161    with a more optimized check.
162    (merge 38ae878 ee/clean-remove-dirs later to maint).
164  * The "new-worktree-mode" hack in "checkout" that was added in
165    nd/multiple-work-trees topic has been removed by updating the
166    implementation of new "worktree add".
167    (merge 65f9b75 es/worktree-add-cleanup later to maint).
169  * Remove remaining cruft from  "git checkout --to", which
170    transitioned to "git worktree add".
171    (merge 114ff88 es/worktree-add later to maint).
173  * Code cleanups and documentation updates.
174    (merge 1c601af es/doc-clean-outdated-tools later to maint).
175    (merge 3581304 kn/tag-doc-fix later to maint).
176    (merge 3a59e59 kb/i18n-doc later to maint).
177    (merge 45abdee sb/remove-unused-var-from-builtin-add later to maint).
178    (merge 14691e3 sb/parse-options-codeformat later to maint).
179    (merge 4a6ada3 ad/bisect-cleanup later to maint).