1 To: git@vger.kernel.org
3 Subject: What's cooking in git.git (Jul 2015, #05; Mon, 20)
4 X-master-at: fbdeabf1f0992e41237caee8fc357849e0038a82
5 X-next-at: 76e840bed084a99e9de166e429c25bc0b2d6a698
7 What's cooking in git.git (Jul 2015, #05; Mon, 20)
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 You can find the changes described here in the integration branches
15 of the repositories listed at
17 http://git-blame.blogspot.com/p/git-public-repositories.html
19 --------------------------------------------------
22 * zb/userdiff-fountain (2015-07-17) 1 commit
23 - userdiff: add support for Fountain documents
25 New userdiff pattern definition for fountain screenwriting markup
28 Needs another reroll? ($gmane/274354)
31 * as/sparse-checkout-removal (2015-07-17) 1 commit
32 - unpack-trees: don't update files with CE_WT_REMOVE set
34 Duy's replacement needs to be applied ($gmane/274158).
37 * cb/uname-in-untracked (2015-07-17) 1 commit
38 - untracked: fix detection of uname(2) failure
40 An experimental "untracked cache" feature used to use uname(2) in a
41 slightly unportable way.
46 * jc/rerere-multi (2015-07-20) 5 commits
47 - t4200: rerere a merge with two identical conflicts
48 - rerere: delay the recording of preimage for the first time
49 - rerere: handle leftover rr-cache/$ID directory and postimage files
50 - rerere: scan $GIT_DIR/rr-cache/$ID when instantiating a rerere_id
51 - rerere: split conflict ID further
52 (this branch uses jc/rerere.)
54 This is a contination of jc/rerere topic.
57 * bw/portability-solaris (2015-07-20) 3 commits
58 - tests: fix sed usage in tests to work around broken xpg4/sed on Solaris
59 - tests: fix sed usage in tests to work around broken xpg4/sed on Solaris
60 - tests: modify tr expressions so that xpg4/tr handles it on Solaris
62 Needs another reroll? ($gmane/274296)
65 * es/worktree-add (2015-07-20) 5 commits
66 (merged to 'next' on 2015-07-20 at 76e840b)
67 + config: rename "gc.pruneWorktreesExpire" to "gc.worktreePruneExpire"
68 + Documentation/git-worktree: wordsmith worktree-related manpages
69 + Documentation/config: fix stale "git prune --worktree" reference
70 + Documentation/git-worktree: fix incorrect reference to file "locked"
71 + Documentation/git-worktree: consistently use term "linked working tree"
72 (this branch is used by es/worktree-add-cleanup.)
74 Will merge to 'master'.
77 * sg/bash-prompt-untracked-optim (2015-07-20) 2 commits
78 - bash prompt: faster untracked status indicator with untracked directories
79 - bash prompt: test untracked files status indicator with untracked dirs
83 --------------------------------------------------
84 [Graduated to "master"]
86 * jc/diff-ws-error-highlight (2015-07-12) 1 commit
87 (merged to 'next' on 2015-07-12 at 15b60ce)
88 + diff: parse ws-error-highlight option more strictly
90 A hotfix to a new feature in 2.5.0-rc.
93 * jk/still-interesting (2015-06-29) 1 commit
94 (merged to 'next' on 2015-07-09 at e19fc0e)
95 + revision.c: remove unneeded check for NULL
99 Will merge to 'master'.
101 --------------------------------------------------
104 * sg/config-name-only (2015-05-28) 3 commits
105 - completion: use new 'git config' options to reliably list variable names
107 - config: add options to list only variable names
109 "git config --list" output was hard to parse when values consist of
110 multiple lines. Introduce a way to show only the keys.
112 Adding a single --name-only option may be a better way to go than
113 adding two new options.
118 * kk/log-merges-config (2015-04-21) 5 commits
119 - bash-completion: add support for git-log --merges= and log.merges
120 - t4202-log: add tests for --merges=
121 - Documentation: add git-log --merges= option and log.merges config. var
122 - log: honor log.merges= option
123 - revision: add --merges={show|only|hide} option
125 "git log" (but not other commands in the "log" family) learned to
126 pay attention to the log.merges configuration variable that can be
127 set to "show" (the normal behaviour), "only" (hide non-merge
128 commits), or "hide" (hide merge commits). --merges=(show|only|hide)
129 can be used to override the setting from the command line.
131 The documentation may need to be updated once more ($gmane/267250).
132 Waiting for a reroll.
135 * mg/httpd-tests-update-for-apache-2.4 (2015-04-08) 2 commits
136 - t/lib-git-svn: check same httpd module dirs as lib-httpd
137 - t/lib-httpd: load mod_unixd
139 This is the first two commits in a three-patch series $gmane/266962
141 with updated log message ($gmane/268061).
144 * mh/numparse (2015-03-19) 14 commits
145 - diff_opt_parse(): use convert_i() when handling --abbrev=<num>
146 - diff_opt_parse(): use convert_i() when handling "-l<num>"
147 - opt_arg(): simplify pointer handling
148 - opt_arg(): report errors parsing option values
149 - opt_arg(): use convert_i() in implementation
150 - opt_arg(): val is always non-NULL
151 - builtin_diff(): detect errors when parsing --unified argument
152 - handle_revision_opt(): use convert_ui() when handling "--abbrev="
153 - strtoul_ui(), strtol_i(): remove functions
154 - handle_revision_opt(): use convert_i() when handling "-<digit>"
155 - handle_revision_opt(): use skip_prefix() in many places
156 - write_subdirectory(): use convert_ui() for parsing mode
157 - cacheinfo_callback(): use convert_ui() when handling "--cacheinfo"
158 - numparse: new module for parsing integral numbers
160 Many codepaths use unchecked use of strtol() and friends (or even
161 worse, atoi()). Introduce a set of wrappers that try to be more
168 * tf/gitweb-project-listing (2015-03-19) 5 commits
169 - gitweb: make category headings into links when they are directories
170 - gitweb: optionally set project category from its pathname
171 - gitweb: add a link under the search box to clear a project filter
172 - gitweb: if the PATH_INFO is incomplete, use it as a project_filter
173 - gitweb: fix typo in man page
175 Update gitweb to make it more pleasant to deal with a hierarchical
176 forest of repositories.
178 Any comments from those who use or have their own code in Gitweb?
181 * jc/a-lone-dash-stands-for-previous-branch (2015-03-16) 1 commit
182 - "-" and "@{-1}" on various programs
184 Lose special case code to make a lone dash "-" mean the previous
185 branch aka "@{-1}" from a handful subcommands, and instead support
186 the notation throughout the system by reimplementing it at the
189 Needs tests, documentation updates, etc. Also does only a half-way
190 job dealing with range notation, which needs to be fixed before the
191 series goes anywhere.
194 * nd/list-files (2015-02-09) 21 commits
195 - t3080: tests for git-list-files
196 - list-files: -M aka diff-cached
197 - list-files -F: show submodules with the new indicator '&'
198 - list-files: add -F/--classify
199 - list-files: show directories as well as files
200 - list-files: do not show duplicate cached entries
201 - list-files: sort output and remove duplicates
202 - list-files: add -t back
203 - list-files: add -1 short for --no-column
204 - list-files: add -R/--recursive short for --max-depth=-1
205 - list-files: -u does not imply showing stages
206 - list-files: make alias 'ls' default to 'list-files'
207 - list-files: a user friendly version of ls-files and more
208 - ls-files: support --max-depth
209 - ls-files: add --column
210 - ls-files: add --color to highlight file names
211 - ls-files: buffer full item in strbuf before printing
212 - ls_colors.c: highlight submodules like directories
213 - ls_colors.c: add a function to color a file name
214 - ls_colors.c: parse color.ls.* from config file
215 - ls_colors.c: add $LS_COLORS parsing code
217 A new "git list-files" Porcelain command, "ls-files" with bells and
220 Reroll to base on wt-status work ($gmane/265142) has seen some
221 positive discussions.
223 Waiting for a further polished reroll ($gmane/265534).
226 * nd/pathspec-strip-fix (2015-04-18) 1 commit
227 - pathspec: adjust prefixlen after striping trailing slash
229 Does not quite fix ($gmane/267614).
233 * jc/diff-b-m (2015-02-23) 5 commits
236 - diffcore-rename: allow easier debugging
237 - diffcore-rename.c: add locate_rename_src()
238 - diffcore-break: allow debugging
240 "git diff -B -M" produced incorrect patch when the postimage of a
241 completely rewritten file is similar to the preimage of a removed
242 file; such a resulting file must not be expressed as a rename from
245 The fix in this patch is broken, unfortunately.
248 * pw/remote-set-url-fetch (2014-11-26) 1 commit
249 - remote: add --fetch and --both options to set-url
254 * tr/remerge-diff (2014-11-10) 9 commits
255 - t4213: avoid "|" in sed regexp
256 - log --remerge-diff: show what the conflict resolution changed
257 - name-hash: allow dir hashing even when !ignore_case
258 - merge-recursive: allow storing conflict hunks in index
259 - merge_diff_mode: fold all merge diff variants into an enum
260 - combine-diff: do not pass revs->dense_combined_merges redundantly
261 - merge-recursive: -Xindex-only to leave worktree unchanged
262 - merge-recursive: internal flag to avoid touching the worktree
263 - merge-recursive: remove dead conditional in update_stages()
265 "log -p" output learns a new way to let users inspect a merge
266 commit by showing the differences between the automerged result
267 with conflicts the person who recorded the merge would have seen
268 and the final conflict resolution that was recorded in the merge.
270 Waiting for a reroll.
274 * tg/perf-lib-test-perf-cleanup (2013-09-19) 2 commits
275 - perf-lib: add test_perf_cleanup target
276 - perf-lib: split starting the test from the execution
278 Add test_perf_cleanup shell function to the perf suite, that allows
279 the script writers to define a test with a clean-up action.
284 * jc/show-branch (2014-03-24) 5 commits
285 - show-branch: use commit slab to represent bitflags of arbitrary width
286 - show-branch.c: remove "all_mask"
287 - show-branch.c: abstract out "flags" operation
288 - show-branch.c: lift all_mask/all_revs to a global static
289 - show-branch.c: update comment style
291 Waiting for the final step to lift the hard-limit.
293 --------------------------------------------------
296 * es/worktree-add-cleanup (2015-07-20) 22 commits
297 - checkout: drop intimate knowledge of newly created worktree
298 - worktree: populate via "git reset --hard" rather than "git checkout"
299 - worktree: avoid resolving HEAD unnecessarily
300 - worktree: make setup of new HEAD distinct from worktree population
301 - worktree: detect branch-name/detached and error conditions locally
302 - worktree: add_worktree: construct worktree-population command locally
303 - worktree: elucidate environment variables intended for child processes
304 - worktree: make branch creation distinct from worktree population
305 - worktree: add: suppress auto-vivication with --detach and no <branch>
306 - worktree: make --detach mutually exclusive with -b/-B
307 - worktree: introduce options container
308 - worktree: simplify new branch (-b/-B) option checking
309 - worktree: improve worktree setup message
310 - branch: publish die_if_checked_out()
311 - checkout: teach check_linked_checkout() about symbolic link HEAD
312 - checkout: check_linked_checkout: simplify symref parsing
313 - checkout: check_linked_checkout: improve "already checked out" aesthetic
314 - checkout: generalize die_if_checked_out() branch name argument
315 - checkout: die_if_checked_out: simplify strbuf management
316 - checkout: improve die_if_checked_out() robustness
317 - checkout: name check_linked_checkouts() more meaningfully
318 - checkout: avoid resolving HEAD unnecessarily
319 (this branch uses es/worktree-add.)
321 Remove the "new-worktree-mode" hack in "checkout" that was added in
322 nd/multiple-work-trees topic by updating the implementation of new
325 Will merge to 'next'.
328 * ib/scripted-parse-opt-better-hint-string (2015-07-15) 1 commit
329 (merged to 'next' on 2015-07-17 at 7bb1674)
330 + rev-parse --parseopt: allow [*=?!] in argument hints
332 The "rev-parse --parseopt" mode parsed the option specification
333 and the argument hint in a strange way to allow '=' and other
334 special characters in the option name while forbidding them from
335 the argument hint. This made it impossible to define an option
336 like "--pair <key>=<value>" with "pair=key=value" specification,
337 which instead would have defined a "--pair=key <value>" option.
339 Will merge to 'master'.
342 * mh/fast-import-optimize-current-from (2015-07-13) 1 commit
343 (merged to 'next' on 2015-07-15 at 2be8b1f)
344 + fast-import: do less work when given "from" matches current branch head
346 Often a fast-import stream builds a new commit on top of the
347 previous commit it built, and it often unconditionally emits a
348 "from" command to specify the first parent, which can be omitted in
349 such a case. This caused fast-import to forget the tree of the
350 previous commit and then re-read it from scratch, which was
351 inefficient. Optimize for this common case.
353 Will merge to 'master'.
356 * mh/notes-allow-reading-treeish (2015-07-13) 1 commit
357 - notes: allow treeish expressions as notes ref
359 Some "git notes" operations, e.g. "git log --notes=<note>", should
360 be able to read notes from any tree-ish that is shaped like a notes
361 tree, but the notes infrastructure required that the argument must
362 be a ref under refs/notes/. Loosen it to require a valid ref only
363 when the operation would update the notes (in which case we must
364 have a place to store the updated notes tree, iow, a ref).
366 Needs update to docs.
369 * dt/log-follow-config (2015-07-09) 1 commit
370 (merged to 'next' on 2015-07-10 at b8fbb43)
371 + log: add "log.follow" configuration variable
373 Add a new configuration variable to enable "--follow" automatically
374 when "git log" is run with one pathspec argument.
376 Will merge to 'master'.
379 * kn/tag-doc-fix (2015-07-10) 1 commit
380 (merged to 'next' on 2015-07-15 at 7bd6038)
381 + Documentation/tag: remove double occurance of "<pattern>"
383 Will merge to 'master'.
386 * se/doc-checkout-ours-theirs (2015-07-12) 1 commit
387 - checkout: document subtlety around --ours/--theirs
389 A "rebase" replays changes of the local branch on top of something
390 else, as such they are placed in stage #3 and referred to as
391 "theirs", while the changes in the new base, typically a foreign
392 work, are placed in stage #2 and referred to as "ours". Clarify
393 the "checkout --ours/--theirs".
396 * pt/am-tests (2015-07-20) 12 commits
397 - t3901: test git-am encoding conversion
398 - t3418: non-interactive rebase --continue with rerere enabled
399 - t4150: tests for am --[no-]scissors
400 - t4150: am with post-applypatch hook
401 - t4150: am with pre-applypatch hook
402 - t4150: am with applypatch-msg hook
403 - t4150: am --resolved fails if index has unmerged entries
404 - t4150: am --resolved fails if index has no changes
405 - t4150: am refuses patches when paused
406 - t4151: am --abort will keep dirty index intact
407 - t4150: am fails if index is dirty
408 - t4150: am.messageid really adds the message id
410 Will merge to 'next'.
413 * kn/for-each-tag-branch (2015-07-13) 11 commits
414 (merged to 'next' on 2015-07-15 at bf5418f)
415 + for-each-ref: add '--contains' option
416 + ref-filter: implement '--contains' option
417 + parse-options.h: add macros for '--contains' option
418 + parse-option: rename parse_opt_with_commit()
419 + for-each-ref: add '--merged' and '--no-merged' options
420 + ref-filter: implement '--merged' and '--no-merged' options
421 + ref-filter: add parse_opt_merge_filter()
422 + for-each-ref: add '--points-at' option
423 + ref-filter: implement '--points-at' option
424 + tag: libify parse_opt_points_at()
425 + t6302: for-each-ref tests for ref-filter APIs
426 (this branch uses kn/for-each-ref.)
428 Port features over from tag -l and branch -l to for-each-ref
429 so that eventually the unified implementation can be used to
430 reimplement tag -l and branch -l, shared across all three, in
431 a follow-up series or two.
433 Will merge to 'master'.
436 * pt/am-builtin (2015-07-20) 46 commits
437 - builtin-am: remove redirection to git-am.sh
438 - builtin-am: check for valid committer ident
439 - builtin-am: implement legacy -b/--binary option
440 - builtin-am: implement -i/--interactive
441 - builtin-am: support and auto-detect mercurial patches
442 - builtin-am: support and auto-detect StGit series files
443 - builtin-am: support and auto-detect StGit patches
444 - builtin-am: rerere support
445 - builtin-am: invoke post-applypatch hook
446 - builtin-am: invoke pre-applypatch hook
447 - builtin-am: invoke applypatch-msg hook
448 - builtin-am: support automatic notes copying
449 - builtin-am: invoke post-rewrite hook
450 - builtin-am: implement -S/--gpg-sign, commit.gpgsign
451 - builtin-am: implement --committer-date-is-author-date
452 - builtin-am: implement --ignore-date
453 - builtin-am: pass git-apply's options to git-apply
454 - builtin-am: implement --[no-]scissors
455 - builtin-am: support --keep-cr, am.keepcr
456 - builtin-am: implement --[no-]message-id, am.messageid
457 - builtin-am: implement -k/--keep, --keep-non-patch
458 - builtin-am: implement -u/--utf8
459 - builtin-am: handle stray state directory
460 - builtin-am: bypass git-mailinfo when --rebasing
461 - builtin-am: implement --rebasing mode
462 - builtin-am: implement --3way, am.threeWay
463 - cache-tree: introduce write_index_as_tree()
464 - builtin-am: implement -s/--signoff
465 - builtin-am: exit with user friendly message on failure
466 - builtin-am: implement -q/--quiet
467 - builtin-am: reject patches when there's a session in progress
468 - builtin-am: implement --abort
469 - builtin-am: implement --skip
470 - builtin-am: don't parse mail when resuming
471 - builtin-am: implement --resolved/--continue
472 - builtin-am: refuse to apply patches if index is dirty
473 - builtin-am: implement committing applied patch
474 - builtin-am: apply patch with git-apply
475 - builtin-am: extract patch and commit info with git-mailinfo
476 - builtin-am: auto-detect mbox patches
477 - builtin-am: split out mbox/maildir patches with git-mailsplit
478 - builtin-am: implement patch queue mechanism
479 - builtin-am: implement skeletal builtin am
480 - wrapper: implement xfopen()
481 - wrapper: implement xopen()
482 - Merge branch 'pt/pull-builtin' into pt/am-builtin
483 (this branch uses pt/pull-builtin.)
488 * ad/bisect-cleanup (2015-06-29) 6 commits
489 (merged to 'next' on 2015-07-09 at 75e2a06)
490 + bisect: don't mix option parsing and non-trivial code
491 + bisect: simplify the addition of new bisect terms
492 + bisect: replace hardcoded "bad|good" by variables
493 + Documentation/bisect: revise overall content
494 + Documentation/bisect: move getting help section to the end
495 + bisect: correction of typo
496 (this branch is used by ad/bisect-terms.)
498 Code and documentation clean-up to "git bisect".
500 Will merge to 'master'.
503 * mh/fast-import-get-mark (2015-07-01) 1 commit
504 (merged to 'next' on 2015-07-15 at 5e034b9)
505 + fast-import: add a get-mark command
507 Will merge to 'master'.
510 * kb/i18n-doc (2015-07-01) 1 commit
511 (merged to 'next' on 2015-07-09 at a12c7b3)
512 + Documentation/i18n.txt: clarify character encoding support
514 Will merge to 'master'.
517 * dt/refs-backend-preamble (2015-07-13) 7 commits
518 - git-stash: use update-ref --create-reflog instead of creating files
519 - update-ref and tag: add --create-reflog arg
520 - refs: add REF_FORCE_CREATE_REFLOG flag
521 - git-reflog: add exists command
522 - refs: new public ref function: safe_create_reflog
523 - refs: Break out check for reflog autocreation
524 - refs.c: add err arguments to reflog functions
526 In preparation for allowing different "backends" to store the refs
527 in a way different from the traditional "one ref per file in $GIT_DIR
528 or in a $GIT_DIR/packed-refs file" filesystem storage, reduce
529 direct filesystem access to ref-like things like CHERRY_PICK_HEAD
530 from scripts and programs.
532 Still under discussion.
537 * jk/date-mode-format (2015-06-29) 3 commits
538 (merged to 'next' on 2015-07-09 at a01bfc3)
539 + introduce "format" date-mode
540 + convert "enum date_mode" into a struct
541 + show-branch: use DATE_RELATIVE instead of magic number
543 Teach "git log" and friends a new "--date=format:..." option to
544 format timestamps using system's strftime(3).
546 Will merge to 'master'.
549 * nd/export-worktree (2015-06-26) 1 commit
550 (merged to 'next' on 2015-07-09 at 1581a9b)
551 + setup: set env $GIT_WORK_TREE when work tree is set, like $GIT_DIR
553 Running an aliased command from a subdirectory when the .git thing
554 in the working tree is a gitfile pointing elsewhere did not work.
556 Will merge to 'master'.
559 * jc/rerere (2015-07-18) 18 commits
560 - rerere: un-nest merge() further
561 - rerere: use "struct rerere_id" instead of "char *" for conflict ID
562 - rerere: call conflict-ids IDs
563 - rerere: further clarify do_rerere_one_path()
564 - rerere: further de-dent do_plain_rerere()
565 - rerere: refactor "replay" part of do_plain_rerere()
566 - rerere: explain the remainder
567 - rerere: explain "rerere forget" codepath
568 - rerere: explain the primary codepath
569 - rerere: explain MERGE_RR management helpers
570 - rerere: explain the rerere I/O abstraction
571 - rerere: stop looping unnecessarily
572 - rerere: drop want_sp parameter from is_cmarker()
573 - rerere: report autoupdated paths only after actually updating them
574 - rerere: write out each record of MERGE_RR in one go
575 - rerere: lift PATH_MAX limitation
576 - rerere: plug conflict ID leaks
577 - rerere: fix an off-by-one non-bug
578 (this branch is used by jc/rerere-multi.)
580 Code clean-up and minor fixes (so far).
583 * ad/bisect-terms (2015-06-29) 4 commits
584 - bisect: allow setting any user-specified in 'git bisect start'
585 - bisect: add 'git bisect terms' to view the current terms
586 - bisect: add the terms old/new
587 - bisect: sanity check on terms
588 (this branch uses ad/bisect-cleanup.)
590 The use of 'good/bad' in "git bisect" made it confusing to use when
591 hunting for a state change that is not a regression (e.g. bugfix).
592 The command learned 'old/new' and then allows the end user to
593 say e.g. "bisect start --term-old=fast --term=new=slow" to find a
594 performance regression.
596 Michael's idea to make 'good/bad' more intelligent does have
597 certain attractiveness ($gname/272867), and makes some of the work
598 on this topic a moot point.
603 * mh/tempfile (2015-06-10) 14 commits
604 - credential-cache--daemon: use tempfile module
605 - credential-cache--daemon: delete socket from main()
606 - gc: use tempfile module to handle gc.pid file
607 - lock_repo_for_gc(): compute the path to "gc.pid" only once
608 - diff: use tempfile module
609 - setup_temporary_shallow(): use tempfile module
610 - write_shared_index(): use tempfile module
611 - register_tempfile(): new function to handle an existing temporary file
612 - tempfile: add several functions for creating temporary files
613 - register_tempfile_object(): new function, extracted from create_tempfile()
614 - commit_lock_file(): use get_locked_file_path()
615 - lockfile: remove some redundant functions
616 - tempfile: a new module for handling temporary files
617 - Move lockfile API documentation to lockfile.h
619 Rebuild "lockfile" API on top of a new "tempfile" API.
620 This needs rerolling, to include "tempfile.h" in "lockfile.h", at
627 * js/fsck-opt (2015-06-23) 19 commits
628 (merged to 'next' on 2015-07-10 at eb4da0a)
629 + fsck: support ignoring objects in `git fsck` via fsck.skiplist
630 + fsck: git receive-pack: support excluding objects from fsck'ing
631 + fsck: introduce `git fsck --connectivity-only`
632 + fsck: support demoting errors to warnings
633 + fsck: document the new receive.fsck.<msg-id> options
634 + fsck: allow upgrading fsck warnings to errors
635 + fsck: optionally ignore specific fsck issues completely
636 + fsck: disallow demoting grave fsck errors to warnings
637 + fsck: add a simple test for receive.fsck.<msg-id>
638 + fsck: make fsck_tag() warn-friendly
639 + fsck: handle multiple authors in commits specially
640 + fsck: make fsck_commit() warn-friendly
641 + fsck: make fsck_ident() warn-friendly
642 + fsck: report the ID of the error/warning
643 + fsck (receive-pack): allow demoting errors to warnings
644 + fsck: offer a function to demote fsck errors to warnings
645 + fsck: provide a function to parse fsck message IDs
646 + fsck: introduce identifiers for fsck messages
647 + fsck: introduce fsck options
649 Allow ignoring fsck errors on specific set of known-to-be-bad
650 objects, and also tweaking warning level of various kinds of non
651 critical breakages reported.
653 Will merge to 'master'.
656 * ak/format-patch-odir-config (2015-06-19) 1 commit
657 - format-patch: introduce format.outputDirectory configuration
659 Reroll exists but didn't pick it up as it seems to be still
660 collecting review comments.
666 * bc/gpg-verify-raw (2015-06-22) 7 commits
667 (merged to 'next' on 2015-06-24 at 08a1164)
668 + verify-tag: add option to print raw gpg status information
669 + verify-commit: add option to print raw gpg status information
670 + gpg: centralize printing signature buffers
671 + gpg: centralize signature check
672 + verify-commit: add test for exit status on untrusted signature
673 + verify-tag: share code with verify-commit
674 + verify-tag: add tests
676 "git verify-tag" and "git verify-commit" have been taught to share
677 more code, and then learned to optionally show the verification
678 message from the underlying GPG implementation.
680 Will merge to 'master'.
683 * cb/parse-magnitude (2015-06-22) 2 commits
684 (merged to 'next' on 2015-06-24 at 2fd7205)
685 + parse-options: move unsigned long option parsing out of pack-objects.c
686 + test-parse-options: update to handle negative ints
688 Move machinery to parse human-readable scaled numbers like 1k, 4M,
689 and 2G as an option parameter's value from pack-objects to
690 parse-options API, to make it available to other codepaths.
692 Will merge to 'master'.
695 * jk/cat-file-batch-all (2015-06-26) 8 commits
696 (merged to 'next' on 2015-07-10 at 80200cc)
697 + cat-file: sort and de-dup output of --batch-all-objects
698 + cat-file: add --batch-all-objects option
699 + cat-file: split batch_one_object into two stages
700 + cat-file: stop returning value from batch_one_object
701 + cat-file: add --buffer option
702 + cat-file: move batch_options definition to top of file
703 + cat-file: minor style fix in options list
704 + Merge branch 'jk/maint-for-each-packed-object' into jk/cat-file-batch-all
706 "cat-file" learned "--batch-all-objects" option to enumerate all
707 available objects in the repository more quickly than "rev-list
708 --all --objects" (the output includes unreachable objects, though).
710 Will merge to 'master'.
713 * jk/pkt-log-pack (2015-06-16) 3 commits
714 (merged to 'next' on 2015-07-10 at ba33212)
715 + pkt-line: support tracing verbatim pack contents
716 + pkt-line: tighten sideband PACK check when tracing
717 + pkt-line: simplify starts_with checks in packet tracing
719 Enhance packet tracing machinery to allow capturing an incoming
720 pack data to a file for debugging.
722 Will merge to 'master'.
725 * kn/for-each-ref (2015-06-15) 11 commits
726 (merged to 'next' on 2015-06-24 at 1a3a734)
727 + ref-filter: make 'ref_array_item' use a FLEX_ARRAY for refname
728 + for-each-ref: introduce filter_refs()
729 + ref-filter: move code from 'for-each-ref'
730 + ref-filter: add 'ref-filter.h'
731 + for-each-ref: rename variables called sort to sorting
732 + for-each-ref: rename some functions and make them public
733 + for-each-ref: introduce 'ref_array_clear()'
734 + for-each-ref: introduce new structures for better organisation
735 + for-each-ref: rename 'refinfo' to 'ref_array_item'
736 + for-each-ref: clean up code
737 + for-each-ref: extract helper functions out of grab_single_ref()
738 (this branch is used by kn/for-each-tag-branch.)
740 GSoC project to rebuild ref listing by branch and tag based on the
741 for-each-ref machinery. This is its first part.
743 Will merge to 'master'.
746 * mh/init-delete-refs-api (2015-06-22) 19 commits
747 (merged to 'next' on 2015-07-10 at 121b26e)
748 + delete_ref(): use the usual convention for old_sha1
749 + cmd_update_ref(): make logic more straightforward
750 + update_ref(): don't read old reference value before delete
751 + check_branch_commit(): make first parameter const
752 + refs.h: add some parameter names to function declarations
753 + refs: move the remaining ref module declarations to refs.h
754 + initial_ref_transaction_commit(): check for ref D/F conflicts
755 + initial_ref_transaction_commit(): check for duplicate refs
756 + refs: remove some functions from the module's public interface
757 + initial_ref_transaction_commit(): function for initial ref creation
758 + repack_without_refs(): make function private
759 + prune_refs(): use delete_refs()
760 + prune_remote(): use delete_refs()
761 + delete_refs(): bail early if the packed-refs file cannot be rewritten
762 + delete_refs(): make error message more generic
763 + delete_refs(): new function for the refs API
764 + delete_ref(): handle special case more explicitly
765 + remove_branches(): remove temporary
766 + delete_ref(): move declaration to refs.h
768 Clean up refs API and make "git clone" less intimate with the
769 implementation detail.
771 Will merge to 'master'.
774 * mh/replace-refs (2015-06-12) 1 commit
775 (merged to 'next' on 2015-06-24 at cb13adf)
776 + Allow to control where the replace refs are looked for
778 Add an environment variable to tell Git to look into refs hierarchy
779 other than refs/replace/ for the object replacement data.
781 Will merge to 'master'.
784 * gp/status-rebase-i-info (2015-07-06) 4 commits
785 (merged to 'next' on 2015-07-10 at b121298)
786 + status: add new tests for status during rebase -i
787 + status: give more information during rebase -i
788 + status: differentiate interactive from non-interactive rebases
789 + status: factor two rebase-related messages together
791 Teach "git status" to show a more detailed information regarding
792 the "rebase -i" session in progress.
794 Will merge to 'master'.
797 * mk/utf8-no-iconv-warn (2015-06-08) 1 commit
798 - utf8.c: print warning about disabled iconv
800 Warn when a reencoding is requested in a build without iconv
801 support, as the end user is likely to get an unexpected result. I
802 think the same level of safety should be added to a build with
803 iconv support when the specified encoding is not available, but the
804 patch does not go there.
809 * mr/rebase-i-customize-insn-sheet (2015-06-15) 1 commit
810 (merged to 'next' on 2015-07-10 at ec383cd)
811 + git-rebase--interactive.sh: add config option for custom instruction format
813 "git rebase -i"'s list of todo is made configurable.
815 Will merge to 'master'.
818 * pt/am-foreign (2015-06-15) 5 commits
819 (merged to 'next' on 2015-06-24 at 838c702)
820 + am: teach mercurial patch parser how to read from stdin
821 + am: use gmtime() to parse mercurial patch date
822 + t4150: test applying StGit series
823 + am: teach StGit patch parser how to read from stdin
824 + t4150: test applying StGit patch
826 Various enhancements around "git am" reading patches generated by
829 Will merge to 'master'.
832 * pt/pull-builtin (2015-06-18) 19 commits
833 (merged to 'next' on 2015-07-10 at 07b1794)
834 + pull: remove redirection to git-pull.sh
835 + pull --rebase: error on no merge candidate cases
836 + pull --rebase: exit early when the working directory is dirty
837 + pull: configure --rebase via branch.<name>.rebase or pull.rebase
838 + pull: teach git pull about --rebase
839 + pull: set reflog message
840 + pull: implement pulling into an unborn branch
841 + pull: fast-forward working tree if head is updated
842 + pull: check if in unresolved merge state
843 + pull: support pull.ff config
844 + pull: error on no merge candidates
845 + pull: pass git-fetch's options to git-fetch
846 + pull: pass git-merge's options to git-merge
847 + pull: pass verbosity, --progress flags to fetch and merge
848 + pull: implement fetch + merge
849 + pull: implement skeletal builtin pull
850 + argv-array: implement argv_array_pushv()
851 + parse-options-cb: implement parse_opt_passthru_argv()
852 + parse-options-cb: implement parse_opt_passthru()
853 (this branch is used by pt/am-builtin.)
855 Reimplement 'git pull' in C.
857 Will merge to 'master'.
860 * rl/send-email-aliases (2015-07-07) 10 commits
861 (merged to 'next' on 2015-07-09 at c60553d)
862 + send-email: suppress meaningless whitespaces in from field
863 + send-email: allow multiple emails using --cc, --to and --bcc
864 + send-email: consider quote as delimiter instead of character
865 + send-email: reduce dependencies impact on parse_address_line
866 + send-email: minor code refactoring
867 + send-email: allow use of aliases in the From field of --compose mode
868 + send-email: refactor address list process
869 + t9001-send-email: refactor header variable fields replacement
870 + send-email: allow aliases in patch header and command script outputs
871 + t9001-send-email: move script creation in a setup test
873 "git send-email" now performs alias-expansion on names that are
874 given via --cccmd, etc.
876 This round comes with a lot more enhanced e-mail address parser,
877 which makes it a bit scary, but as long as it works as designed, it
878 makes it wonderful ;-).
880 Will merge to 'master'.
883 * wp/sha1-name-negative-match (2015-06-08) 2 commits
884 - sha1_name.c: introduce '^{/!-<negative pattern>}' notation
885 - test for '!' handling in rev-parse's named commits
887 Introduce "branch^{/!-<pattern>}" notation to name a commit
888 reachable from branch that does not match the given pattern.
893 * bc/object-id (2015-06-17) 10 commits
894 . remote.c: use struct object_id in many functions
895 . object-id: use struct object_id in struct object
896 . remote.c: use struct object_id in ref_newer()
897 . transport-helper.c: use struct object_id in push_refs_with_export()
898 . connect.c: use struct object_id in get_remote_heads()
899 . remote-curl: use struct object_id in parse_fetch()
900 . fetch-pack: use struct object_id in add_sought_entry_mem()
901 . object_id: convert struct ref to use object_id.
902 . sha1_file: introduce has_object_file() helper
903 . refs: convert some internal functions to use object_id
905 More transition from "unsigned char[40]" to "struct object_id".
907 While GSoC and other topics are actively moving existing code
908 around, this cannot go in; ejected from 'pu'.
911 * jk/log-missing-default-HEAD (2015-06-03) 1 commit
912 - log: diagnose empty HEAD more clearly
914 "git init empty && git -C empty log" said "bad default revision 'HEAD'",
915 which was found to be a bit confusing to new users.
917 What's the status of this one?
920 * gr/rebase-i-drop-warn (2015-06-30) 3 commits
921 (merged to 'next' on 2015-07-15 at 6f4f2c8)
922 + git rebase -i: add static check for commands and SHA-1
923 + git rebase -i: warn about removed commits
924 + git-rebase -i: add command "drop" to remove a commit
926 Add "drop commit-object-name subject" command as another way to
927 skip replaying of a commit in "rebase -i", and then punish those
928 who do not use it (and instead just remove the lines) by throwing
931 Will merge to 'master'.
934 * jh/strbuf-read-use-read-in-full (2015-06-01) 1 commit
935 - strbuf_read(): skip unnecessary strbuf_grow() at eof
937 Avoid one extra iteration and strbuf_grow() of 8kB in
940 Looked reasonable; perhaps a log message clarification is needed.
945 * mg/index-read-error-messages (2015-06-01) 2 commits
946 - messages: uniform error messages for index write
947 - show-index: uniform error messages for index read
953 * hv/submodule-config (2015-06-15) 4 commits
954 - do not die on error of parsing fetchrecursesubmodules option
955 - use new config API for worktree configurations of submodules
956 - extract functions for submodule config set and lookup
957 - implement submodule config API for lookup of .gitmodules values
959 The gitmodules API accessed from the C code learned to cache stuff
962 Needs another reroll? ($gmane/273743).
965 * jc/push-tags-also (2015-05-29) 1 commit
966 - push --tags: push tags *in addition to* other stuff
968 "git fetch --tags" learned to fetch tags in addition to other stuff
969 a few years ago, but "git push --tags" didn't. Now it does.
971 A change to push out more than before always invites "what if the
972 user makes a mistake" worries.
977 * jc/commit-slab (2015-05-22) 1 commit
978 (merged to 'next' on 2015-07-15 at 4c83475)
979 + commit-slab: introduce slabname##_peek() function
981 Memory use reduction when commit-slab facility is used to annotate
982 sparsely (which is not recommended in the first place).
984 Will merge to 'master'.
987 * jc/clone-bundle (2015-04-30) 1 commit
988 - repack: optionally create a clone.bundle
990 Waiting for further work.
994 * ee/clean-remove-dirs (2015-06-26) 6 commits
995 (merged to 'next' on 2015-06-29 at d595659)
996 + read_gitfile_gently: fix use-after-free
997 (merged to 'next' on 2015-06-24 at 7c27821)
998 + clean: improve performance when removing lots of directories
999 + p7300: add performance tests for clean
1000 + t7300: add tests to document behavior of clean and nested git
1001 + setup: sanity check file size in read_gitfile_gently
1002 + setup: add gentle version of read_gitfile
1004 Replace "is this subdirectory a separate repository that should not
1005 be touched?" check "git clean" does by checking if it has .git/HEAD
1006 using the submodule-related code with a more optimized check.
1008 Will merge to 'master'.
1011 * jc/merge-drop-old-syntax (2015-04-29) 1 commit
1012 (merged to 'next' on 2015-05-28 at 6bfd8b9)
1013 + merge: drop 'git merge <message> HEAD <commit>' syntax
1015 Stop supporting "git merge <message> HEAD <commit>" syntax that
1016 has been deprecated since October 2007.
1018 Will keep in 'next' during the 2.5 cycle.