What's cooking (2017/02 #09)

Junio C Hamano committed Feb 27, 2017 at 15:36 UTC d3009a5aa250c72a1b729265f5888a5904abd309
1 file changed +612 -572
whats-cooking.txt
+612 -572
@@ -1,10 +1,10 @@
1 To: git@vger.kernel.org
2 Bcc: lwn@lwn.net
3 -Subject: What's cooking in git.git (Feb 2017, #08; Fri, 24)
4 -X-master-at: e7e07d5a4fcc2a203d9873968ad3e6bd4d7419d7
5 -X-next-at: 67fe103aa68d54c3706f4a9cdf52c50f21979829
3 +Subject: What's cooking in git.git (Feb 2017, #09; Mon, 27)
4 +X-master-at: 3bc53220cb2dcf709f7a027a3f526befd021d858
5 +X-next-at: 7373a1b73d524fe4dd36076fe0044bc966dc5055
6
7 -What's cooking in git.git (Feb 2017, #08; Fri, 24)
7 +What's cooking in git.git (Feb 2017, #09; Mon, 27)
8 --------------------------------------------------
9
10 Here are the topics that have been cooking. Commits prefixed with
@@ -12,12 +12,13 @@ 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 -v2.12 has been tagged. Special thanks go to Dscho, who (among other
16 -things) laid the groundwork for speeding up "rebase -i" (which I am
17 -hoping to be finalized in the upcoming cycle) and rewrote "difftool"
18 -in C and to Peff who was all over the place cleaning the code up,
19 -fixing surfaced and unsurfaced bugs. Thanks for everybody else,
20 -too, who worked hard on the release.
15 +The first batch post 2.12 is rather a big one (and intentionally
16 +so). Among the notable is that major part of "rebase -i" is now
17 +driven by the sequencer backend (Thanks, Dscho), and the API
18 +implementations of attribute subsystem and ref subsystem have also
19 +been cleaned up (Thanks, Brandon & Michael).
20 +
21 +The tip of 'next' has been rewound.
22
23 You can find the changes described here in the integration branches
24 of the repositories listed at
@@ -41,6 +42,49 @@ of the repositories listed at
42 Doc update.
43
44
45 +* bw/attr (2017-02-01) 27 commits
46 + (merged to 'next' on 2017-02-14 at d35c1d7e4a)
47 + + attr: reformat git_attr_set_direction() function
48 + + attr: push the bare repo check into read_attr()
49 + + attr: store attribute stack in attr_check structure
50 + + attr: tighten const correctness with git_attr and match_attr
51 + + attr: remove maybe-real, maybe-macro from git_attr
52 + + attr: eliminate global check_all_attr array
53 + + attr: use hashmap for attribute dictionary
54 + + attr: change validity check for attribute names to use positive logic
55 + + attr: pass struct attr_check to collect_some_attrs
56 + + attr: retire git_check_attrs() API
57 + + attr: convert git_check_attrs() callers to use the new API
58 + + attr: convert git_all_attrs() to use "struct attr_check"
59 + + attr: (re)introduce git_check_attr() and struct attr_check
60 + + attr: rename function and struct related to checking attributes
61 + + attr.c: outline the future plans by heavily commenting
62 + + Documentation: fix a typo
63 + + attr.c: add push_stack() helper
64 + + attr: support quoting pathname patterns in C style
65 + + attr.c: plug small leak in parse_attr_line()
66 + + attr.c: tighten constness around "git_attr" structure
67 + + attr.c: simplify macroexpand_one()
68 + + attr.c: mark where #if DEBUG ends more clearly
69 + + attr.c: complete a sentence in a comment
70 + + attr.c: explain the lack of attr-name syntax check in parse_attr()
71 + + attr.c: update a stale comment on "struct match_attr"
72 + + attr.c: use strchrnul() to scan for one line
73 + + commit.c: use strchrnul() to scan for one line
74 +
75 + The gitattributes machinery is being taught to work better in a
76 + multi-threaded environment.
77 +
78 +
79 +* cw/tag-reflog-message (2017-02-08) 1 commit
80 + (merged to 'next' on 2017-02-10 at 3968b3a58b)
81 + + tag: generate useful reflog message
82 +
83 + "git tag" did not leave useful message when adding a new entry to
84 + reflog; this was left unnoticed for a long time because refs/tags/*
85 + doesn't keep reflog by default.
86 +
87 +
88 * dr/doc-check-ref-format-normalize (2017-02-21) 1 commit
89 (merged to 'next' on 2017-02-21 at 5e88b7a93d)
90 + git-check-ref-format: clarify documentation for --normalize
@@ -48,6 +92,15 @@ of the repositories listed at
92 Doc update.
93
94
95 +* dt/gc-ignore-old-gc-logs (2017-02-13) 1 commit
96 + (merged to 'next' on 2017-02-16 at 8f48e1b405)
97 + + gc: ignore old gc.log files
98 +
99 + A "gc.log" file left by a backgrounded "gc --auto" disables further
100 + automatic gc; it has been taught to run at least once a day (by
101 + default) by ignoring a stale "gc.log" file that is too old.
102 +
103 +
104 * gp/document-dotfiles-in-templates-are-not-copied (2017-02-17) 1 commit
105 (merged to 'next' on 2017-02-21 at bbfa2bb7d4)
106 + init: document dotfiles exclusion on template copy
@@ -55,6 +108,254 @@ of the repositories listed at
108 Doc update.
109
110
111 +* jh/preload-index-skip-skip (2017-02-10) 1 commit
112 + (merged to 'next' on 2017-02-16 at 39077062f9)
113 + + preload-index: avoid lstat for skip-worktree items
114 +
115 + The preload-index code has been taught not to bother with the index
116 + entries that are paths that are not checked out by "sparse checkout".
117 +
118 +
119 +* jk/alternate-ref-optim (2017-02-08) 11 commits
120 + (merged to 'next' on 2017-02-10 at f26f32cff6)
121 + + receive-pack: avoid duplicates between our refs and alternates
122 + + receive-pack: treat namespace .have lines like alternates
123 + + receive-pack: fix misleading namespace/.have comment
124 + + receive-pack: use oidset to de-duplicate .have lines
125 + + add oidset API
126 + + fetch-pack: cache results of for_each_alternate_ref
127 + + for_each_alternate_ref: replace transport code with for-each-ref
128 + + for_each_alternate_ref: pass name/oid instead of ref struct
129 + + for_each_alternate_ref: use strbuf for path allocation
130 + + for_each_alternate_ref: stop trimming trailing slashes
131 + + for_each_alternate_ref: handle failure from real_pathdup()
132 +
133 + Optimizes resource usage while enumerating refs from alternate
134 + object store, to help receiving end of "push" that hosts a
135 + repository with many "forks".
136 +
137 +
138 +* jk/delta-chain-limit (2017-01-27) 2 commits
139 + (merged to 'next' on 2017-02-06 at 9ff36ae9b2)
140 + + pack-objects: convert recursion to iteration in break_delta_chain()
141 + + pack-objects: enforce --depth limit in reused deltas
142 +
143 + "git repack --depth=<n>" for a long time busted the specified depth
144 + when reusing delta from existing packs. This has been corrected.
145 +
146 +
147 +* jk/describe-omit-some-refs (2017-01-23) 5 commits
148 + (merged to 'next' on 2017-01-23 at f8a14b4996)
149 + + describe: teach describe negative pattern matches
150 + + describe: teach --match to accept multiple patterns
151 + + name-rev: add support to exclude refs by pattern match
152 + + name-rev: extend --refs to accept multiple patterns
153 + + doc: add documentation for OPT_STRING_LIST
154 +
155 + "git describe" and "git name-rev" have been taught to take more
156 + than one refname patterns to restrict the set of refs to base their
157 + naming output on, and also learned to take negative patterns to
158 + name refs not to be used for naming via their "--exclude" option.
159 +
160 +
161 +* jk/grep-no-index-fix (2017-02-14) 7 commits
162 + (merged to 'next' on 2017-02-16 at c84c927fa8)
163 + + grep: treat revs the same for --untracked as for --no-index
164 + + grep: do not diagnose misspelt revs with --no-index
165 + + grep: avoid resolving revision names in --no-index case
166 + + grep: fix "--" rev/pathspec disambiguation
167 + + grep: re-order rev-parsing loop
168 + + grep: do not unnecessarily query repo for "--"
169 + + grep: move thread initialization a little lower
170 +
171 + The code to parse the command line "git grep <patterns>... <rev>
172 + [[--] <pathspec>...]" has been cleaned up, and a handful of bugs
173 + have been fixed (e.g. we used to check "--" if it is a rev).
174 +
175 +
176 +* jk/show-branch-lift-name-len-limit (2017-02-15) 3 commits
177 + (merged to 'next' on 2017-02-16 at 40d22f5f34)
178 + + show-branch: use skip_prefix to drop magic numbers
179 + + show-branch: store resolved head in heap buffer
180 + + show-branch: drop head_len variable
181 +
182 + "git show-branch" expected there were only very short branch names
183 + in the repository and used a fixed-length buffer to hold them
184 + without checking for overflow.
185 +
186 +
187 +* jk/tempfile-ferror-fclose-confusion (2017-02-17) 1 commit
188 + (merged to 'next' on 2017-02-21 at 479ba0131f)
189 + + tempfile: set errno to a known value before calling ferror()
190 +
191 + A caller of tempfile API that uses stdio interface to write to
192 + files may ignore errors while writing, which is detected when
193 + tempfile is closed (with a call to ferror()). By that time, the
194 + original errno that may have told us what went wrong is likely to
195 + be long gone and was overwritten by an irrelevant value.
196 + close_tempfile() now resets errno to EIO to make errno at least
197 + predictable.
198 +
199 +
200 +* jn/remote-helpers-with-git-dir (2017-02-14) 2 commits
201 + (merged to 'next' on 2017-02-16 at c093c543c4)
202 + + remote helpers: avoid blind fall-back to ".git" when setting GIT_DIR
203 + + remote: avoid reading $GIT_DIR config in non-repo
204 +
205 + "git ls-remote" and "git archive --remote" are designed to work
206 + without being in a directory under Git's control. However, recent
207 + updates revealed that we randomly look into a directory called
208 + .git/ without actually doing necessary set-up when working in a
209 + repository. Stop doing so.
210 +
211 +
212 +* js/git-path-in-subdir (2017-02-17) 2 commits
213 + (merged to 'next' on 2017-02-17 at b3c3b2dce6)
214 + + rev-parse: fix several options when running in a subdirectory
215 + + rev-parse tests: add tests executed from a subdirectory
216 +
217 + The "--git-path", "--git-common-dir", and "--shared-index-path"
218 + options of "git rev-parse" did not produce usable output. They are
219 + now updated to show the path to the correct file, relative to where
220 + the caller is.
221 +
222 +
223 +* js/rebase-helper (2017-02-09) 2 commits
224 + (merged to 'next' on 2017-02-14 at ae2474048e)
225 + + rebase -i: use the rebase--helper builtin
226 + + rebase--helper: add a builtin helper for interactive rebases
227 +
228 + "git rebase -i" starts using the recently updated "sequencer" code.
229 +
230 +
231 +* km/delete-ref-reflog-message (2017-02-20) 4 commits
232 + (merged to 'next' on 2017-02-21 at 4ee4ce3f64)
233 + + branch: record creation of renamed branch in HEAD's log
234 + + rename_ref: replace empty message in HEAD's log
235 + + update-ref: pass reflog message to delete_ref()
236 + + delete_ref: accept a reflog message argument
237 +
238 + "git update-ref -d" and other operations to delete references did
239 + not leave any entry in HEAD's reflog when the reference being
240 + deleted was the current branch. This is not a problem in practice
241 + because you do not want to delete the branch you are currently on,
242 + but caused renaming of the current branch to something else not to
243 + be logged in a useful way.
244 +
245 +
246 +* kn/ref-filter-branch-list (2017-02-07) 21 commits
247 + (merged to 'next' on 2017-02-10 at 794bb8284d)
248 + + ref-filter: resurrect "strip" as a synonym to "lstrip"
249 + (merged to 'next' on 2017-01-31 at e7592a5461)
250 + + branch: implement '--format' option
251 + + branch: use ref-filter printing APIs
252 + + branch, tag: use porcelain output
253 + + ref-filter: allow porcelain to translate messages in the output
254 + + ref-filter: add an 'rstrip=<N>' option to atoms which deal with refnames
255 + + ref-filter: modify the 'lstrip=<N>' option to work with negative '<N>'
256 + + ref-filter: Do not abruptly die when using the 'lstrip=<N>' option
257 + + ref-filter: rename the 'strip' option to 'lstrip'
258 + + ref-filter: make remote_ref_atom_parser() use refname_atom_parser_internal()
259 + + ref-filter: introduce refname_atom_parser()
260 + + ref-filter: introduce refname_atom_parser_internal()
261 + + ref-filter: make "%(symref)" atom work with the ':short' modifier
262 + + ref-filter: add support for %(upstream:track,nobracket)
263 + + ref-filter: make %(upstream:track) prints "[gone]" for invalid upstreams
264 + + ref-filter: introduce format_ref_array_item()
265 + + ref-filter: move get_head_description() from branch.c
266 + + ref-filter: modify "%(objectname:short)" to take length
267 + + ref-filter: implement %(if:equals=<string>) and %(if:notequals=<string>)
268 + + ref-filter: include reference to 'used_atom' within 'atom_value'
269 + + ref-filter: implement %(if), %(then), and %(else) atoms
270 +
271 + The code to list branches in "git branch" has been consolidated
272 + with the more generic ref-filter API.
273 +
274 +
275 +* lt/pathspec-negative (2017-02-10) 2 commits
276 + (merged to 'next' on 2017-02-10 at 8ea7874076)
277 + + pathspec: don't error out on all-exclusionary pathspec patterns
278 + + pathspec magic: add '^' as alias for '!'
279 +
280 + The "negative" pathspec feature was somewhat more cumbersome to use
281 + than necessary in that its short-hand used "!" which needed to be
282 + escaped from shells, and it required "exclude from what?" specified.
283 +
284 +
285 +* mh/ref-remove-empty-directory (2017-01-07) 23 commits
286 + (merged to 'next' on 2017-02-10 at bcfd359e95)
287 + + files_transaction_commit(): clean up empty directories
288 + + try_remove_empty_parents(): teach to remove parents of reflogs, too
289 + + try_remove_empty_parents(): don't trash argument contents
290 + + try_remove_empty_parents(): rename parameter "name" -> "refname"
291 + + delete_ref_loose(): inline function
292 + + delete_ref_loose(): derive loose reference path from lock
293 + + log_ref_write_1(): inline function
294 + + log_ref_setup(): manage the name of the reflog file internally
295 + + log_ref_write_1(): don't depend on logfile argument
296 + + log_ref_setup(): pass the open file descriptor back to the caller
297 + + log_ref_setup(): improve robustness against races
298 + + log_ref_setup(): separate code for create vs non-create
299 + + log_ref_write(): inline function
300 + + rename_tmp_log(): improve error reporting
301 + + rename_tmp_log(): use raceproof_create_file()
302 + + lock_ref_sha1_basic(): use raceproof_create_file()
303 + + lock_ref_sha1_basic(): inline constant
304 + + raceproof_create_file(): new function
305 + + safe_create_leading_directories(): set errno on SCLD_EXISTS
306 + + safe_create_leading_directories_const(): preserve errno
307 + + t5505: use "for-each-ref" to test for the non-existence of references
308 + + refname_is_safe(): correct docstring
309 + + files_rename_ref(): tidy up whitespace
310 + (this branch is used by nd/files-backend-git-dir, nd/prune-in-worktree and nd/worktree-kill-parse-ref.)
311 +
312 + Deletion of a branch "foo/bar" could remove .git/refs/heads/foo
313 + once there no longer is any other branch whose name begins with
314 + "foo/", but we didn't do so so far. Now we do.
315 +
316 +
317 +* mh/submodule-hash (2017-02-13) 9 commits
318 + (merged to 'next' on 2017-02-14 at 43f2dcbe29)
319 + + read_loose_refs(): read refs using resolve_ref_recursively()
320 + + files_ref_store::submodule: use NULL for the main repository
321 + + base_ref_store_init(): remove submodule argument
322 + + refs: push the submodule attribute down
323 + + refs: store submodule ref stores in a hashmap
324 + + register_ref_store(): new function
325 + + refs: remove some unnecessary handling of submodule == ""
326 + + refs: make some ref_store lookup functions private
327 + + refs: reorder some function definitions
328 + (this branch is used by nd/files-backend-git-dir, nd/prune-in-worktree and nd/worktree-kill-parse-ref.)
329 +
330 + Code and design clean-up for the refs API.
331 +
332 +
333 +* mm/merge-rename-delete-message (2017-01-30) 1 commit
334 + (merged to 'next' on 2017-02-10 at 8bf8146029)
335 + + merge-recursive: make "CONFLICT (rename/delete)" message show both paths
336 +
337 + When "git merge" detects a path that is renamed in one history
338 + while the other history deleted (or modified) it, it now reports
339 + both paths to help the user understand what is going on in the two
340 + histories being merged.
341 +
342 +
343 +* mm/two-more-xstrfmt (2017-02-16) 2 commits
344 + (merged to 'next' on 2017-02-17 at 2454ee9847)
345 + + bisect_next_all: convert xsnprintf to xstrfmt
346 + + stop_progress_msg: convert xsnprintf to xstrfmt
347 +
348 + Code clean-up and a string truncation fix.
349 +
350 +
351 +* nd/clean-preserve-errno-in-warning (2017-02-16) 1 commit
352 + (merged to 'next' on 2017-02-16 at c0802f7627)
353 + + clean: use warning_errno() when appropriate
354 +
355 + Some warning() messages from "git clean" were updated to show the
356 + errno from failed system calls.
357 +
358 +
359 * ps/doc-gc-aggressive-depth-update (2017-02-24) 1 commit
360 (merged to 'next' on 2017-02-24 at f023322bbb)
361 + docs/git-gc: fix default value for `--aggressiveDepth`
@@ -62,12 +363,92 @@ of the repositories listed at
363 Doc update.
364
365
366 +* ps/urlmatch-wildcard (2017-02-01) 5 commits
367 + (merged to 'next' on 2017-02-10 at 2ed9ea48ee)
368 + + urlmatch: allow globbing for the URL host part
369 + + urlmatch: include host in urlmatch ranking
370 + + urlmatch: split host and port fields in `struct url_info`
371 + + urlmatch: enable normalization of URLs with globs
372 + + mailmap: add Patrick Steinhardt's work address
373 +
374 + The <url> part in "http.<url>.<variable>" configuration variable
375 + can now be spelled with '*' that serves as wildcard.
376 + E.g. "http.https://*.example.com.proxy" can be used to specify the
377 + proxy used for https://a.example.com, https://b.example.com, etc.,
378 + i.e. any host in the example.com domain.
379 +
380 +
381 +* rl/remote-allow-missing-branch-name-merge (2017-02-21) 1 commit
382 + (merged to 'next' on 2017-02-22 at cbe923c8da)
383 + + remote: ignore failure to remove missing branch.<name>.merge
384 +
385 + "git remote rm X", when a branch has remote X configured as the
386 + value of its branch.*.remote, tried to remove branch.*.remote and
387 + branch.*.merge and failed if either is unset.
388 +
389 +
390 * rt/align-add-i-help-text (2017-02-22) 1 commit
391 (merged to 'next' on 2017-02-22 at a8573afb9a)
392 + git add -i: replace \t with blanks in the help message
393
394 Doc update.
395
396 +
397 +* sf/putty-w-args (2017-02-10) 5 commits
398 + (merged to 'next' on 2017-02-14 at 7f157e7020)
399 + + connect.c: stop conflating ssh command names and overrides
400 + + connect: Add the envvar GIT_SSH_VARIANT and ssh.variant config
401 + + git_connect(): factor out SSH variant handling
402 + + connect: rename tortoiseplink and putty variables
403 + + connect: handle putty/plink also in GIT_SSH_COMMAND
404 +
405 + The command line options for ssh invocation needs to be tweaked for
406 + some implementations of SSH (e.g. PuTTY plink wants "-P <port>"
407 + while OpenSSH wants "-p <port>" to specify port to connect to), and
408 + the variant was guessed when GIT_SSH environment variable is used
409 + to specify it. The logic to guess now applies to the command
410 + specified by the newer GIT_SSH_COMMAND and also core.sshcommand
411 + configuration variable, and comes with an escape hatch for users to
412 + deal with misdetected cases.
413 +
414 +
415 +* sg/completion (2017-02-13) 22 commits
416 + (merged to 'next' on 2017-02-13 at 118c192874)
417 + + completion: restore removed line continuating backslash
418 + (merged to 'next' on 2017-02-10 at 55b2785d89)
419 + + completion: cache the path to the repository
420 + + completion: extract repository discovery from __gitdir()
421 + + completion: don't guard git executions with __gitdir()
422 + + completion: consolidate silencing errors from git commands
423 + + completion: don't use __gitdir() for git commands
424 + + completion: respect 'git -C <path>'
425 + + rev-parse: add '--absolute-git-dir' option
426 + + completion: fix completion after 'git -C <path>'
427 + + completion: don't offer commands when 'git --opt' needs an argument
428 + + completion: list short refs from a remote given as a URL
429 + + completion: don't list 'HEAD' when trying refs completion outside of a repo
430 + + completion: list refs from remote when remote's name matches a directory
431 + + completion: respect 'git --git-dir=<path>' when listing remote refs
432 + + completion: fix most spots not respecting 'git --git-dir=<path>'
433 + + completion: ensure that the repository path given on the command line exists
434 + + completion tests: add tests for the __git_refs() helper function
435 + + completion tests: check __gitdir()'s output in the error cases
436 + + completion tests: consolidate getting path of current working directory
437 + + completion tests: make the $cur variable local to the test helper functions
438 + + completion tests: don't add test cruft to the test repository
439 + + completion: improve __git_refs()'s in-code documentation
440 + (this branch is used by sg/completion-refs-speedup.)
441 +
442 + Clean-up and updates to command line completion (in contrib/).
443 +
444 +
445 +* vn/xdiff-func-context (2017-01-15) 1 commit
446 + (merged to 'next' on 2017-02-21 at 838eab8d93)
447 + + xdiff -W: relax end-of-file function detection
448 +
449 + "git diff -W" has been taught to handle the case where a new
450 + function is added at the end of the file better.
451 +
452 --------------------------------------------------
453 [New Topics]
454
@@ -91,8 +472,115 @@ of the repositories listed at
472 variable for the duration of cmd had two small bugs, which have
473 been fixed.
474
94 - Will merge to and then cook in 'next'.
95 - This supersedes jc/config-case-cmdline topic.
475 + Will merge to 'next'.
476 + This supersedes jc/config-case-cmdline topic that has been discarded.
477 +
478 +
479 +* ab/cond-skip-tests (2017-02-27) 2 commits
480 + - gitweb tests: skip tests when we don't have Time::HiRes
481 + - cvs tests: skip tests that call "cvs commit" when running as root
482 +
483 + A few tests were run conditionally under (rare) conditions where
484 + they cannot be run (like running cvs tests under 'root' account).
485 +
486 +
487 +* jk/auto-namelen-in-interpret-branch-name (2017-02-27) 1 commit
488 + - interpret_branch_name(): handle auto-namelen for @{-1}
489 +
490 + A small bug in the code that parses @{...} has been fixed.
491 +
492 + Will merge to 'next'.
493 +
494 +
495 +* jk/interop-test (2017-02-27) 2 commits
496 + - t/interop: add test of old clients against modern git-daemon
497 + - t: add an interoperability test harness
498 +
499 + Picking two versions of Git and running tests to make sure the
500 + older one and the newer one interoperate happily has now become
501 + possible.
502 +
503 + Needs review.
504 +
505 +
506 +* jk/parse-config-key-cleanup (2017-02-24) 3 commits
507 + - parse_hide_refs_config: tell parse_config_key we don't want a subsection
508 + - parse_config_key: allow matching single-level config
509 + - parse_config_key: use skip_prefix instead of starts_with
510 + (this branch uses sb/parse-hide-refs-config-cleanup.)
511 +
512 + The "parse_config_key()" API function has been cleaned up.
513 +
514 + Will merge to 'next'.
515 +
516 +
517 +* jk/t6300-cleanup (2017-02-27) 1 commit
518 + - t6300: avoid creating refs/heads/HEAD
519 +
520 + A test that creats a confusing branch whose name is HEAD when any
521 + branch name would have sufficed has been corrected.
522 +
523 + Will merge to 'next'.
524 +
525 +
526 +* rs/commit-parsing-optim (2017-02-27) 2 commits
527 + - commit: don't check for space twice when looking for header
528 + - commit: be more precise when searching for headers
529 +
530 + The code that parses header fields in the commit object has been
531 + updated for (micro)performance and code hygiene.
532 +
533 + Will merge to 'next'.
534 +
535 +
536 +* rs/sha1-file-plug-fallback-base-leak (2017-02-27) 1 commit
537 + - sha1_file: release fallback base's memory in unpack_entry()
538 +
539 + A leak in a codepath to read from a packed object in (rare) cases
540 + has been plugged.
541 +
542 + Will merge to 'next'.
543 +
544 +
545 +* rs/strbuf-add-real-path (2017-02-27) 2 commits
546 + - strbuf: add strbuf_add_real_path()
547 + - cocci: use ALLOC_ARRAY
548 +
549 + An helper function to make it easier to append the result from
550 + real_path() to a strbuf has been added.
551 +
552 + Will merge to 'next'.
553 +
554 +
555 +* sb/parse-hide-refs-config-cleanup (2017-02-24) 1 commit
556 + - refs: parse_hide_refs_config to use parse_config_key
557 + (this branch is used by jk/parse-config-key-cleanup.)
558 +
559 + Code clean-up.
560 +
561 + Will merge to 'next'.
562 +
563 +
564 +* sg/clone-refspec-from-command-line-config (2017-02-27) 1 commit
565 + - clone: respect configured fetch respecs during initial fetch
566 +
567 + Needs review.
568 + cf. <20170227211217.73gydlxb2qu2sp3m@sigill.intra.peff.net>
569 +
570 +
571 +* sk/dash-is-previous (2017-02-27) 6 commits
572 + - revert.c: delegate handling of "-" shorthand to setup_revisions
573 + - merge.c: delegate handling of "-" shorthand to revision.c:get_sha1
574 + - sha1_name.c: teach get_sha1_1 "-" shorthand for "@{-1}"
575 + - revision.c: args starting with "-" might be a revision
576 + - revision.c: swap if/else blocks
577 + - revision.c: do not update argv with unknown option
578 +
579 + A dash "-" can be written to mean "the branch that was previously
580 + checked out" in more places.
581 +
582 + Needs review.
583 + cf. <1488007487-12965-1-git-send-email-kannan.siddharth12@gmail.com>
584
585 --------------------------------------------------
586 [Stalled]
@@ -229,17 +717,7 @@ of the repositories listed at
717 --------------------------------------------------
718 [Cooking]
719
232 -* js/curl-empty-auth-set-by-default (2017-02-22) 1 commit
233 - - http(s): automatically try NTLM authentication first
234 -
235 - Flip "http.emptyAuth" on by default to help OOB experience for
236 - users of HTTP Negotiate authentication scheme.
237 -
238 - Under discussion.
239 - cf. <20170222233419.q3fxqmrscosumbjm@genre.crustytoothpaste.net>
240 -
241 -
242 -* jh/send-email-one-cc (2017-02-23) 1 commit
720 +* jh/send-email-one-cc (2017-02-27) 1 commit
721 - send-email: only allow one address per body tag
722
723 "Cc:" on the trailer part does not have to conform to RFC strictly,
@@ -247,18 +725,17 @@ of the repositories listed at
725 ignore anything after '>' when picking addresses, to allow non-address
726 cruft like " # stable 4.4" after the address.
727
250 - Will merge to and then cook in 'next'.
728 + Will merge to 'next'.
729
730
253 -* jk/http-auth (2017-02-23) 1 commit
731 +* jk/http-auth (2017-02-27) 2 commits
732 + - http: add an "auto" mode for http.emptyauth
733 - http: restrict auth methods to what the server advertises
734
735 Reduce authentication round-trip over HTTP when the server supports
736 just a single authentication method.
737
259 - Will merge to and then cook in 'next'.
260 - There is a follow-up that would supersede js/curl-empty-auth-set-by-default
261 - topic; as it expected to be refined further, it is not queued here yet.
738 + Will merge to 'next'.
739
740
741 * jk/ident-empty (2017-02-23) 4 commits
@@ -270,7 +747,7 @@ of the repositories listed at
747 user.email that consists of only cruft chars should have
748 consistently errored out, but didn't.
749
273 - Will merge to and then cook in 'next'.
750 + Will merge to 'next'.
751
752
753 * jt/upload-pack-error-report (2017-02-23) 1 commit
@@ -281,22 +758,7 @@ of the repositories listed at
758 This is generally not a problem (because "git fetch" will stop
759 before making such a request), but is the right thing to do.
760
284 - Will merge to and then cook in 'next'.
285 -
286 -
287 -* jk/tempfile-ferror-fclose-confusion (2017-02-17) 1 commit
288 - (merged to 'next' on 2017-02-21 at 479ba0131f)
289 - + tempfile: set errno to a known value before calling ferror()
290 -
291 - A caller of tempfile API that uses stdio interface to write to
292 - files may ignore errors while writing, which is detected when
293 - tempfile is closed (with a call to ferror()). By that time, the
294 - original errno that may have told us what went wrong is likely to
295 - be long gone and was overwritten by an irrelevant value.
296 - close_tempfile() now resets errno to EIO to make errno at least
297 - predictable.
298 -
299 - Will cook in 'next'.
761 + Will merge to 'next'.
762
763
764 * ah/doc-ls-files-quotepath (2017-02-22) 1 commit
@@ -304,22 +766,7 @@ of the repositories listed at
766
767 Documentation for "git ls-files" did not refer to core.quotePath
768
307 - Looked good, but another reroll is still incoming?
308 - cf. <3c801e54-28c7-52d0-6915-ee7aaf1d89c9@gmail.com>
309 -
310 -
311 -* jc/config-case-cmdline (2017-02-21) 3 commits
312 - (merged to 'next' on 2017-02-21 at 63d3652c77)
313 - + config: squelch stupid compiler
314 - (merged to 'next' on 2017-02-21 at 354f023a3a)
315 - + config: reject invalid VAR in 'git -c VAR=VAL command'
316 - + config: preserve <subsection> case for one-shot config on the command line
317 -
318 - The code to parse "git -c VAR=VAL cmd" and set configuration
319 - variable for the duration of cmd had two small bugs, which have
320 - been fixed.
321 -
322 - Will discard.
769 + Reroll exists but not picked up yet.
770
771
772 * jh/memihash-opt (2017-02-17) 5 commits
@@ -332,23 +779,6 @@ of the repositories listed at
779 Expecting an update for perf?
780
781
335 -* km/delete-ref-reflog-message (2017-02-20) 4 commits
336 - (merged to 'next' on 2017-02-21 at 4ee4ce3f64)
337 - + branch: record creation of renamed branch in HEAD's log
338 - + rename_ref: replace empty message in HEAD's log
339 - + update-ref: pass reflog message to delete_ref()
340 - + delete_ref: accept a reflog message argument
341 -
342 - "git update-ref -d" and other operations to delete references did
343 - not leave any entry in HEAD's reflog when the reference being
344 - deleted was the current branch. This is not a problem in practice
345 - because you do not want to delete the branch you are currently on,
346 - but caused renaming of the current branch to something else not to
347 - be logged in a useful way.
348 -
349 - Will cook in 'next'.
350 -
351 -
782 * nd/prune-in-worktree (2017-02-19) 15 commits
783 . rev-list: expose and document --single-worktree
784 . revision.c: --reflog add HEAD reflog from all worktrees
@@ -365,45 +795,26 @@ of the repositories listed at
795 . revision.c: --indexed-objects add objects from all worktrees
796 . revision.c: refactor add_index_objects_to_pending()
797 . revision.h: new flag in struct rev_info wrt. worktree-related refs
368 - (this branch uses mh/ref-remove-empty-directory, mh/submodule-hash and nd/worktree-kill-parse-ref; is tangled with nd/files-backend-git-dir.)
798 + (this branch uses nd/worktree-kill-parse-ref; is tangled with nd/files-backend-git-dir.)
799
800 "git gc" and friends when multiple worktrees are used off of a
801 single repository did not consider the index and per-worktree refs
802 of other worktrees as the root for reachability traversal, making
803 objects that are in use only in other worktrees to be subject to
374 - garbage collection.
375 -
376 -
377 -* mm/fetch-show-error-message-on-unadvertised-object (2017-02-22) 4 commits
378 - - fetch-pack: add specific error for fetching an unadvertised object
379 - - fetch_refs_via_pack: call report_unmatched_refs
380 - - squash??? remove unfinished sentence
381 - - fetch-pack: move code to report unmatched refs to a function
382 -
383 - "git fetch" that requests a commit by object name, when the other
384 - side does not allow such an request, failed without much
385 - explanation.
386 -
387 -
388 -* rl/remote-allow-missing-branch-name-merge (2017-02-21) 1 commit
389 - (merged to 'next' on 2017-02-22 at cbe923c8da)
390 - + remote: ignore failure to remove missing branch.<name>.merge
391 -
392 - "git remote rm X", when a branch has remote X configured as the
393 - value of its branch.*.remote, tried to remove branch.*.remote and
394 - branch.*.merge and failed if either is unset.
395 -
396 - Will cook in 'next'.
804 + garbage collection.
805
806
399 -* vn/xdiff-func-context (2017-01-15) 1 commit
400 - (merged to 'next' on 2017-02-21 at 838eab8d93)
401 - + xdiff -W: relax end-of-file function detection
807 +* mm/fetch-show-error-message-on-unadvertised-object (2017-02-22) 4 commits
808 + - fetch-pack: add specific error for fetching an unadvertised object
809 + - fetch_refs_via_pack: call report_unmatched_refs
810 + - squash??? remove unfinished sentence
811 + - fetch-pack: move code to report unmatched refs to a function
812
403 - "git diff -W" has been taught to handle the case where a new
404 - function is added at the end of the file better.
813 + "git fetch" that requests a commit by object name, when the other
814 + side does not allow such an request, failed without much
815 + explanation.
816
406 - Will cook in 'next'.
817 + Will squash the change in before merging to 'next'.
818
819
820 * nd/worktree-kill-parse-ref (2017-02-19) 22 commits
@@ -429,12 +840,12 @@ of the repositories listed at
840 . refs-internal.c: make files_log_ref_write() static
841 . Merge branch 'mh/ref-remove-empty-directory' into nd/files-backend-git-dir
842 . Merge branch 'mh/submodule-hash' into nd/files-backend-git-dir
432 - (this branch is used by nd/prune-in-worktree; uses mh/ref-remove-empty-directory and mh/submodule-hash; is tangled with nd/files-backend-git-dir.)
843 + (this branch is used by nd/prune-in-worktree; is tangled with nd/files-backend-git-dir.)
844
845 (hopefully) a beginning of safer "git worktree" that is resistant
846 to "gc".
847
437 - Needs review.
848 + Waiting for nd/files-backend-git-dir to settle.
849
850
851 * nd/files-backend-git-dir (2017-02-22) 26 commits
@@ -464,7 +875,7 @@ of the repositories listed at
875 . refs.h: add forward declaration for structs used in this file
876 . Merge branch 'mh/ref-remove-empty-directory' into nd/files-backend-git-dir
877 . Merge branch 'mh/submodule-hash' into nd/files-backend-git-dir
467 - (this branch uses mh/ref-remove-empty-directory and mh/submodule-hash; is tangled with nd/prune-in-worktree and nd/worktree-kill-parse-ref.)
878 + (this branch is tangled with nd/prune-in-worktree and nd/worktree-kill-parse-ref.)
879
880 The "submodule" specific field in the ref_store structure is
881 replaced with a more generic "gitdir" that can later be used also
@@ -474,26 +885,6 @@ of the repositories listed at
885 Needs review.
886
887
477 -* nd/clean-preserve-errno-in-warning (2017-02-16) 1 commit
478 - (merged to 'next' on 2017-02-16 at c0802f7627)
479 - + clean: use warning_errno() when appropriate
480 -
481 - Some warning() messages from "git clean" were updated to show the
482 - errno from failed system calls.
483 -
484 - Will cook in 'next'.
485 -
486 -
487 -* mm/two-more-xstrfmt (2017-02-16) 2 commits
488 - (merged to 'next' on 2017-02-17 at 2454ee9847)
489 - + bisect_next_all: convert xsnprintf to xstrfmt
490 - + stop_progress_msg: convert xsnprintf to xstrfmt
491 -
492 - Code clean-up and a string truncation fix.
493 -
494 - Will cook in 'next'.
495 -
496 -
888 * sb/checkout-recurse-submodules (2017-02-23) 15 commits
889 - builtin/checkout: add --recurse-submodules switch
890 - entry.c: update submodules when interesting
@@ -516,292 +907,58 @@ of the repositories listed at
907 Needs review.
908
909
519 -* jh/preload-index-skip-skip (2017-02-10) 1 commit
520 - (merged to 'next' on 2017-02-16 at 39077062f9)
521 - + preload-index: avoid lstat for skip-worktree items
522 -
523 - The preload-index code has been taught not to bother with the index
524 - entries that are paths that are not checked out by "sparse checkout".
525 -
526 - Will cook in 'next'.
527 -
528 -
529 -* tg/stash-push (2017-02-19) 6 commits
910 +* tg/stash-push (2017-02-27) 7 commits
911 + - SQUASH???
912 - stash: allow pathspecs in the no verb form
913 - stash: use stash_push for no verb form
532 - - stash: teach 'push' (and 'create_stash') to honor pathspec
533 - - stash: refactor stash_create
534 - - stash: add test for the create command line arguments
535 - - stash: introduce push verb
536 -
537 - Allow "git stash" to take pathspec so that the local changes can be
538 - stashed away only partially.
539 -
540 - Needs review.
541 - cf. <xmqqmvdfh4az.fsf@gitster.mtv.corp.google.com>
542 -
543 -
544 -* bc/object-id (2017-02-22) 19 commits
545 - - wt-status: convert to struct object_id
546 - - builtin/merge-base: convert to struct object_id
547 - - Convert object iteration callbacks to struct object_id
548 - - sha1_file: introduce an nth_packed_object_oid function
549 - - refs: simplify parsing of reflog entries
550 - - refs: convert each_reflog_ent_fn to struct object_id
551 - - reflog-walk: convert struct reflog_info to struct object_id
552 - - builtin/replace: convert to struct object_id
553 - - Convert remaining callers of resolve_refdup to object_id
554 - - builtin/merge: convert to struct object_id
555 - - builtin/clone: convert to struct object_id
556 - - builtin/branch: convert to struct object_id
557 - - builtin/grep: convert to struct object_id
558 - - builtin/fmt-merge-message: convert to struct object_id
559 - - builtin/fast-export: convert to struct object_id
560 - - builtin/describe: convert to struct object_id
561 - - builtin/diff-tree: convert to struct object_id
562 - - builtin/commit: convert to struct object_id
563 - - hex: introduce parse_oid_hex
564 -
565 - "uchar [40]" to "struct object_id" conversion continues.
566 -
567 - Now at v5; looked alright.
568 - cf. <20170221234737.894681-1-sandals@crustytoothpaste.net>
569 -
570 -
571 -* jk/grep-no-index-fix (2017-02-14) 7 commits
572 - (merged to 'next' on 2017-02-16 at c84c927fa8)
573 - + grep: treat revs the same for --untracked as for --no-index
574 - + grep: do not diagnose misspelt revs with --no-index
575 - + grep: avoid resolving revision names in --no-index case
576 - + grep: fix "--" rev/pathspec disambiguation
577 - + grep: re-order rev-parsing loop
578 - + grep: do not unnecessarily query repo for "--"
579 - + grep: move thread initialization a little lower
580 -
581 - The code to parse the command line "git grep <patterns>... <rev>
582 - [[--] <pathspec>...]" has been cleaned up, and a handful of bugs
583 - have been fixed (e.g. we used to check "--" if it is a rev).
584 -
585 - Will cook in 'next'.
586 -
587 -
588 -* jk/show-branch-lift-name-len-limit (2017-02-15) 3 commits
589 - (merged to 'next' on 2017-02-16 at 40d22f5f34)
590 - + show-branch: use skip_prefix to drop magic numbers
591 - + show-branch: store resolved head in heap buffer
592 - + show-branch: drop head_len variable
593 -
594 - "git show-branch" expected there were only very short branch names
595 - in the repository and used a fixed-length buffer to hold them
596 - without checking for overflow.
597 -
598 - Will cook in 'next'.
599 -
600 -
601 -* lt/oneline-decoration-at-end (2017-02-21) 2 commits
602 - (merged to 'next' on 2017-02-21 at 35c7731ee3)
603 - + log: fix regression to "--source" when "--decorate" was updated
604 - (merged to 'next' on 2017-02-16 at 5854e58811)
605 - + show decorations at the end of the line
606 -
607 - The output from "git log --oneline --decorate" has been updated to
608 - show the extra information at the end of the line, not near the
609 - front.
610 -
611 - Will cook in 'next'.
612 - Perhaps this is not such a cool idea?
613 - cf. <CA+55aFwT2HUBzZO8Gpt9tHoJtdRxv9oe3TDoSH5jcEOixRNBXg@mail.gmail.com>
614 -
615 -
616 -* jn/remote-helpers-with-git-dir (2017-02-14) 2 commits
617 - (merged to 'next' on 2017-02-16 at c093c543c4)
618 - + remote helpers: avoid blind fall-back to ".git" when setting GIT_DIR
619 - + remote: avoid reading $GIT_DIR config in non-repo
620 -
621 - "git ls-remote" and "git archive --remote" are designed to work
622 - without being in a directory under Git's control. However, recent
623 - updates revealed that we randomly look into a directory called
624 - .git/ without actually doing necessary set-up when working in a
625 - repository. Stop doing so.
626 -
627 - Will cook in 'next'.
628 -
629 -
630 -* jk/alternate-ref-optim (2017-02-08) 11 commits
631 - (merged to 'next' on 2017-02-10 at f26f32cff6)
632 - + receive-pack: avoid duplicates between our refs and alternates
633 - + receive-pack: treat namespace .have lines like alternates
634 - + receive-pack: fix misleading namespace/.have comment
635 - + receive-pack: use oidset to de-duplicate .have lines
636 - + add oidset API
637 - + fetch-pack: cache results of for_each_alternate_ref
638 - + for_each_alternate_ref: replace transport code with for-each-ref
639 - + for_each_alternate_ref: pass name/oid instead of ref struct
640 - + for_each_alternate_ref: use strbuf for path allocation
641 - + for_each_alternate_ref: stop trimming trailing slashes
642 - + for_each_alternate_ref: handle failure from real_pathdup()
643 -
644 - Optimizes resource usage while enumerating refs from alternate
645 - object store, to help receiving end of "push" that hosts a
646 - repository with many "forks".
647 -
648 - Will cook in 'next'.
649 -
650 -
651 -* lt/pathspec-negative (2017-02-10) 2 commits
652 - (merged to 'next' on 2017-02-10 at 8ea7874076)
653 - + pathspec: don't error out on all-exclusionary pathspec patterns
654 - + pathspec magic: add '^' as alias for '!'
655 -
656 - The "negative" pathspec feature was somewhat more cumbersome to use
657 - than necessary in that its short-hand used "!" which needed to be
658 - escaped from shells, and it required "exclude from what?" specified.
659 -
660 - Will cook in 'next'.
661 -
662 -
663 -* js/rebase-helper (2017-02-09) 2 commits
664 - (merged to 'next' on 2017-02-14 at ae2474048e)
665 - + rebase -i: use the rebase--helper builtin
666 - + rebase--helper: add a builtin helper for interactive rebases
667 -
668 - "git rebase -i" starts using the recently updated "sequencer" code.
669 -
670 - Will cook in 'next'.
671 - The change itself is small, but what it enables is rather a large
672 - body of new code. We are getting there ;-)
673 -
674 -
675 -* mh/submodule-hash (2017-02-13) 9 commits
676 - (merged to 'next' on 2017-02-14 at 43f2dcbe29)
677 - + read_loose_refs(): read refs using resolve_ref_recursively()
678 - + files_ref_store::submodule: use NULL for the main repository
679 - + base_ref_store_init(): remove submodule argument
680 - + refs: push the submodule attribute down
681 - + refs: store submodule ref stores in a hashmap
682 - + register_ref_store(): new function
683 - + refs: remove some unnecessary handling of submodule == ""
684 - + refs: make some ref_store lookup functions private
685 - + refs: reorder some function definitions
686 - (this branch is used by nd/files-backend-git-dir, nd/prune-in-worktree and nd/worktree-kill-parse-ref.)
687 -
688 - Code and design clean-up for the refs API.
689 -
690 - Will cook in 'next'.
691 - The tip one is newer than the one posted to the list but was sent
692 - privately by the author via his GitHub repository.
693 -
694 -
695 -* jh/mingw-openssl-sha1 (2017-02-09) 1 commit
696 - (merged to 'next' on 2017-02-10 at 084b3d8503)
697 - + mingw: use OpenSSL's SHA-1 routines
698 -
699 - Windows port wants to use OpenSSL's implementation of SHA-1
700 - routines, so let them.
701 -
702 - Will cook in 'next'.
703 - cf. <31bb0b9f-d498-24b3-57d5-9f34cb8e3914@kdbg.org>
704 -
705 -
706 -* dt/gc-ignore-old-gc-logs (2017-02-13) 1 commit
707 - (merged to 'next' on 2017-02-16 at 8f48e1b405)
708 - + gc: ignore old gc.log files
709 -
710 - A "gc.log" file left by a backgrounded "gc --auto" disables further
711 - automatic gc; it has been taught to run at least once a day (by
712 - default) by ignoring a stale "gc.log" file that is too old.
713 -
714 - Will cook in 'next'.
715 - This is v6 posted on Feb 10th.
716 -
717 -
718 -* js/git-path-in-subdir (2017-02-17) 2 commits
719 - (merged to 'next' on 2017-02-17 at b3c3b2dce6)
720 - + rev-parse: fix several options when running in a subdirectory
721 - + rev-parse tests: add tests executed from a subdirectory
722 -
723 - The "--git-path", "--git-common-dir", and "--shared-index-path"
724 - options of "git rev-parse" did not produce usable output. They are
725 - now updated to show the path to the correct file, relative to where
726 - the caller is.
727 -
728 - Will cook in 'next'.
729 -
730 -
731 -* mh/ref-remove-empty-directory (2017-01-07) 23 commits
732 - (merged to 'next' on 2017-02-10 at bcfd359e95)
733 - + files_transaction_commit(): clean up empty directories
734 - + try_remove_empty_parents(): teach to remove parents of reflogs, too
735 - + try_remove_empty_parents(): don't trash argument contents
736 - + try_remove_empty_parents(): rename parameter "name" -> "refname"
737 - + delete_ref_loose(): inline function
738 - + delete_ref_loose(): derive loose reference path from lock
739 - + log_ref_write_1(): inline function
740 - + log_ref_setup(): manage the name of the reflog file internally
741 - + log_ref_write_1(): don't depend on logfile argument
742 - + log_ref_setup(): pass the open file descriptor back to the caller
743 - + log_ref_setup(): improve robustness against races
744 - + log_ref_setup(): separate code for create vs non-create
745 - + log_ref_write(): inline function
746 - + rename_tmp_log(): improve error reporting
747 - + rename_tmp_log(): use raceproof_create_file()
748 - + lock_ref_sha1_basic(): use raceproof_create_file()
749 - + lock_ref_sha1_basic(): inline constant
750 - + raceproof_create_file(): new function
751 - + safe_create_leading_directories(): set errno on SCLD_EXISTS
752 - + safe_create_leading_directories_const(): preserve errno
753 - + t5505: use "for-each-ref" to test for the non-existence of references
754 - + refname_is_safe(): correct docstring
755 - + files_rename_ref(): tidy up whitespace
756 - (this branch is used by nd/files-backend-git-dir, nd/prune-in-worktree and nd/worktree-kill-parse-ref.)
914 + - stash: teach 'push' (and 'create_stash') to honor pathspec
915 + - stash: refactor stash_create
916 + - stash: add test for the create command line arguments
917 + - stash: introduce push verb
918
758 - Deletion of a branch "foo/bar" could remove .git/refs/heads/foo
759 - once there no longer is any other branch whose name begins with
760 - "foo/", but we didn't do so so far. Now we do.
919 + Allow "git stash" to take pathspec so that the local changes can be
920 + stashed away only partially.
921
762 - Will cook in 'next'.
922 + Expecting a reroll.
923 + I think this is almost there.
924 + cf. <20170225213306.2410-1-t.gummerer@gmail.com>
925
926
765 -* cw/tag-reflog-message (2017-02-08) 1 commit
766 - (merged to 'next' on 2017-02-10 at 3968b3a58b)
767 - + tag: generate useful reflog message
927 +* bc/object-id (2017-02-22) 19 commits
928 + - wt-status: convert to struct object_id
929 + - builtin/merge-base: convert to struct object_id
930 + - Convert object iteration callbacks to struct object_id
931 + - sha1_file: introduce an nth_packed_object_oid function
932 + - refs: simplify parsing of reflog entries
933 + - refs: convert each_reflog_ent_fn to struct object_id
934 + - reflog-walk: convert struct reflog_info to struct object_id
935 + - builtin/replace: convert to struct object_id
936 + - Convert remaining callers of resolve_refdup to object_id
937 + - builtin/merge: convert to struct object_id
938 + - builtin/clone: convert to struct object_id
939 + - builtin/branch: convert to struct object_id
940 + - builtin/grep: convert to struct object_id
941 + - builtin/fmt-merge-message: convert to struct object_id
942 + - builtin/fast-export: convert to struct object_id
943 + - builtin/describe: convert to struct object_id
944 + - builtin/diff-tree: convert to struct object_id
945 + - builtin/commit: convert to struct object_id
946 + - hex: introduce parse_oid_hex
947
769 - "git tag", because refs/tags/* doesn't keep reflog by default, did
770 - not leave useful message when adding a new entry to reflog.
948 + "uchar [40]" to "struct object_id" conversion continues.
949
772 - Will cook in 'next'.
950 + Now at v5.
951 + cf. <20170221234737.894681-1-sandals@crustytoothpaste.net>
952
953
775 -* sg/completion (2017-02-13) 22 commits
776 - (merged to 'next' on 2017-02-13 at 118c192874)
777 - + completion: restore removed line continuating backslash
778 - (merged to 'next' on 2017-02-10 at 55b2785d89)
779 - + completion: cache the path to the repository
780 - + completion: extract repository discovery from __gitdir()
781 - + completion: don't guard git executions with __gitdir()
782 - + completion: consolidate silencing errors from git commands
783 - + completion: don't use __gitdir() for git commands
784 - + completion: respect 'git -C <path>'
785 - + rev-parse: add '--absolute-git-dir' option
786 - + completion: fix completion after 'git -C <path>'
787 - + completion: don't offer commands when 'git --opt' needs an argument
788 - + completion: list short refs from a remote given as a URL
789 - + completion: don't list 'HEAD' when trying refs completion outside of a repo
790 - + completion: list refs from remote when remote's name matches a directory
791 - + completion: respect 'git --git-dir=<path>' when listing remote refs
792 - + completion: fix most spots not respecting 'git --git-dir=<path>'
793 - + completion: ensure that the repository path given on the command line exists
794 - + completion tests: add tests for the __git_refs() helper function
795 - + completion tests: check __gitdir()'s output in the error cases
796 - + completion tests: consolidate getting path of current working directory
797 - + completion tests: make the $cur variable local to the test helper functions
798 - + completion tests: don't add test cruft to the test repository
799 - + completion: improve __git_refs()'s in-code documentation
800 - (this branch is used by sg/completion-refs-speedup.)
954 +* jh/mingw-openssl-sha1 (2017-02-09) 1 commit
955 + - mingw: use OpenSSL's SHA-1 routines
956
802 - Clean-up and updates to command line completion (in contrib/).
957 + Windows port wants to use OpenSSL's implementation of SHA-1
958 + routines, so let them.
959
804 - Will cook in 'next'.
960 + Kicked back to 'pu'
961 + cf. <9913e513-553e-eba6-e81a-9c21030dd767@kdbg.org>
962
963
964 * sg/completion-refs-speedup (2017-02-13) 13 commits
@@ -818,177 +975,19 @@ of the repositories listed at
975 - completion: support completing full refs after '--option=refs/<TAB>'
976 - completion: wrap __git_refs() for better option parsing
977 - completion: remove redundant __gitcomp_nl() options from _git_commit()
821 - (this branch uses sg/completion.)
978
979 The refs completion for large number of refs has been sped up,
980 partly by giving up disambiguating ambiguous refs and partly by
981 eliminating most of the shell processing between 'git for-each-ref'
982 and 'ls-remote' and Bash's completion facility.
983
828 - Will hold.
829 -
830 -
831 -* sk/parse-remote-cleanup (2017-02-21) 2 commits
832 - (merged to 'next' on 2017-02-21 at 302250072e)
833 - + Revert "parse-remote: remove reference to unused op_prep"
834 - (merged to 'next' on 2017-02-06 at 6ec89f72d5)
835 - + parse-remote: remove reference to unused op_prep
836 -
837 - Code clean-up.
838 -
839 - Will discard.
840 - There may be third-party scripts that are dot-sourcing this one.
841 -
842 -
843 -* jk/delta-chain-limit (2017-01-27) 2 commits
844 - (merged to 'next' on 2017-02-06 at 9ff36ae9b2)
845 - + pack-objects: convert recursion to iteration in break_delta_chain()
846 - + pack-objects: enforce --depth limit in reused deltas
847 -
848 - "git repack --depth=<n>" for a long time busted the specified depth
849 - when reusing delta from existing packs. This has been corrected.
850 -
851 - Will cook in 'next'.
852 -
853 -
854 -* mm/merge-rename-delete-message (2017-01-30) 1 commit
855 - (merged to 'next' on 2017-02-10 at 8bf8146029)
856 - + merge-recursive: make "CONFLICT (rename/delete)" message show both paths
857 -
858 - When "git merge" detects a path that is renamed in one history
859 - while the other history deleted (or modified) it, it now reports
860 - both paths to help the user understand what is going on in the two
861 - histories being merged.
862 -
863 - Will cook in 'next'.
864 -
865 -
866 -* ps/urlmatch-wildcard (2017-02-01) 5 commits
867 - (merged to 'next' on 2017-02-10 at 2ed9ea48ee)
868 - + urlmatch: allow globbing for the URL host part
869 - + urlmatch: include host in urlmatch ranking
870 - + urlmatch: split host and port fields in `struct url_info`
871 - + urlmatch: enable normalization of URLs with globs
872 - + mailmap: add Patrick Steinhardt's work address
873 -
874 - The <url> part in "http.<url>.<variable>" configuration variable
875 - can now be spelled with '*' that serves as wildcard.
876 - E.g. "http.https://*.example.com.proxy" can be used to specify the
877 - proxy used for https://a.example.com, https://b.example.com, etc.,
878 - i.e. any host in the example.com domain.
879 -
880 - Will cook in 'next'.
881 -
882 -
883 -* sf/putty-w-args (2017-02-10) 5 commits
884 - (merged to 'next' on 2017-02-14 at 7f157e7020)
885 - + connect.c: stop conflating ssh command names and overrides
886 - + connect: Add the envvar GIT_SSH_VARIANT and ssh.variant config
887 - + git_connect(): factor out SSH variant handling
888 - + connect: rename tortoiseplink and putty variables
889 - + connect: handle putty/plink also in GIT_SSH_COMMAND
890 -
891 - The command line options for ssh invocation needs to be tweaked for
892 - some implementations of SSH (e.g. PuTTY plink wants "-P <port>"
893 - while OpenSSH wants "-p <port>" to specify port to connect to), and
894 - the variant was guessed when GIT_SSH environment variable is used
895 - to specify it. The logic to guess now applies to the command
896 - specified by the newer GIT_SSH_COMMAND and also core.sshcommand
897 - configuration variable, and comes with an escape hatch for users to
898 - deal with misdetected cases.
899 -
900 - Will cook in 'next'.
901 -
902 -
903 -* jk/describe-omit-some-refs (2017-01-23) 5 commits
904 - (merged to 'next' on 2017-01-23 at f8a14b4996)
905 - + describe: teach describe negative pattern matches
906 - + describe: teach --match to accept multiple patterns
907 - + name-rev: add support to exclude refs by pattern match
908 - + name-rev: extend --refs to accept multiple patterns
909 - + doc: add documentation for OPT_STRING_LIST
910 -
911 - "git describe" and "git name-rev" have been taught to take more
912 - than one refname patterns to restrict the set of refs to base their
913 - naming output on, and also learned to take negative patterns to
914 - name refs not to be used for naming via their "--exclude" option.
915 -
916 - Will cook in 'next'.
917 -
918 -
919 -* bw/attr (2017-02-01) 27 commits
920 - (merged to 'next' on 2017-02-14 at d35c1d7e4a)
921 - + attr: reformat git_attr_set_direction() function
922 - + attr: push the bare repo check into read_attr()
923 - + attr: store attribute stack in attr_check structure
924 - + attr: tighten const correctness with git_attr and match_attr
925 - + attr: remove maybe-real, maybe-macro from git_attr
926 - + attr: eliminate global check_all_attr array
927 - + attr: use hashmap for attribute dictionary
928 - + attr: change validity check for attribute names to use positive logic
929 - + attr: pass struct attr_check to collect_some_attrs
930 - + attr: retire git_check_attrs() API
931 - + attr: convert git_check_attrs() callers to use the new API
932 - + attr: convert git_all_attrs() to use "struct attr_check"
933 - + attr: (re)introduce git_check_attr() and struct attr_check
934 - + attr: rename function and struct related to checking attributes
935 - + attr.c: outline the future plans by heavily commenting
936 - + Documentation: fix a typo
937 - + attr.c: add push_stack() helper
938 - + attr: support quoting pathname patterns in C style
939 - + attr.c: plug small leak in parse_attr_line()
940 - + attr.c: tighten constness around "git_attr" structure
941 - + attr.c: simplify macroexpand_one()
942 - + attr.c: mark where #if DEBUG ends more clearly
943 - + attr.c: complete a sentence in a comment
944 - + attr.c: explain the lack of attr-name syntax check in parse_attr()
945 - + attr.c: update a stale comment on "struct match_attr"
946 - + attr.c: use strchrnul() to scan for one line
947 - + commit.c: use strchrnul() to scan for one line
948 -
949 - The gitattributes machinery is being taught to work better in a
950 - multi-threaded environment.
951 -
952 - Will cook in 'next'.
953 -
954 -
955 -* kn/ref-filter-branch-list (2017-02-07) 21 commits
956 - (merged to 'next' on 2017-02-10 at 794bb8284d)
957 - + ref-filter: resurrect "strip" as a synonym to "lstrip"
958 - (merged to 'next' on 2017-01-31 at e7592a5461)
959 - + branch: implement '--format' option
960 - + branch: use ref-filter printing APIs
961 - + branch, tag: use porcelain output
962 - + ref-filter: allow porcelain to translate messages in the output
963 - + ref-filter: add an 'rstrip=<N>' option to atoms which deal with refnames
964 - + ref-filter: modify the 'lstrip=<N>' option to work with negative '<N>'
965 - + ref-filter: Do not abruptly die when using the 'lstrip=<N>' option
966 - + ref-filter: rename the 'strip' option to 'lstrip'
967 - + ref-filter: make remote_ref_atom_parser() use refname_atom_parser_internal()
968 - + ref-filter: introduce refname_atom_parser()
969 - + ref-filter: introduce refname_atom_parser_internal()
970 - + ref-filter: make "%(symref)" atom work with the ':short' modifier
971 - + ref-filter: add support for %(upstream:track,nobracket)
972 - + ref-filter: make %(upstream:track) prints "[gone]" for invalid upstreams
973 - + ref-filter: introduce format_ref_array_item()
974 - + ref-filter: move get_head_description() from branch.c
975 - + ref-filter: modify "%(objectname:short)" to take length
976 - + ref-filter: implement %(if:equals=<string>) and %(if:notequals=<string>)
977 - + ref-filter: include reference to 'used_atom' within 'atom_value'
978 - + ref-filter: implement %(if), %(then), and %(else) atoms
979 -
980 - The code to list branches in "git branch" has been consolidated
981 - with the more generic ref-filter API.
982 -
983 - Will cook in 'next'.
984 + What's the donness of this topic?
985
986
987 * jk/no-looking-at-dotgit-outside-repo-final (2016-10-26) 1 commit
987 - (merged to 'next' on 2016-12-05 at 0c77e39cd5)
988 + (merged to 'next' on 2017-02-27 at 7373a1b73d)
989 + setup_git_env: avoid blind fall-back to ".git"
990
990 - Originally merged to 'next' on 2016-10-26
991 -
991 This is the endgame of the topic to avoid blindly falling back to
992 ".git" when the setup sequence said we are _not_ in Git repository.
993 A corner case that happens to work right now may be broken by a
@@ -998,11 +997,9 @@ of the repositories listed at
997
998
999 * jc/merge-drop-old-syntax (2015-04-29) 1 commit
1001 - (merged to 'next' on 2016-12-05 at 041946dae0)
1000 + (merged to 'next' on 2017-02-27 at 2c0f5f73d8)
1001 + merge: drop 'git merge <message> HEAD <commit>' syntax
1002
1004 - Originally merged to 'next' on 2016-10-11
1005 -
1003 Stop supporting "git merge <message> HEAD <commit>" syntax that has
1004 been deprecated since October 2007, and issues a deprecation
1005 warning message since v2.5.0.
@@ -1026,10 +1023,8 @@ of the repositories listed at
1023 [Discarded]
1024
1025 * sb/push-make-submodule-check-the-default (2017-01-26) 2 commits
1029 - (merged to 'next' on 2017-01-26 at 5f4715cea6)
1030 - + Revert "push: change submodule default to check when submodules exist"
1031 - (merged to 'next' on 2016-12-12 at 1863e05af5)
1032 - + push: change submodule default to check when submodules exist
1026 + . Revert "push: change submodule default to check when submodules exist"
1027 + . push: change submodule default to check when submodules exist
1028
1029 Turn the default of "push.recurseSubmodules" to "check" when
1030 submodules seem to be in use.
@@ -1045,3 +1040,48 @@ of the repositories listed at
1040 configuration variables.
1041
1042 Superseded by jc/config-case-cmdline.
1043 +
1044 +
1045 +* js/curl-empty-auth-set-by-default (2017-02-22) 1 commit
1046 + . http(s): automatically try NTLM authentication first
1047 +
1048 + Flip "http.emptyAuth" on by default to help OOB experience for
1049 + users of HTTP Negotiate authentication scheme.
1050 +
1051 + Superseded by jk/http-auth topic.
1052 +
1053 +
1054 +* jc/config-case-cmdline (2017-02-21) 3 commits
1055 + . config: squelch stupid compiler
1056 + . config: reject invalid VAR in 'git -c VAR=VAL command'
1057 + . config: preserve <subsection> case for one-shot config on the command line
1058 +
1059 + The code to parse "git -c VAR=VAL cmd" and set configuration
1060 + variable for the duration of cmd had two small bugs, which have
1061 + been fixed.
1062 +
1063 + Superseded by jc/config-case-cmdline-take-2
1064 +
1065 +
1066 +* lt/oneline-decoration-at-end (2017-02-21) 2 commits
1067 + . log: fix regression to "--source" when "--decorate" was updated
1068 + . show decorations at the end of the line
1069 +
1070 + The output from "git log --oneline --decorate" has been updated to
1071 + show the extra information at the end of the line, not near the
1072 + front.
1073 +
1074 + Retracted.
1075 + cf. <CA+55aFwT2HUBzZO8Gpt9tHoJtdRxv9oe3TDoSH5jcEOixRNBXg@mail.gmail.com>
1076 +
1077 +
1078 +* sk/parse-remote-cleanup (2017-02-21) 2 commits
1079 + . Revert "parse-remote: remove reference to unused op_prep"
1080 + . parse-remote: remove reference to unused op_prep
1081 +
1082 + Code clean-up.
1083 +
1084 + Will discard.
1085 + There may be third-party scripts that are dot-sourcing this one.
1086 +
1087 +