summaryrefslogtreecommitdiff
path: root/Documentation/RelNotes/2.6.0.txt
blob: b62c7dde34559925b19ac156da43ba763277b71d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
Git 2.6 Release Notes
=====================

Updates since v2.5
------------------

UI, Workflows & Features

 * An asterisk as a substring (as opposed to the entirety) of a path
   component for both side of a refspec, e.g.
   "refs/heads/o*:refs/remotes/heads/i*", is now allowed.

 * New userdiff pattern definition for fountain screenwriting markup
   format has been added.

 * "git log" and friends learned a new "--date=format:..." option to
   format timestamps using system's strftime(3).

 * "git fast-import" learned to respond to the get-mark command via
   its cat-blob-fd interface.

 * "git rebase -i" learned "drop commit-object-name subject" command
   as another way to skip replaying of a commit.

 * A new configuration variable can enable "--follow" automatically
   when "git log" is run with one pathspec argument.

 * "git status" learned to show a more detailed information regarding
   the "rebase -i" session in progress.

 * "git cat-file" learned "--batch-all-objects" option to enumerate all
   available objects in the repository more quickly than "rev-list
   --all --objects" (the output includes unreachable objects, though).

 * "git fsck" learned to ignore errors on a set of known-to-be-bad
   objects, and also allows the warning levels of various kinds of
   non-critical breakages to be tweaked.

 * "git rebase -i"'s list of todo is made configurable.

 * "git send-email" now performs alias-expansion on names that are
   given via --cccmd, etc.

 * An environment variable GIT_REPLACE_REF_BASE tells Git to look into
   refs hierarchy other than refs/replace/ for the object replacement
   data.


Performance, Internal Implementation, Development Support etc.

 * In preparation for allowing different "backends" to store the refs
   in a way different from the traditional "one ref per file in
   $GIT_DIR or in a $GIT_DIR/packed-refs file" filesystem storage,
   direct filesystem access to ref-like things like CHERRY_PICK_HEAD
   from scripts and programs has been reduced.

 * Computation of untracked status indicator by bash prompt
   script (in contrib/) has been optimized.

 * Memory use reduction when commit-slab facility is used to annotate
   sparsely (which is not recommended in the first place).

 * Clean up refs API and make "git clone" less intimate with the
   implementation detail.

 * "git pull" was reimplemented in C.

 * The packet tracing machinery allows to capture an incoming pack
   data to a file for debugging.

 * Move machinery to parse human-readable scaled numbers like 1k, 4M,
   and 2G as an option parameter's value from pack-objects to
   parse-options API, to make it available to other codepaths.

 * "git verify-tag" and "git verify-commit" have been taught to share
   more code, and then learned to optionally show the verification
   message from the underlying GPG implementation.

 * Various enhancements around "git am" reading patches generated by
   foreign SCM have been made.

 * Ref listing by "git branch -l" and "git tag -l" commands has
   started to be rebuilt, based on the for-each-ref machinery.


Also contains various documentation updates and code clean-ups.


Fixes since v2.5
----------------

Unless otherwise noted, all the fixes since v2.5 in the maintenance
track are contained in this release (see the maintenance releases'
notes for details).

 * "git subtree" (in contrib/) depended on "git log" output to be
   stable, which was a no-no.  Apply a workaround to force a
   particular date format.
   (merge e7aac44 da/subtree-date-confusion later to maint).

 * An attempt to delete a ref by pushing into a repositorywhose HEAD
   symbolic reference points at an unborn branch that cannot be
   created due to ref D/F conflict (e.g. refs/heads/a/b exists, HEAD
   points at refs/heads/a) failed.
   (merge b112b14 jx/do-not-crash-receive-pack-wo-head later to maint).

 * The low-level "git send-pack" did not honor 'user.signingkey'
   configuration variable when sending a signed-push.
   (merge d830d39 db/send-pack-user-signingkey later to maint).

 * "sparse checkout" misbehaved for a path that is excluded from the
   checkout when switching between branches that differ at the path.
   (merge 7d78241 as/sparse-checkout-removal later to maint).

 * An experimental "untracked cache" feature used uname(2) in a
   slightly unportable way.
   (merge 100e433 cb/uname-in-untracked later to maint).

 * A "rebase" replays changes of the local branch on top of something
   else, as such they are placed in stage #3 and referred to as
   "theirs", while the changes in the new base, typically a foreign
   work, are placed in stage #2 and referred to as "ours".  Clarify
   the "checkout --ours/--theirs".
   (merge f303016 se/doc-checkout-ours-theirs later to maint).

 * The "rev-parse --parseopt" mode parsed the option specification
   and the argument hint in a strange way to allow '=' and other
   special characters in the option name while forbidding them from
   the argument hint.  This made it impossible to define an option
   like "--pair <key>=<value>" with "pair=key=value" specification,
   which instead would have defined a "--pair=key <value>" option.
   (merge 2d893df ib/scripted-parse-opt-better-hint-string later to maint).

 * Often a fast-import stream builds a new commit on top of the
   previous commit it built, and it often unconditionally emits a
   "from" command to specify the first parent, which can be omitted in
   such a case.  This caused fast-import to forget the tree of the
   previous commit and then re-read it from scratch, which was
   inefficient.  Optimize for this common case.
   (merge 0df3245 mh/fast-import-optimize-current-from later to maint).

 * Running an aliased command from a subdirectory when the .git thing
   in the working tree is a gitfile pointing elsewhere did not work.
   (merge d95138e nd/export-worktree later to maint).

 * "Is this subdirectory a separate repository that should not be
   touched?" check "git clean" was inefficient.  This was replaced
   with a more optimized check.
   (merge 38ae878 ee/clean-remove-dirs later to maint).

 * Code cleanups and documentation updates.
   (merge 1c601af es/doc-clean-outdated-tools later to maint).
   (merge 3581304 kn/tag-doc-fix later to maint).
   (merge 3a59e59 kb/i18n-doc later to maint).