What's cooking (2018/04 #03)

Junio C Hamano committed Apr 25, 2018 at 17:33 UTC b731591f56ad697814489a3b31d54208eb81190f
1 file changed +743 -931
whats-cooking.txt
+743 -931
@@ -1,10 +1,10 @@
1 To: git@vger.kernel.org
2 Bcc: lwn@lwn.net
3 -Subject: What's cooking in git.git (Apr 2018, #02; Tue, 17)
4 -X-master-at: fe0a9eaf31dd0c349ae4308498c33a5c3794b293
5 -X-next-at: 8a3641ab3abcf492e9443f88d82a7a22fa8b4816
3 +Subject: What's cooking in git.git (Apr 2018, #03; Wed, 25)
4 +X-master-at: 1f1cddd558b54bb0ce19c8ace353fd07b758510d
5 +X-next-at: 969e05fae2431648e30fa9034c7319a06e8575d5
6
7 -What's cooking in git.git (Apr 2018, #02; Tue, 17)
7 +What's cooking in git.git (Apr 2018, #03; Wed, 25)
8 --------------------------------------------------
9
10 Here are the topics that have been cooking. Commits prefixed with
@@ -12,41 +12,70 @@ Here are the topics that have been cooking. Commits prefixed with
12 '+' are in 'next'. The ones marked with '.' do not appear in any of
13 the integration branches, but I am still holding onto them.
14
15 -I try to summarize what each topic is about immediately after the
16 -list of commits on the topic, which may be followed by a short term
17 -plan for the topic ("Will merge to 'next'", etc.), possibly followed
18 -by a reminder (e.g. "cf. <message-id>") to help me recall the reason
19 -behind the plan. Please do not read more than that into "cf." (e.g.
20 -the ones listed are not more important than other messages in the
21 -same thread).
22 -
15 You can find the changes described here in the integration branches
16 of the repositories listed at
17
18 http://git-blame.blogspot.com/p/git-public-repositories.html
19
20 --------------------------------------------------
29 -[New Topics]
21 +[Graduated to "master"]
22
31 -* bt/gpg-interface (2018-04-16) 7 commits
32 - - gpg-interface: find the last gpg signature line
33 - - gpg-interface: extract gpg line matching helper
34 - - gpg-interface: fix const-correctness of "eol" pointer
35 - - gpg-interface: use size_t for signature buffer size
36 - - gpg-interface: modernize function declarations
37 - - gpg-interface: handle bool user.signingkey
38 - - t7004: fix mistaken tag name
23 +* ak/bisect-doc-typofix (2018-04-07) 1 commit
24 + (merged to 'next' on 2018-04-17 at eafdeb0248)
25 + + Documentation/git-bisect.txt: git bisect term → git bisect terms
26
40 - What is queued here is only the obviously correct and
41 - uncontroversial code clean-up part, which is an earlier 7 patches,
42 - of a larger series.
27 + Docfix.
28 +
29 +
30 +* bb/git-gui-ssh-key-files (2018-03-02) 2 commits
31 + (merged to 'next' on 2018-04-17 at e439f0398d)
32 + + Merge branch 'bb/ssh-key-files' of git-gui into bb/git-gui-ssh-key-files
33 + + git-gui: search for all current SSH key types
34 +
35 + "git gui" learned that "~/.ssh/id_ecdsa.pub" and
36 + "~/.ssh/id_ed25519.pub" are also possible SSH key files.
37
44 - The remainder that is not queued introuces a few configuration
45 - variables to deal with e-signature backends with different
46 - signature format.
38
48 - I am not sure if this is going in a good direction. Wouldn't it
49 - encourage fragmenting the world even more?
39 +* bp/fsmonitor-bufsize-fix (2018-04-11) 1 commit
40 + (merged to 'next' on 2018-04-17 at 70a7091e06)
41 + + fsmonitor: fix incorrect buffer size when printing version number
42 +
43 + Fix an unexploitable (because the oversized contents are not under
44 + attacker's control) buffer overflow.
45 +
46 +
47 +* bp/fsmonitor-prime-index (2018-04-11) 1 commit
48 + (merged to 'next' on 2018-04-17 at 765edccdf0)
49 + + fsmonitor: force index write after full scan
50 +
51 + The index file is updated to record the fsmonitor section after a
52 + full scan was made, to avoid wasting the effort that has already
53 + spent.
54 +
55 +
56 +* bp/git-gui-bind-kp-enter (2018-03-02) 2 commits
57 + (merged to 'next' on 2018-04-17 at 35828e90e2)
58 + + Merge branch 'bp/bind-kp-enter' of git-gui into bp/git-gui-bind-kp-enter
59 + + git-gui: bind CTRL/CMD+numpad ENTER to do_commit
60 +
61 + "git gui" performs commit upon CTRL/CMD+ENTER but the
62 + CTRL/CMD+KP_ENTER (i.e. enter key on the numpad) did not have the
63 + same key binding. It now does.
64 +
65 +
66 +* br/mergetools-guiffy (2018-04-06) 1 commit
67 + (merged to 'next' on 2018-04-17 at 8ec0697d5d)
68 + + mergetools: add support for guiffy
69 +
70 + "git mergetools" learned talking to guiffy.
71 +
72 +
73 +* bw/commit-partial-from-subdirectory-fix (2018-04-05) 1 commit
74 + (merged to 'next' on 2018-04-17 at 1e56bbc14d)
75 + + commit: allow partial commits with relative paths
76 +
77 + "cd sub/dir && git commit ../path" ought to record the changes to
78 + the file "sub/path", but this regressed long time ago.
79
80
81 * cb/bash-completion-ls-files-processing (2018-04-10) 1 commit
@@ -56,685 +85,501 @@ of the repositories listed at
85 Shell completion (in contrib) that gives list of paths have been
86 optimized somewhat.
87
59 - Will merge to 'master'.
88
89 +* cb/git-gui-ttk-style (2018-03-05) 2 commits
90 + (merged to 'next' on 2018-04-17 at 1a4f677a0d)
91 + + Merge branch 'cb/ttk-style' of git-gui into cb/git-gui-ttk-style
92 + + git-gui: workaround ttk:style theme use
93
62 -* ds/generation-numbers (2018-04-11) 10 commits
63 - - commit: add short-circuit to paint_down_to_common()
64 - - commit: use generation numbers for in_merge_bases()
65 - - ref-filter: use generation number for --contains
66 - - commit-graph.txt: update future work
67 - - commit.c: use generation to halt paint walk
68 - - commit: use generations in paint_down_to_common()
69 - - commit-graph: compute generation numbers
70 - - commit: add generation number to struct commmit
71 - - merge: check config before loading commits
72 - - object.c: parse commit in graph first
73 - (this branch uses ds/commit-graph; is tangled with ds/lazy-load-trees.)
94 + "git gui" has been taught to work with old versions of tk (like
95 + 8.5.7) that do not support "ttk::style theme use" as a way to query
96 + the current theme.
97
75 - A recently added "commit-graph" datafile has learned to store
76 - pre-computed generation numbers to speed up the decisions to stop
77 - history traversal.
98
79 - Expecting a reroll.
80 - cf. <cc58d8c1-f8de-4841-934f-56e4ad7729aa@gmail.com>
99 +* cc/perf-bisect (2018-04-11) 2 commits
100 + (merged to 'next' on 2018-04-17 at 62a1498dd0)
101 + + t/perf: add scripts to bisect performance regressions
102 + + perf/run: add --subsection option
103
104 + Performance measuring framework in t/perf learned to help bisecting
105 + performance regressions.
106
83 -* bp/fsexcludes (2018-04-16) 2 commits
84 - - fsmonitor: switch to use new fsexcludes logic and remove unused untracked cache based logic
85 - - fsexcludes: add a programmatic way to exclude files from git's working directory traversal logic
107
87 - Can we have a few lines summary here, just like we have for other
88 - topic ;-) I personally take the overlong title of these commits as
89 - a sign that they can further be simplified and cleaned up by
90 - splitting, focusing the scope, etc.
108 +* en/doc-typoes (2018-04-09) 2 commits
109 + (merged to 'next' on 2018-04-17 at 81e5c8da18)
110 + + Documentation: normalize spelling of 'normalised'
111 + + Documentation: fix several one-character-off spelling errors
112
92 - Waiting for a bit more discussion.
93 - cf. <CACsJy8B+fTfUiGA-cFE5QEipa_4pSfC4_GhUSJvCKL82G21xWw@mail.gmail.com>
113 + Docfix.
114
115
96 -* bp/fsmonitor-bufsize-fix (2018-04-11) 1 commit
97 - (merged to 'next' on 2018-04-17 at 70a7091e06)
98 - + fsmonitor: fix incorrect buffer size when printing version number
116 +* es/fread-reads-dir-autoconf-fix (2018-04-09) 1 commit
117 + (merged to 'next' on 2018-04-17 at 538601fef3)
118 + + configure.ac: fix botched FREAD_READS_DIRECTORIES check
119
100 - Fix an unexploitable (because the oversized contents are not under
101 - attacker's control) buffer overflow.
120 + Small fix to the autoconf build procedure.
121 +
122 +
123 +* es/worktree-docs (2018-04-09) 2 commits
124 + (merged to 'next' on 2018-04-17 at 15a098e9b1)
125 + + git-worktree.txt: unify command-line prompt in example blocks
126 + + git-worktree.txt: recommend 'git worktree remove' over manual deletion
127 + (this branch uses nd/worktree-move.)
128 +
129 + Doc updates.
130 +
131 +
132 +* jk/flockfile-stdio (2018-03-30) 1 commit
133 + (merged to 'next' on 2018-04-17 at e11bd565f4)
134 + + config: move flockfile() closer to unlocked functions
135 +
136 + Code clean-up.
137 +
138 +
139 +* jk/ref-array-push (2018-04-09) 3 commits
140 + (merged to 'next' on 2018-04-17 at 61859b271b)
141 + + ref-filter: factor ref_array pushing into its own function
142 + + ref-filter: make ref_array_item allocation more consistent
143 + + ref-filter: use "struct object_id" consistently
144 + (this branch is used by hn/sort-ls-remote.)
145 +
146 + API clean-up aournd ref-filter code.
147 +
148 +
149 +* jk/relative-directory-fix (2018-03-30) 5 commits
150 + (merged to 'next' on 2018-04-17 at 1b8cc9dcb4)
151 + + refs: use chdir_notify to update cached relative paths
152 + + set_work_tree: use chdir_notify
153 + + add chdir-notify API
154 + + trace.c: export trace_setup_key
155 + + set_git_dir: die when setenv() fails
156 +
157 + Some codepaths, including the refs API, get and keep relative
158 + paths, that go out of sync when the process does chdir(2). The
159 + chdir-notify API is introduced to let these codepaths adjust these
160 + cached paths to the new current directory.
161 +
162 +
163 +* jk/t5561-missing-curl (2018-04-05) 2 commits
164 + (merged to 'next' on 2018-04-17 at d8592fa6c2)
165 + + t5561: skip tests if curl is not available
166 + + t5561: drop curl stderr redirects
167 +
168 + Test fixes.
169 +
170 +
171 +* jm/mem-pool (2018-04-12) 3 commits
172 + (merged to 'next' on 2018-04-17 at 8a3641ab3a)
173 + + mem-pool: move reusable parts of memory pool into its own file
174 + + fast-import: introduce mem_pool type
175 + + fast-import: rename mem_pool type to mp_block
176 +
177 + An reusable "memory pool" implementation has been extracted from
178 + fast-import.c, which in turn has become the first user of the
179 + mem-pool API.
180 +
181 +
182 +* js/t5404-path-fix (2018-04-09) 1 commit
183 + (merged to 'next' on 2018-04-17 at 94092f2896)
184 + + t5404: relax overzealous test
185 +
186 + Test fix.
187 +
188 +
189 +* ks/branch-list-detached-rebase-i (2018-04-05) 2 commits
190 + (merged to 'next' on 2018-04-17 at 5c2842c3f9)
191 + + t3200: verify "branch --list" sanity when rebasing from detached HEAD
192 + + branch --list: print useful info whilst interactive rebasing a detached HEAD
193 +
194 + "git branch --list" during an interrupted "rebase -i" now lets
195 + users distinguish the case where a detached HEAD is being rebased
196 + and a normal branch is being rebased.
197 +
198 +
199 +* lw/daemon-log-destination (2018-04-09) 1 commit
200 + (merged to 'next' on 2018-04-17 at b06cdcc45e)
201 + + daemon.c: fix condition for redirecting stderr
202 +
203 + Recent introduction of "--log-destination" option to "git daemon"
204 + did not work well when the daemon was run under "--inetd" mode.
205 +
206 +
207 +* mn/send-email-credential-doc (2018-04-08) 1 commit
208 + (merged to 'next' on 2018-04-17 at c4db21eb9b)
209 + + send-email: simplify Gmail example in the documentation
210 +
211 + Doc update.
212 +
213 +
214 +* nd/worktree-move (2018-04-05) 1 commit
215 + (merged to 'next' on 2018-04-17 at 11ca393110)
216 + + t2028: tighten grep expression to make "move worktree" test more robust
217 + (this branch is used by es/worktree-docs.)
218 +
219 + Test update.
220 +
221 +
222 +* ps/test-chmtime-get (2018-04-09) 1 commit
223 + (merged to 'next' on 2018-04-17 at dcb138d8b1)
224 + + t/helper: 'test-chmtime (--get|-g)' to print only the mtime
225 +
226 + Test cleanup.
227 +
228 +
229 +* pw/rebase-keep-empty-fixes (2018-03-29) 3 commits
230 + (merged to 'next' on 2018-04-17 at 10a4d92060)
231 + + rebase: respect --no-keep-empty
232 + + rebase -i --keep-empty: don't prune empty commits
233 + + rebase --root: stop assuming squash_onto is unset
234 + (this branch is used by pw/rebase-signoff.)
235 +
236 + "git rebase --keep-empty" still removed an empty commit if the
237 + other side contained an empty commit (due to the "does an
238 + equivalent patch exist already?" check), which has been corrected.
239 +
240 +
241 +* pw/rebase-signoff (2018-03-29) 4 commits
242 + (merged to 'next' on 2018-04-17 at fbdc16e20e)
243 + + rebase --keep-empty: always use interactive rebase
244 + + rebase -p: error out if --signoff is given
245 + + rebase: extend --signoff support
246 + + Merge branch 'pw/rebase-keep-empty-fixes' into pw/rebase-signoff
247 + (this branch uses pw/rebase-keep-empty-fixes.)
248 +
249 + "git rebase" has learned to honor "--signoff" option when using
250 + backends other than "am" (but not "--preserve-merges").
251 +
252 +
253 +* sb/filenames-with-dashes (2018-04-11) 6 commits
254 + (merged to 'next' on 2018-04-17 at 45fdeb5cb1)
255 + + replace_object.c: rename to use dash in file name
256 + + sha1_file.c: rename to use dash in file name
257 + + sha1_name.c: rename to use dash in file name
258 + + exec_cmd: rename to use dash in file name
259 + + unicode_width.h: rename to use dash in file name
260 + + write_or_die.c: rename to use dashes in file name
261 +
262 + Rename bunch of source files to more consistently use dashes
263 + instead of underscores to connect words.
264 +
265 +
266 +* tg/use-git-contacts (2018-04-12) 1 commit
267 + (merged to 'next' on 2018-04-17 at 26cf8c1d8c)
268 + + SubmittingPatches: mention the git contacts command
269 +
270 + Doc update.
271 +
272 +--------------------------------------------------
273 +[New Topics]
274 +
275 +* ma/double-dashes-in-docs (2018-04-18) 4 commits
276 + (merged to 'next' on 2018-04-25 at aaac2dc63c)
277 + + git-submodule.txt: quote usage in monospace, drop backslash
278 + + git-[short]log.txt: unify quoted standalone --
279 + + doc: convert [\--] to [--]
280 + + doc: convert \--option to --option
281 +
282 + Doc formatting updates.
283
284 Will merge to 'master'.
285
286
106 -* bp/fsmonitor-prime-index (2018-04-11) 1 commit
107 - (merged to 'next' on 2018-04-17 at 765edccdf0)
108 - + fsmonitor: force index write after full scan
287 +* sb/worktree-remove-opt-force (2018-04-18) 1 commit
288 + (merged to 'next' on 2018-04-25 at 0367d52a4b)
289 + + worktree: accept -f as short for --force for removal
290 +
291 + "git worktree remove" learned that "-f" is a shorthand for
292 + "--force" option, just like for "git worktree add".
293 +
294 + Will merge to 'master'.
295
110 - The index file is updated to record the fsmonitor section after a
111 - full scan was made, to avoid wasting the effort that has already
112 - spent.
296 +
297 +* sg/completion-clear-cached (2018-04-18) 1 commit
298 + (merged to 'next' on 2018-04-25 at 9178da6c3d)
299 + + completion: reduce overhead of clearing cached --options
300 +
301 + The completion script (in contrib/) learned to clear cached list of
302 + command line options upon dot-sourcing it again in a more efficient
303 + way.
304
305 Will merge to 'master'.
306
307
117 -* cc/perf-bisect (2018-04-11) 2 commits
118 - (merged to 'next' on 2018-04-17 at 62a1498dd0)
119 - + t/perf: add scripts to bisect performance regressions
120 - + perf/run: add --subsection option
308 +* sg/doc-gc-quote-mismatch-fix (2018-04-18) 1 commit
309 + (merged to 'next' on 2018-04-25 at bc3d1abf45)
310 + + docs/git-gc: fix minor rendering issue
311
122 - Performance measuring framework in t/perf learned to help bisecting
123 - performance regressions.
312 + Doc formatting fix.
313
314 Will merge to 'master'.
315
316
128 -* en/rename-directory-detection-reboot (2018-04-16) 32 commits
129 - - merge-recursive: fix check for skipability of working tree updates
130 - - merge-recursive: Fix was_tracked() to quit lying with some renamed paths
131 - - t6046: testcases checking whether updates can be skipped in a merge
132 - - merge-recursive: improve output precision around skipping updates
133 - - merge-recursive: avoid spurious rename/rename conflict from dir renames
134 - - directory rename detection: new testcases showcasing a pair of bugs
135 - - merge-recursive: fix remaining directory rename + dirty overwrite cases
136 - - merge-recursive: fix overwriting dirty files involved in renames
137 - - merge-recursive: avoid clobbering untracked files with directory renames
138 - - merge-recursive: apply necessary modifications for directory renames
139 - - merge-recursive: when comparing files, don't include trees
140 - - merge-recursive: check for file level conflicts then get new name
141 - - merge-recursive: add computation of collisions due to dir rename & merging
142 - - merge-recursive: check for directory level conflicts
143 - - merge-recursive: add get_directory_renames()
144 - - merge-recursive: make a helper function for cleanup for handle_renames
145 - - merge-recursive: split out code for determining diff_filepairs
146 - - merge-recursive: make !o->detect_rename codepath more obvious
147 - - merge-recursive: fix leaks of allocated renames and diff_filepairs
148 - - merge-recursive: introduce new functions to handle rename logic
149 - - merge-recursive: move the get_renames() function
150 - - directory rename detection: tests for handling overwriting dirty files
151 - - directory rename detection: tests for handling overwriting untracked files
152 - - directory rename detection: miscellaneous testcases to complete coverage
153 - - directory rename detection: testcases exploring possibly suboptimal merges
154 - - directory rename detection: more involved edge/corner testcases
155 - - directory rename detection: testcases checking which side did the rename
156 - - directory rename detection: files/directories in the way of some renames
157 - - directory rename detection: partially renamed directory testcase/discussion
158 - - directory rename detection: testcases to avoid taking detection too far
159 - - directory rename detection: directory splitting testcases
160 - - directory rename detection: basic testcases
317 +* js/ident-date-fix (2018-04-19) 1 commit
318 + - sequencer: reset the committer date before commits
319
162 - Reboot of an attempt to detect wholesale directory renames and use
163 - it while merging.
320 + During a "rebase -i" session, the code could give older timestamp
321 + to commits created by later "pick" than an earlier "reword", which
322 + has been corrected.
323
324 + Will merge to 'next'.
325
166 -* fg/completion-external (2018-04-11) 1 commit
167 - - completion: load completion file for external subcommand
326
169 - The command line completion mechanism (in contrib/) learned to load
170 - custom completion file for "git $command" where $command is a
171 - custom "git-$command" that the end user has on the $PATH when using
172 - newer version of bash.
327 +* nd/submodule-status-fix (2018-04-19) 1 commit
328 + - submodule--helper: don't print null in 'submodule status'
329
174 - Will merge to 'next'.
330 + "git submodule status" did not check the symbolic revision name it
331 + computed for the submodule HEAD is not the NULL, and threw it at
332 + printf routines, which has been corrected.
333
334 + Will merge to 'next'.
335
177 -* nd/command-list (2018-04-16) 7 commits
178 - - SQUASH???
179 - - help: use command-list.txt for the source of guides
180 - - help: add "-a --verbose" to list all commands with synopsis
181 - - git.c: implement --list-cmds=porcelain
182 - - generate-cmdlist.sh: keep all information in common-cmds.h
183 - - git.c: implement --list-cmds=all and use it in git-completion.bash
184 - - git.c: convert --list-builtins to --list-cmds=builtins
336
186 - The list of commands with their various attributes were spread
187 - across a few places in the build procedure, but it now is getting a
188 - bit more consolidated to allow more automation.
337 +* sa/send-email-dedup-some-headers (2018-04-19) 1 commit
338 + - send-email: avoid duplicate In-Reply-To/References
339
190 - Expecting a reroll.
191 - Bash-isms and other things need to be fixed.
340 + When fed input that already has In-Reply-To: and/or References:
341 + headers and told to add the same information, "git send-email"
342 + added these headers separately, instead of appending to an existing
343 + one, which is a violation of the RFC. This has been corrected.
344
345 + Will merge to 'next'.
346
194 -* sb/filenames-with-dashes (2018-04-11) 6 commits
195 - (merged to 'next' on 2018-04-17 at 45fdeb5cb1)
196 - + replace_object.c: rename to use dash in file name
197 - + sha1_file.c: rename to use dash in file name
198 - + sha1_name.c: rename to use dash in file name
199 - + exec_cmd: rename to use dash in file name
200 - + unicode_width.h: rename to use dash in file name
201 - + write_or_die.c: rename to use dashes in file name
347
203 - Rename bunch of source files to more consistently use dashes
204 - instead of underscores to connect words.
348 +* tg/demote-stash-save-in-completion (2018-04-20) 2 commits
349 + - completion: make stash -p and alias for stash push -p
350 + - completion: stop showing 'save' for stash by default
351
206 - Will merge to 'master'.
352 + THe command line completion (in contrib/) has been taught that "git
353 + stash save" has been deprecated ("git stash push" is the preferred
354 + spellingin the new world) and does not offer it as a possible
355 + completion candidate when "git stash push" can be.
356
357 + Will merge to 'next'.
358
209 -* sb/object-store-replace (2018-04-12) 15 commits
210 - - replace-object: allow lookup_replace_object to handle arbitrary repositories
211 - - replace-object: allow do_lookup_replace_object to handle arbitrary repositories
212 - - replace-object: allow prepare_replace_object to handle arbitrary repositories
213 - - refs: allow for_each_replace_ref to handle arbitrary repositories
214 - - refs: store the main ref store inside the repository struct
215 - - replace-object: add repository argument to lookup_replace_object
216 - - replace-object: add repository argument to do_lookup_replace_object
217 - - replace-object: add repository argument to prepare_replace_object
218 - - refs: add repository argument to for_each_replace_ref
219 - - refs: add repository argument to get_main_ref_store
220 - - replace-object: check_replace_refs is safe in multi repo environment
221 - - replace-object: eliminate replace objects prepared flag
222 - - object-store: move lookup_replace_object to replace-object.h
223 - - replace-object: move replace_map to object store
224 - - replace_object: use oidmap
359
226 - The effort to pass the repository in-core structure throughout the
227 - API continues. This round deals with the code that implements the
228 - refs/replace/ mechanism.
360 +* tz/doc-git-urls-reference (2018-04-20) 1 commit
361 + - doc/clone: update caption for GIT URLS cross-reference
362
230 - What's the doneness of this thing? I didn't recall seeing any
231 - response, especially ones that demonstrated the reviewer carefully
232 - read and thought about the issues surrounding the code. Not that I
233 - spotted any problems in these patches myself, though.
363 + Doc fix.
364
365 + Will merge to 'next'.
366
236 -* tg/use-git-contacts (2018-04-12) 1 commit
237 - (merged to 'next' on 2018-04-17 at 26cf8c1d8c)
238 - + SubmittingPatches: mention the git contacts command
367
240 - Doc update.
368 +* js/deprecate-grafts (2018-04-24) 11 commits
369 + - Remove obsolete script to convert grafts to replace refs
370 + - technical/shallow: describe why shallow cannot use replace refs
371 + - technical/shallow: describe the relationship with replace refs
372 + - filter-branch: stop suggesting to use grafts
373 + - Deprecate support for .git/info/grafts
374 + - Add a test for `git replace --convert-graft-file`
375 + - replace: introduce --convert-graft-file
376 + - replace: "libify" create_graft() and callees
377 + - replace: avoid using die() to indicate a bug
378 + - commit: Let the callback of for_each_mergetag return on error
379 + - argv_array: offer to split a string by whitespace
380 +
381 + The functionality of "$GIT_DIR/info/grafts" has been superseded by
382 + the "refs/replace/" mechanism for some time now, but the internal
383 + code had support for it in many places, which has been cleaned up
384 + in order to drop support of the "grafts" mechanism.
385 +
386 +
387 +* js/rebase-i-clean-msg-after-fixup-continue (2018-04-24) 4 commits
388 + - rebase --skip: clean up commit message after a failed fixup/squash
389 + - sequencer: leave a tell-tale when a fixup/squash failed
390 + - rebase -i: Handle "combination of <n> commits" with GETTEXT_POISON
391 + - rebase -i: demonstrate bugs with fixup!/squash! commit messages
392 +
393 + "git rebase -i" sometimes left intermediate "# This is a
394 + combination of N commits" message meant for the human consumption
395 + inside an editor in the final result in certain corner cases, which
396 + has been fixed.
397
242 - Will merge to 'master'.
398 + Will merge to 'next'.
399
400
245 -* hn/bisect-first-parent (2018-04-17) 1 commit
246 - - bisect: create 'bisect_flags' parameter in find_bisection()
401 +* ma/fast-export-skip-merge-fix (2018-04-21) 1 commit
402 + - fast-export: fix regression skipping some merge-commits
403
248 - Preliminary code update to allow passing more flags down the
249 - bisection codepath in the future.
404 + "git fast-export" had a regression in v2.15.0 era where it skipped
405 + some merge commits in certain cases, which has been corrected.
406
251 - We do not add random code that does not have real users to our
252 - codebase, so let's have it wait until such a real code materializes
253 - before too long.
407 + Will merge to 'next'.
408
409
256 -* sg/complete-paths (2018-04-17) 11 commits
257 - - completion: fill COMPREPLY directly when completing paths
258 - - completion: improve handling quoted paths in 'git ls-files's output
259 - - completion: remove repeated dirnames with 'awk' during path completion
260 - - t9902-completion: ignore COMPREPLY element order in some tests
261 - - completion: use 'awk' to strip trailing path components
262 - - completion: let 'ls-files' and 'diff-index' filter matching paths
263 - - completion: improve handling quoted paths on the command line
264 - - completion: support completing non-ASCII pathnames
265 - - completion: simplify prefix path component handling during path completion
266 - - completion: move __git_complete_index_file() next to its helpers
267 - - t9902-completion: add tests demonstrating issues with quoted pathnames
410 +* bw/server-options (2018-04-24) 4 commits
411 + - fetch: send server options when using protocol v2
412 + - ls-remote: send server options when using protocol v2
413 + - serve: introduce the server-option capability
414 + - Merge branch 'bw/protocol-v2' into HEAD
415 + (this branch uses bw/protocol-v2.)
416
269 - Command line completion (in contrib/) learned to complete pathnames
270 - for various commands better.
417 + The transport protocol v2 is getting updated further.
418
419
273 -* so/grossary-ancestor (2018-04-17) 1 commit
274 - - glossary: substitute "ancestor" for "direct ancestor" in 'push' description.
420 +* jc/parseopt-expiry-errors (2018-04-23) 2 commits
421 + - parseopt: handle malformed --expire arguments more nicely
422 + - gc: do not upcase error message shown with die()
423
276 - Docfix.
424 + "git gc --prune=nonsense" spent long time repacking and then
425 + silently failed when underlying "git prune --expire=nonsense"
426 + failed to parse its command line. This has been corrected.
427
428 Will merge to 'next'.
429
430
281 -* tq/t1510 (2018-04-17) 1 commit
282 - - t1510-repo-setup.sh: remove useless mkdir
431 +* js/colored-push-errors (2018-04-24) 4 commits
432 + - config: document the settings to colorize push errors/hints
433 + - push: test to verify that push errors are colored
434 + - push: colorize errors
435 + - color: introduce support for colorizing stderr
436
284 - Test cleanup.
437 + Error messages from "git push" can be painted for more visibility.
438
439 Will merge to 'next'.
440
288 ---------------------------------------------------
289 -[Graduated to "master"]
441
291 -* ab/doc-hash-brokenness (2018-03-27) 2 commits
292 - (merged to 'next' on 2018-03-29 at e9b2f5cf4a)
293 - + doc hash-function-transition: clarify what SHAttered means
294 - + doc hash-function-transition: clarify how older gits die on NewHash
442 +* js/runtime-prefix (2018-04-24) 8 commits
443 + - Avoid multiple PREFIX definitions
444 + - git_setup_gettext: plug memory leak
445 + - gettext: avoid initialization if the locale dir is not present
446 + (merged to 'next' on 2018-04-17 at a69aaa7a22)
447 + + mingw/msvc: use the new-style RUNTIME_PREFIX helper
448 + + exec_cmd: provide a new-style RUNTIME_PREFIX helper for Windows
449 + + exec_cmd: RUNTIME_PREFIX on some POSIX systems
450 + + Makefile: add Perl runtime prefix support
451 + + Makefile: generate Perl header from template file
452 + (this branch is tangled with dj/runtime-prefix.)
453 +
454 + Will merge to 'next'.
455 +
456
296 - Doc updates.
457 +* ma/http-walker-no-partial (2018-04-24) 2 commits
458 + - walker: drop fields of `struct walker` which are always 1
459 + - http-fetch: make `-a` standard behaviour
460
461 + "git http-fetch" (deprecated) had an optional and experimental
462 + "feature" to fetch only commits and/or trees, which nobody used.
463 + This has been removed.
464 +
465 + Will merge to 'next'.
466
299 -* ab/drop-contrib-examples (2018-03-26) 1 commit
300 - (merged to 'next' on 2018-03-29 at 9d8a7603b5)
301 - + Remove contrib/examples/*
302 -
303 -
304 -* ab/install-symlinks (2018-03-15) 3 commits
305 - (merged to 'next' on 2018-03-15 at 99d6bd6cb3)
306 - + Makefile: optionally symlink libexec/git-core binaries to bin/git
307 - + Makefile: add a gitexecdir_relative variable
308 - + Makefile: fix broken bindir_relative variable
309 -
310 - The build procedure learned to optionally use symbolic links
311 - (instead of hardlinks and copies) to install "git-foo" for built-in
312 - commands, whose binaries are all identical.
313 -
314 -
315 -* ab/pcre-v2 (2018-03-14) 3 commits
316 - (merged to 'next' on 2018-03-15 at e77b116903)
317 - + Makefile: make USE_LIBPCRE=YesPlease mean v2, not v1
318 - + configure: detect redundant --with-libpcre & --with-libpcre1
319 - + configure: fix a regression in PCRE v1 detection
320 -
321 - Git can be built to use either v1 or v2 of the PCRE library, and so
322 - far, the build-time configuration USE_LIBPCRE=YesPlease instructed
323 - the build procedure to use v1, but now it means v2. USE_LIBPCRE1
324 - and USE_LIBPCRE2 can be used to explicitly choose which version to
325 - use, as before.
326 -
327 -
328 -* bc/hash-independent-tests (2018-03-26) 10 commits
329 - (merged to 'next' on 2018-03-29 at 11179d9b71)
330 - + t2107: abstract away SHA-1-specific constants
331 - + t2101: abstract away SHA-1-specific constants
332 - + t2101: modernize test style
333 - + t2020: abstract away SHA-1 specific constants
334 - + t1507: abstract away SHA-1-specific constants
335 - + t1411: abstract away SHA-1-specific constants
336 - + t1405: sort reflog entries in a hash-independent way
337 - + t1300: abstract away SHA-1-specific constants
338 - + t1304: abstract away SHA-1-specific constants
339 - + t1011: abstract away SHA-1-specific constants
340 -
341 - Tests that rely on the exact hardcoded values of object names have
342 - been updated in preparation for hash function migration.
343 -
344 -
345 -* bc/object-id (2018-03-14) 36 commits
346 - (merged to 'next' on 2018-03-20 at f1800a33ff)
347 - + convert: convert to struct object_id
348 - + sha1_file: introduce a constant for max header length
349 - + Convert lookup_replace_object to struct object_id
350 - + sha1_file: convert read_sha1_file to struct object_id
351 - + sha1_file: convert read_object_with_reference to object_id
352 - + tree-walk: convert tree entry functions to object_id
353 - + streaming: convert istream internals to struct object_id
354 - + tree-walk: convert get_tree_entry_follow_symlinks internals to object_id
355 - + builtin/notes: convert static functions to object_id
356 - + builtin/fmt-merge-msg: convert remaining code to object_id
357 - + sha1_file: convert sha1_object_info* to object_id
358 - + Convert remaining callers of sha1_object_info_extended to object_id
359 - + packfile: convert unpack_entry to struct object_id
360 - + sha1_file: convert retry_bad_packed_offset to struct object_id
361 - + sha1_file: convert assert_sha1_type to object_id
362 - + builtin/mktree: convert to struct object_id
363 - + streaming: convert open_istream to use struct object_id
364 - + sha1_file: convert check_sha1_signature to struct object_id
365 - + sha1_file: convert read_loose_object to use struct object_id
366 - + builtin/index-pack: convert struct ref_delta_entry to object_id
367 - + archive: convert sha1_file_to_archive to struct object_id
368 - + archive: convert write_archive_entry_fn_t to object_id
369 - + builtin/mktag: convert to struct object_id
370 - + replace_object: convert struct replace_object to object_id
371 - + send-pack: convert remaining functions to struct object_id
372 - + http-walker: convert struct object_request to use struct object_id
373 - + Convert find_unique_abbrev* to struct object_id
374 - + wt-status: convert struct wt_status_state to object_id
375 - + strbuf: convert strbuf_add_unique_abbrev to use struct object_id
376 - + ref-filter: convert grab_objectname to struct object_id
377 - + tree: convert read_tree_recursive to struct object_id
378 - + resolve-undo: convert struct resolve_undo_info to object_id
379 - + cache-tree: convert remnants to struct object_id
380 - + cache-tree: convert write_*_as_tree to object_id
381 - + builtin/write-tree: convert to struct object_id
382 - + bulk-checkin: convert index_bulk_checkin to struct object_id
383 - (this branch is used by ds/bsearch-hash.)
467 +
468 +* bc/object-id (2018-04-24) 41 commits
469 + - merge-one-file: compute empty blob object ID
470 + - add--interactive: compute the empty tree value
471 + - Update shell scripts to compute empty tree object ID
472 + - sha1_file: only expose empty object constants through git_hash_algo
473 + - dir: use the_hash_algo for empty blob object ID
474 + - sequencer: use the_hash_algo for empty tree object ID
475 + - cache-tree: use is_empty_tree_oid
476 + - sha1_file: convert cached object code to struct object_id
477 + - builtin/reset: convert use of EMPTY_TREE_SHA1_BIN
478 + - builtin/receive-pack: convert one use of EMPTY_TREE_SHA1_HEX
479 + - wt-status: convert two uses of EMPTY_TREE_SHA1_HEX
480 + - submodule: convert several uses of EMPTY_TREE_SHA1_HEX
481 + - sequencer: convert one use of EMPTY_TREE_SHA1_HEX
482 + - merge: convert empty tree constant to the_hash_algo
483 + - builtin/merge: switch tree functions to use object_id
484 + - builtin/am: convert uses of EMPTY_TREE_SHA1_BIN to the_hash_algo
485 + - builtin/receive-pack: avoid hard-coded constants for push certs
486 + - diff: specify abbreviation size in terms of the_hash_algo
487 + - upload-pack: replace use of several hard-coded constants
488 + - revision: replace use of hard-coded constants
489 + - http: eliminate hard-coded constants
490 + - dir: convert struct untracked_cache_dir to object_id
491 + - commit: convert uses of get_sha1_hex to get_oid_hex
492 + - index-pack: abstract away hash function constant
493 + - pack-redundant: convert linked lists to use struct object_id
494 + - Update struct index_state to use struct object_id
495 + - split-index: convert struct split_index to object_id
496 + - submodule-config: convert structures to object_id
497 + - fsck: convert static functions to struct object_id
498 + - tree-walk: convert get_tree_entry_follow_symlinks to object_id
499 + - tree-walk: avoid hard-coded 20 constant
500 + - pack-redundant: abstract away hash algorithm
501 + - pack-objects: abstract away hash algorithm
502 + - packfile: abstract away hash constant values
503 + - packfile: convert find_pack_entry to object_id
504 + - sha1_file: convert freshen functions to object_id
505 + - packfile: convert has_sha1_pack to object_id
506 + - packfile: remove unused member from struct pack_entry
507 + - Remove unused member in struct object_context
508 + - server-info: remove unused members from struct pack_info
509 + - cache: add a function to read an object ID from a buffer
510
511 Conversion from uchar[20] to struct object_id continues.
512
513
388 -* cc/perf-aggregate-sort (2018-03-27) 2 commits
389 - (merged to 'next' on 2018-03-29 at 0251068bac)
390 - + perf/aggregate: add --sort-by=regression option
391 - + perf/aggregate: add display_dir()
392 -
393 - Perf-test update.
394 -
395 -
396 -* ds/bsearch-hash (2018-03-25) 4 commits
397 - (merged to 'next' on 2018-03-29 at 561d5577a7)
398 - + sha1_name: use bsearch_pack() in unique_in_pack()
399 - + sha1_name: use bsearch_pack() for abbreviations
400 - + packfile: define and use bsearch_pack()
401 - + sha1_name: convert struct min_abbrev_data to object_id
402 -
403 - Code to find the length to uniquely abbreviate object names based
404 - on packfile content, which is a relatively recent addtion, has been
405 - optimized to use the same fan-out table.
406 -
407 -
408 -* eb/cred-helper-ignore-sigpipe (2018-03-29) 1 commit
409 - (merged to 'next' on 2018-03-30 at c48e98c1b1)
410 - + credential: ignore SIGPIPE when writing to credential helpers
411 -
412 - When credential helper exits very quickly without reading its
413 - input, it used to cause Git to die with SIGPIPE, which has been
414 - fixed.
415 -
416 -
417 -* en/rename-directory-detection (2018-02-27) 29 commits
418 - (merged to 'next' on 2018-03-06 at d42470f86e)
419 - + merge-recursive: ensure we write updates for directory-renamed file
420 - + merge-recursive: avoid spurious rename/rename conflict from dir renames
421 - + directory rename detection: new testcases showcasing a pair of bugs
422 - + merge-recursive: fix remaining directory rename + dirty overwrite cases
423 - + merge-recursive: fix overwriting dirty files involved in renames
424 - + merge-recursive: avoid clobbering untracked files with directory renames
425 - + merge-recursive: apply necessary modifications for directory renames
426 - + merge-recursive: when comparing files, don't include trees
427 - + merge-recursive: check for file level conflicts then get new name
428 - + merge-recursive: add computation of collisions due to dir rename & merging
429 - + merge-recursive: check for directory level conflicts
430 - + merge-recursive: add get_directory_renames()
431 - + merge-recursive: make a helper function for cleanup for handle_renames
432 - + merge-recursive: split out code for determining diff_filepairs
433 - + merge-recursive: make !o->detect_rename codepath more obvious
434 - + merge-recursive: fix leaks of allocated renames and diff_filepairs
435 - + merge-recursive: introduce new functions to handle rename logic
436 - + merge-recursive: move the get_renames() function
437 - + directory rename detection: tests for handling overwriting dirty files
438 - + directory rename detection: tests for handling overwriting untracked files
439 - + directory rename detection: miscellaneous testcases to complete coverage
440 - + directory rename detection: testcases exploring possibly suboptimal merges
441 - + directory rename detection: more involved edge/corner testcases
442 - + directory rename detection: testcases checking which side did the rename
443 - + directory rename detection: files/directories in the way of some renames
444 - + directory rename detection: partially renamed directory testcase/discussion
445 - + directory rename detection: testcases to avoid taking detection too far
446 - + directory rename detection: directory splitting testcases
447 - + directory rename detection: basic testcases
448 -
449 - Rename detection logic in "diff" family that is used in "merge" has
450 - learned to guess when all of x/a, x/b and x/c have moved to z/a,
451 - z/b and z/c, it is likely that x/d added in the meantime would also
452 - want to move to z/d by taking the hint that the entire directory
453 - 'x' moved to 'z'. A bug causing dirty files involved in a rename
454 - to be overwritten during merge has also been fixed as part of this
455 - work.
456 -
457 -
458 -* jc/test-must-be-empty (2018-03-27) 1 commit
459 - (merged to 'next' on 2018-03-29 at 2e64650f23)
460 - + test_must_be_empty: simplify file existence check
461 -
462 - Test helper update.
463 -
464 -
465 -* jk/diff-highlight-graph-fix (2018-03-21) 7 commits
466 - (merged to 'next' on 2018-03-29 at eb995f66e3)
467 - + diff-highlight: detect --graph by indent
468 - + diff-highlight: use flush() helper consistently
469 - + diff-highlight: test graphs with --color
470 - + diff-highlight: test interleaved parallel lines of history
471 - + diff-highlight: prefer "echo" to "cat" in tests
472 - + diff-highlight: use test_tick in graph test
473 - + diff-highlight: correct test graph diagram
474 -
475 - "diff-highlight" filter (in contrib/) learned to undertand "git log
476 - --graph" output better.
477 -
478 -
479 -* lv/tls-1.3 (2018-03-29) 1 commit
480 - (merged to 'next' on 2018-03-30 at 4f13731408)
481 - + http: allow use of TLS 1.3
482 -
483 - When built with more recent cURL, GIT_SSL_VERSION can now specify
484 - "tlsv1.3" as its value.
485 -
486 -
487 -* ma/shortlog-revparse (2018-03-15) 3 commits
488 - (merged to 'next' on 2018-03-15 at 2c2de7eb95)
489 - + shortlog: disallow left-over arguments outside repo
490 - + shortlog: add usage-string for stdin-reading
491 - + git-shortlog.txt: reorder usages
492 -
493 - "git shortlog cruft" aborted with a BUG message when run outside a
494 - Git repository. The command has been taught to complain about
495 - extra and unwanted arguments on its command line instead in such a
496 - case.
497 -
498 -
499 -* ml/filter-branch-no-op-error (2018-03-15) 1 commit
500 - (merged to 'next' on 2018-03-15 at ba8ac48dec)
501 - + filter-branch: return 2 when nothing to rewrite
502 -
503 - "git filter-branch" learned to use a different exit code to allow
504 - the callers to tell the case where there was no new commits to
505 - rewrite from other error cases.
506 -
507 -
508 -* nd/combined-test-helper (2018-03-27) 36 commits
509 - (merged to 'next' on 2018-03-30 at ea73d57c30)
510 - + t/helper: merge test-write-cache into test-tool
511 - + t/helper: merge test-wildmatch into test-tool
512 - + t/helper: merge test-urlmatch-normalization into test-tool
513 - + t/helper: merge test-subprocess into test-tool
514 - + t/helper: merge test-submodule-config into test-tool
515 - + t/helper: merge test-string-list into test-tool
516 - + t/helper: merge test-strcmp-offset into test-tool
517 - + t/helper: merge test-sigchain into test-tool
518 - + t/helper: merge test-sha1-array into test-tool
519 - + t/helper: merge test-scrap-cache-tree into test-tool
520 - + t/helper: merge test-run-command into test-tool
521 - + t/helper: merge test-revision-walking into test-tool
522 - + t/helper: merge test-regex into test-tool
523 - + t/helper: merge test-ref-store into test-tool
524 - + t/helper: merge test-read-cache into test-tool
525 - + t/helper: merge test-prio-queue into test-tool
526 - + t/helper: merge test-path-utils into test-tool
527 - + t/helper: merge test-online-cpus into test-tool
528 - + t/helper: merge test-mktemp into test-tool
529 - + t/helper: merge (unused) test-mergesort into test-tool
530 - + t/helper: merge (unused) test-match-trees into test-tool
531 - + t/helper: merge test-index-version into test-tool
532 - + t/helper: merge test-hashmap into test-tool
533 - + t/helper: merge test-genrandom into test-tool
534 - + t/helper: merge test-example-decorate into test-tool
535 - + t/helper: merge test-dump-split-index into test-tool
536 - + t/helper: merge test-dump-cache-tree into test-tool
537 - + t/helper: merge test-drop-caches into test-tool
538 - + t/helper: merge (unused) test-delta into test-tool
539 - + t/helper: merge test-date into test-tool
540 - + t/helper: merge test-ctype into test-tool
541 - + t/helper: merge test-config into test-tool
542 - + t/helper: merge test-lazy-init-name-hash into test-tool
543 - + t/helper: merge test-sha1 into test-tool
544 - + t/helper: merge test-chmtime into test-tool
545 - + t/helper: add an empty test-tool program
546 -
547 - Small test-helper programs have been consolidated into a single
548 - binary.
549 -
550 -
551 -* nd/parseopt-completion-more (2018-03-25) 8 commits
552 - (merged to 'next' on 2018-03-29 at 9007b165e2)
553 - + completion: use __gitcomp_builtin in _git_cherry
554 - + completion: use __gitcomp_builtin in _git_ls_tree
555 - + completion: delete option-only completion commands
556 - + completion: add --option completion for most builtin commands
557 - + completion: factor out _git_xxx calling code
558 - + completion: mention the oldest version we need to support
559 - + git.c: add hidden option --list-parseopt-builtins
560 - + git.c: move cmd_struct declaration up
561 -
562 - The mechanism to use parse-options API to automate the command line
563 - completion continues to get extended and polished.
564 -
565 -
566 -* nd/remove-ignore-env-field (2018-03-23) 6 commits
567 - (merged to 'next' on 2018-03-23 at ba9d0f2565)
568 - + repository.h: add comment and clarify repo_set_gitdir
569 - (merged to 'next' on 2018-03-15 at 802b6ea1cb)
570 - + repository: delete ignore_env member
571 - + sha1_file.c: move delayed getenv(altdb) back to setup_git_env()
572 - + repository.c: delete dead functions
573 - + repository.c: move env-related setup code back to environment.c
574 - + repository: initialize the_repository in main()
575 - (this branch is used by sb/object-store, sb/packfiles-in-repository and sb/submodule-move-nested.)
576 -
577 - Code clean-up for the "repository" abstraction.
578 -
579 -
580 -* nd/trace-with-env (2018-03-25) 1 commit
581 - (merged to 'next' on 2018-03-29 at 6890e2c39b)
582 - + run-command: use strbuf_addstr() for adding a string to a strbuf
583 -
584 - Code cleanup.
585 -
586 -
587 -* nd/worktree-prune (2018-03-15) 3 commits
588 - (merged to 'next' on 2018-03-20 at e2d9677b20)
589 - + worktree prune: improve prune logic when worktree is moved
590 - + worktree: delete dead code
591 - + gc.txt: more details about what gc does
592 -
593 - The way "git worktree prune" worked internally has been simplified,
594 - by assuming how "git worktree move" moves an existing worktree to a
595 - different place.
596 -
597 -
598 -* pk/test-avoid-pipe-hiding-exit-status (2018-03-28) 1 commit
599 - (merged to 'next' on 2018-03-30 at 4f3df09139)
600 - + test: avoid pipes in git related commands for test
514 +* sb/oid-object-info (2018-04-25) 9 commits
515 + - cache.h: allow oid_object_info to handle arbitrary repositories
516 + - packfile: add repository argument to cache_or_unpack_entry
517 + - packfile: add repository argument to unpack_entry
518 + - packfile: add repository argument to read_object
519 + - packfile: add repository argument to packed_object_info
520 + - packfile: add repository argument to packed_to_object_type
521 + - packfile: add repository argument to retry_bad_packed_offset
522 + - cache.h: add repository argument to oid_object_info
523 + - cache.h: add repository argument to oid_object_info_extended
524 + (this branch uses sb/object-store-replace.)
525
602 - Test cleanup.
526 + The codepath around object-info API has been taught to take the
527 + repository object (which in turn tells the API which object store
528 + the objects are to be located).
529
530
605 -* ps/contains-id-error-message (2018-03-22) 1 commit
606 - (merged to 'next' on 2018-03-22 at 3bb1dcd506)
607 - + parse-options: do not show usage upon invalid option value
608 -
609 - "git tag --contains no-such-commit" gave a full list of options
610 - after giving an error message.
611 -
612 -
613 -* rs/status-with-removed-submodule (2018-03-28) 1 commit
614 - (merged to 'next' on 2018-03-30 at 8a7b618bc1)
615 - + submodule: check for NULL return of get_submodule_ref_store()
616 -
617 - "git submodule status" misbehaved on a submodule that has been
618 - removed from the working tree.
619 -
620 -
621 -* sb/object-store (2018-03-26) 27 commits
622 - (merged to 'next' on 2018-03-30 at 93e3475178)
623 - + sha1_file: allow sha1_loose_object_info to handle arbitrary repositories
624 - + sha1_file: allow map_sha1_file to handle arbitrary repositories
625 - + sha1_file: allow map_sha1_file_1 to handle arbitrary repositories
626 - + sha1_file: allow open_sha1_file to handle arbitrary repositories
627 - + sha1_file: allow stat_sha1_file to handle arbitrary repositories
628 - + sha1_file: allow sha1_file_name to handle arbitrary repositories
629 - + sha1_file: add repository argument to sha1_loose_object_info
630 - + sha1_file: add repository argument to map_sha1_file
631 - + sha1_file: add repository argument to map_sha1_file_1
632 - + sha1_file: add repository argument to open_sha1_file
633 - + sha1_file: add repository argument to stat_sha1_file
634 - + sha1_file: add repository argument to sha1_file_name
635 - + sha1_file: allow prepare_alt_odb to handle arbitrary repositories
636 - + sha1_file: allow link_alt_odb_entries to handle arbitrary repositories
637 - + sha1_file: add repository argument to prepare_alt_odb
638 - + sha1_file: add repository argument to link_alt_odb_entries
639 - + sha1_file: add repository argument to read_info_alternates
640 - + sha1_file: add repository argument to link_alt_odb_entry
641 - + sha1_file: add raw_object_store argument to alt_odb_usable
642 - + pack: move approximate object count to object store
643 - + pack: move prepare_packed_git_run_once to object store
644 - + object-store: close all packs upon clearing the object store
645 - + object-store: move packed_git and packed_git_mru to object store
646 - + object-store: free alt_odb_list
647 - + object-store: move alt_odb_list and alt_odb_tail to object store
648 - + object-store: migrate alternates struct and functions from cache.h
649 - + repository: introduce raw object store field
650 - (this branch is used by sb/packfiles-in-repository and sb/submodule-move-nested.)
651 -
652 - Refactoring the internal global data structure to make it possible
653 - to open multiple repositories, work with and then close them.
654 -
655 - Rerolled by Duy on top of a separate preliminary clean-up topic.
656 - The resulting structure of the topics looked very sensible.
657 -
658 -
659 -* sb/packfiles-in-repository (2018-03-26) 12 commits
660 - (merged to 'next' on 2018-03-30 at caa68db14d)
661 - + packfile: keep prepare_packed_git() private
662 - + packfile: allow find_pack_entry to handle arbitrary repositories
663 - + packfile: add repository argument to find_pack_entry
664 - + packfile: allow reprepare_packed_git to handle arbitrary repositories
665 - + packfile: allow prepare_packed_git to handle arbitrary repositories
666 - + packfile: allow prepare_packed_git_one to handle arbitrary repositories
667 - + packfile: add repository argument to reprepare_packed_git
668 - + packfile: add repository argument to prepare_packed_git
669 - + packfile: add repository argument to prepare_packed_git_one
670 - + packfile: allow install_packed_git to handle arbitrary repositories
671 - + packfile: allow rearrange_packed_git to handle arbitrary repositories
672 - + packfile: allow prepare_packed_git_mru to handle arbitrary repositories
673 - (this branch uses sb/object-store; is tangled with sb/submodule-move-nested.)
674 -
675 - Refactoring of the internal global data structure continues.
676 -
677 -
678 -* tg/stash-untracked-with-pathspec-fix (2018-03-21) 4 commits
679 - (merged to 'next' on 2018-03-22 at 73c4bef74f)
680 - + stash: drop superfluos pathspec parameter
681 - (merged to 'next' on 2018-03-21 at 8f5b5ab131)
682 - + stash push -u: don't create empty stash
683 - + stash push: avoid printing errors
684 - + stash: fix nonsense pipeline
685 -
686 - "git stash push -u -- <pathspec>" gave an unnecessary and confusing
687 - error message when there was no tracked files that match the
688 - <pathspec>, which has been fixed.
689 -
690 -
691 -* ti/fetch-everything-local-optim (2018-03-14) 1 commit
692 - (merged to 'next' on 2018-03-15 at 2be87aa7a7)
693 - + fetch-pack.c: use oidset to check existence of loose object
694 -
695 - A "git fetch" from a repository with insane number of refs into a
696 - repository that is already up-to-date still wasted too many cycles
697 - making many lstat(2) calls to see if these objects at the tips
698 - exist as loose objects locally. These lstat(2) calls are optimized
699 - away by enumerating all loose objects beforehand.
700 -
701 - It is unknown if the new strategy negatively affects existing use
702 - cases, fetching into a repository with many loose objects from a
703 - repository with small number of refs.
704 -
705 -
706 -* ws/rebase-p (2018-03-23) 8 commits
707 - (merged to 'next' on 2018-03-29 at d20ae8510e)
708 - + rebase: remove merges_option and a blank line
709 - + rebase: remove unused code paths from git_rebase__interactive__preserve_merges
710 - + rebase: remove unused code paths from git_rebase__interactive
711 - + rebase: add and use git_rebase__interactive__preserve_merges
712 - + rebase: extract functions out of git_rebase__interactive
713 - + rebase: reindent function git_rebase__interactive
714 - + rebase: update invocation of rebase dot-sourced scripts
715 - + rebase-interactive: simplify pick_on_preserving_merges
531 +* en/unpack-trees-split-index-fix (2018-04-24) 1 commit
532 + - unpack_trees: fix breakage when o->src_index != o->dst_index
533
717 - Code clean-up.
534 + The split-index feature had a long-standing and dormant bug in
535 + certain use of the in-core merge machinery, which has been fixed.
536 +
537 + Will merge to 'next'.
538
539
720 -* yk/filter-branch-non-committish-refs (2018-03-25) 1 commit
721 - (merged to 'next' on 2018-03-29 at 8ac3806bcf)
722 - + filter-branch: fix errors caused by refs that point at non-committish
540 +* bp/merge-rename-config (2018-04-25) 2 commits
541 + - merge: add merge.aggressive config setting
542 + - merge: add merge.renames config setting
543
724 - when refs that do not point at committish are given, "git
725 - filter-branch" gave a misleading error messages. This has been
726 - corrected.
544
545 +* en/git-debugger (2018-04-25) 1 commit
546 + - Make running git under other debugger-like programs easy
547
729 -* ys/bisect-object-id-missing-conversion-fix (2018-03-25) 1 commit
730 - (merged to 'next' on 2018-03-29 at 7d988b57d4)
731 - + bisect: use oid_to_hex() for converting object_id hashes to hex strings
548
733 - Code clean-up.
549 +* js/no-pager-shorthand (2018-04-25) 1 commit
550 + - git: add -N as a short option for --no-pager
551 +
552 + "git --no-pager cmd" did not have short-and-sweet single letter
553 + option.
554 +
555 +
556 +* sb/diff-color-move-more (2018-04-25) 7 commits
557 + - diff.c: add --color-moved-ignore-space-delta option
558 + - diff.c: decouple white space treatment from move detection algorithm
559 + - diff.c: add a blocks mode for moved code detection
560 + - diff.c: adjust hash function signature to match hashmap expectation
561 + - diff.c: do not pass diff options as keydata to hashmap
562 + - xdiff/xdiffi.c: remove unneeded function declarations
563 + - xdiff/xdiff.h: remove unused flags
564 +
565 + "git diff --color-moved" feature has further been tweaked.
566 +
567
568 --------------------------------------------------
569 [Stalled]
570
571 +* fg/completion-external (2018-04-11) 1 commit
572 + - completion: load completion file for external subcommand
573 +
574 + The command line completion mechanism (in contrib/) learned to load
575 + custom completion file for "git $command" where $command is a
576 + custom "git-$command" that the end user has on the $PATH when using
577 + newer version of bash.
578 +
579 + Hold.
580 + cf. <CAM0VKj=pDVxfJtUZx7c6uCmPxwQFPBOQYdd7NH=YnVG86iK0Pw@mail.gmail.com>
581 +
582 +
583 * ld/p4-unshelve (2018-02-22) 1 commit
584 - git-p4: add unshelve command
585
@@ -817,177 +662,256 @@ of the repositories listed at
662 --------------------------------------------------
663 [Cooking]
664
820 -* sb/blame-color (2018-04-17) 2 commits
821 - - builtin/blame: highlight recently changed lines
822 - - builtin/blame: dim uninteresting metadata lines
665 +* so/glossary-ancestor (2018-04-17) 1 commit
666 + (merged to 'next' on 2018-04-25 at 0a849fee00)
667 + + glossary: substitute "ancestor" for "direct ancestor" in 'push' description.
668
824 - "git blame" learns to unhighlight uninteresting metadata from the
825 - originating commit on lines that are the same as the previous one,
826 - and also paint lines in different colors depending on the age of
827 - the commit.
669 + Docfix.
670
829 - The code to handle interaction between the config and command line
830 - option smelled fishy. Reviews and discussions are welcomed (not
831 - just to this topic but others too ;-).
671 + Will merge to 'master'.
672
673
834 -* ab/simplify-perl-makefile (2018-04-11) 1 commit
835 - (merged to 'next' on 2018-04-17 at 4448756934)
836 - + perl: fix installing modules from contrib
674 +* bt/gpg-interface (2018-04-16) 7 commits
675 + - gpg-interface: find the last gpg signature line
676 + - gpg-interface: extract gpg line matching helper
677 + - gpg-interface: fix const-correctness of "eol" pointer
678 + - gpg-interface: use size_t for signature buffer size
679 + - gpg-interface: modernize function declarations
680 + - gpg-interface: handle bool user.signingkey
681 + - t7004: fix mistaken tag name
682
838 - Recent simplification of build procedure forgot a bit of tweak to
839 - the build procedure of contrib/mw-to-git/
683 + What is queued here is only the obviously correct and
684 + uncontroversial code clean-up part, which is an earlier 7 patches,
685 + of a larger series.
686
841 - Will merge to 'master'.
687 + The remainder that is not queued introuces a few configuration
688 + variables to deal with e-signature backends with different
689 + signature format.
690
691 + Will merge to 'next'.
692
844 -* ak/bisect-doc-typofix (2018-04-07) 1 commit
845 - (merged to 'next' on 2018-04-17 at eafdeb0248)
846 - + Documentation/git-bisect.txt: git bisect term → git bisect terms
693
848 - Docfix.
694 +* ds/generation-numbers (2018-04-11) 10 commits
695 + - commit: add short-circuit to paint_down_to_common()
696 + - commit: use generation numbers for in_merge_bases()
697 + - ref-filter: use generation number for --contains
698 + - commit-graph.txt: update future work
699 + - commit.c: use generation to halt paint walk
700 + - commit: use generations in paint_down_to_common()
701 + - commit-graph: compute generation numbers
702 + - commit: add generation number to struct commmit
703 + - merge: check config before loading commits
704 + - object.c: parse commit in graph first
705 + (this branch uses ds/commit-graph; is tangled with ds/lazy-load-trees.)
706
850 - Will merge to 'master'.
707 + A recently added "commit-graph" datafile has learned to store
708 + pre-computed generation numbers to speed up the decisions to stop
709 + history traversal.
710 +
711 + Expecting a reroll.
712 + cf. <cc58d8c1-f8de-4841-934f-56e4ad7729aa@gmail.com>
713
714
853 -* bw/commit-partial-from-subdirectory-fix (2018-04-05) 1 commit
854 - (merged to 'next' on 2018-04-17 at 1e56bbc14d)
855 - + commit: allow partial commits with relative paths
715 +* en/rename-directory-detection-reboot (2018-04-25) 36 commits
716 + - merge-recursive: fix check for skipability of working tree updates
717 + - merge-recursive: make "Auto-merging" comment show for other merges
718 + - merge-recursive: fix remainder of was_dirty() to use original index
719 + - merge-recursive: fix was_tracked() to quit lying with some renamed paths
720 + - t6046: testcases checking whether updates can be skipped in a merge
721 + - merge-recursive: avoid triggering add_cacheinfo error with dirty mod
722 + - merge-recursive: move more is_dirty handling to merge_content
723 + - merge-recursive: improve add_cacheinfo error handling
724 + - merge-recursive: avoid spurious rename/rename conflict from dir renames
725 + - directory rename detection: new testcases showcasing a pair of bugs
726 + - merge-recursive: fix remaining directory rename + dirty overwrite cases
727 + - merge-recursive: fix overwriting dirty files involved in renames
728 + - merge-recursive: avoid clobbering untracked files with directory renames
729 + - merge-recursive: apply necessary modifications for directory renames
730 + - merge-recursive: when comparing files, don't include trees
731 + - merge-recursive: check for file level conflicts then get new name
732 + - merge-recursive: add computation of collisions due to dir rename & merging
733 + - merge-recursive: check for directory level conflicts
734 + - merge-recursive: add get_directory_renames()
735 + - merge-recursive: make a helper function for cleanup for handle_renames
736 + - merge-recursive: split out code for determining diff_filepairs
737 + - merge-recursive: make !o->detect_rename codepath more obvious
738 + - merge-recursive: fix leaks of allocated renames and diff_filepairs
739 + - merge-recursive: introduce new functions to handle rename logic
740 + - merge-recursive: move the get_renames() function
741 + - directory rename detection: tests for handling overwriting dirty files
742 + - directory rename detection: tests for handling overwriting untracked files
743 + - directory rename detection: miscellaneous testcases to complete coverage
744 + - directory rename detection: testcases exploring possibly suboptimal merges
745 + - directory rename detection: more involved edge/corner testcases
746 + - directory rename detection: testcases checking which side did the rename
747 + - directory rename detection: files/directories in the way of some renames
748 + - directory rename detection: partially renamed directory testcase/discussion
749 + - directory rename detection: testcases to avoid taking detection too far
750 + - directory rename detection: directory splitting testcases
751 + - directory rename detection: basic testcases
752
857 - "cd sub/dir && git commit ../path" ought to record the changes to
858 - the file "sub/path", but this regressed long time ago.
753 + Reboot of an attempt to detect wholesale directory renames and use
754 + it while merging.
755
860 - Will merge to 'master'.
756 + Expecting a reroll.
757 + cf. <CABPp-BHZ-agTY77iqe9BxLC2ijrcKO+UPk83Bn+0cckA3fJFYg@mail.gmail.com>
758
759
863 -* ds/lazy-load-trees (2018-04-11) 5 commits
864 - - commit-graph: lazy-load trees for commits
865 - - treewide: replace maybe_tree with accessor methods
866 - - commit: create get_commit_tree() method
867 - - treewide: rename tree to maybe_tree
868 - - Merge branch 'bw/c-plus-plus' into ds/lazy-load-trees
869 - (this branch uses ds/commit-graph; is tangled with ds/generation-numbers.)
760 +* nd/command-list (2018-04-24) 6 commits
761 + - help: use command-list.txt for the source of guides
762 + - help: add "-a --verbose" to list all commands with synopsis
763 + - git.c: implement --list-cmds=porcelain
764 + - generate-cmdlist.sh: keep all information in common-cmds.h
765 + - git.c: implement --list-cmds=all and use it in git-completion.bash
766 + - git.c: convert --list-*builtins to --list-cmds=*
767
871 - The code has been taught to use the duplicated information stored
872 - in the commit-graph file to learn the tree object name for a commit
873 - to avoid opening and parsing the commit object when it makes sense
874 - to do so.
768 + The list of commands with their various attributes were spread
769 + across a few places in the build procedure, but it now is getting a
770 + bit more consolidated to allow more automation.
771
876 - Will merge to 'next'.
772 + Expecting a reroll.
773 + Bash-isms and other things need to be fixed.
774
775
879 -* jk/t5561-missing-curl (2018-04-05) 2 commits
880 - (merged to 'next' on 2018-04-17 at d8592fa6c2)
881 - + t5561: skip tests if curl is not available
882 - + t5561: drop curl stderr redirects
776 +* sb/object-store-replace (2018-04-12) 15 commits
777 + (merged to 'next' on 2018-04-25 at 9a213fb505)
778 + + replace-object: allow lookup_replace_object to handle arbitrary repositories
779 + + replace-object: allow do_lookup_replace_object to handle arbitrary repositories
780 + + replace-object: allow prepare_replace_object to handle arbitrary repositories
781 + + refs: allow for_each_replace_ref to handle arbitrary repositories
782 + + refs: store the main ref store inside the repository struct
783 + + replace-object: add repository argument to lookup_replace_object
784 + + replace-object: add repository argument to do_lookup_replace_object
785 + + replace-object: add repository argument to prepare_replace_object
786 + + refs: add repository argument to for_each_replace_ref
787 + + refs: add repository argument to get_main_ref_store
788 + + replace-object: check_replace_refs is safe in multi repo environment
789 + + replace-object: eliminate replace objects prepared flag
790 + + object-store: move lookup_replace_object to replace-object.h
791 + + replace-object: move replace_map to object store
792 + + replace_object: use oidmap
793 + (this branch is used by sb/oid-object-info.)
794
884 - Test fixes.
795 + The effort to pass the repository in-core structure throughout the
796 + API continues. This round deals with the code that implements the
797 + refs/replace/ mechanism.
798
799 Will merge to 'master'.
800
801
889 -* ks/branch-list-detached-rebase-i (2018-04-05) 2 commits
890 - (merged to 'next' on 2018-04-17 at 5c2842c3f9)
891 - + t3200: verify "branch --list" sanity when rebasing from detached HEAD
892 - + branch --list: print useful info whilst interactive rebasing a detached HEAD
802 +* hn/bisect-first-parent (2018-04-21) 1 commit
803 + - bisect: create 'bisect_flags' parameter in find_bisection()
804
894 - "git branch --list" during an interrupted "rebase -i" now lets
895 - users distinguish the case where a detached HEAD is being rebased
896 - and a normal branch is being rebased.
805 + Preliminary code update to allow passing more flags down the
806 + bisection codepath in the future.
807
898 - Will merge to 'master'.
808 + We do not add random code that does not have real users to our
809 + codebase, so let's have it wait until such a real code materializes
810 + before too long.
811
812
901 -* lw/daemon-log-destination (2018-04-09) 1 commit
902 - (merged to 'next' on 2018-04-17 at b06cdcc45e)
903 - + daemon.c: fix condition for redirecting stderr
813 +* sg/complete-paths (2018-04-17) 11 commits
814 + - completion: fill COMPREPLY directly when completing paths
815 + - completion: improve handling quoted paths in 'git ls-files's output
816 + - completion: remove repeated dirnames with 'awk' during path completion
817 + - t9902-completion: ignore COMPREPLY element order in some tests
818 + - completion: use 'awk' to strip trailing path components
819 + - completion: let 'ls-files' and 'diff-index' filter matching paths
820 + - completion: improve handling quoted paths on the command line
821 + - completion: support completing non-ASCII pathnames
822 + - completion: simplify prefix path component handling during path completion
823 + - completion: move __git_complete_index_file() next to its helpers
824 + - t9902-completion: add tests demonstrating issues with quoted pathnames
825
905 - Recent introduction of "--log-destination" option to "git daemon"
906 - did not work well when the daemon was run under "--inetd" mode.
826 + Command line completion (in contrib/) learned to complete pathnames
827 + for various commands better.
828
908 - Will merge to 'master'.
829 + Will merge to 'next'.
830
831
911 -* mn/send-email-credential-doc (2018-04-08) 1 commit
912 - (merged to 'next' on 2018-04-17 at c4db21eb9b)
913 - + send-email: simplify Gmail example in the documentation
832 +* tq/t1510 (2018-04-17) 1 commit
833 + (merged to 'next' on 2018-04-25 at 5710c81979)
834 + + t1510-repo-setup.sh: remove useless mkdir
835
915 - Doc update.
836 + Test cleanup.
837
838 Will merge to 'master'.
839
840
920 -* nd/worktree-move (2018-04-05) 1 commit
921 - (merged to 'next' on 2018-04-17 at 11ca393110)
922 - + t2028: tighten grep expression to make "move worktree" test more robust
923 - (this branch is used by es/worktree-docs.)
841 +* sb/blame-color (2018-04-24) 3 commits
842 + - builtin/blame: add new coloring scheme config
843 + - builtin/blame: highlight recently changed lines
844 + - builtin/blame: dim uninteresting metadata lines
845
925 - Test update.
846 + "git blame" learns to unhighlight uninteresting metadata from the
847 + originating commit on lines that are the same as the previous one,
848 + and also paint lines in different colors depending on the age of
849 + the commit.
850
927 - Will merge to 'master'.
851
852 +* ab/simplify-perl-makefile (2018-04-19) 2 commits
853 + (merged to 'next' on 2018-04-25 at 906cf21682)
854 + + Makefile: mark perllibdir as a .PHONY target
855 + (merged to 'next' on 2018-04-17 at 4448756934)
856 + + perl: fix installing modules from contrib
857
930 -* ab/git-svn-get-record-typofix (2018-04-09) 1 commit
931 - - git-svn: avoid warning on undef readline()
858 + Recent simplification of build procedure forgot a bit of tweak to
859 + the build procedure of contrib/mw-to-git/
860
933 - "git svn" had a minor thinko/typo which has been fixed.
861 + Will merge to 'master'.
862
863
936 -* br/mergetools-guiffy (2018-04-06) 1 commit
937 - (merged to 'next' on 2018-04-17 at 8ec0697d5d)
938 - + mergetools: add support for guiffy
864 +* ds/lazy-load-trees (2018-04-11) 5 commits
865 + (merged to 'next' on 2018-04-25 at b90813f421)
866 + + commit-graph: lazy-load trees for commits
867 + + treewide: replace maybe_tree with accessor methods
868 + + commit: create get_commit_tree() method
869 + + treewide: rename tree to maybe_tree
870 + + Merge branch 'bw/c-plus-plus' into ds/lazy-load-trees
871 + (this branch uses ds/commit-graph; is tangled with ds/generation-numbers.)
872
940 - "git mergetools" learned talking to guiffy.
873 + The code has been taught to use the duplicated information stored
874 + in the commit-graph file to learn the tree object name for a commit
875 + to avoid opening and parsing the commit object when it makes sense
876 + to do so.
877
878 Will merge to 'master'.
879
880
945 -* en/doc-typoes (2018-04-09) 2 commits
946 - (merged to 'next' on 2018-04-17 at 81e5c8da18)
947 - + Documentation: normalize spelling of 'normalised'
948 - + Documentation: fix several one-character-off spelling errors
881 +* ab/git-svn-get-record-typofix (2018-04-09) 1 commit
882 + - git-svn: avoid warning on undef readline()
883
950 - Docfix.
884 + "git svn" had a minor thinko/typo which has been fixed.
885
952 - Will merge to 'master'.
886 + Will merge to 'next'.
887
888
889 * hn/sort-ls-remote (2018-04-09) 1 commit
890 - ls-remote: create '--sort' option
957 - (this branch uses jk/ref-array-push.)
891
892 "git ls-remote" learned an option to allow sorting its output based
893 on the refnames being shown.
894
962 -
963 -* jk/ref-array-push (2018-04-09) 3 commits
964 - (merged to 'next' on 2018-04-17 at 61859b271b)
965 - + ref-filter: factor ref_array pushing into its own function
966 - + ref-filter: make ref_array_item allocation more consistent
967 - + ref-filter: use "struct object_id" consistently
968 - (this branch is used by hn/sort-ls-remote.)
969 -
970 - API clean-up aournd ref-filter code.
971 -
972 - Will merge to 'master'.
895 + Will merge to 'next'.
896
897
898 * js/empty-config-section-fix (2018-04-09) 15 commits
976 - - git_config_set: reuse empty sections
977 - - git config --unset: remove empty sections (in the common case)
978 - - git_config_set: make use of the config parser's event stream
979 - - git_config_set: do not use a state machine
980 - - config_set_store: rename some fields for consistency
981 - - config: avoid using the global variable `store`
982 - - config: introduce an optional event stream while parsing
983 - - t1300: `--unset-all` can leave an empty section behind (bug)
984 - - t1300: add a few more hairy examples of sections becoming empty
985 - - t1300: remove unreasonable expectation from TODO
986 - - t1300: avoid relying on a bug
987 - - config --replace-all: avoid extra line breaks
988 - - t1300: demonstrate that --replace-all can "invent" newlines
989 - - t1300: rename it to reflect that `repo-config` was deprecated
990 - - git_config_set: fix off-by-two
899 + (merged to 'next' on 2018-04-25 at 1690df3e5f)
900 + + git_config_set: reuse empty sections
901 + + git config --unset: remove empty sections (in the common case)
902 + + git_config_set: make use of the config parser's event stream
903 + + git_config_set: do not use a state machine
904 + + config_set_store: rename some fields for consistency
905 + + config: avoid using the global variable `store`
906 + + config: introduce an optional event stream while parsing
907 + + t1300: `--unset-all` can leave an empty section behind (bug)
908 + + t1300: add a few more hairy examples of sections becoming empty
909 + + t1300: remove unreasonable expectation from TODO
910 + + t1300: avoid relying on a bug
911 + + config --replace-all: avoid extra line breaks
912 + + t1300: demonstrate that --replace-all can "invent" newlines
913 + + t1300: rename it to reflect that `repo-config` was deprecated
914 + + git_config_set: fix off-by-two
915
916 "git config --unset a.b", when "a.b" is the last variable in an
917 otherwise empty section "a", left an empty section "a" behind, and
@@ -995,52 +919,15 @@ of the repositories listed at
919 empty shell and instead created a new one. These have been
920 (partially) corrected.
921
998 - Will merge to 'next'.
999 -
1000 -
1001 -* js/t5404-path-fix (2018-04-09) 1 commit
1002 - (merged to 'next' on 2018-04-17 at 94092f2896)
1003 - + t5404: relax overzealous test
1004 -
1005 - Test fix.
1006 -
1007 - Will merge to 'master'.
1008 -
1009 -
1010 -* ps/test-chmtime-get (2018-04-09) 1 commit
1011 - (merged to 'next' on 2018-04-17 at dcb138d8b1)
1012 - + t/helper: 'test-chmtime (--get|-g)' to print only the mtime
1013 -
1014 - Test cleanup.
1015 -
1016 - Will merge to 'master'.
1017 -
1018 -
1019 -* es/fread-reads-dir-autoconf-fix (2018-04-09) 1 commit
1020 - (merged to 'next' on 2018-04-17 at 538601fef3)
1021 - + configure.ac: fix botched FREAD_READS_DIRECTORIES check
1022 -
1023 - Small fix to the autoconf build procedure.
1024 -
1025 - Will merge to 'master'.
1026 -
1027 -
1028 -* es/worktree-docs (2018-04-09) 2 commits
1029 - (merged to 'next' on 2018-04-17 at 15a098e9b1)
1030 - + git-worktree.txt: unify command-line prompt in example blocks
1031 - + git-worktree.txt: recommend 'git worktree remove' over manual deletion
1032 - (this branch uses nd/worktree-move.)
1033 -
1034 - Doc updates.
1035 -
922 Will merge to 'master'.
923
924
925 * nd/warn-more-for-devs (2018-04-16) 4 commits
1040 - - Makefile: add a DEVOPTS to get all of -Wextra
1041 - - Makefile: add a DEVOPTS to suppress -Werror under DEVELOPER
1042 - - Makefile: detect compiler and enable more warnings in DEVELOPER=1
1043 - - connect.c: mark die_initial_contact() NORETURN
926 + (merged to 'next' on 2018-04-25 at 2978e61414)
927 + + Makefile: add a DEVOPTS to get all of -Wextra
928 + + Makefile: add a DEVOPTS to suppress -Werror under DEVELOPER
929 + + Makefile: detect compiler and enable more warnings in DEVELOPER=1
930 + + connect.c: mark die_initial_contact() NORETURN
931
932 The build procedure "make DEVELOPER=YesPlease" learned to enable a
933 bit more warning options depending on the compiler used to help
@@ -1048,27 +935,29 @@ of the repositories listed at
935 available now, for those who want to help fixing warnings we
936 usually ignore, for example.
937
1051 - Will merge to 'next'.
938 + Will merge to 'master'.
939
940
941 * sb/submodule-move-nested (2018-03-29) 6 commits
1055 - - submodule: fixup nested submodules after moving the submodule
1056 - - submodule-config: remove submodule_from_cache
1057 - - submodule-config: add repository argument to submodule_from_{name, path}
1058 - - submodule-config: allow submodule_free to handle arbitrary repositories
1059 - - grep: remove "repo" arg from non-supporting funcs
1060 - - submodule.h: drop declaration of connect_work_tree_and_git_dir
942 + (merged to 'next' on 2018-04-25 at 86b177433a)
943 + + submodule: fixup nested submodules after moving the submodule
944 + + submodule-config: remove submodule_from_cache
945 + + submodule-config: add repository argument to submodule_from_{name, path}
946 + + submodule-config: allow submodule_free to handle arbitrary repositories
947 + + grep: remove "repo" arg from non-supporting funcs
948 + + submodule.h: drop declaration of connect_work_tree_and_git_dir
949
950 Moving a submodule that itself has submodule in it with "git mv"
951 forgot to make necessary adjustment to the nested sub-submodules;
952 now the codepath learned to recurse into the submodules.
953
1066 - What's the doneness of this thing?
954 + Will merge to 'master'.
955
956
1069 -* tb/config-type (2018-04-10) 2 commits
1070 - - builtin/config.c: support `--type=<type>` as preferred alias for `--<type>`
1071 - - builtin/config.c: treat type specifiers singularly
957 +* tb/config-type (2018-04-19) 2 commits
958 + (merged to 'next' on 2018-04-25 at fe69e93c82)
959 + + builtin/config.c: support `--type=<type>` as preferred alias for `--<type>`
960 + + builtin/config.c: treat type specifiers singularly
961 (this branch is used by tb/config-default.)
962
963 The "git config" command uses separate options e.g. "--int",
@@ -1081,10 +970,11 @@ of the repositories listed at
970 This looked more or less ready, IIRC
971
972
1084 -* tb/config-default (2018-04-10) 3 commits
1085 - - builtin/config: introduce `color` type specifier
1086 - - config.c: introduce 'git_config_color' to parse ANSI colors
1087 - - builtin/config: introduce `--default`
973 +* tb/config-default (2018-04-23) 3 commits
974 + (merged to 'next' on 2018-04-25 at 59bb6beb2a)
975 + + builtin/config: introduce `color` type specifier
976 + + config.c: introduce 'git_config_color' to parse ANSI colors
977 + + builtin/config: introduce `--default`
978 (this branch uses tb/config-type.)
979
980 "git config --get" learned the "--default" option, to help the
@@ -1097,31 +987,6 @@ of the repositories listed at
987 Will wait on the tb/config-type topic.
988
989
1100 -* jk/flockfile-stdio (2018-03-30) 1 commit
1101 - (merged to 'next' on 2018-04-17 at e11bd565f4)
1102 - + config: move flockfile() closer to unlocked functions
1103 -
1104 - Code clean-up.
1105 -
1106 - Will merge to 'master'.
1107 -
1108 -
1109 -* jk/relative-directory-fix (2018-03-30) 5 commits
1110 - (merged to 'next' on 2018-04-17 at 1b8cc9dcb4)
1111 - + refs: use chdir_notify to update cached relative paths
1112 - + set_work_tree: use chdir_notify
1113 - + add chdir-notify API
1114 - + trace.c: export trace_setup_key
1115 - + set_git_dir: die when setenv() fails
1116 -
1117 - Some codepaths, including the refs API, get and keep relative
1118 - paths, that go out of sync when the process does chdir(2). The
1119 - chdir-notify API is introduced to let these codepaths adjust these
1120 - cached paths to the new current directory.
1121 -
1122 - Will merge to 'master'.
1123 -
1124 -
990 * jh/json-writer (2018-03-28) 1 commit
991 - json_writer: new routines to create data in JSON format
992
@@ -1134,16 +999,17 @@ of the repositories listed at
999
1000
1001 * ot/libify-get-ref-atom-value (2018-03-29) 6 commits
1137 - - ref-filter: libify get_ref_atom_value()
1138 - - ref-filter: add return value to parsers
1139 - - ref-filter: change parsing function error handling
1140 - - ref-filter: add return value && strbuf to handlers
1141 - - ref-filter: start adding strbufs with errors
1142 - - ref-filter: add shortcut to work with strbufs
1002 + (merged to 'next' on 2018-04-25 at 056bcaa69c)
1003 + + ref-filter: libify get_ref_atom_value()
1004 + + ref-filter: add return value to parsers
1005 + + ref-filter: change parsing function error handling
1006 + + ref-filter: add return value && strbuf to handlers
1007 + + ref-filter: start adding strbufs with errors
1008 + + ref-filter: add shortcut to work with strbufs
1009
1010 Code restructuring, in preparation for further work.
1011
1146 - Will merge to 'next'.
1012 + Will merge to 'master'.
1013
1014
1015 * jk/branch-l-0-deprecation (2018-03-26) 3 commits
@@ -1181,54 +1047,17 @@ of the repositories listed at
1047 Will keep in 'pu'.
1048
1049
1184 -* jm/mem-pool (2018-04-12) 3 commits
1185 - (merged to 'next' on 2018-04-17 at 8a3641ab3a)
1186 - + mem-pool: move reusable parts of memory pool into its own file
1187 - + fast-import: introduce mem_pool type
1188 - + fast-import: rename mem_pool type to mp_block
1189 -
1190 - An reusable "memory pool" implementation has been extracted from
1191 - fast-import.c, which in turn has become the first user of the
1192 - mem-pool API.
1193 -
1194 - Will merge to 'master'.
1195 -
1196 -
1197 -* pw/rebase-keep-empty-fixes (2018-03-29) 3 commits
1198 - (merged to 'next' on 2018-04-17 at 10a4d92060)
1199 - + rebase: respect --no-keep-empty
1200 - + rebase -i --keep-empty: don't prune empty commits
1201 - + rebase --root: stop assuming squash_onto is unset
1202 - (this branch is used by pw/rebase-signoff.)
1203 -
1204 - "git rebase --keep-empty" still removed an empty commit if the
1205 - other side contained an empty commit (due to the "does an
1206 - equivalent patch exist already?" check), which has been corrected.
1207 -
1208 - Will merge to 'master'.
1209 -
1210 -
1211 -* pw/rebase-signoff (2018-03-29) 4 commits
1212 - (merged to 'next' on 2018-04-17 at fbdc16e20e)
1213 - + rebase --keep-empty: always use interactive rebase
1214 - + rebase -p: error out if --signoff is given
1215 - + rebase: extend --signoff support
1216 - + Merge branch 'pw/rebase-keep-empty-fixes' into pw/rebase-signoff
1217 - (this branch uses pw/rebase-keep-empty-fixes.)
1218 -
1219 - "git rebase" has learned to honor "--signoff" option when using
1220 - backends other than "am" (but not "--preserve-merges").
1221 -
1222 - Will merge to 'master'.
1223 -
1224 -
1225 -* dj/runtime-prefix (2018-04-11) 5 commits
1050 +* dj/runtime-prefix (2018-04-24) 7 commits
1051 + (merged to 'next' on 2018-04-25 at e7e635a70e)
1052 + + Makefile: quote $INSTLIBDIR when passing it to sed
1053 + + Makefile: remove unused @@PERLLIBDIR@@ substitution variable
1054 (merged to 'next' on 2018-04-17 at a69aaa7a22)
1055 + mingw/msvc: use the new-style RUNTIME_PREFIX helper
1056 + exec_cmd: provide a new-style RUNTIME_PREFIX helper for Windows
1057 + exec_cmd: RUNTIME_PREFIX on some POSIX systems
1058 + Makefile: add Perl runtime prefix support
1059 + Makefile: generate Perl header from template file
1060 + (this branch is tangled with js/runtime-prefix.)
1061
1062 A build-time option has been added to allow Git to be told to refer
1063 to its associated files relative to the main binary, in the same
@@ -1239,47 +1068,13 @@ of the repositories listed at
1068
1069
1070 * ab/nuke-emacs-contrib (2018-04-16) 1 commit
1242 - - git{,-blame}.el: remove old bitrotting Emacs code
1071 + (merged to 'next' on 2018-04-25 at 9b133d8a65)
1072 + + git{,-blame}.el: remove old bitrotting Emacs code
1073
1074 The scripts in contrib/emacs/ have outlived their usefulness and
1075 have been replaced with a stub that errors out and tells the user
1076 there are replacements.
1077
1248 - Will merge to 'next'.
1249 -
1250 -
1251 -* bb/git-gui-ssh-key-files (2018-03-02) 2 commits
1252 - (merged to 'next' on 2018-04-17 at e439f0398d)
1253 - + Merge branch 'bb/ssh-key-files' of git-gui into bb/git-gui-ssh-key-files
1254 - + git-gui: search for all current SSH key types
1255 -
1256 - "git gui" learned that "~/.ssh/id_ecdsa.pub" and
1257 - "~/.ssh/id_ed25519.pub" are also possible SSH key files.
1258 -
1259 - Will merge to 'master'.
1260 -
1261 -
1262 -* bp/git-gui-bind-kp-enter (2018-03-02) 2 commits
1263 - (merged to 'next' on 2018-04-17 at 35828e90e2)
1264 - + Merge branch 'bp/bind-kp-enter' of git-gui into bp/git-gui-bind-kp-enter
1265 - + git-gui: bind CTRL/CMD+numpad ENTER to do_commit
1266 -
1267 - "git gui" performs commit upon CTRL/CMD+ENTER but the
1268 - CTRL/CMD+KP_ENTER (i.e. enter key on the numpad) did not have the
1269 - same key binding. It now does.
1270 -
1271 - Will merge to 'master'.
1272 -
1273 -
1274 -* cb/git-gui-ttk-style (2018-03-05) 2 commits
1275 - (merged to 'next' on 2018-04-17 at 1a4f677a0d)
1276 - + Merge branch 'cb/ttk-style' of git-gui into cb/git-gui-ttk-style
1277 - + git-gui: workaround ttk:style theme use
1278 -
1279 - "git gui" has been taught to work with old versions of tk (like
1280 - 8.5.7) that do not support "ttk::style theme use" as a way to query
1281 - the current theme.
1282 -
1078 Will merge to 'master'.
1079
1080
@@ -1344,28 +1139,29 @@ of the repositories listed at
1139
1140
1141 * ds/commit-graph (2018-04-11) 16 commits
1347 - - commit-graph: implement "--append" option
1348 - - commit-graph: build graph from starting commits
1349 - - commit-graph: read only from specific pack-indexes
1350 - - commit: integrate commit graph with commit parsing
1351 - - commit-graph: close under reachability
1352 - - commit-graph: add core.commitGraph setting
1353 - - commit-graph: implement git commit-graph read
1354 - - commit-graph: implement git-commit-graph write
1355 - - commit-graph: implement write_commit_graph()
1356 - - commit-graph: create git-commit-graph builtin
1357 - - graph: add commit graph design document
1358 - - commit-graph: add format document
1359 - - csum-file: refactor finalize_hashfile() method
1360 - - csum-file: rename hashclose() to finalize_hashfile()
1361 - - Merge branch 'jk/cached-commit-buffer' into HEAD
1362 - - Merge branch 'jt/binsearch-with-fanout' into HEAD
1142 + (merged to 'next' on 2018-04-25 at 18af3d28d9)
1143 + + commit-graph: implement "--append" option
1144 + + commit-graph: build graph from starting commits
1145 + + commit-graph: read only from specific pack-indexes
1146 + + commit: integrate commit graph with commit parsing
1147 + + commit-graph: close under reachability
1148 + + commit-graph: add core.commitGraph setting
1149 + + commit-graph: implement git commit-graph read
1150 + + commit-graph: implement git-commit-graph write
1151 + + commit-graph: implement write_commit_graph()
1152 + + commit-graph: create git-commit-graph builtin
1153 + + graph: add commit graph design document
1154 + + commit-graph: add format document
1155 + + csum-file: refactor finalize_hashfile() method
1156 + + csum-file: rename hashclose() to finalize_hashfile()
1157 + + Merge branch 'jk/cached-commit-buffer' into HEAD
1158 + + Merge branch 'jt/binsearch-with-fanout' into HEAD
1159 (this branch is used by ds/generation-numbers and ds/lazy-load-trees.)
1160
1161 Precompute and store information necessary for ancestry traversal
1162 in a separate file to optimize graph walking.
1163
1368 - Will merge to 'next'.
1164 + Will merge to 'master'.
1165
1166
1167 * pc/submodule-helper-foreach (2018-02-02) 5 commits
@@ -1379,7 +1175,7 @@ of the repositories listed at
1175 e.g. cf. <20180206150044.1bffbb573c088d38c8e44bf5@google.com>
1176
1177
1382 -* tg/worktree-add-existing-branch (2018-04-16) 4 commits
1178 +* tg/worktree-add-existing-branch (2018-04-25) 4 commits
1179 - worktree: teach "add" to check out existing branches
1180 - worktree: factor out dwim_branch function
1181 - worktree: improve message when creating a new worktree
@@ -1387,10 +1183,10 @@ of the repositories listed at
1183
1184 "git worktree add" learned to check out an existing branch.
1185
1390 - Will merge to 'next'.
1186 + Is this ready for 'next'?
1187
1188
1393 -* js/rebase-recreate-merge (2018-04-11) 15 commits
1189 +* js/rebase-recreate-merge (2018-04-24) 16 commits
1190 - rebase -i --rebase-merges: add a section to the man page
1191 - rebase -i: introduce --rebase-merges=[no-]rebase-cousins
1192 - pull: accept --rebase=merges to recreate the branch topology
@@ -1402,16 +1198,17 @@ of the repositories listed at
1198 - rebase-helper --make-script: introduce a flag to rebase merges
1199 - sequencer: fast-forward `merge` commands, if possible
1200 - sequencer: introduce the `merge` command
1405 - - sequencer: introduce new commands to reset the revision
1201 - git-rebase--interactive: clarify arguments
1202 + - sequencer: offer helpful advice when a command was rescheduled
1203 + - sequencer: refactor how original todo list lines are accessed
1204 - sequencer: make rearrange_squash() a bit more obvious
1205 - sequencer: avoid using errno clobbered by rollback_lock_file()
1206
1207 "git rebase" learned "--rebase-merges" to transplant the whole
1208 topology of commit graph elsewhere.
1209
1413 - This looked more or less ready for 'next'. Please stop me if there
1414 - are remaining issues I forgot about.
1210 + Was on hold. What's the donness of this thing?
1211 + cf. <nycvar.QRO.7.76.6.1804210017020.4241@ZVAVAG-6OXH6DA.rhebcr.pbec.zvpebfbsg.pbz>
1212
1213
1214 * bw/protocol-v2 (2018-03-15) 35 commits
@@ -1451,6 +1248,7 @@ of the repositories listed at
1248 + pkt-line: add delim packet support
1249 + pkt-line: allow peeking a packet line without consuming it
1250 + pkt-line: introduce packet_read_with_status
1251 + (this branch is used by bw/server-options.)
1252
1253 The beginning of the next-gen transfer protocol.
1254
@@ -1458,22 +1256,23 @@ of the repositories listed at
1256
1257
1258 * ls/checkout-encoding (2018-04-16) 10 commits
1461 - - convert: add round trip check based on 'core.checkRoundtripEncoding'
1462 - - convert: add tracing for 'working-tree-encoding' attribute
1463 - - convert: check for detectable errors in UTF encodings
1464 - - convert: add 'working-tree-encoding' attribute
1465 - - utf8: add function to detect a missing UTF-16/32 BOM
1466 - - utf8: add function to detect prohibited UTF-16/32 BOM
1467 - - utf8: teach same_encoding() alternative UTF encoding names
1468 - - strbuf: add a case insensitive starts_with()
1469 - - strbuf: add xstrdup_toupper()
1470 - - strbuf: remove unnecessary NUL assignment in xstrdup_tolower()
1259 + (merged to 'next' on 2018-04-25 at e0f8554b2a)
1260 + + convert: add round trip check based on 'core.checkRoundtripEncoding'
1261 + + convert: add tracing for 'working-tree-encoding' attribute
1262 + + convert: check for detectable errors in UTF encodings
1263 + + convert: add 'working-tree-encoding' attribute
1264 + + utf8: add function to detect a missing UTF-16/32 BOM
1265 + + utf8: add function to detect prohibited UTF-16/32 BOM
1266 + + utf8: teach same_encoding() alternative UTF encoding names
1267 + + strbuf: add a case insensitive starts_with()
1268 + + strbuf: add xstrdup_toupper()
1269 + + strbuf: remove unnecessary NUL assignment in xstrdup_tolower()
1270
1271 The new "checkout-encoding" attribute can ask Git to convert the
1272 contents to the specified encoding when checking out to the working
1273 tree (and the other way around when checking in).
1274
1476 - Will merge to 'next'.
1275 + Will merge to 'master'.
1276 This looked more or less ready for 'next'. Please stop me if there
1277 are remaining issues I forgot about.
1278
@@ -1494,3 +1293,16 @@ of the repositories listed at
1293 Windows port.
1294
1295 Ejected, as the parent topic dj/runtime-prefix covers Windows now.
1296 +
1297 +
1298 +* bp/fsexcludes (2018-04-16) 2 commits
1299 + . fsmonitor: switch to use new fsexcludes logic and remove unused untracked cache based logic
1300 + . fsexcludes: add a programmatic way to exclude files from git's working directory traversal logic
1301 +
1302 + Can we have a few lines summary here, just like we have for other
1303 + topic ;-) I personally take the overlong title of these commits as
1304 + a sign that they can further be simplified and cleaned up by
1305 + splitting, focusing the scope, etc.
1306 +
1307 + Retracted.
1308 + cf. <0de30972-b0a2-67e8-7cff-c19daf9ece8b@gmail.com>