1 To: git@vger.kernel.org
3 Subject: What's cooking in git.git (Aug 2015, #01; Mon, 3)
4 X-master-at: efc8a625e9b03e6f8ceed37ccd4b9167a7447e31
5 X-next-at: f5e568e307909722237f3acc29e39e7d8dd1e7b9
7 What's cooking in git.git (Aug 2015, #01; Mon, 3)
8 --------------------------------------------------
10 Here are the topics that have been cooking. Commits prefixed with
11 '-' are only in 'pu' (proposed updates) while commits prefixed with
14 Accumulated fixes went to a new maintenance release 2.4.8. The
15 first batch of the post-2.5 development cycle has been merged to
16 'master', and the tip of 'next' has been rewound.
18 I've kicked a few topics out of 'next' back to 'pu' for now.
20 - I think pt/am-builtin is more or less ready, but the fix to the
21 issue that options given to 'git am' when restarting were
22 rejected must be queued on that topic before we can start
23 thinking of merging it to 'master' for the next release.
25 - I think es/worktree-add and es/worktree-add-cleanup are good
26 shape overall, but we probably would want to make them into a
29 You can find the changes described here in the integration branches
30 of the repositories listed at
32 http://git-blame.blogspot.com/p/git-public-repositories.html
34 --------------------------------------------------
35 [Graduated to "master"]
37 * as/sparse-checkout-removal (2015-07-21) 1 commit
38 (merged to 'next' on 2015-07-21 at ab94680)
39 + unpack-trees: don't update files with CE_WT_REMOVE set
41 "sparse checkout" misbehaved for a path that is excluded from the
42 checkout when switching between branches that differ at the path.
45 * bc/gpg-verify-raw (2015-06-22) 7 commits
46 (merged to 'next' on 2015-06-24 at 08a1164)
47 + verify-tag: add option to print raw gpg status information
48 + verify-commit: add option to print raw gpg status information
49 + gpg: centralize printing signature buffers
50 + gpg: centralize signature check
51 + verify-commit: add test for exit status on untrusted signature
52 + verify-tag: share code with verify-commit
53 + verify-tag: add tests
55 "git verify-tag" and "git verify-commit" have been taught to share
56 more code, and then learned to optionally show the verification
57 message from the underlying GPG implementation.
60 * cb/parse-magnitude (2015-06-22) 2 commits
61 (merged to 'next' on 2015-06-24 at 2fd7205)
62 + parse-options: move unsigned long option parsing out of pack-objects.c
63 + test-parse-options: update to handle negative ints
65 Move machinery to parse human-readable scaled numbers like 1k, 4M,
66 and 2G as an option parameter's value from pack-objects to
67 parse-options API, to make it available to other codepaths.
70 * cb/uname-in-untracked (2015-07-17) 1 commit
71 (merged to 'next' on 2015-07-21 at d867af0)
72 + untracked: fix detection of uname(2) failure
74 An experimental "untracked cache" feature used uname(2) in a
75 slightly unportable way.
78 * da/subtree-date-confusion (2015-07-23) 1 commit
79 (merged to 'next' on 2015-07-29 at 01016b1)
80 + contrib/subtree: ignore log.date configuration
82 "git subtree" (in contrib/) depended on "git log" output to be
83 stable, which was a no-no. Apply a workaround to force a
84 particular date format.
87 * db/send-pack-user-signingkey (2015-07-21) 1 commit
88 (merged to 'next' on 2015-07-29 at b0d62e9)
89 + builtin/send-pack.c: respect user.signingkey
91 The low-level "git send-pack" did not honor 'user.signingkey'
92 configuration variable when sending a signed-push.
95 * dt/log-follow-config (2015-07-09) 1 commit
96 (merged to 'next' on 2015-07-10 at b8fbb43)
97 + log: add "log.follow" configuration variable
99 Add a new configuration variable to enable "--follow" automatically
100 when "git log" is run with one pathspec argument.
103 * dt/refs-backend-preamble (2015-07-21) 7 commits
104 (merged to 'next' on 2015-07-23 at 9dac423)
105 + git-stash: use update-ref --create-reflog instead of creating files
106 + update-ref and tag: add --create-reflog arg
107 + refs: add REF_FORCE_CREATE_REFLOG flag
108 + git-reflog: add exists command
109 + refs: new public ref function: safe_create_reflog
110 + refs: break out check for reflog autocreation
111 + refs.c: add err arguments to reflog functions
112 (this branch is used by dt/refs-pseudo.)
114 In preparation for allowing different "backends" to store the refs
115 in a way different from the traditional "one ref per file in $GIT_DIR
116 or in a $GIT_DIR/packed-refs file" filesystem storage, reduce
117 direct filesystem access to ref-like things like CHERRY_PICK_HEAD
118 from scripts and programs.
121 * ee/clean-remove-dirs (2015-06-26) 6 commits
122 (merged to 'next' on 2015-06-29 at d595659)
123 + read_gitfile_gently: fix use-after-free
124 (merged to 'next' on 2015-06-24 at 7c27821)
125 + clean: improve performance when removing lots of directories
126 + p7300: add performance tests for clean
127 + t7300: add tests to document behavior of clean and nested git
128 + setup: sanity check file size in read_gitfile_gently
129 + setup: add gentle version of read_gitfile
131 Replace "is this subdirectory a separate repository that should not
132 be touched?" check "git clean" does by checking if it has .git/HEAD
133 using the submodule-related code with a more optimized check.
136 * es/doc-clean-outdated-tools (2015-07-28) 5 commits
137 (merged to 'next' on 2015-07-29 at 6d80251)
138 + Documentation/git-tools: retire manually-maintained list
139 + Documentation/git-tools: drop references to defunct tools
140 + Documentation/git-tools: fix item text formatting
141 + Documentation/git-tools: improve discoverability of Git wiki
142 + Documentation/git: drop outdated Cogito reference
145 * gp/status-rebase-i-info (2015-07-06) 4 commits
146 (merged to 'next' on 2015-07-10 at b121298)
147 + status: add new tests for status during rebase -i
148 + status: give more information during rebase -i
149 + status: differentiate interactive from non-interactive rebases
150 + status: factor two rebase-related messages together
152 Teach "git status" to show a more detailed information regarding
153 the "rebase -i" session in progress.
156 * gr/rebase-i-drop-warn (2015-06-30) 3 commits
157 (merged to 'next' on 2015-07-15 at 6f4f2c8)
158 + git rebase -i: add static check for commands and SHA-1
159 + git rebase -i: warn about removed commits
160 + git-rebase -i: add command "drop" to remove a commit
162 Add "drop commit-object-name subject" command as another way to
163 skip replaying of a commit in "rebase -i".
166 * ib/scripted-parse-opt-better-hint-string (2015-07-15) 1 commit
167 (merged to 'next' on 2015-07-17 at 7bb1674)
168 + rev-parse --parseopt: allow [*=?!] in argument hints
170 The "rev-parse --parseopt" mode parsed the option specification
171 and the argument hint in a strange way to allow '=' and other
172 special characters in the option name while forbidding them from
173 the argument hint. This made it impossible to define an option
174 like "--pair <key>=<value>" with "pair=key=value" specification,
175 which instead would have defined a "--pair=key <value>" option.
178 * jc/commit-slab (2015-05-22) 1 commit
179 (merged to 'next' on 2015-07-15 at 4c83475)
180 + commit-slab: introduce slabname##_peek() function
182 Memory use reduction when commit-slab facility is used to annotate
183 sparsely (which is not recommended in the first place).
186 * jk/cat-file-batch-all (2015-06-26) 8 commits
187 (merged to 'next' on 2015-07-10 at 80200cc)
188 + cat-file: sort and de-dup output of --batch-all-objects
189 + cat-file: add --batch-all-objects option
190 + cat-file: split batch_one_object into two stages
191 + cat-file: stop returning value from batch_one_object
192 + cat-file: add --buffer option
193 + cat-file: move batch_options definition to top of file
194 + cat-file: minor style fix in options list
195 + Merge branch 'jk/maint-for-each-packed-object' into jk/cat-file-batch-all
197 "cat-file" learned "--batch-all-objects" option to enumerate all
198 available objects in the repository more quickly than "rev-list
199 --all --objects" (the output includes unreachable objects, though).
202 * jk/date-mode-format (2015-07-20) 4 commits
203 (merged to 'next' on 2015-07-21 at 69f66be)
204 + strbuf: make strbuf_addftime more robust
205 (merged to 'next' on 2015-07-09 at a01bfc3)
206 + introduce "format" date-mode
207 + convert "enum date_mode" into a struct
208 + show-branch: use DATE_RELATIVE instead of magic number
210 Teach "git log" and friends a new "--date=format:..." option to
211 format timestamps using system's strftime(3).
214 * jk/pkt-log-pack (2015-06-16) 3 commits
215 (merged to 'next' on 2015-07-10 at ba33212)
216 + pkt-line: support tracing verbatim pack contents
217 + pkt-line: tighten sideband PACK check when tracing
218 + pkt-line: simplify starts_with checks in packet tracing
220 Enhance packet tracing machinery to allow capturing an incoming
221 pack data to a file for debugging.
224 * jk/refspec-parse-wildcard (2015-07-27) 2 commits
225 (merged to 'next' on 2015-07-29 at eb48d2f)
226 + refs: loosen restriction on wildcard "*" refspecs
227 + refs: cleanup comments regarding check_refname_component()
229 Allow an asterisk as a substring (as opposed to the entirety) of
230 a path component for both side of a refspec, e.g.
231 "refs/heads/o*:refs/remotes/heads/i*".
234 * js/fsck-opt (2015-06-23) 19 commits
235 (merged to 'next' on 2015-07-10 at eb4da0a)
236 + fsck: support ignoring objects in `git fsck` via fsck.skiplist
237 + fsck: git receive-pack: support excluding objects from fsck'ing
238 + fsck: introduce `git fsck --connectivity-only`
239 + fsck: support demoting errors to warnings
240 + fsck: document the new receive.fsck.<msg-id> options
241 + fsck: allow upgrading fsck warnings to errors
242 + fsck: optionally ignore specific fsck issues completely
243 + fsck: disallow demoting grave fsck errors to warnings
244 + fsck: add a simple test for receive.fsck.<msg-id>
245 + fsck: make fsck_tag() warn-friendly
246 + fsck: handle multiple authors in commits specially
247 + fsck: make fsck_commit() warn-friendly
248 + fsck: make fsck_ident() warn-friendly
249 + fsck: report the ID of the error/warning
250 + fsck (receive-pack): allow demoting errors to warnings
251 + fsck: offer a function to demote fsck errors to warnings
252 + fsck: provide a function to parse fsck message IDs
253 + fsck: introduce identifiers for fsck messages
254 + fsck: introduce fsck options
256 Allow ignoring fsck errors on specific set of known-to-be-bad
257 objects, and also tweaking warning level of various kinds of non
258 critical breakages reported.
261 * jx/do-not-crash-receive-pack-wo-head (2015-07-22) 1 commit
262 (merged to 'next' on 2015-07-29 at 227d0d9)
263 + receive-pack: crash when checking with non-exist HEAD
265 An attempt to delete a ref by pushing into a repositorywhose HEAD
266 symbolic reference points at an unborn branch that cannot be
267 created due to ref D/F conflict (e.g. refs/heads/a/b exists, HEAD
268 points at refs/heads/a) failed.
271 * kb/i18n-doc (2015-07-01) 1 commit
272 (merged to 'next' on 2015-07-09 at a12c7b3)
273 + Documentation/i18n.txt: clarify character encoding support
276 * kn/for-each-ref (2015-08-03) 11 commits
277 + ref-filter: make 'ref_array_item' use a FLEX_ARRAY for refname
278 + for-each-ref: introduce filter_refs()
279 + ref-filter: move code from 'for-each-ref'
280 + ref-filter: add 'ref-filter.h'
281 + for-each-ref: rename variables called sort to sorting
282 + for-each-ref: rename some functions and make them public
283 + for-each-ref: introduce 'ref_array_clear()'
284 + for-each-ref: introduce new structures for better organisation
285 + for-each-ref: rename 'refinfo' to 'ref_array_item'
286 + for-each-ref: clean up code
287 + for-each-ref: extract helper functions out of grab_single_ref()
288 (this branch is used by kn/for-each-tag-branch).
290 GSoC project to rebuild ref listing by branch and tag based on the
291 for-each-ref machinery. This is its first part.
294 * kn/tag-doc-fix (2015-07-10) 1 commit
295 (merged to 'next' on 2015-07-15 at 7bd6038)
296 + Documentation/tag: remove double occurance of "<pattern>"
299 * mh/fast-import-get-mark (2015-07-01) 1 commit
300 (merged to 'next' on 2015-07-15 at 5e034b9)
301 + fast-import: add a get-mark command
303 "git fast-import" learned to respond to the get-mark command via
304 its cat-blob-fd interface.
307 * mh/fast-import-optimize-current-from (2015-07-13) 1 commit
308 (merged to 'next' on 2015-07-15 at 2be8b1f)
309 + fast-import: do less work when given "from" matches current branch head
311 Often a fast-import stream builds a new commit on top of the
312 previous commit it built, and it often unconditionally emits a
313 "from" command to specify the first parent, which can be omitted in
314 such a case. This caused fast-import to forget the tree of the
315 previous commit and then re-read it from scratch, which was
316 inefficient. Optimize for this common case.
319 * mh/init-delete-refs-api (2015-06-22) 19 commits
320 (merged to 'next' on 2015-07-10 at 121b26e)
321 + delete_ref(): use the usual convention for old_sha1
322 + cmd_update_ref(): make logic more straightforward
323 + update_ref(): don't read old reference value before delete
324 + check_branch_commit(): make first parameter const
325 + refs.h: add some parameter names to function declarations
326 + refs: move the remaining ref module declarations to refs.h
327 + initial_ref_transaction_commit(): check for ref D/F conflicts
328 + initial_ref_transaction_commit(): check for duplicate refs
329 + refs: remove some functions from the module's public interface
330 + initial_ref_transaction_commit(): function for initial ref creation
331 + repack_without_refs(): make function private
332 + prune_refs(): use delete_refs()
333 + prune_remote(): use delete_refs()
334 + delete_refs(): bail early if the packed-refs file cannot be rewritten
335 + delete_refs(): make error message more generic
336 + delete_refs(): new function for the refs API
337 + delete_ref(): handle special case more explicitly
338 + remove_branches(): remove temporary
339 + delete_ref(): move declaration to refs.h
341 Clean up refs API and make "git clone" less intimate with the
342 implementation detail.
345 * mh/replace-refs (2015-06-12) 1 commit
346 (merged to 'next' on 2015-06-24 at cb13adf)
347 + Allow to control where the replace refs are looked for
349 Add an environment variable to tell Git to look into refs hierarchy
350 other than refs/replace/ for the object replacement data.
353 * mr/rebase-i-customize-insn-sheet (2015-06-15) 1 commit
354 (merged to 'next' on 2015-07-10 at ec383cd)
355 + git-rebase--interactive.sh: add config option for custom instruction format
357 "git rebase -i"'s list of todo is made configurable.
360 * nd/export-worktree (2015-06-26) 1 commit
361 (merged to 'next' on 2015-07-09 at 1581a9b)
362 + setup: set env $GIT_WORK_TREE when work tree is set, like $GIT_DIR
364 Running an aliased command from a subdirectory when the .git thing
365 in the working tree is a gitfile pointing elsewhere did not work.
368 * pt/am-foreign (2015-06-15) 5 commits
369 (merged to 'next' on 2015-06-24 at 838c702)
370 + am: teach mercurial patch parser how to read from stdin
371 + am: use gmtime() to parse mercurial patch date
372 + t4150: test applying StGit series
373 + am: teach StGit patch parser how to read from stdin
374 + t4150: test applying StGit patch
376 Various enhancements around "git am" reading patches generated by
380 * pt/am-tests (2015-07-20) 12 commits
381 (merged to 'next' on 2015-07-21 at 8d3d5f4)
382 + t3901: test git-am encoding conversion
383 + t3418: non-interactive rebase --continue with rerere enabled
384 + t4150: tests for am --[no-]scissors
385 + t4150: am with post-applypatch hook
386 + t4150: am with pre-applypatch hook
387 + t4150: am with applypatch-msg hook
388 + t4150: am --resolved fails if index has unmerged entries
389 + t4150: am --resolved fails if index has no changes
390 + t4150: am refuses patches when paused
391 + t4151: am --abort will keep dirty index intact
392 + t4150: am fails if index is dirty
393 + t4150: am.messageid really adds the message id
396 * pt/pull-builtin (2015-06-18) 19 commits
397 (merged to 'next' on 2015-07-10 at 07b1794)
398 + pull: remove redirection to git-pull.sh
399 + pull --rebase: error on no merge candidate cases
400 + pull --rebase: exit early when the working directory is dirty
401 + pull: configure --rebase via branch.<name>.rebase or pull.rebase
402 + pull: teach git pull about --rebase
403 + pull: set reflog message
404 + pull: implement pulling into an unborn branch
405 + pull: fast-forward working tree if head is updated
406 + pull: check if in unresolved merge state
407 + pull: support pull.ff config
408 + pull: error on no merge candidates
409 + pull: pass git-fetch's options to git-fetch
410 + pull: pass git-merge's options to git-merge
411 + pull: pass verbosity, --progress flags to fetch and merge
412 + pull: implement fetch + merge
413 + pull: implement skeletal builtin pull
414 + argv-array: implement argv_array_pushv()
415 + parse-options-cb: implement parse_opt_passthru_argv()
416 + parse-options-cb: implement parse_opt_passthru()
417 (this branch is used by kd/pull-rebase-autostash, pt/am-builtin and pt/am-builtin-fix.)
419 Reimplement 'git pull' in C.
422 * rl/send-email-aliases (2015-07-07) 10 commits
423 (merged to 'next' on 2015-07-09 at c60553d)
424 + send-email: suppress meaningless whitespaces in from field
425 + send-email: allow multiple emails using --cc, --to and --bcc
426 + send-email: consider quote as delimiter instead of character
427 + send-email: reduce dependencies impact on parse_address_line
428 + send-email: minor code refactoring
429 + send-email: allow use of aliases in the From field of --compose mode
430 + send-email: refactor address list process
431 + t9001-send-email: refactor header variable fields replacement
432 + send-email: allow aliases in patch header and command script outputs
433 + t9001-send-email: move script creation in a setup test
435 "git send-email" now performs alias-expansion on names that are
436 given via --cccmd, etc.
438 This round comes with a lot more enhanced e-mail address parser,
439 which makes it a bit scary, but as long as it works as designed, it
440 makes it wonderful ;-).
443 * se/doc-checkout-ours-theirs (2015-07-12) 1 commit
444 (merged to 'next' on 2015-07-21 at 5275f04)
445 + checkout: document subtlety around --ours/--theirs
447 A "rebase" replays changes of the local branch on top of something
448 else, as such they are placed in stage #3 and referred to as
449 "theirs", while the changes in the new base, typically a foreign
450 work, are placed in stage #2 and referred to as "ours". Clarify
451 the "checkout --ours/--theirs".
454 * sg/bash-prompt-untracked-optim (2015-07-20) 2 commits
455 (merged to 'next' on 2015-07-21 at e151fb7)
456 + bash prompt: faster untracked status indicator with untracked directories
457 + bash prompt: test untracked files status indicator with untracked dirs
459 Optimize computation of untracked status indicator by bash prompt
460 script (in contrib/).
463 * zb/userdiff-fountain (2015-07-23) 1 commit
464 (merged to 'next' on 2015-07-23 at e177995)
465 + userdiff: add support for Fountain documents
467 New userdiff pattern definition for fountain screenwriting markup
470 --------------------------------------------------
473 * sb/check-return-from-read-ref (2015-08-03) 1 commit
474 - transport-helper: die on errors reading refs.
476 Will merge to 'next'.
478 --------------------------------------------------
481 * bw/portability-solaris (2015-07-20) 3 commits
482 - tests: fix sed usage in tests to work around broken xpg4/sed on Solaris
483 - tests: fix sed usage in tests to work around broken xpg4/sed on Solaris
484 - tests: modify tr expressions so that xpg4/tr handles it on Solaris
486 Needs another reroll? ($gmane/274296)
489 * jc/clone-bundle (2015-04-30) 1 commit
490 - repack: optionally create a clone.bundle
492 Waiting for further work.
496 * jh/strbuf-read-use-read-in-full (2015-06-01) 1 commit
497 - strbuf_read(): skip unnecessary strbuf_grow() at eof
499 Avoid one extra iteration and strbuf_grow() of 8kB in
502 Looked reasonable; perhaps a log message clarification is needed.
507 * mg/index-read-error-messages (2015-06-01) 2 commits
508 - messages: uniform error messages for index write
509 - show-index: uniform error messages for index read
515 * hv/submodule-config (2015-06-15) 4 commits
516 - do not die on error of parsing fetchrecursesubmodules option
517 - use new config API for worktree configurations of submodules
518 - extract functions for submodule config set and lookup
519 - implement submodule config API for lookup of .gitmodules values
521 The gitmodules API accessed from the C code learned to cache stuff
524 Needs another reroll? ($gmane/273743).
527 * jk/log-missing-default-HEAD (2015-06-03) 1 commit
528 - log: diagnose empty HEAD more clearly
530 "git init empty && git -C empty log" said "bad default revision 'HEAD'",
531 which was found to be a bit confusing to new users.
533 What's the status of this one?
536 * wp/sha1-name-negative-match (2015-06-08) 2 commits
537 - sha1_name.c: introduce '^{/!-<negative pattern>}' notation
538 - test for '!' handling in rev-parse's named commits
540 Introduce "branch^{/!-<pattern>}" notation to name a commit
541 reachable from branch that does not match the given pattern.
546 * mk/utf8-no-iconv-warn (2015-06-08) 1 commit
547 - utf8.c: print warning about disabled iconv
549 Warn when a reencoding is requested in a build without iconv
550 support, as the end user is likely to get an unexpected result. I
551 think the same level of safety should be added to a build with
552 iconv support when the specified encoding is not available, but the
553 patch does not go there.
558 * ak/format-patch-odir-config (2015-06-19) 1 commit
559 - format-patch: introduce format.outputDirectory configuration
561 Reroll exists but didn't pick it up as it seemed to be still
562 collecting review comments.
568 * mh/tempfile (2015-06-10) 14 commits
569 - credential-cache--daemon: use tempfile module
570 - credential-cache--daemon: delete socket from main()
571 - gc: use tempfile module to handle gc.pid file
572 - lock_repo_for_gc(): compute the path to "gc.pid" only once
573 - diff: use tempfile module
574 - setup_temporary_shallow(): use tempfile module
575 - write_shared_index(): use tempfile module
576 - register_tempfile(): new function to handle an existing temporary file
577 - tempfile: add several functions for creating temporary files
578 - register_tempfile_object(): new function, extracted from create_tempfile()
579 - commit_lock_file(): use get_locked_file_path()
580 - lockfile: remove some redundant functions
581 - tempfile: a new module for handling temporary files
582 - Move lockfile API documentation to lockfile.h
584 Rebuild "lockfile" API on top of a new "tempfile" API.
585 This needs rerolling, to include "tempfile.h" in "lockfile.h", at
592 * ad/bisect-terms (2015-08-03) 4 commits
593 - bisect: allow setting any user-specified in 'git bisect start'
594 - bisect: add 'git bisect terms' to view the current terms
595 - bisect: add the terms old/new
596 - bisect: sanity check on terms
597 (this branch uses ad/bisect-cleanup.)
599 The use of 'good/bad' in "git bisect" made it confusing to use when
600 hunting for a state change that is not a regression (e.g. bugfix).
601 The command learned 'old/new' and then allows the end user to
602 say e.g. "bisect start --term-old=fast --term=new=slow" to find a
603 performance regression.
605 Michael's idea to make 'good/bad' more intelligent does have
606 certain attractiveness ($gname/272867), and makes some of the work
607 on this topic a moot point.
612 * mh/notes-allow-reading-treeish (2015-07-13) 1 commit
613 - notes: allow treeish expressions as notes ref
615 Some "git notes" operations, e.g. "git log --notes=<note>", should
616 be able to read notes from any tree-ish that is shaped like a notes
617 tree, but the notes infrastructure required that the argument must
618 be a ref under refs/notes/. Loosen it to require a valid ref only
619 when the operation would update the notes (in which case we must
620 have a place to store the updated notes tree, iow, a ref).
622 Needs update to docs.
625 * sg/config-name-only (2015-05-28) 3 commits
626 - completion: use new 'git config' options to reliably list variable names
628 - config: add options to list only variable names
630 "git config --list" output was hard to parse when values consist of
631 multiple lines. Introduce a way to show only the keys.
633 Adding a single --name-only option may be a better way to go than
634 adding two new options.
639 * kk/log-merges-config (2015-04-21) 5 commits
640 - bash-completion: add support for git-log --merges= and log.merges
641 - t4202-log: add tests for --merges=
642 - Documentation: add git-log --merges= option and log.merges config. var
643 - log: honor log.merges= option
644 - revision: add --merges={show|only|hide} option
646 "git log" (but not other commands in the "log" family) learned to
647 pay attention to the log.merges configuration variable that can be
648 set to "show" (the normal behaviour), "only" (hide non-merge
649 commits), or "hide" (hide merge commits). --merges=(show|only|hide)
650 can be used to override the setting from the command line.
652 The documentation may need to be updated once more ($gmane/267250).
653 Waiting for a reroll.
656 * mg/httpd-tests-update-for-apache-2.4 (2015-04-08) 2 commits
657 - t/lib-git-svn: check same httpd module dirs as lib-httpd
658 - t/lib-httpd: load mod_unixd
660 This is the first two commits in a three-patch series $gmane/266962
662 with updated log message ($gmane/268061).
665 * mh/numparse (2015-03-19) 14 commits
666 . diff_opt_parse(): use convert_i() when handling --abbrev=<num>
667 . diff_opt_parse(): use convert_i() when handling "-l<num>"
668 . opt_arg(): simplify pointer handling
669 . opt_arg(): report errors parsing option values
670 . opt_arg(): use convert_i() in implementation
671 . opt_arg(): val is always non-NULL
672 . builtin_diff(): detect errors when parsing --unified argument
673 . handle_revision_opt(): use convert_ui() when handling "--abbrev="
674 . strtoul_ui(), strtol_i(): remove functions
675 . handle_revision_opt(): use convert_i() when handling "-<digit>"
676 . handle_revision_opt(): use skip_prefix() in many places
677 . write_subdirectory(): use convert_ui() for parsing mode
678 . cacheinfo_callback(): use convert_ui() when handling "--cacheinfo"
679 . numparse: new module for parsing integral numbers
681 Many codepaths use unchecked use of strtol() and friends (or even
682 worse, atoi()). Introduce a set of wrappers that try to be more
689 * nd/list-files (2015-02-09) 21 commits
690 - t3080: tests for git-list-files
691 - list-files: -M aka diff-cached
692 - list-files -F: show submodules with the new indicator '&'
693 - list-files: add -F/--classify
694 - list-files: show directories as well as files
695 - list-files: do not show duplicate cached entries
696 - list-files: sort output and remove duplicates
697 - list-files: add -t back
698 - list-files: add -1 short for --no-column
699 - list-files: add -R/--recursive short for --max-depth=-1
700 - list-files: -u does not imply showing stages
701 - list-files: make alias 'ls' default to 'list-files'
702 - list-files: a user friendly version of ls-files and more
703 - ls-files: support --max-depth
704 - ls-files: add --column
705 - ls-files: add --color to highlight file names
706 - ls-files: buffer full item in strbuf before printing
707 - ls_colors.c: highlight submodules like directories
708 - ls_colors.c: add a function to color a file name
709 - ls_colors.c: parse color.ls.* from config file
710 - ls_colors.c: add $LS_COLORS parsing code
712 A new "git list-files" Porcelain command, "ls-files" with bells and
715 Reroll to base on wt-status work ($gmane/265142) has seen some
716 positive discussions.
718 Waiting for a further polished reroll ($gmane/265534).
721 * jc/diff-b-m (2015-02-23) 5 commits
724 - diffcore-rename: allow easier debugging
725 - diffcore-rename.c: add locate_rename_src()
726 - diffcore-break: allow debugging
728 "git diff -B -M" produced incorrect patch when the postimage of a
729 completely rewritten file is similar to the preimage of a removed
730 file; such a resulting file must not be expressed as a rename from
733 The fix in this patch is broken, unfortunately.
736 * pw/remote-set-url-fetch (2014-11-26) 1 commit
737 - remote: add --fetch and --both options to set-url
742 * tr/remerge-diff (2014-11-10) 9 commits
743 - t4213: avoid "|" in sed regexp
744 - log --remerge-diff: show what the conflict resolution changed
745 - name-hash: allow dir hashing even when !ignore_case
746 - merge-recursive: allow storing conflict hunks in index
747 - merge_diff_mode: fold all merge diff variants into an enum
748 - combine-diff: do not pass revs->dense_combined_merges redundantly
749 - merge-recursive: -Xindex-only to leave worktree unchanged
750 - merge-recursive: internal flag to avoid touching the worktree
751 - merge-recursive: remove dead conditional in update_stages()
753 "log -p" output learns a new way to let users inspect a merge
754 commit by showing the differences between the automerged result
755 with conflicts the person who recorded the merge would have seen
756 and the final conflict resolution that was recorded in the merge.
758 Waiting for a reroll.
762 * tg/perf-lib-test-perf-cleanup (2013-09-19) 2 commits
763 - perf-lib: add test_perf_cleanup target
764 - perf-lib: split starting the test from the execution
766 Add test_perf_cleanup shell function to the perf suite, that allows
767 the script writers to define a test with a clean-up action.
772 * jc/show-branch (2014-03-24) 5 commits
773 - show-branch: use commit slab to represent bitflags of arbitrary width
774 - show-branch.c: remove "all_mask"
775 - show-branch.c: abstract out "flags" operation
776 - show-branch.c: lift all_mask/all_revs to a global static
777 - show-branch.c: update comment style
779 Waiting for the final step to lift the hard-limit.
781 --------------------------------------------------
784 * dt/reflog-tests (2015-07-28) 2 commits
785 (merged to 'next' on 2015-08-03 at 9d2fa1a)
786 + tests: remove some direct access to .git/logs
787 + t/t7509: remove unnecessary manipulation of reflog
789 Tests that assume how reflogs are represented on the filesystem too
790 much have been corrected.
792 Will merge to 'master'.
795 * dt/unpack-trees-cache-tree-revalidate (2015-07-28) 1 commit
796 (merged to 'next' on 2015-08-03 at 5b0d620)
797 + unpack-trees: populate cache-tree on successful merge
799 The code to perform multi-tree merges has been taught to repopulate
800 the cache-tree upon a successful merge into the index, so that
801 subsequent "diff-index --cached" (hence "status") and "write-tree"
802 (hence "commit") will go faster.
804 The same logic in "git checkout" may now be removed, but that is a
807 Will merge to 'master'.
810 * jk/negative-hiderefs (2015-07-28) 2 commits
811 - refs: support negative transfer.hideRefs
812 - docs/config.txt: reorder hideRefs config
814 Allow negative !ref entry in multi-value transfer.hideRefs
815 configuration to say "don't hide this one".
817 An update to test coming?
820 * mh/get-remote-group-fix (2015-07-28) 4 commits
821 - get_remote_group(): use skip_prefix()
822 - get_remote_group(): eliminate superfluous call to strcspn()
823 - get_remote_group(): rename local variable "space" to "wordlen"
824 - get_remote_group(): handle remotes with single-character names
826 An off-by-one error made "git remote" to mishandle a remote with a
827 single letter nickname.
829 Will merge to 'next'.
832 * ta/docfix-index-format-tech (2015-07-28) 1 commit
833 - typofix for index-format.txt
835 Will merge to 'next'.
838 * dt/notes-multiple (2015-08-03) 2 commits
839 - notes: handle multiple worktrees
840 - worktrees: add find_shared_symref
841 (this branch uses es/worktree-add and es/worktree-add-cleanup.)
843 Forbid simultaneous "notes merge" to happen for the same ref in
844 refs/notes/* when linked worktree is used.
847 * dt/refs-pseudo (2015-07-31) 5 commits
848 (merged to 'next' on 2015-08-03 at 3eafd33)
849 + sequencer: replace write_cherry_pick_head with update_ref
850 + bisect: use update_ref
851 + pseudorefs: create and use pseudoref update and delete functions
852 + refs: add ref_type function
853 + refs: introduce pseudoref and per-worktree ref concepts
855 To prepare for allowing a different "ref" backend to be plugged in
856 to the system, update_ref()/delete_ref() have been taught about
857 ref-like things like MERGE_HEAD that are per-worktree (they will
858 always be written to the filesystem inside $GIT_DIR).
860 Will merge to 'master'.
863 * dt/untracked-sparse (2015-07-31) 1 commit
864 - untracked-cache: support sparse checkout
866 Allow untracked cache (experimental) to be used when sparse
867 checkout (experimental) is also in use.
870 * pt/am-builtin-fix (2015-07-28) 1 commit
871 - am: let command-line options override saved options
872 (this branch uses pt/am-builtin.)
874 With "git am --options" followed by "git am --other-options", the
875 options given in a later invocation should override the initial
876 options for a single invocation, but the rewritten "git am" didn't.
878 Will merge into pt/am-builtin topic.
883 * sb/parse-options-codeformat (2015-07-29) 1 commit
884 (merged to 'next' on 2015-08-03 at f81993b)
885 + parse-options: align curly braces for all options
887 Will merge to 'master'.
890 * sb/remove-unused-var-from-builtin-add (2015-07-31) 1 commit
891 (merged to 'next' on 2015-08-03 at f5e568e)
892 + add: remove dead code
894 Will merge to 'master'.
897 * kd/pull-rebase-autostash (2015-07-22) 1 commit
898 - pull: allow dirty tree when rebase.autostash enabled
900 Teach "git pull --rebase" to pay attention to rebase.autostash
903 Will merge to 'next'.
906 * es/worktree-add (2015-07-20) 5 commits
907 (merged to 'next' on 2015-08-03 at 9771a44)
908 + config: rename "gc.pruneWorktreesExpire" to "gc.worktreePruneExpire"
909 + Documentation/git-worktree: wordsmith worktree-related manpages
910 + Documentation/config: fix stale "git prune --worktree" reference
911 + Documentation/git-worktree: fix incorrect reference to file "locked"
912 + Documentation/git-worktree: consistently use term "linked working tree"
913 (this branch is used by dt/notes-multiple and es/worktree-add-cleanup.)
915 Originally merged to 'next' on 2015-07-20
917 Remove remaining cruft from "git checkout --to", which
918 transitioned to "git worktree add".
920 Will merge to 'master'.
923 * es/worktree-add-cleanup (2015-07-28) 24 commits
924 - Documentation/config: mention "now" and "never" for 'expire' settings
925 - Documentation/git-worktree: fix broken 'linkgit' invocation
926 - checkout: drop intimate knowledge of newly created worktree
927 - worktree: populate via "git reset --hard" rather than "git checkout"
928 - worktree: avoid resolving HEAD unnecessarily
929 - worktree: make setup of new HEAD distinct from worktree population
930 - worktree: detect branch-name/detached and error conditions locally
931 - worktree: add_worktree: construct worktree-population command locally
932 - worktree: elucidate environment variables intended for child processes
933 - worktree: make branch creation distinct from worktree population
934 - worktree: add: suppress auto-vivication with --detach and no <branch>
935 - worktree: make --detach mutually exclusive with -b/-B
936 - worktree: introduce options container
937 - worktree: simplify new branch (-b/-B) option checking
938 - worktree: improve worktree setup message
939 - branch: publish die_if_checked_out()
940 - checkout: teach check_linked_checkout() about symbolic link HEAD
941 - checkout: check_linked_checkout: simplify symref parsing
942 - checkout: check_linked_checkout: improve "already checked out" aesthetic
943 - checkout: generalize die_if_checked_out() branch name argument
944 - checkout: die_if_checked_out: simplify strbuf management
945 - checkout: improve die_if_checked_out() robustness
946 - checkout: name check_linked_checkouts() more meaningfully
947 - checkout: avoid resolving HEAD unnecessarily
948 (this branch is used by dt/notes-multiple; uses es/worktree-add.)
950 Originally merged to 'next' on 2015-07-29
952 Remove the "new-worktree-mode" hack in "checkout" that was added in
953 nd/multiple-work-trees topic by updating the implementation of new
956 Will merge to 'master'.
959 * kn/for-each-tag-branch (2015-08-03) 11 commits
960 (merged to 'next' on 2015-08-03 at d9e94b9)
961 + for-each-ref: add '--contains' option
962 + ref-filter: implement '--contains' option
963 + parse-options.h: add macros for '--contains' option
964 + parse-option: rename parse_opt_with_commit()
965 + for-each-ref: add '--merged' and '--no-merged' options
966 + ref-filter: implement '--merged' and '--no-merged' options
967 + ref-filter: add parse_opt_merge_filter()
968 + for-each-ref: add '--points-at' option
969 + ref-filter: implement '--points-at' option
970 + tag: libify parse_opt_points_at()
971 + t6302: for-each-ref tests for ref-filter APIs
973 Originally merged to 'next' on 2015-07-15
975 Some features from "git tag -l" and "git branch -l" have been made
976 available to "git for-each-ref" so that eventually the unified
977 implementation can be shared across all three, in a follow-up
981 * pt/am-builtin (2015-07-20) 46 commits
982 - builtin-am: remove redirection to git-am.sh
983 - builtin-am: check for valid committer ident
984 - builtin-am: implement legacy -b/--binary option
985 - builtin-am: implement -i/--interactive
986 - builtin-am: support and auto-detect mercurial patches
987 - builtin-am: support and auto-detect StGit series files
988 - builtin-am: support and auto-detect StGit patches
989 - builtin-am: rerere support
990 - builtin-am: invoke post-applypatch hook
991 - builtin-am: invoke pre-applypatch hook
992 - builtin-am: invoke applypatch-msg hook
993 - builtin-am: support automatic notes copying
994 - builtin-am: invoke post-rewrite hook
995 - builtin-am: implement -S/--gpg-sign, commit.gpgsign
996 - builtin-am: implement --committer-date-is-author-date
997 - builtin-am: implement --ignore-date
998 - builtin-am: pass git-apply's options to git-apply
999 - builtin-am: implement --[no-]scissors
1000 - builtin-am: support --keep-cr, am.keepcr
1001 - builtin-am: implement --[no-]message-id, am.messageid
1002 - builtin-am: implement -k/--keep, --keep-non-patch
1003 - builtin-am: implement -u/--utf8
1004 - builtin-am: handle stray state directory
1005 - builtin-am: bypass git-mailinfo when --rebasing
1006 - builtin-am: implement --rebasing mode
1007 - builtin-am: implement --3way, am.threeWay
1008 - cache-tree: introduce write_index_as_tree()
1009 - builtin-am: implement -s/--signoff
1010 - builtin-am: exit with user friendly message on failure
1011 - builtin-am: implement -q/--quiet
1012 - builtin-am: reject patches when there's a session in progress
1013 - builtin-am: implement --abort
1014 - builtin-am: implement --skip
1015 - builtin-am: don't parse mail when resuming
1016 - builtin-am: implement --resolved/--continue
1017 - builtin-am: refuse to apply patches if index is dirty
1018 - builtin-am: implement committing applied patch
1019 - builtin-am: apply patch with git-apply
1020 - builtin-am: extract patch and commit info with git-mailinfo
1021 - builtin-am: auto-detect mbox patches
1022 - builtin-am: split out mbox/maildir patches with git-mailsplit
1023 - builtin-am: implement patch queue mechanism
1024 - builtin-am: implement skeletal builtin am
1025 - wrapper: implement xfopen()
1026 - wrapper: implement xopen()
1027 - Merge branch 'pt/pull-builtin' into pt/am-builtin
1028 (this branch is used by pt/am-builtin-fix.)
1030 Originally merged to 'next' on 2015-07-23
1032 Rewrite "am" in "C".
1037 * ad/bisect-cleanup (2015-08-03) 6 commits
1038 (merged to 'next' on 2015-08-03 at 13b9314)
1039 + bisect: don't mix option parsing and non-trivial code
1040 + bisect: simplify the addition of new bisect terms
1041 + bisect: replace hardcoded "bad|good" by variables
1042 + Documentation/bisect: revise overall content
1043 + Documentation/bisect: move getting help section to the end
1044 + bisect: correction of typo
1045 (this branch is used by ad/bisect-terms)
1047 Originally merged to 'next' on 2015-07-09
1049 Code and documentation clean-up to "git bisect".
1051 Will merge to 'master'.
1054 * jc/rerere (2015-07-30) 21 commits
1055 - rerere: un-nest merge() further
1056 - rerere: use "struct rerere_id" instead of "char *" for conflict ID
1057 - rerere: call conflict-ids IDs
1058 - rerere: further clarify do_rerere_one_path()
1059 - rerere: further de-dent do_plain_rerere()
1060 - rerere: refactor "replay" part of do_plain_rerere()
1061 - rerere: explain the remainder
1062 - rerere: explain "rerere forget" codepath
1063 - rerere: explain the primary codepath
1064 - rerere: explain MERGE_RR management helpers
1065 - rerere: fix benign off-by-one non-bug and clarify code
1066 - rerere: explain the rerere I/O abstraction
1067 - rerere: do not leak mmfile[] for a path with multiple stage #1 entries
1068 - rerere: stop looping unnecessarily
1069 - rerere: drop want_sp parameter from is_cmarker()
1070 - rerere: report autoupdated paths only after actually updating them
1071 - rerere: write out each record of MERGE_RR in one go
1072 - rerere: lift PATH_MAX limitation
1073 - rerere: plug conflict ID leaks
1074 - rerere: handle conflicts with multiple stage #1 entries
1075 - rerere: fix an off-by-one non-bug
1076 (this branch is used by jc/rerere-multi.)
1078 Code clean-up and minor fixes (so far).
1081 * jc/rerere-multi (2015-07-31) 7 commits
1082 . t4200: rerere a merge with two identical conflicts
1084 . rerere: allow multiple variants to exist
1085 - rerere: delay the recording of preimage
1086 - rerere: handle leftover rr-cache/$ID directory and postimage files
1087 - rerere: scan $GIT_DIR/rr-cache/$ID when instantiating a rerere_id
1088 - rerere: split conflict ID further
1089 (this branch uses jc/rerere.)
1091 This is a contination of jc/rerere topic.
1094 * jc/merge-drop-old-syntax (2015-04-29) 1 commit
1095 (merged to 'next' on 2015-08-03 at a52c2b2)
1096 + merge: drop 'git merge <message> HEAD <commit>' syntax
1098 Originally merged to 'next' on 2015-05-28
1100 Stop supporting "git merge <message> HEAD <commit>" syntax that
1101 has been deprecated since October 2007.
1103 Will keep in 'next' during the 2.6 cycle.
1105 --------------------------------------------------
1108 * tf/gitweb-project-listing (2015-03-19) 4 commits
1109 - gitweb: make category headings into links when they are directories
1110 - gitweb: optionally set project category from its pathname
1111 - gitweb: add a link under the search box to clear a project filter
1112 - gitweb: if the PATH_INFO is incomplete, use it as a project_filter
1114 Update gitweb to make it more pleasant to deal with a hierarchical
1115 forest of repositories.
1117 A fresh restart will not be rejected, but ejected from my tree for
1121 * jc/a-lone-dash-stands-for-previous-branch (2015-03-16) 1 commit
1122 - "-" and "@{-1}" on various programs
1124 Lose special case code to make a lone dash "-" mean the previous
1125 branch aka "@{-1}" from a handful subcommands, and instead support
1126 the notation throughout the system by reimplementing it at the
1129 Needs tests, documentation updates, etc. Also does only a half-way
1130 job dealing with range notation, which needs to be fixed before the
1131 series goes anywhere.
1134 * jc/push-tags-also (2015-05-29) 1 commit
1135 - push --tags: push tags *in addition to* other stuff
1137 "git fetch --tags" learned to fetch tags in addition to other stuff
1138 a few years ago, but "git push --tags" didn't. Now it does.
1140 A change to push out more than before always invites "what if the
1141 user makes a mistake" worries.
1146 * nd/pathspec-strip-fix (2015-04-18) 1 commit
1147 - pathspec: adjust prefixlen after striping trailing slash
1149 Does not quite fix ($gmane/267614).
1153 * mm/for-each-ref-fixup (2015-08-03) 11 commits
1154 (merged to 'next' on 2015-08-03 at d9e94b9)
1155 + for-each-ref: add '--contains' option
1156 + ref-filter: implement '--contains' option
1157 + parse-options.h: add macros for '--contains' option
1158 + parse-option: rename parse_opt_with_commit()
1159 + for-each-ref: add '--merged' and '--no-merged' options
1160 + ref-filter: implement '--merged' and '--no-merged' options
1161 + ref-filter: add parse_opt_merge_filter()
1162 + for-each-ref: add '--points-at' option
1163 + ref-filter: implement '--points-at' option
1164 + tag: libify parse_opt_points_at()
1165 + t6302: for-each-ref tests for ref-filter APIs
1167 Drop; has been squashed.
1171 * rj/bisect-terms-fixup (2015-08-03) 4 commits
1172 - bisect: allow setting any user-specified in 'git bisect start'
1173 - bisect: add 'git bisect terms' to view the current terms
1174 - bisect: add the terms old/new
1175 - bisect: sanity check on terms
1176 (this branch uses ad/bisect-cleanup.)
1178 Will squash into ad/bisect-cleanup.