summaryrefslogtreecommitdiff
path: root/Documentation/RelNotes/2.17.0.txt
blob: e1e509b5b0301e22591a1462f6dfc233d4d43c18 (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
155
156
157
158
159
160
161
Git 2.17 Release Notes
======================
 
Updates since v2.16
-------------------
 
UI, Workflows & Features
 
 * "diff" family of commands learned "--find-object=<object-id>" option
   to limit the findings to changes that involve the named object.
   (merge 4d8c51aa19 sb/diff-blobfind-pickaxe later to maint).
 
 
Performance, Internal Implementation, Development Support etc.
 
 * More perf tests for threaded grep
   (merge 7b31b55db1 ab/perf-grep-threads later to maint).
 
 * "perf" test output can be sent to codespeed server.
   (merge 19cf57a92e cc/codespeed later to maint).
 
 * The build procedure for perl/ part has been greatly simplified by
   weaning ourselves off of MakeMaker.
 
 * In preparation for implementing narrow/partial clone, the machinery
   for checking object connectivity used by gc and fsck has been
   taught that a missing object is OK when it is referenced by a
   packfile specially marked as coming from trusted repository that
   promises to make them available on-demand and lazily.
 
 * The machinery to clone & fetch, which in turn involves packing and
   unpacking objects, has been told how to omit certain objects using
   the filtering mechanism introduced by another topic.  It now knows
   to mark the resulting pack as a promisor pack to tolerate missing
   objects, laying foundation for "narrow" clones.
 
 * The first step to getting rid of mru API and using the
   doubly-linked list API directly instead.
 
 * Retire mru API as it does not give enough abstraction over
   underlying list API to be worth it.
 
 * Rewrite two more "git submodule" subcommands in C.
 
 * The tracing machinery learned to report tweaking of environment
   variables as well.
   (merge 090a09272a nd/trace-with-env later to maint).
 
 * Update Coccinelle rules to catch and optimize strbuf_addf(&buf, "%s", str)
   (merge cd9a4b6d93 rs/strbuf-cocci-workaround later to maint).
 
 * Prevent "clang-format" from breaking line after function return type.
   (merge a3715d43e8 po/clang-format-functype-weight later to maint).
 
 * The sequencer infrastructure is shared across "git cherry-pick",
   "git rebase -i", etc., and has always spawned "git commit" when it
   needs to create a commit.  It has been taught to do so internally,
   when able, by reusing the codepath "git commit" itself uses, which
   gives performance boost for a few tens of percents in some sample
   scenarios.
 
 
Also contains various documentation updates and code clean-ups.
 
 
Fixes since v2.16
-----------------
 
 * An old regression in "git describe --all $annotated_tag^0" has been
   fixed.
   (merge 1bba00130a dk/describe-all-output-fix later to maint).
 
 * "git status" after moving a path in the working tree (hence making
   it appear "removed") and then adding with the -N option (hence
   making that appear "added") detected it as a rename, but did not
   report the  old and new pathnames correctly.
   (merge 176ea74793 nd/ita-wt-renames-in-status later to maint).
 
 * "git svn dcommit" did not take into account the fact that a
   svn+ssh:// URL with a username@ (typically used for pushing) refers
   to the same SVN repository without the username@ and failed when
   svn.pushmergeinfo option is set.
   (merge 8aaed892fd jm/svn-pushmergeinfo-fix later to maint).
 
 * API clean-up around revision traversal.
   (merge 6fcec2f9ae rs/lose-leak-pending later to maint).
 
 * "git merge -Xours/-Xtheirs" learned to use our/their version when
   resolving a conflicting updates to a symbolic link.
   (merge fd48b46474 jc/merge-symlink-ours-theirs later to maint).
 
 * "git clone $there $here" is allowed even when here directory exists
   as long as it is an empty directory, but the command incorrectly
   removed it upon a failure of the operation.
   (merge d45420c1c8 jk/abort-clone-with-existing-dest later to maint).
 
 * "git commit --fixup" did not allow "-m<message>" option to be used
   at the same time; allow it to annotate resulting commit with more
   text.
   (merge 30884c9afc ab/commit-m-with-fixup later to maint).
 
 * When resetting the working tree files recursively, the working tree
   of submodules are now also reset to match.
   (merge 7dcc1f4df8 sb/submodule-update-reset-fix later to maint).
 
 * "git stash -- <pathspec>" incorrectly blew away untracked files in
   the directory that matched the pathspec, which has been corrected.
   (merge bba067d2fa tg/stash-with-pathspec-fix later to maint).
 
 * Instead of maintaining home-grown email address parsing code, ship
   a copy of reasonably recent Mail::Address to be used as a fallback
   in 'git send-email' when the platform lacks it.
   (merge d60be8acab mm/send-email-fallback-to-local-mail-address later to maint).
 
 * "git add -p" was taught to ignore local changes to submodules as
   they do not interfere with the partial addition of regular changes
   anyway.
   (merge 12434efc1d nd/add-i-ignore-submodules later to maint).
 
 * Avoid showing a warning message in the middle of a line of "git
   diff" output.
   (merge 4e056c989f nd/diff-flush-before-warning later to maint).
 
 * The http tracing code, often used to debug connection issues,
   learned to redact potentially sensitive information from its output
   so that it can be more safely sharable.
   (merge 8ba18e6fa4 jt/http-redact-cookies later to maint).
 
 * Crash fix for a corner case where an error codepath tried to unlock
   what it did not acquire lock on.
   (merge 81fcb698e0 mr/packed-ref-store-fix later to maint).
 
 * The split-index mode had a few corner case bugs fixed.
   (merge ae59a4e44f tg/split-index-fixes later to maint).
 
 * Assorted fixes to "git daemon".
   (merge ed15e58efe jk/daemon-fixes later to maint).
 
 * Completion of "git merge -s<strategy>" (in contrib/) did not work
   well in non-C locale.
   (merge 7cc763aaa3 nd/list-merge-strategy later to maint).
 
 * Workaround for segfault with more recent versions of SVN.
   (merge 7f6f75e97a ew/svn-branch-segfault-fix later to maint).
 
 * Other minor doc, test and build updates and code cleanups.
   (merge e2a5a028c7 bw/oidmap-autoinit later to maint).
   (merge f0a6068a9f ys/bisect-object-id-missing-conversion-fix later to maint).
   (merge 30221a3389 as/read-tree-prefix-doc-fix later to maint).
   (merge 9bd2ce5432 ab/doc-cat-file-e-still-shows-errors later to maint).
   (merge ec3b4b06f8 cl/t9001-cleanup later to maint).
   (merge e1b3f3dd38 ks/submodule-doc-updates later to maint).
   (merge fbac558a9b rs/describe-unique-abbrev later to maint).
   (merge 8462ff43e4 tb/crlf-conv-flags later to maint).
   (merge 7d68bb0766 rb/hashmap-h-compilation-fix later to maint).
   (merge 3449847168 cc/sha1-file-name later to maint).
   (merge ad622a256f ds/use-get-be64 later to maint).
   (merge f919ffebed sg/cocci-move-array later to maint).
   (merge 4e801463c7 jc/mailinfo-cleanup-fix later to maint).
   (merge ef5b3a6c5e nd/shared-index-fix later to maint).
   (merge 9f5258cbb8 tz/doc-show-defaults-to-head later to maint).