What's cooking (2017/03 #01)

Junio C Hamano committed Mar 1, 2017 at 14:27 UTC 66cf115dc1bd376a9380b8d2355022c620230a31
1 file changed +251 -558
whats-cooking.txt
+251 -558
@@ -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, #09; Mon, 27)
3 +Subject: What's cooking in git.git (Mar 2017, #01; Wed, 1)
4 X-master-at: 3bc53220cb2dcf709f7a027a3f526befd021d858
5 -X-next-at: 7373a1b73d524fe4dd36076fe0044bc966dc5055
5 +X-next-at: e531d8d3a95fec6ab73587571eb5e2443b8523e7
6
7 -What's cooking in git.git (Feb 2017, #09; Mon, 27)
7 +What's cooking in git.git (Mar 2017, #01; Wed, 1)
8 --------------------------------------------------
9
10 Here are the topics that have been cooking. Commits prefixed with
@@ -12,445 +12,270 @@ 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 -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 -
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 -[Graduated to "master"]
21 +[New Topics]
22
31 -* bc/blame-doc-fix (2017-02-22) 1 commit
32 - (merged to 'next' on 2017-02-22 at 81c0ff2283)
33 - + Documentation: use brackets for optional arguments
23 +* jk/interpret-branch-name (2017-02-28) 8 commits
24 + - checkout: restrict @-expansions when finding branch
25 + - strbuf_check_ref_format(): expand only local branches
26 + - branch: restrict @-expansions when deleting
27 + - t3204: test git-branch @-expansion corner cases
28 + - interpret_branch_name: allow callers to restrict expansions
29 + - strbuf_branchname: add docstring
30 + - strbuf_branchname: drop return value
31 + - interpret_branch_name: move docstring to header file
32
35 - Doc update.
33 + "git branch @" created refs/heads/@ as a branch, and in general the
34 + code that handled @{-1} and @{upstream} was a bit too loose in
35 + disambiguating.
36 +
37 + Expecting a reroll.
38 + cf. <20170228123331.wubqplp5zjwzz6is@sigill.intra.peff.net>
39
40
38 -* bc/worktree-doc-fix-detached (2017-02-22) 1 commit
39 - (merged to 'next' on 2017-02-22 at 8257025363)
40 - + Documentation: correctly spell git worktree --detach
41 +* jk/sha1dc (2017-03-01) 7 commits
42 + - Put sha1dc on a diet
43 + - sha1dc: avoid 'for' loop initial decl
44 + - sha1dc: resurrect LICENSE file
45 + - sha1dc: avoid c99 declaration-after-statement
46 + - Makefile: add USE_SHA1DC knob
47 + - sha1dc: adjust header includes for git
48 + - add collision-detecting sha1 implementation
49
42 - Doc update.
50 + Borrow "detect attempt to create collisions" variant of SHA-1
51 + implementation by Marc Stevens (CWI) and Dan Shumow (Microsoft).
52
53 + Expecting a cleaned-up reroll after discussion settles.
54 + cf. <CA+55aFxTWqsTTiDKo4DBZT-8Z9t80bGMD3uijzKONa_bYEZABQ@mail.gmail.com>
55
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
56
92 - Doc update.
57 +* js/travis-32bit-linux (2017-02-28) 1 commit
58 + - Travis: also test on 32-bit Linux
59
60 + Add 32-bit Linux variant to the set of platforms to be tested with
61 + Travis CI.
62
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
63 + Will merge to 'next'.
64
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.
65
66 +* jt/http-base-url-update-upon-redirect (2017-02-28) 1 commit
67 + - http: attempt updating base URL only if no error
68
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
69 + When a redirected http transport gets an error during the
70 + redirected request, we ignored the error we got from the server,
71 + and ended up giving a not-so-useful error message.
72 +
73 + Will merge to 'next'.
74 +
75 +
76 +* jt/mark-tree-uninteresting-for-uninteresting-commit (2017-02-28) 3 commits
77 + - upload-pack: compute blob reachability correctly
78 + - revision: exclude trees/blobs given commit
79 + - revision: unify {tree,blob}_objects in rev_info
80 +
81 + The revision/object traversal machinery did not mark all tree and
82 + blob objects that are contained in an uninteresting commit as
83 + uninteresting, because that is quite costly. Instead, it only
84 + marked those that are contained in an uninteresting boundary commit
85 + as uninteresting.
86 +
87 +
88 +* ps/docs-diffcore (2017-02-28) 2 commits
89 + - docs/diffcore: unquote "Complete Rewrites" in headers
90 + - docs/diffcore: fix grammar in diffcore-rename header
91
92 Doc update.
93
94 + Will merge to 'next'.
95
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
96
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".
97 +* rj/remove-unused-mktemp (2017-02-28) 2 commits
98 + - wrapper.c: remove unused gitmkstemps() function
99 + - wrapper.c: remove unused git_mkstemp() function
100
101 + Code cleanup.
102
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()
103 + Will merge to 'next'.
104
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".
105
106 +* sb/submodule-init-url-selection (2017-02-28) 1 commit
107 + - submodule init: warn about falling back to a local path
108
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
109 + Give a warning when "git submodule init" decides that the submodule
110 + in the working tree is its upstream, as it is not a very common
111 + setup.
112
143 - "git repack --depth=<n>" for a long time busted the specified depth
144 - when reusing delta from existing packs. This has been corrected.
113 + Will merge to 'next'.
114
115
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`
116 +* jc/diff-populate-filespec-size-only-fix (2017-03-01) 1 commit
117 + - diff: do not short-cut CHECK_SIZE_ONLY check in diff_populate_filespec()
118
363 - Doc update.
119 + "git diff --quiet" relies on the size field in diff_filespec to be
120 + correctly populated, but diff_populate_filespec() helper function
121 + made an incorrect short-cut when asked only to populate the size
122 + field for paths that need to go through convert_to_git() (e.g. CRLF
123 + conversion).
124
125 + Will merge to 'next'.
126
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
127
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.
128 +* nd/conditional-config-include (2017-03-01) 4 commits
129 + - SQUASH???
130 + - config: add conditional include
131 + - config.txt: reflow the second include.path paragraph
132 + - config.txt: clarify multiple key values in include.path
133
134 + The configuration file learned a new "includeIf.<condition>.path"
135 + that includes the contents of the given path only when the
136 + condition holds. This allows you to say "include this work-related
137 + bit only in the repositories under my ~/work/ directory".
138
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
139 + I think this is almost ready for 'next'.
140
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.
141
142 +* rs/log-email-subject (2017-03-01) 2 commits
143 + - pretty: use fmt_output_email_subject()
144 + - log-tree: factor out fmt_output_email_subject()
145
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
146 + Code clean-up.
147
394 - Doc update.
148 + Will merge to 'next'.
149 +
150 +--------------------------------------------------
151 +[Stalled]
152
153 +* nd/worktree-move (2017-01-27) 7 commits
154 + . fixup! worktree move: new command
155 + . worktree remove: new command
156 + . worktree move: refuse to move worktrees with submodules
157 + . worktree move: accept destination as directory
158 + . worktree move: new command
159 + . worktree.c: add update_worktree_location()
160 + . worktree.c: add validate_worktree()
161
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.
162 + "git worktree" learned move and remove subcommands.
163 +
164 + Tentatively ejected as it seems to break 'pu' when merged.
165 +
166 +
167 +* pb/bisect (2017-02-18) 28 commits
168 + - fixup! bisect--helper: `bisect_next_check` & bisect_voc shell function in C
169 + - bisect--helper: remove the dequote in bisect_start()
170 + - bisect--helper: retire `--bisect-auto-next` subcommand
171 + - bisect--helper: retire `--bisect-autostart` subcommand
172 + - bisect--helper: retire `--bisect-write` subcommand
173 + - bisect--helper: `bisect_replay` shell function in C
174 + - bisect--helper: `bisect_log` shell function in C
175 + - bisect--helper: retire `--write-terms` subcommand
176 + - bisect--helper: retire `--check-expected-revs` subcommand
177 + - bisect--helper: `bisect_state` & `bisect_head` shell function in C
178 + - bisect--helper: `bisect_autostart` shell function in C
179 + - bisect--helper: retire `--next-all` subcommand
180 + - bisect--helper: retire `--bisect-clean-state` subcommand
181 + - bisect--helper: `bisect_next` and `bisect_auto_next` shell function in C
182 + - t6030: no cleanup with bad merge base
183 + - bisect--helper: `bisect_start` shell function partially in C
184 + - bisect--helper: `get_terms` & `bisect_terms` shell function in C
185 + - bisect--helper: `bisect_next_check` & bisect_voc shell function in C
186 + - bisect--helper: `check_and_set_terms` shell function in C
187 + - bisect--helper: `bisect_write` shell function in C
188 + - bisect--helper: `is_expected_rev` & `check_expected_revs` shell function in C
189 + - bisect--helper: `bisect_reset` shell function in C
190 + - wrapper: move is_empty_file() and rename it as is_empty_or_missing_file()
191 + - t6030: explicitly test for bisection cleanup
192 + - bisect--helper: `bisect_clean_state` shell function in C
193 + - bisect--helper: `write_terms` shell function in C
194 + - bisect: rewrite `check_term_format` shell function in C
195 + - bisect--helper: use OPT_CMDMODE instead of OPT_BOOL
196 +
197 + Move more parts of "git bisect" to C.
198 +
199 + Expecting a reroll.
200 + cf. <CAFZEwPPXPPHi8KiEGS9ggzNHDCGhuqMgH9Z8-Pf9GLshg8+LPA@mail.gmail.com>
201 + cf. <CAFZEwPM9RSTGN54dzaw9gO9iZmsYjJ_d1SjUD4EzSDDbmh-XuA@mail.gmail.com>
202 + cf. <CAFZEwPNUXcNY9Qdz=_B7q2kQuaecPzJtTMGdv8YMUPEz2vnp8A@mail.gmail.com>
203 +
204 +
205 +* ls/filter-process-delayed (2017-01-08) 1 commit
206 + . convert: add "status=delayed" to filter process protocol
207 +
208 + Ejected, as does not build when merged to 'pu'.
209 +
210 +
211 +* sh/grep-tree-obj-tweak-output (2017-01-20) 2 commits
212 + - grep: use '/' delimiter for paths
213 + - grep: only add delimiter if there isn't one already
214 +
215 + "git grep", when fed a tree-ish as an input, shows each hit
216 + prefixed with "<tree-ish>:<path>:<lineno>:". As <tree-ish> is
217 + almost always either a commit or a tag that points at a commit, the
218 + early part of the output "<tree-ish>:<path>" can be used as the
219 + name of the blob and given to "git show". When <tree-ish> is a
220 + tree given in the extended SHA-1 syntax (e.g. "<commit>:", or
221 + "<commit>:<dir>"), however, this results in a string that does not
222 + name a blob (e.g. "<commit>::<path>" or "<commit>:<dir>:<path>").
223 + "git grep" has been taught to be a bit more intelligent about these
224 + cases and omit a colon (in the former case) or use slash (in the
225 + latter case) to produce "<commit>:<path>" and
226 + "<commit>:<dir>/<path>" that can be used as the name of a blob.
227 +
228 + Expecting a reroll? Is this good enough with known limitations?
229 +
230 +
231 +* jc/diff-b-m (2015-02-23) 5 commits
232 + . WIPWIP
233 + . WIP: diff-b-m
234 + - diffcore-rename: allow easier debugging
235 + - diffcore-rename.c: add locate_rename_src()
236 + - diffcore-break: allow debugging
237 +
238 + "git diff -B -M" produced incorrect patch when the postimage of a
239 + completely rewritten file is similar to the preimage of a removed
240 + file; such a resulting file must not be expressed as a rename from
241 + other place.
242 +
243 + The fix in this patch is broken, unfortunately.
244 +
245 + Will discard.
246
247 --------------------------------------------------
453 -[New Topics]
248 +[Cooking]
249 +
250 +* cc/split-index-config (2017-03-01) 22 commits
251 + - Documentation/git-update-index: explain splitIndex.*
252 + - Documentation/config: add splitIndex.sharedIndexExpire
253 + - read-cache: use freshen_shared_index() in read_index_from()
254 + - read-cache: refactor read_index_from()
255 + - t1700: test shared index file expiration
256 + - read-cache: unlink old sharedindex files
257 + - config: add git_config_get_expiry() from gc.c
258 + - read-cache: touch shared index files when used
259 + - sha1_file: make check_and_freshen_file() non static
260 + - Documentation/config: add splitIndex.maxPercentChange
261 + - t1700: add tests for splitIndex.maxPercentChange
262 + - read-cache: regenerate shared index if necessary
263 + - config: add git_config_get_max_percent_split_change()
264 + - Documentation/git-update-index: talk about core.splitIndex config var
265 + - Documentation/config: add information for core.splitIndex
266 + - t1700: add tests for core.splitIndex
267 + - update-index: warn in case of split-index incoherency
268 + - read-cache: add and then use tweak_split_index()
269 + - split-index: add {add,remove}_split_index() functions
270 + - config: add git_config_get_split_index()
271 + - t1700: change here document style
272 + - config: mark an error message up for translation
273 +
274 + The experimental "split index" feature has gained a few
275 + configuration variables to make it easier to use.
276 +
277 + I think this is almost ready for 'next'.
278 +
279
280 * dp/filter-branch-prune-empty (2017-02-23) 4 commits
281 - p7000: add test for filter-branch with --prune-empty
@@ -465,14 +290,15 @@ of the repositories listed at
290
291
292 * jc/config-case-cmdline-take-2 (2017-02-23) 2 commits
468 - - config: use git_config_parse_key() in git_config_parse_parameter()
469 - - config: move a few helper functions up
293 + (merged to 'next' on 2017-03-01 at 2e9920eeeb)
294 + + config: use git_config_parse_key() in git_config_parse_parameter()
295 + + config: move a few helper functions up
296
297 The code to parse "git -c VAR=VAL cmd" and set configuration
298 variable for the duration of cmd had two small bugs, which have
299 been fixed.
300
475 - Will merge to 'next'.
301 + Will merge to 'master'.
302 This supersedes jc/config-case-cmdline topic that has been discarded.
303
304
@@ -483,6 +309,8 @@ of the repositories listed at
309 A few tests were run conditionally under (rare) conditions where
310 they cannot be run (like running cvs tests under 'root' account).
311
312 + Will merge to 'next'.
313 +
314
315 * jk/auto-namelen-in-interpret-branch-name (2017-02-27) 1 commit
316 - interpret_branch_name(): handle auto-namelen for @{-1}
@@ -504,14 +332,15 @@ of the repositories listed at
332
333
334 * 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
335 + (merged to 'next' on 2017-03-01 at e531d8d3a9)
336 + + parse_hide_refs_config: tell parse_config_key we don't want a subsection
337 + + parse_config_key: allow matching single-level config
338 + + parse_config_key: use skip_prefix instead of starts_with
339 (this branch uses sb/parse-hide-refs-config-cleanup.)
340
341 The "parse_config_key()" API function has been cleaned up.
342
514 - Will merge to 'next'.
343 + Will merge to 'master'.
344
345
346 * jk/t6300-cleanup (2017-02-27) 1 commit
@@ -553,12 +382,13 @@ of the repositories listed at
382
383
384 * sb/parse-hide-refs-config-cleanup (2017-02-24) 1 commit
556 - - refs: parse_hide_refs_config to use parse_config_key
385 + (merged to 'next' on 2017-03-01 at fd722ba039)
386 + + refs: parse_hide_refs_config to use parse_config_key
387 (this branch is used by jk/parse-config-key-cleanup.)
388
389 Code clean-up.
390
561 - Will merge to 'next'.
391 + Will merge to 'master'.
392
393
394 * sg/clone-refspec-from-command-line-config (2017-02-27) 1 commit
@@ -580,142 +410,8 @@ of the repositories listed at
410 checked out" in more places.
411
412 Needs review.
583 - cf. <1488007487-12965-1-git-send-email-kannan.siddharth12@gmail.com>
413 + cf. <1488007487-12965-1-git-send-email-kannan.siddharth12@gmail.com>
414
585 ---------------------------------------------------
586 -[Stalled]
587 -
588 -* nd/worktree-move (2017-01-27) 7 commits
589 - . fixup! worktree move: new command
590 - . worktree remove: new command
591 - . worktree move: refuse to move worktrees with submodules
592 - . worktree move: accept destination as directory
593 - . worktree move: new command
594 - . worktree.c: add update_worktree_location()
595 - . worktree.c: add validate_worktree()
596 -
597 - "git worktree" learned move and remove subcommands.
598 -
599 - Tentatively ejected as it seems to break 'pu' when merged.
600 -
601 -
602 -* cc/split-index-config (2016-12-26) 21 commits
603 - - Documentation/git-update-index: explain splitIndex.*
604 - - Documentation/config: add splitIndex.sharedIndexExpire
605 - - read-cache: use freshen_shared_index() in read_index_from()
606 - - read-cache: refactor read_index_from()
607 - - t1700: test shared index file expiration
608 - - read-cache: unlink old sharedindex files
609 - - config: add git_config_get_expiry() from gc.c
610 - - read-cache: touch shared index files when used
611 - - sha1_file: make check_and_freshen_file() non static
612 - - Documentation/config: add splitIndex.maxPercentChange
613 - - t1700: add tests for splitIndex.maxPercentChange
614 - - read-cache: regenerate shared index if necessary
615 - - config: add git_config_get_max_percent_split_change()
616 - - Documentation/git-update-index: talk about core.splitIndex config var
617 - - Documentation/config: add information for core.splitIndex
618 - - t1700: add tests for core.splitIndex
619 - - update-index: warn in case of split-index incoherency
620 - - read-cache: add and then use tweak_split_index()
621 - - split-index: add {add,remove}_split_index() functions
622 - - config: add git_config_get_split_index()
623 - - config: mark an error message up for translation
624 -
625 - The experimental "split index" feature has gained a few
626 - configuration variables to make it easier to use.
627 -
628 - Expecting a reroll.
629 - cf. <20161226102222.17150-1-chriscool@tuxfamily.org>
630 - cf. <a1a44640-ff6c-2294-72ac-46322eff8505@ramsayjones.plus.com>
631 - cf. <CAP8UFD3_1EN=0EsD12Cew1MuW8yhtPAZw0M_g3wmvKFk-uGXxw@mail.gmail.com>
632 - cf. <CAP8UFD1wmbR_rHyqn0q=0hw6-hHYFTzr=3yxS2XS9qTdY1kWFA@mail.gmail.com>
633 - cf. <xmqqbmunq6mg.fsf@gitster.mtv.corp.google.com>
634 - cf. <CAP8UFD0bgxVrc=RGHs1GrZ_5PF4cdfhqXLMiCSJTNw9axrr=_w@mail.gmail.com>
635 -
636 -
637 -* pb/bisect (2017-02-18) 28 commits
638 - - fixup! bisect--helper: `bisect_next_check` & bisect_voc shell function in C
639 - - bisect--helper: remove the dequote in bisect_start()
640 - - bisect--helper: retire `--bisect-auto-next` subcommand
641 - - bisect--helper: retire `--bisect-autostart` subcommand
642 - - bisect--helper: retire `--bisect-write` subcommand
643 - - bisect--helper: `bisect_replay` shell function in C
644 - - bisect--helper: `bisect_log` shell function in C
645 - - bisect--helper: retire `--write-terms` subcommand
646 - - bisect--helper: retire `--check-expected-revs` subcommand
647 - - bisect--helper: `bisect_state` & `bisect_head` shell function in C
648 - - bisect--helper: `bisect_autostart` shell function in C
649 - - bisect--helper: retire `--next-all` subcommand
650 - - bisect--helper: retire `--bisect-clean-state` subcommand
651 - - bisect--helper: `bisect_next` and `bisect_auto_next` shell function in C
652 - - t6030: no cleanup with bad merge base
653 - - bisect--helper: `bisect_start` shell function partially in C
654 - - bisect--helper: `get_terms` & `bisect_terms` shell function in C
655 - - bisect--helper: `bisect_next_check` & bisect_voc shell function in C
656 - - bisect--helper: `check_and_set_terms` shell function in C
657 - - bisect--helper: `bisect_write` shell function in C
658 - - bisect--helper: `is_expected_rev` & `check_expected_revs` shell function in C
659 - - bisect--helper: `bisect_reset` shell function in C
660 - - wrapper: move is_empty_file() and rename it as is_empty_or_missing_file()
661 - - t6030: explicitly test for bisection cleanup
662 - - bisect--helper: `bisect_clean_state` shell function in C
663 - - bisect--helper: `write_terms` shell function in C
664 - - bisect: rewrite `check_term_format` shell function in C
665 - - bisect--helper: use OPT_CMDMODE instead of OPT_BOOL
666 -
667 - Move more parts of "git bisect" to C.
668 -
669 - Expecting a reroll.
670 - cf. <CAFZEwPPXPPHi8KiEGS9ggzNHDCGhuqMgH9Z8-Pf9GLshg8+LPA@mail.gmail.com>
671 - cf. <CAFZEwPM9RSTGN54dzaw9gO9iZmsYjJ_d1SjUD4EzSDDbmh-XuA@mail.gmail.com>
672 - cf. <CAFZEwPNUXcNY9Qdz=_B7q2kQuaecPzJtTMGdv8YMUPEz2vnp8A@mail.gmail.com>
673 -
674 -
675 -* ls/filter-process-delayed (2017-01-08) 1 commit
676 - . convert: add "status=delayed" to filter process protocol
677 -
678 - Ejected, as does not build when merged to 'pu'.
679 -
680 -
681 -* sh/grep-tree-obj-tweak-output (2017-01-20) 2 commits
682 - - grep: use '/' delimiter for paths
683 - - grep: only add delimiter if there isn't one already
684 -
685 - "git grep", when fed a tree-ish as an input, shows each hit
686 - prefixed with "<tree-ish>:<path>:<lineno>:". As <tree-ish> is
687 - almost always either a commit or a tag that points at a commit, the
688 - early part of the output "<tree-ish>:<path>" can be used as the
689 - name of the blob and given to "git show". When <tree-ish> is a
690 - tree given in the extended SHA-1 syntax (e.g. "<commit>:", or
691 - "<commit>:<dir>"), however, this results in a string that does not
692 - name a blob (e.g. "<commit>::<path>" or "<commit>:<dir>:<path>").
693 - "git grep" has been taught to be a bit more intelligent about these
694 - cases and omit a colon (in the former case) or use slash (in the
695 - latter case) to produce "<commit>:<path>" and
696 - "<commit>:<dir>/<path>" that can be used as the name of a blob.
697 -
698 - Expecting a reroll? Is this good enough with known limitations?
699 -
700 -
701 -* jc/diff-b-m (2015-02-23) 5 commits
702 - . WIPWIP
703 - . WIP: diff-b-m
704 - - diffcore-rename: allow easier debugging
705 - - diffcore-rename.c: add locate_rename_src()
706 - - diffcore-break: allow debugging
707 -
708 - "git diff -B -M" produced incorrect patch when the postimage of a
709 - completely rewritten file is similar to the preimage of a removed
710 - file; such a resulting file must not be expressed as a rename from
711 - other place.
712 -
713 - The fix in this patch is broken, unfortunately.
714 -
715 - Will discard.
716 -
717 ---------------------------------------------------
718 -[Cooking]
415
416 * jh/send-email-one-cc (2017-02-27) 1 commit
417 - send-email: only allow one address per body tag
@@ -739,35 +435,37 @@ of the repositories listed at
435
436
437 * jk/ident-empty (2017-02-23) 4 commits
742 - - ident: do not ignore empty config name/email
743 - - ident: reject all-crud ident name
744 - - ident: handle NULL email when complaining of empty name
745 - - ident: mark error messages for translation
438 + (merged to 'next' on 2017-03-01 at ff80031ce6)
439 + + ident: do not ignore empty config name/email
440 + + ident: reject all-crud ident name
441 + + ident: handle NULL email when complaining of empty name
442 + + ident: mark error messages for translation
443
444 user.email that consists of only cruft chars should have
445 consistently errored out, but didn't.
446
750 - Will merge to 'next'.
447 + Will merge to 'master'.
448
449
450 * jt/upload-pack-error-report (2017-02-23) 1 commit
754 - - upload-pack: report "not our ref" to client
451 + (merged to 'next' on 2017-03-01 at aea583dbe5)
452 + + upload-pack: report "not our ref" to client
453
454 "git upload-pack", which is a counter-part of "git fetch", did not
455 report a request for a ref that was not advertised as invalid.
456 This is generally not a problem (because "git fetch" will stop
457 before making such a request), but is the right thing to do.
458
761 - Will merge to 'next'.
459 + Will merge to 'master'.
460
461
764 -* ah/doc-ls-files-quotepath (2017-02-22) 1 commit
765 - - Documentation: clarify core.quotePath and update git-ls-files doc
462 +* ah/doc-ls-files-quotepath (2017-02-28) 3 commits
463 + - SQUASH???
464 + - Documentation: Link descriptions of -z to core.quotePath
465 + - Documentation: Improve description for core.quotePath
466
467 Documentation for "git ls-files" did not refer to core.quotePath
468
769 - Reroll exists but not picked up yet.
770 -
469
470 * jh/memihash-opt (2017-02-17) 5 commits
471 - name-hash: remember previous dir_entry during lazy_init_name_hash
@@ -907,8 +605,7 @@ of the repositories listed at
605 Needs review.
606
607
910 -* tg/stash-push (2017-02-27) 7 commits
911 - - SQUASH???
608 +* tg/stash-push (2017-02-28) 6 commits
609 - stash: allow pathspecs in the no verb form
610 - stash: use stash_push for no verb form
611 - stash: teach 'push' (and 'create_stash') to honor pathspec
@@ -919,9 +616,7 @@ of the repositories listed at
616 Allow "git stash" to take pathspec so that the local changes can be
617 stashed away only partially.
618
922 - Expecting a reroll.
923 - I think this is almost there.
924 - cf. <20170225213306.2410-1-t.gummerer@gmail.com>
619 + Will merge to 'next'.
620
621
622 * bc/object-id (2017-02-22) 19 commits
@@ -1083,5 +778,3 @@ of the repositories listed at
778
779 Will discard.
780 There may be third-party scripts that are dot-sourcing this one.
1086 -
1087 -