git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
Search results ordered by [date|relevance]  view[summary|nested|Atom feed]
thread overview below | download mbox.gz: |
* What's cooking in git.git (Nov 2017, #05; Fri, 17)
@ 2017-11-17  6:12  5% Junio C Hamano
  0 siblings, 0 replies; 25+ results
From: Junio C Hamano @ 2017-11-17  6:12 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.  The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[Graduated to "master"]

* ab/mediawiki-name-truncation (2017-11-01) 1 commit
  (merged to 'next' on 2017-11-07 at b30233d585)
 + remote-mediawiki: limit filenames to legal

 The remote-helper for talking to MediaWiki has been updated to
 truncate an overlong pagename so that ".mw" suffix can still be
 added.


* ab/mediawiki-namespace (2017-11-08) 7 commits
  (merged to 'next' on 2017-11-10 at 1cf9cfdfbc)
 + remote-mediawiki: show progress while fetching namespaces
 + remote-mediawiki: process namespaces in order
 + remote-mediawiki: support fetching from (Main) namespace
 + remote-mediawiki: skip virtual namespaces
 + remote-mediawiki: show known namespace choices on failure
 + remote-mediawiki: allow fetching namespaces with spaces
 + remote-mediawiki: add namespace support

 The remote-helper for talking to MediaWiki has been updated to
 work with mediawiki namespaces.


* ab/pcre-v2 (2017-11-13) 1 commit
  (merged to 'next' on 2017-11-13 at 66bf57f071)
 + grep: fix NO_LIBPCRE1_JIT to fully disable JIT

 Building with NO_LIBPCRE1_JIT did not disable it, which has been fixed.


* ad/rebase-i-serie-typofix (2017-11-09) 1 commit
  (merged to 'next' on 2017-11-13 at 199e79b29e)
 + rebase -i: fix comment typo

 Typofix.


* ao/merge-verbosity-getenv-just-once (2017-11-01) 1 commit
  (merged to 'next' on 2017-11-09 at e7cfb8dcec)
 + merge-recursive: check GIT_MERGE_VERBOSITY only once

 Code cleanup.


* bc/submitting-patches-in-asciidoc (2017-11-13) 2 commits
  (merged to 'next' on 2017-11-13 at 70f65b981a)
 + Documentation: convert SubmittingPatches to AsciiDoc
 + Documentation: enable compat-mode for Asciidoctor

 The SubmittingPatches document has been converted to produce an
 HTML version via AsciiDoc/Asciidoctor.


* bp/read-index-from-skip-verification (2017-11-08) 1 commit
  (merged to 'next' on 2017-11-10 at 3c3e32f1ed)
 + read_index_from(): speed index loading by skipping verification of the entry order

 Drop (perhaps overly cautious) sanity check before using the index
 read from the filesystem at runtime.


* bw/rebase-i-ignored-submodule-fix (2017-11-07) 1 commit
  (merged to 'next' on 2017-11-10 at a0a54103ed)
 + wt-status: actually ignore submodules when requested

 "git rebase -i" recently started misbehaving when a submodule that
 is configured with 'submodule.<name>.ignore' is dirty; this has
 been corrected.


* cb/t4201-robustify (2017-11-13) 1 commit
  (merged to 'next' on 2017-11-13 at b83957b8f2)
 + t4201: make use of abbreviation in the test more robust

 A test update.


* cc/git-packet-pm (2017-11-07) 8 commits
  (merged to 'next' on 2017-11-10 at b40bc2c0bb)
 + Git/Packet.pm: extract parts of t0021/rot13-filter.pl for reuse
 + t0021/rot13-filter: add capability functions
 + t0021/rot13-filter: refactor checking final lf
 + t0021/rot13-filter: add packet_initialize()
 + t0021/rot13-filter: improve error message
 + t0021/rot13-filter: improve 'if .. elsif .. else' style
 + t0021/rot13-filter: refactor packet reading functions
 + t0021/rot13-filter: fix list comparison

 Parts of a test to drive the long-running content filter interface
 has been split into its own module, hopefully to eventually become
 reusable.


* jk/info-alternates-fix (2017-11-13) 1 commit
  (merged to 'next' on 2017-11-13 at ac84a7580a)
 + link_alt_odb_entries: make empty input a noop

 We used to add an empty alternate object database to the system
 that does not help anything; it has been corrected.


* js/for-each-ref-remote-name-and-ref (2017-11-08) 3 commits
  (merged to 'next' on 2017-11-10 at 254af5d602)
 + for-each-ref: test :remotename and :remoteref
 + for-each-ref: let upstream/push report the remote ref name
 + for-each-ref: let upstream/push optionally report the remote name

 The "--format=..." option "git for-each-ref" takes learned to show
 the name of the 'remote' repository and the ref at the remote side
 that is affected for 'upstream' and 'push' via "%(push:remotename)"
 and friends.


* jt/submodule-tests-cleanup (2017-11-08) 1 commit
  (merged to 'next' on 2017-11-10 at c6cbcdeaa4)
 + Tests: clean up and document submodule helpers

 Test clean-up.


* ma/bisect-leakfix (2017-11-06) 4 commits
  (merged to 'next' on 2017-11-09 at c280d786f4)
 + bisect: fix memory leak when returning best element
 + bisect: fix off-by-one error in `best_bisection_sorted()`
 + bisect: fix memory leak in `find_bisection()`
 + bisect: change calling-convention of `find_bisection()`

 Leak fixes.


* ma/reduce-heads-leakfix (2017-11-08) 2 commits
  (merged to 'next' on 2017-11-10 at 9428953ec8)
 + reduce_heads: fix memory leaks
 + builtin/merge-base: free commit lists

 Leak fixes.


* mh/avoid-rewriting-packed-refs (2017-10-30) 2 commits
  (merged to 'next' on 2017-11-09 at 272e27cc9a)
 + files-backend: don't rewrite the `packed-refs` file unnecessarily
 + t1409: check that `packed-refs` is not rewritten unnecessarily

 Recent update to the refs infrastructure implementation started
 rewriting packed-refs file more often than before; this has been
 optimized again for most trivial cases.


* mh/tidy-ref-update-flags (2017-11-06) 10 commits
  (merged to 'next' on 2017-11-09 at 5231330c1c)
 + refs: update some more docs to use "oid" rather than "sha1"
 + write_packed_entry(): take `object_id` arguments
 + refs: rename constant `REF_ISPRUNING` to `REF_IS_PRUNING`
 + refs: rename constant `REF_NODEREF` to `REF_NO_DEREF`
 + refs: tidy up and adjust visibility of the `ref_update` flags
 + ref_transaction_add_update(): remove a check
 + ref_transaction_update(): die on disallowed flags
 + prune_ref(): call `ref_transaction_add_update()` directly
 + files_transaction_prepare(): don't leak flags to packed transaction
 + Merge branch 'bc/object-id' into base

 Code clean-up in refs API implementation.


* rd/bisect-view-is-visualize (2017-11-13) 1 commit
  (merged to 'next' on 2017-11-13 at a36423f4ba)
 + bisect: mention "view" as an alternative to "visualize"

 Doc and message updates to teach users "bisect view" is a synonym
 for "bisect visualize".


* rs/imap-send-next-arg-fix (2017-11-03) 2 commits
  (merged to 'next' on 2017-11-07 at f4df55fe5b)
 + imap-send: handle missing response codes gracefully
 + imap-send: handle NULL return of next_arg()

 Error checking in "git imap-send" for empty response has been
 improved.


* rs/sequencer-rewrite-file-cleanup (2017-11-02) 3 commits
  (merged to 'next' on 2017-11-09 at 06f45be770)
 + sequencer.c: check return value of close() in rewrite_file()
 + sequencer: use O_TRUNC to truncate files
 + sequencer: factor out rewrite_file()

 Code cleanup.


* sb/bisect-run-empty (2017-11-13) 1 commit
  (merged to 'next' on 2017-11-13 at 90d20b8686)
 + bisect run: die if no command is given

 "git bisect run" that did not specify any command to run used to go
 ahead and treated all commits to be tested as 'good'.  This has
 been corrected by making the command error out.


* sr/wrapper-quote-filenames (2017-11-06) 1 commit
  (merged to 'next' on 2017-11-09 at a14ac8da60)
 + wrapper.c: consistently quote filenames in error messages

 Some error messages did not quote filenames shown in it, which have
 been fixed.


* tz/fsf-address-update (2017-11-09) 3 commits
  (merged to 'next' on 2017-11-13 at 97965f70d9)
 + Merge branch 'tz/fsf-address-update' of ../git-gui into tz/fsf-address-update
 + Replace Free Software Foundation address in license notices
 + Replace Free Software Foundation address in license notices

 Replace the mailing address of FSF to a URL, as FSF prefers.

--------------------------------------------------
[New Topics]

* rv/sendemail-tocmd-in-config-and-completion (2017-11-14) 2 commits
 - completion: add git config sendemail.tocmd
 - Documentation/config: add sendemail.tocmd to list preceding "See git-send-email(1)"

 Teach "sendemail.tocmd" to places that know about "sendemail.to",
 like documentation and shell completion (in contrib/).

 Will merge to 'next'.


* tz/notes-error-to-stderr (2017-11-15) 1 commit
 - notes: send "Automatic notes merge failed" messages to stderr

 "git notes" sent its error message to its standard output stream,
 which was corrected.

 Will merge to 'next'.


* hm/config-parse-expiry-date (2017-11-16) 1 commit
 - config: add --expiry-date

 "git config --expiry-date gc.reflogexpire" can read "2.weeks" from
 the configuration and report it as a timestamp, just like "--int"
 would read "1k" and report 1024, to help consumption by scripts.


* sd/branch-copy (2017-11-16) 1 commit
 - config: avoid "write_in_full(fd, buf, len) != len" pattern

 Code clean-up.

 Will merge to 'next'.


* pw/sequencer-recover-from-unlockable-index (2017-11-16) 1 commit
 - sequencer: reschedule pick if index can't be locked

 The sequencer machinery (used by "git cherry-pick A..B", and "git
 rebase -i", among other things) would have lost a commit if stopped
 due to an unlockable index file, which has been fixed.

 Will merge to 'next'.


* dj/runtime-prefix (2017-11-17) 1 commit
 - exec_cmd: RUNTIME_PREFIX on some POSIX systems

 A build-time option has been added to allow Git to be told to refer
 to its associated files relative to the main binary, in the same
 way that has been possible on Windows for quite some time, for
 Linux, BSDs and Darwin.


* jc/editor-waiting-message (2017-11-17) 1 commit
 - launch_editor(): indicate that Git waits for user input

 Git shows a message to tell the user that it is waiting for the
 user to finish editing when spawning an editor, in case the editor
 opens to a hidden window or somewhere obscure and the user gets
 lost.


* rs/apply-inaccurate-eof-with-incomplete-line (2017-11-17) 1 commit
 - apply: update line lengths for --inaccurate-eof

 "git apply --inaccurate-eof" when used with "--ignore-space-change"
 triggered an internal sanity check, which has been fixed.

 Will merge to 'next'.


* tz/branch-doc-remove-set-upstream (2017-11-17) 1 commit
 - branch doc: remove --set-upstream from synopsis

 "git branch --set-upstream" has been deprecated and (sort of)
 removed, as "--set-upstream-to" is the preferred one these days.
 The documentation still had "--set-upstream" listed on its
 synopsys section, which has been corrected.


* tz/complete-branch-copy (2017-11-17) 1 commit
 - completion: add '--copy' option to 'git branch'

 Command line completion (in contrib/) has been taught about the
 "--copy" option of "git branch".

 Will merge to 'next'.

--------------------------------------------------
[Stalled]

* jn/ssh-wrappers (2017-10-30) 6 commits
 - fixup! ssh: 'auto' variant to select between 'ssh' and 'simple'
 - ssh: 'simple' variant does not support --port
 - ssh: 'simple' variant does not support -4/-6
 - ssh: 'auto' variant to select between 'ssh' and 'simple'
 - connect: split ssh command line options into separate function
 - connect: split git:// setup into a separate function
 (this branch uses bw/protocol-v1.)

 The ssh-variant 'simple' introduced earlier broke existing
 installations by not passing --port/-4/-6 and not diagnosing an
 attempt to pass these as an error.  Instead, default to
 automatically detect how compatible the GIT_SSH/GIT_SSH_COMMAND is
 to OpenSSH convention and then error out an invocation to make it
 easier to diagnose connection errors.

 Expecting a reroll.
 cf. <20171025163243.xmm7szrkwgblpgcc@aiede.mtv.corp.google.com>


* jc/merge-symlink-ours-theirs (2017-09-26) 1 commit
 - merge: teach -Xours/-Xtheirs to symbolic link merge

 "git merge -Xours/-Xtheirs" learned to use our/their version when
 resolving a conflicting updates to a symbolic link.

 Needs review.


* mg/merge-base-fork-point (2017-09-17) 3 commits
 - merge-base: find fork-point outside partial reflog
 - merge-base: return fork-point outside reflog
 - t6010: test actual test output

 "merge-base --fork-point $branch $commit" is used to guess on which
 commit among the commits that were once at the tip of the $branch the
 $commit was built on top of, and it learns these historical tips from
 the reflog of the $branch.  When the true fork-point is lost due to
 pruning of old reflog entries, the command does not give any output,
 because it has no way to guess correctly and does not want to mislead
 the user with a wrong guess.

 The command has been updated to give the best but not known to be
 correct guess, based on a hope that a merge-base between $commit and a
 virtual merge across all the reflog entries that still are available
 for $branch may still be a closer to the true fork-point than the
 merge-base between $commit and the current tip of the $branch.

 This may have to be offered by an additional option, to allow the
 users that are prepared to see a potentially incorrect guess to opt
 into the feature, without affecting the current callers that may not
 be prepared to accept a guess that is not known to be correct.

 What's the doneness of this one?


* cc/perf-run-config (2017-09-24) 9 commits
 - perf: store subsection results in "test-results/$GIT_PERF_SUBSECTION/"
 - perf/run: show name of rev being built
 - perf/run: add run_subsection()
 - perf/run: update get_var_from_env_or_config() for subsections
 - perf/run: add get_subsections()
 - perf/run: add calls to get_var_from_env_or_config()
 - perf/run: add GIT_PERF_DIRS_OR_REVS
 - perf/run: add get_var_from_env_or_config()
 - perf/run: add '--config' option to the 'run' script

 Needs review.


* jk/drop-ancient-curl (2017-08-09) 5 commits
 - http: #error on too-old curl
 - curl: remove ifdef'd code never used with curl >=7.19.4
 - http: drop support for curl < 7.19.4
 - http: drop support for curl < 7.16.0
 - http: drop support for curl < 7.11.1

 Some code in http.c that has bitrot is being removed.

 Expecting a reroll.


* mk/use-size-t-in-zlib (2017-08-10) 1 commit
 . zlib.c: use size_t for size

 The wrapper to call into zlib followed our long tradition to use
 "unsigned long" for sizes of regions in memory, which have been
 updated to use "size_t".

 Needs resurrecting by making sure the fix is good and still applies
 (or adjusted to today's codebase).


* mg/status-in-progress-info (2017-05-10) 2 commits
 - status --short --inprogress: spell it as --in-progress
 - status: show in-progress info for short status

 "git status" learns an option to report various operations
 (e.g. "merging") that the user is in the middle of.

 cf. <xmqqmvakcdqw.fsf@gitster.mtv.corp.google.com>


* nd/worktree-move (2017-04-20) 6 commits
 - worktree remove: new command
 - worktree move: refuse to move worktrees with submodules
 - worktree move: accept destination as directory
 - worktree move: new command
 - worktree.c: add update_worktree_location()
 - worktree.c: add validate_worktree()

 "git worktree" learned move and remove subcommands.

 Expecting a reroll.
 cf. <20170420101024.7593-1-pclouds@gmail.com>
 cf. <20170421145916.mknekgqzhxffu7di@sigill.intra.peff.net>
 cf. <d0e81b1e-5869-299e-f462-4d43dc997bd1@ramsayjones.plus.com>

--------------------------------------------------
[Cooking]

* jc/branch-name-sanity (2017-11-15) 4 commits
 - builtin/branch: remove redundant check for HEAD
 - branch: correctly reject refs/heads/{-dash,HEAD}
 - branch: split validate_new_branchname() into two
 - branch: streamline "attr_only" handling in validate_new_branchname()

 "git branch" and "git checkout -b" are now forbidden from creating
 a branch whose name is "HEAD".

 Will merge to 'next'.


* ad/submitting-patches-title-decoration (2017-11-11) 1 commit
  (merged to 'next' on 2017-11-15 at 99238c3537)
 + doc/SubmittingPatches: correct subject guidance

 Doc update around use of "format-patch --subject-prefix" etc.

 Will merge to 'master'.


* jc/merge-base-fork-point-doc (2017-11-09) 1 commit
 - merge-base --fork-point doc: clarify the example and failure modes

 Clarify and enhance documentation for "merge-base --fork-point", as
 it was clear what it computed but not why/what for.

 Will merge to 'next'.


* bp/fastindex (2017-11-11) 5 commits
 - SQUASH???
 - fastindex: add documentation for the fastindex extension
 - fastindex: add test tools and a test script
 - update-index: add fastindex support to update-index
 - fastindex: speed up index load through parallelization


* pw/sequencer-in-process-commit (2017-11-11) 10 commits
 - SQUASH??? styles
 - sequencer: try to commit without forking 'git commit'
 - sequencer: load commit related config
 - sequencer: simplify adding Signed-off-by: trailer
 - sequencer: don't die in print_commit_summary()
 - commit: move print_commit_summary() to libgit
 - commit: move post-rewrite code to libgit
 - Add a function to update HEAD after creating a commit
 - commit: move empty message checks to libgit
 - t3404: check intermediate squash messages

 The sequencer infrastructure is shared across "git cherry-pick",
 "git rebase -i", etc., and has always spawned "git commit" when it
 needs to create a commit.  It has been taught to do so internally,
 when able, by reusing the codepath "git commit" itself uses.

 This looked more or less ready.


* rs/apply-fuzzy-match-fix (2017-11-12) 1 commit
  (merged to 'next' on 2017-11-15 at 2d724fa63b)
 + apply: avoid out-of-bounds access in fuzzy_matchlines()

 A fix for an ancient bug in "git apply --ignore-space-change" codepath.

 Will merge to 'master'.


* sb/test-cherry-pick-submodule-getting-in-a-way (2017-11-15) 2 commits
 - merge-recursive: handle addition of submodule on our side of history
 - t/3512: demonstrate unrelated submodule/file conflict as cherry-pick failure

 The three-way merge performed by "git cherry-pick" was confused
 when a new submodule was added in the meantime, which has been
 fixed (or "papered over").

 Will merge to 'next'.


* en/rename-progress (2017-11-15) 4 commits
 - sequencer: show rename progress during cherry picks
 - diff: remove silent clamp of renameLimit
 - progress: fix progress meters when dealing with lots of work
 - sequencer: warn when internal merge may be suboptimal due to renameLimit

 Historically, the diff machinery for rename detection had a
 hardcoded limit of 32k paths; this is being lifted to allow users
 trade cycles with a (possibly) easier to read result.

 Will merge to 'next'.


* tz/redirect-fix (2017-11-14) 2 commits
 - rebase: fix stderr redirect in apply_autostash()
 - t/lib-gpg: fix gpgconf stderr redirect to /dev/null

 A few scripts (both in production and tests) incorrectly redirected
 their error output.  These have been corrected.

 Will merge to 'next'.


* ar/unconfuse-three-dots (2017-11-14) 6 commits
 - Testing: provide tests requiring them with ellipses after SHA-1 values
 - Documentation: revisions: fix typo: "three dot" ---> "three-dot" (in line with "two-dot").
 - Documentation: user-manual: limit usage of ellipsis
 - diff: diff_aligned_abbrev: remove ellipsis after abbreviated SHA-1 value
 - checkout: describe_detached_head: remove ellipsis after committish
 - config: introduce core.printsha1ellipsis

 Ancient part of codebase still shows dots after an abbreviated
 object name just to show that it is not a full object name, but
 these ellipses are confusing to people who newly discovered Git
 who are used to seeing abbreviated object names and find them
 confusing with the range syntax.

 This may become a new default someday, but the way to tentatively
 get the original behaviour back would probably want to be an
 environment variable, not a configuration.

 Expecting a reroll.


* jh/fsck-promisors (2017-11-17) 10 commits
 - gc: do not repack promisor packfiles
 - rev-list: support termination at promisor objects
 - sha1_file: support lazily fetching missing objects
 - introduce fetch-object: fetch one promisor object
 - index-pack: refactor writing of .keep files
 - fsck: support promisor objects as CLI argument
 - fsck: support referenced promisor objects
 - fsck: support refs pointing to promisor objects
 - fsck: introduce partialclone extension
 - extension.partialclone: introduce partial clone extension
 (this branch is used by jh/partial-clone; uses jh/object-filtering.)


* jh/object-filtering (2017-11-17) 6 commits
 - pack-objects: add list-objects filtering
 - rev-list: add list-objects filtering support
 - list-objects: filter objects in traverse_commit_list
 - oidset: add iterator methods to oidset
 - oidmap: add oidmap iterator methods
 - dir: allow exclusions from blob in addition to file
 (this branch is used by jh/fsck-promisors and jh/partial-clone.)


* jh/partial-clone (2017-11-17) 15 commits
 . fetch-pack: restore save_commit_buffer after use
 . unpack-trees: batch fetching of missing blobs
 . t5500: more tests for partial clone and fetch
 . t5601: test for partial clone
 . t5500: add fetch-pack tests for partial clone
 . fetch: add from_promisor and exclude-promisor-objects parameters
 . fetch-pack: test support excluding large blobs
 . partial-clone: define partial clone settings in config
 . fetch-pack: test support excluding large blobs
 . pack-objects: test support for blob filtering
 . remote-curl: add object filtering for partial clone
 . fetch: add object filtering for partial fetch
 . fetch: refactor calculation of remote list
 . clone, fetch-pack, index-pack, transport: partial clone
 . upload-pack: add object filtering for partial clone
 (this branch uses jh/fsck-promisors and jh/object-filtering.)


* sb/describe-blob (2017-11-16) 7 commits
 - builtin/describe.c: describe a blob
 - builtin/describe.c: factor out describe_commit
 - builtin/describe.c: print debug statements earlier
 - builtin/describe.c: rename `oid` to avoid variable shadowing
 - revision.h: introduce blob/tree walking in order of the commits
 - list-objects.c: factor out traverse_trees_and_blobs
 - t6120: fix typo in test name

 "git describe" was taught to dig trees deeper to find a
 <commit-ish>:<path> that refers to a given blob object.


* tb/add-renormalize (2017-11-17) 1 commit
 - add: introduce "--renormalize"

 "git add --renormalize ." is a new and safer way to record the fact
 that you are correcting the end-of-line convention and other
 "convert_to_git()" glitches in the in-repository data.

 Will merge to 'next'.


* av/fsmonitor (2017-11-13) 7 commits
  (merged to 'next' on 2017-11-13 at db56ad7eef)
 + fsmonitor: simplify determining the git worktree under Windows
 + fsmonitor: store fsmonitor bitmap before splitting index
 + fsmonitor: read from getcwd(), not the PWD environment variable
  (merged to 'next' on 2017-11-07 at a06178754d)
 + fsmonitor: delay updating state until after split index is merged
 + fsmonitor: document GIT_TRACE_FSMONITOR
 + fsmonitor: don't bother pretty-printing JSON from watchman
 + fsmonitor: set the PWD to the top of the working tree
 (this branch uses bp/fsmonitor.)

 Various fixes to bp/fsmonitor topic.

 Waiting for follow-on fixes to settle.


* bp/fsmonitor (2017-10-05) 15 commits
  (merged to 'next' on 2017-11-07 at b08d44ba60)
 + fsmonitor: preserve utf8 filenames in fsmonitor-watchman log
 + fsmonitor: read entirety of watchman output
 + fsmonitor: MINGW support for watchman integration
 + fsmonitor: add a performance test
 + fsmonitor: add a sample integration script for Watchman
 + fsmonitor: add test cases for fsmonitor extension
 + split-index: disable the fsmonitor extension when running the split index test
 + fsmonitor: add a test tool to dump the index extension
 + update-index: add fsmonitor support to update-index
 + ls-files: Add support in ls-files to display the fsmonitor valid bit
 + fsmonitor: add documentation for the fsmonitor extension.
 + fsmonitor: teach git to optionally utilize a file system monitor to speed up detecting new or changed files.
 + update-index: add a new --force-write-index option
 + preload-index: add override to enable testing preload-index
 + bswap: add 64 bit endianness helper get_be64
 (this branch is used by av/fsmonitor.)

 Originally merged to 'next' on 2017-10-05

 We learned to talk to watchman to speed up "git status" and other
 operations that need to see which paths have been modified.

 Waiting for follow-on fixes to settle.


* pb/bisect-helper-2 (2017-10-28) 8 commits
 - t6030: make various test to pass GETTEXT_POISON tests
 - bisect--helper: `bisect_start` shell function partially in C
 - bisect--helper: `get_terms` & `bisect_terms` shell function in C
 - bisect--helper: `bisect_next_check` shell function in C
 - bisect--helper: `check_and_set_terms` shell function in C
 - wrapper: move is_empty_file() and rename it as is_empty_or_missing_file()
 - bisect--helper: `bisect_write` shell function in C
 - bisect--helper: `bisect_reset` shell function in C

 Expecting a reroll.
 cf. <0102015f5e5ee171-f30f4868-886f-47a1-a4e4-b4936afc545d-000000@eu-west-1.amazonses.com>


* jc/ignore-cr-at-eol (2017-11-08) 2 commits
 - diff: --ignore-cr-at-eol
 - xdiff: reassign xpparm_t.flags bits

 The "diff" family of commands learned to ignore differences in
 carriage return at the end of line.

 Will merge to 'next'.


* ot/mru-on-list (2017-10-01) 1 commit
 - mru: use double-linked list from list.h

 The first step to getting rid of mru API and using the
 doubly-linked list API directly instead.

 Is there any remaining issues on this one?


* jm/svn-pushmergeinfo-fix (2017-09-17) 1 commit
 - git-svn: fix svn.pushmergeinfo handling of svn+ssh usernames.

 "git svn dcommit" did not take into account the fact that a
 svn+ssh:// URL with a username@ (typically used for pushing) refers
 to the same SVN repository without the username@ and failed when
 svn.pushmergeinfo option is set.

 Needs a test, perhaps as a follow-up patch.

 Will merge to 'next'.


* bw/protocol-v1 (2017-10-17) 11 commits
 - Documentation: document Extra Parameters
 - ssh: introduce a 'simple' ssh variant
 - i5700: add interop test for protocol transition
 - http: tell server that the client understands v1
 - connect: tell server that the client understands v1
 - connect: teach client to recognize v1 server response
 - upload-pack, receive-pack: introduce protocol version 1
 - daemon: recognize hidden request arguments
 - protocol: introduce protocol extension mechanisms
 - pkt-line: add packet_write function
 - connect: in ref advertisement, shallows are last
 (this branch is used by jn/ssh-wrappers.)

 A new mechanism to upgrade the wire protocol in place is proposed
 and demonstrated that it works with the older versions of Git
 without harming them.

 Waiting for jn/ssh-wrappers topic.


* bc/hash-algo (2017-11-13) 4 commits
 - Switch empty tree and blob lookups to use hash abstraction
 - Integrate hash algorithm support with repo setup
 - Add structure representing hash algorithm
 - setup: expose enumerated repo info

 An infrastructure to define what hash function is used in Git is
 introduced, and an effort to plumb that throughout various
 codepaths has been started.

 Looked more or less OK to me.  Ready to merge to 'next'?  Further
 comments?


* sb/submodule-recursive-checkout-detach-head (2017-07-28) 2 commits
 - Documentation/checkout: clarify submodule HEADs to be detached
 - recursive submodules: detach HEAD from new state

 "git checkout --recursive" may overwrite and rewind the history of
 the branch that happens to be checked out in submodule
 repositories, which might not be desirable.  Detach the HEAD but
 still allow the recursive checkout to succeed in such a case.

 Expecting a reroll.

--------------------------------------------------
[Discarded]

* jk/ui-color-always-to-auto-maint (2017-10-13) 2 commits
 . color: document that "git -c color.*=always" is a bit special
 . color: downgrade "always" to "auto" only for on-disk configuration

 It turns out that "git -c color.ui=always cmd" is relied on by many
 third-party tools as a way to force coloured output no matter what
 the end-user configuration is, and a recent attempt to downgrade
 'always' to 'auto' to fix the regression to "git add -p" broke it.

 This has been reverted from 'next'.


* jt/partial-clone-lazy-fetch (2017-10-02) 18 commits
 . fetch-pack: restore save_commit_buffer after use
 . unpack-trees: batch fetching of missing blobs
 . clone: configure blobmaxbytes in created repos
 . clone: support excluding large blobs
 . fetch: support excluding large blobs
 . fetch: refactor calculation of remote list
 . fetch-pack: support excluding large blobs
 . pack-objects: support --blob-max-bytes
 . pack-objects: rename want_.* to ignore_.*
 . gc: do not repack promisor packfiles
 . rev-list: support termination at promisor objects
 . sha1_file: support lazily fetching missing objects
 . introduce fetch-object: fetch one promisor object
 . index-pack: refactor writing of .keep files
 . fsck: support promisor objects as CLI argument
 . fsck: support referenced promisor objects
 . fsck: support refs pointing to promisor objects
 . fsck: introduce partialclone extension

 A journey for "git clone" and "git fetch" to become "lazier" by
 depending more on its remote repository---this is the beginning of
 it.

 Superseded by three topics that end with jh/partial-clone.


* jh/dir-add-exclude-from-blob (2017-10-27) 1 commit
 . dir: allow exclusions from blob in addition to file

 The code to read exclusion list from a blob, which is used when the
 .gitignore file is outside a sparse checkout area, has been
 refactored so that other codepath can later use it to do the same
 outside the context of "sparse checkout".

 Now part of jh/object-filtering topic.

^ permalink raw reply	[relevance 5%]

* What's cooking in git.git (Nov 2017, #04; Tue, 14)
@ 2017-11-14  3:47  5% Junio C Hamano
  0 siblings, 0 replies; 25+ results
From: Junio C Hamano @ 2017-11-14  3:47 UTC (permalink / raw)
  To: git


What's cooking in git.git (Nov 2017, #04; Tue, 14)
--------------------------------------------------

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.  The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.

The tip of 'next' has been rebuilt on top of v2.15, while kicking a
few topics back to 'pu'.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[Graduated to "master"]

* ad/5580-unc-tests-on-cygwin (2017-11-01) 1 commit
  (merged to 'next' on 2017-11-07 at 34fc479da2)
 + t5580: add Cygwin support

 UNC paths are also relevant in Cygwin builds and they are now
 tested just like Mingw builds.


* ao/diff-populate-filespec-lstat-errorpath-fix (2017-10-29) 1 commit
  (merged to 'next' on 2017-11-07 at b03241e6e5)
 + diff: fix lstat() error handling in diff_populate_filespec()

 After an error from lstat(), diff_populate_filespec() function
 sometimes still went ahead and used invalid data in struct stat,
 which has been fixed.


* bw/diff-opt-impl-to-bitfields (2017-11-01) 8 commits
  (merged to 'next' on 2017-11-07 at 8be78206ba)
 + diff: make struct diff_flags members lowercase
 + diff: remove DIFF_OPT_CLR macro
 + diff: remove DIFF_OPT_SET macro
 + diff: remove DIFF_OPT_TST macro
 + diff: remove touched flags
 + diff: add flag to indicate textconv was set via cmdline
 + diff: convert flags to be stored in bitfields
 + add, reset: use DIFF_OPT_SET macro to set a diff flag

 A single-word "unsigned flags" in the diff options is being split
 into a structure with many bitfields.


* dk/libsecret-unlock-to-load-fix (2017-11-04) 1 commit
  (merged to 'next' on 2017-11-07 at 57d1d76c8c)
 + credential-libsecret: unlock locked secrets

 The credential helper for libsecret (in contrib/) has been improved
 to allow possibly prompting the end user to unlock secrets that are
 currently locked (otherwise the secrets may not be loaded).


* jm/relnotes-2.15-typofix (2017-11-06) 1 commit
  (merged to 'next' on 2017-11-07 at 60fc937b62)
 + fix typos in 2.15.0 release notes

 Typofix.


* jm/status-ignored-files-list (2017-10-31) 4 commits
  (merged to 'next' on 2017-11-07 at 682c74a2cb)
 + status: test ignored modes
 + status: document options to show matching ignored files
 + status: report matching ignored and normal untracked
 + status: add option to show ignored files differently

 Originally merged to 'next' on 2017-11-01

 The set of paths output from "git status --ignored" was tied
 closely with its "--untracked=<mode>" option, but now it can be
 controlled more flexibly.  Most notably, a directory that is
 ignored because it is listed to be ignored in the ignore/exclude
 mechanism can be handled differently from a directory that ends up
 to be ignored only because all files in it are ignored.


* js/early-config (2017-11-03) 1 commit
  (merged to 'next' on 2017-11-07 at 9477c7c8ea)
 + setup: avoid double slashes when looking for HEAD

 Correct start-up sequence so that a repository could be placed
 immediately under the root directory again (which was broken at
 around Git 2.13).


* js/mingw-full-version-in-resources (2017-11-01) 1 commit
  (merged to 'next' on 2017-11-07 at 3a256b5ddc)
 + mingw: include the full version information in the resources

 MinGW updates.


* js/mingw-redirect-std-handles (2017-11-02) 3 commits
  (merged to 'next' on 2017-11-07 at 9af6a3dea0)
 + mingw: document the standard handle redirection
 + mingw: optionally redirect stderr/stdout via the same handle
 + mingw: add experimental feature to redirect standard handles

 MinGW updates.


* js/wincred-empty-cred (2017-11-01) 2 commits
  (merged to 'next' on 2017-11-07 at 43d3fcc30a)
 + wincred: handle empty username/password correctly
 + t0302: check helper can handle empty credentials

 MinGW updates.


* ks/mailmap (2017-11-03) 1 commit
  (merged to 'next' on 2017-11-07 at 46975637c7)
 + mailmap: use Kaartic Sivaraam's new address


* rs/hex-to-bytes-cleanup (2017-11-01) 3 commits
  (merged to 'next' on 2017-11-07 at fac14770e1)
 + sha1_file: use hex_to_bytes()
 + http-push: use hex_to_bytes()
 + notes: move hex_to_bytes() to hex.c and export it

 Code cleanup.


* sb/blame-config-doc (2017-11-06) 1 commit
  (merged to 'next' on 2017-11-07 at 0576cb452f)
 + config: document blame configuration

 Description of blame.{showroot,blankboundary,showemail,date}
 configuration variables have been added to "git config --help".


* sg/travis-fixes (2017-11-02) 2 commits
  (merged to 'next' on 2017-11-07 at bbf39361b6)
 + travis-ci: don't build Git for the static analysis job
 + travis-ci: fix running P4 and Git LFS tests in Linux build jobs

 TravisCI build updates.

--------------------------------------------------
[New Topics]

* ad/rebase-i-serie-typofix (2017-11-09) 1 commit
  (merged to 'next' on 2017-11-13 at 199e79b29e)
 + rebase -i: fix comment typo

 Will merge to 'master'.


* ad/submitting-patches-title-decoration (2017-11-11) 1 commit
 - doc/SubmittingPatches: correct subject guidance

 Doc update around use of "format-patch --subject-prefix" etc.

 Will merge to 'next'.


* jc/merge-base-fork-point-doc (2017-11-09) 1 commit
 - merge-base --fork-point doc: clarify the example and failure modes

 Clarify and enhance documentation for "merge-base --fork-point", as
 it was clear what it computed but not why/what for.


* tz/fsf-address-update (2017-11-09) 3 commits
  (merged to 'next' on 2017-11-13 at 97965f70d9)
 + Merge branch 'tz/fsf-address-update' of ../git-gui into tz/fsf-address-update
 + Replace Free Software Foundation address in license notices
 + Replace Free Software Foundation address in license notices

 Will merge to 'master'.


* bp/fastindex (2017-11-11) 5 commits
 - SQUASH???
 - fastindex: add documentation for the fastindex extension
 - fastindex: add test tools and a test script
 - update-index: add fastindex support to update-index
 - fastindex: speed up index load through parallelization


* pw/sequencer-in-process-commit (2017-11-11) 10 commits
 - SQUASH??? styles
 - sequencer: try to commit without forking 'git commit'
 - sequencer: load commit related config
 - sequencer: simplify adding Signed-off-by: trailer
 - sequencer: don't die in print_commit_summary()
 - commit: move print_commit_summary() to libgit
 - commit: move post-rewrite code to libgit
 - Add a function to update HEAD after creating a commit
 - commit: move empty message checks to libgit
 - t3404: check intermediate squash messages

 The sequencer infrastructure is shared across "git cherry-pick",
 "git rebase -i", etc., and has always spawned "git commit" when it
 needs to create a commit.  It has been taught to do so internally,
 when able, by reusing the codepath "git commit" itself uses.


* rs/apply-fuzzy-match-fix (2017-11-12) 1 commit
 - apply: avoid out-of-bounds access in fuzzy_matchlines()

 A fix for an ancient bug in "git apply --ignore-space-change" codepath.

 Will merge to 'next'.


* sb/test-cherry-pick-submodule-getting-in-a-way (2017-11-12) 1 commit
 - t/3512: demonstrate unrelated submodule/file conflict as cherry-pick failure

 An additional test, in anticipation for a fix.

 Will merge to 'next'.
 It would be very preferrable if we can merge an actual fix together
 to 'next', though.


* ab/pcre-v2 (2017-11-13) 1 commit
  (merged to 'next' on 2017-11-13 at 66bf57f071)
 + grep: fix NO_LIBPCRE1_JIT to fully disable JIT

 Building with NO_LIBPCRE1_JIT did not disable it, which has been fixed.

 Will merge to 'master'.


* cb/t4201-robustify (2017-11-13) 1 commit
  (merged to 'next' on 2017-11-13 at b83957b8f2)
 + t4201: make use of abbreviation in the test more robust

 A test update.

 Will merge to 'master'.


* jk/info-alternates-fix (2017-11-13) 1 commit
  (merged to 'next' on 2017-11-13 at ac84a7580a)
 + link_alt_odb_entries: make empty input a noop

 We used to add an empty alternate object database to the system
 that does not help anything; it has been corrected.

 Will merge to 'master'.


* rd/bisect-view-is-visualize (2017-11-13) 1 commit
  (merged to 'next' on 2017-11-13 at a36423f4ba)
 + bisect: mention "view" as an alternative to "visualize"

 Doc and message updates to teach users "bisect view" is a synonym
 for "bisect visualize".

 Will merge to 'master'.


* sb/bisect-run-empty (2017-11-13) 1 commit
  (merged to 'next' on 2017-11-13 at 90d20b8686)
 + bisect run: die if no command is given

 "git bisect run" that did not specify any command to run used to go
 ahead and treated all commits to be tested as 'good'.  This has
 been corrected by making the command error out.

 Will merge to 'master'.


* en/rename-progress (2017-11-14) 5 commits
 - sequencer: show rename progress during cherry picks
 - diff: remove silent clamp of renameLimit
 - SQUASH???
 - progress: fix progress meters when dealing with lots of work
 - sequencer: warn when internal merge may be suboptimal due to renameLimit

 Historically, the diff machinery for rename detection had a
 hardcoded limit of 32k paths; this is being lifted to allow users
 trade cycles with a (possibly) easier to read result.

 Will squash in the type-fix and merge to 'next'.


* tz/redirect-fix (2017-11-14) 2 commits
 - rebase: fix stderr redirect in apply_autostash()
 - t/lib-gpg: fix gpgconf stderr redirect to /dev/null

 A few scripts (both in production and tests) incorrectly redirected
 their error output.  These have been corrected.

 Wait for the third one and then merge to 'next'.

--------------------------------------------------
[Stalled]

* jn/ssh-wrappers (2017-10-30) 6 commits
 - fixup! ssh: 'auto' variant to select between 'ssh' and 'simple'
 - ssh: 'simple' variant does not support --port
 - ssh: 'simple' variant does not support -4/-6
 - ssh: 'auto' variant to select between 'ssh' and 'simple'
 - connect: split ssh command line options into separate function
 - connect: split git:// setup into a separate function
 (this branch uses bw/protocol-v1.)

 The ssh-variant 'simple' introduced earlier broke existing
 installations by not passing --port/-4/-6 and not diagnosing an
 attempt to pass these as an error.  Instead, default to
 automatically detect how compatible the GIT_SSH/GIT_SSH_COMMAND is
 to OpenSSH convention and then error out an invocation to make it
 easier to diagnose connection errors.

 Expecting a reroll.
 cf. <20171025163243.xmm7szrkwgblpgcc@aiede.mtv.corp.google.com>


* jc/merge-symlink-ours-theirs (2017-09-26) 1 commit
 - merge: teach -Xours/-Xtheirs to symbolic link merge

 "git merge -Xours/-Xtheirs" learned to use our/their version when
 resolving a conflicting updates to a symbolic link.

 Needs review.


* mg/merge-base-fork-point (2017-09-17) 3 commits
 - merge-base: find fork-point outside partial reflog
 - merge-base: return fork-point outside reflog
 - t6010: test actual test output

 "merge-base --fork-point $branch $commit" is used to guess on which
 commit among the commits that were once at the tip of the $branch the
 $commit was built on top of, and it learns these historical tips from
 the reflog of the $branch.  When the true fork-point is lost due to
 pruning of old reflog entries, the command does not give any output,
 because it has no way to guess correctly and does not want to mislead
 the user with a wrong guess.

 The command has been updated to give the best but not known to be
 correct guess, based on a hope that a merge-base between $commit and a
 virtual merge across all the reflog entries that still are available
 for $branch may still be a closer to the true fork-point than the
 merge-base between $commit and the current tip of the $branch.

 This may have to be offered by an additional option, to allow the
 users that are prepared to see a potentially incorrect guess to opt
 into the feature, without affecting the current callers that may not
 be prepared to accept a guess that is not known to be correct.

 What's the doneness of this one?


* cc/perf-run-config (2017-09-24) 9 commits
 - perf: store subsection results in "test-results/$GIT_PERF_SUBSECTION/"
 - perf/run: show name of rev being built
 - perf/run: add run_subsection()
 - perf/run: update get_var_from_env_or_config() for subsections
 - perf/run: add get_subsections()
 - perf/run: add calls to get_var_from_env_or_config()
 - perf/run: add GIT_PERF_DIRS_OR_REVS
 - perf/run: add get_var_from_env_or_config()
 - perf/run: add '--config' option to the 'run' script

 Needs review.


* jk/drop-ancient-curl (2017-08-09) 5 commits
 - http: #error on too-old curl
 - curl: remove ifdef'd code never used with curl >=7.19.4
 - http: drop support for curl < 7.19.4
 - http: drop support for curl < 7.16.0
 - http: drop support for curl < 7.11.1

 Some code in http.c that has bitrot is being removed.

 Expecting a reroll.


* mk/use-size-t-in-zlib (2017-08-10) 1 commit
 . zlib.c: use size_t for size

 The wrapper to call into zlib followed our long tradition to use
 "unsigned long" for sizes of regions in memory, which have been
 updated to use "size_t".

 Needs resurrecting by making sure the fix is good and still applies
 (or adjusted to today's codebase).


* mg/status-in-progress-info (2017-05-10) 2 commits
 - status --short --inprogress: spell it as --in-progress
 - status: show in-progress info for short status

 "git status" learns an option to report various operations
 (e.g. "merging") that the user is in the middle of.

 cf. <xmqqmvakcdqw.fsf@gitster.mtv.corp.google.com>


* nd/worktree-move (2017-04-20) 6 commits
 - worktree remove: new command
 - worktree move: refuse to move worktrees with submodules
 - worktree move: accept destination as directory
 - worktree move: new command
 - worktree.c: add update_worktree_location()
 - worktree.c: add validate_worktree()

 "git worktree" learned move and remove subcommands.

 Expecting a reroll.
 cf. <20170420101024.7593-1-pclouds@gmail.com>
 cf. <20170421145916.mknekgqzhxffu7di@sigill.intra.peff.net>
 cf. <d0e81b1e-5869-299e-f462-4d43dc997bd1@ramsayjones.plus.com>

--------------------------------------------------
[Cooking]

* bw/rebase-i-ignored-submodule-fix (2017-11-07) 1 commit
  (merged to 'next' on 2017-11-10 at a0a54103ed)
 + wt-status: actually ignore submodules when requested

 "git rebase -i" recently started misbehaving when a submodule that
 is configured with 'submodule.<name>.ignore' is dirty; this has
 been corrected.

 Will merge to 'master'.


* ar/unconfuse-three-dots (2017-11-07) 3 commits
 - Documentation: revisions: add note about 3dots usages as continuation indications
 - Documentation: user-manual: limit potentially confusing usage of 3dots (and 2dots)
 - checkout: describe_detached_head: remove 3dots after committish

 Ancient part of codebase still shows dots after an abbreviated
 object name just to show that it is not a full object name, but
 these ellipses are confusing to people who newly discovered Git
 who are used to seeing abbreviated object names and find them
 confusing with the range syntax.


* jt/submodule-tests-cleanup (2017-11-08) 1 commit
  (merged to 'next' on 2017-11-10 at c6cbcdeaa4)
 + Tests: clean up and document submodule helpers

 Will merge to 'master'.


* js/for-each-ref-remote-name-and-ref (2017-11-08) 3 commits
  (merged to 'next' on 2017-11-10 at 254af5d602)
 + for-each-ref: test :remotename and :remoteref
 + for-each-ref: let upstream/push report the remote ref name
 + for-each-ref: let upstream/push optionally report the remote name

 The "--format=..." option "git for-each-ref" takes learned to show
 the name of the 'remote' repository and the ref at the remote side
 that is affected for 'upstream' and 'push' via "%(push:remotename)"
 and friends.

 Will merge to 'master'.


* ma/bisect-leakfix (2017-11-06) 4 commits
  (merged to 'next' on 2017-11-09 at c280d786f4)
 + bisect: fix memory leak when returning best element
 + bisect: fix off-by-one error in `best_bisection_sorted()`
 + bisect: fix memory leak in `find_bisection()`
 + bisect: change calling-convention of `find_bisection()`

 Leak fixes.

 Will merge to 'master'.


* ma/reduce-heads-leakfix (2017-11-08) 2 commits
  (merged to 'next' on 2017-11-10 at 9428953ec8)
 + reduce_heads: fix memory leaks
 + builtin/merge-base: free commit lists

 Leak fixes.

 Will merge to 'master'.


* sr/wrapper-quote-filenames (2017-11-06) 1 commit
  (merged to 'next' on 2017-11-09 at a14ac8da60)
 + wrapper.c: consistently quote filenames in error messages

 Some error messages did not quote filenames shown in it, which have
 been fixed.

 Will merge to 'master'.


* jh/fsck-promisors (2017-11-08) 9 commits
 - gc: do not repack promisor packfiles
 - sha1_file: support lazily fetching missing objects
 - introduce fetch-object: fetch one promisor object
 - index-pack: refactor writing of .keep files
 - fsck: support promisor objects as CLI argument
 - fsck: support referenced promisor objects
 - fsck: support refs pointing to promisor objects
 - fsck: introduce partialclone extension
 - extension.partialclone: introduce partial clone extension
 (this branch is used by jh/partial-clone; uses jh/object-filtering.)


* jh/object-filtering (2017-11-08) 6 commits
 - pack-objects: add list-objects filtering
 - rev-list: add list-objects filtering support
 - list-objects: filter objects in traverse_commit_list
 - oidset: add iterator methods to oidset
 - oidmap: add oidmap iterator methods
 - dir: allow exclusions from blob in addition to file
 (this branch is used by jh/fsck-promisors and jh/partial-clone.)


* jh/partial-clone (2017-11-08) 15 commits
 . fixup! upload-pack: add object filtering for partial clone
 . index-pack: silently assume missing objects are promisor
 . fetch-pack: restore save_commit_buffer after use
 . unpack-trees: batch fetching of missing blobs
 . t5500: more tests for partial clone and fetch
 . t5601: test for partial clone
 . t5500: add fetch-pack tests for partial clone
 . fetch: add from_promisor and exclude-promisor-objects parameters
 . fetch-pack: test support excluding large blobs
 . pack-objects: test support for blob filtering
 . remote-curl: add object filtering for partial clone
 . fetch: add object filtering for partial fetch
 . fetch: refactor calculation of remote list
 . clone, fetch-pack, index-pack, transport: partial clone
 . upload-pack: add object filtering for partial clone
 (this branch uses jh/fsck-promisors and jh/object-filtering.)


* rs/imap-send-next-arg-fix (2017-11-03) 2 commits
  (merged to 'next' on 2017-11-07 at f4df55fe5b)
 + imap-send: handle missing response codes gracefully
 + imap-send: handle NULL return of next_arg()

 Error checking in "git imap-send" for empty response has been
 improved.

 Will merge to 'master'.


* ao/merge-verbosity-getenv-just-once (2017-11-01) 1 commit
  (merged to 'next' on 2017-11-09 at e7cfb8dcec)
 + merge-recursive: check GIT_MERGE_VERBOSITY only once

 Code cleanup.

 Will merge to 'master'.


* bp/read-index-from-skip-verification (2017-11-08) 1 commit
  (merged to 'next' on 2017-11-10 at 3c3e32f1ed)
 + read_index_from(): speed index loading by skipping verification of the entry order

 Drop (perhaps overly cautious) sanity check before using the index
 read from the filesystem at runtime.

 Will merge to 'master'.


* rs/sequencer-rewrite-file-cleanup (2017-11-02) 3 commits
  (merged to 'next' on 2017-11-09 at 06f45be770)
 + sequencer.c: check return value of close() in rewrite_file()
 + sequencer: use O_TRUNC to truncate files
 + sequencer: factor out rewrite_file()

 Code cleanup.

 Will merge to 'master'.


* sb/describe-blob (2017-11-13) 7 commits
 - builtin/describe.c: describe a blob
 - builtin/describe.c: factor out describe_commit
 - builtin/describe.c: print debug statements earlier
 - builtin/describe.c: rename `oid` to avoid variable shadowing
 - revision.h: introduce blob/tree walking in order of the commits
 - list-objects.c: factor out traverse_trees_and_blobs
 - t6120: fix typo in test name

 "git describe" was taught to dig trees deeper to find a
 <commit-ish>:<path> that refers to a given blob object.


* tb/add-renormalize (2017-11-07) 2 commits
 - SQUASH???
 - add: introduce "--renormalize"

 "git add --renormalize ." is a new and safer way to record the fact
 that you are correcting the end-of-line convention and other
 "convert_to_git()" glitches in the in-repository data.


* ab/mediawiki-name-truncation (2017-11-01) 1 commit
  (merged to 'next' on 2017-11-07 at b30233d585)
 + remote-mediawiki: limit filenames to legal

 The remote-helper for talking to MediaWiki has been updated to
 truncate an overlong pagename so that ".mw" suffix can still be
 added.

 Will merge to 'master'.


* ab/mediawiki-namespace (2017-11-08) 7 commits
  (merged to 'next' on 2017-11-10 at 1cf9cfdfbc)
 + remote-mediawiki: show progress while fetching namespaces
 + remote-mediawiki: process namespaces in order
 + remote-mediawiki: support fetching from (Main) namespace
 + remote-mediawiki: skip virtual namespaces
 + remote-mediawiki: show known namespace choices on failure
 + remote-mediawiki: allow fetching namespaces with spaces
 + remote-mediawiki: add namespace support

 The remote-helper for talking to MediaWiki has been updated to
 work with mediawiki namespaces.

 Will merge to 'master'.


* mh/tidy-ref-update-flags (2017-11-06) 10 commits
  (merged to 'next' on 2017-11-09 at 5231330c1c)
 + refs: update some more docs to use "oid" rather than "sha1"
 + write_packed_entry(): take `object_id` arguments
 + refs: rename constant `REF_ISPRUNING` to `REF_IS_PRUNING`
 + refs: rename constant `REF_NODEREF` to `REF_NO_DEREF`
 + refs: tidy up and adjust visibility of the `ref_update` flags
 + ref_transaction_add_update(): remove a check
 + ref_transaction_update(): die on disallowed flags
 + prune_ref(): call `ref_transaction_add_update()` directly
 + files_transaction_prepare(): don't leak flags to packed transaction
 + Merge branch 'bc/object-id' into base

 Code clean-up in refs API implementation.

 Will merge to 'master'.


* av/fsmonitor (2017-11-13) 7 commits
  (merged to 'next' on 2017-11-13 at db56ad7eef)
 + fsmonitor: simplify determining the git worktree under Windows
 + fsmonitor: store fsmonitor bitmap before splitting index
 + fsmonitor: read from getcwd(), not the PWD environment variable
  (merged to 'next' on 2017-11-07 at a06178754d)
 + fsmonitor: delay updating state until after split index is merged
 + fsmonitor: document GIT_TRACE_FSMONITOR
 + fsmonitor: don't bother pretty-printing JSON from watchman
 + fsmonitor: set the PWD to the top of the working tree
 (this branch uses bp/fsmonitor.)

 Various fixes to bp/fsmonitor topic.

 Waiting for follow-on fixes to settle.


* bp/fsmonitor (2017-10-05) 15 commits
  (merged to 'next' on 2017-11-07 at b08d44ba60)
 + fsmonitor: preserve utf8 filenames in fsmonitor-watchman log
 + fsmonitor: read entirety of watchman output
 + fsmonitor: MINGW support for watchman integration
 + fsmonitor: add a performance test
 + fsmonitor: add a sample integration script for Watchman
 + fsmonitor: add test cases for fsmonitor extension
 + split-index: disable the fsmonitor extension when running the split index test
 + fsmonitor: add a test tool to dump the index extension
 + update-index: add fsmonitor support to update-index
 + ls-files: Add support in ls-files to display the fsmonitor valid bit
 + fsmonitor: add documentation for the fsmonitor extension.
 + fsmonitor: teach git to optionally utilize a file system monitor to speed up detecting new or changed files.
 + update-index: add a new --force-write-index option
 + preload-index: add override to enable testing preload-index
 + bswap: add 64 bit endianness helper get_be64
 (this branch is used by av/fsmonitor.)

 Originally merged to 'next' on 2017-10-05

 We learned to talk to watchman to speed up "git status" and other
 operations that need to see which paths have been modified.

 Waiting for follow-on fixes to settle.


* bc/submitting-patches-in-asciidoc (2017-11-13) 2 commits
  (merged to 'next' on 2017-11-13 at 70f65b981a)
 + Documentation: convert SubmittingPatches to AsciiDoc
 + Documentation: enable compat-mode for Asciidoctor

 The SubmittingPatches document has been converted to produce an
 HTML version via AsciiDoc/Asciidoctor.

 Will merge to 'master'.


* pb/bisect-helper-2 (2017-10-28) 8 commits
 - t6030: make various test to pass GETTEXT_POISON tests
 - bisect--helper: `bisect_start` shell function partially in C
 - bisect--helper: `get_terms` & `bisect_terms` shell function in C
 - bisect--helper: `bisect_next_check` shell function in C
 - bisect--helper: `check_and_set_terms` shell function in C
 - wrapper: move is_empty_file() and rename it as is_empty_or_missing_file()
 - bisect--helper: `bisect_write` shell function in C
 - bisect--helper: `bisect_reset` shell function in C

 Expecting a reroll.
 cf. <0102015f5e5ee171-f30f4868-886f-47a1-a4e4-b4936afc545d-000000@eu-west-1.amazonses.com>


* jc/ignore-cr-at-eol (2017-11-08) 2 commits
 - diff: --ignore-cr-at-eol
 - xdiff: reassign xpparm_t.flags bits

 The "diff" family of commands learned to ignore differences in
 carriage return at the end of line.


* mh/avoid-rewriting-packed-refs (2017-10-30) 2 commits
  (merged to 'next' on 2017-11-09 at 272e27cc9a)
 + files-backend: don't rewrite the `packed-refs` file unnecessarily
 + t1409: check that `packed-refs` is not rewritten unnecessarily

 Recent update to the refs infrastructure implementation started
 rewriting packed-refs file more often than before; this has been
 optimized again for most trivial cases.

 Will merge to 'master'.


* cc/git-packet-pm (2017-11-07) 8 commits
  (merged to 'next' on 2017-11-10 at b40bc2c0bb)
 + Git/Packet.pm: extract parts of t0021/rot13-filter.pl for reuse
 + t0021/rot13-filter: add capability functions
 + t0021/rot13-filter: refactor checking final lf
 + t0021/rot13-filter: add packet_initialize()
 + t0021/rot13-filter: improve error message
 + t0021/rot13-filter: improve 'if .. elsif .. else' style
 + t0021/rot13-filter: refactor packet reading functions
 + t0021/rot13-filter: fix list comparison

 Parts of a test to drive the long-running content filter interface
 has been split into its own module, hopefully to eventually become
 reusable.

 Will merge to 'master'.


* jc/branch-name-sanity (2017-10-14) 3 commits
 - branch: forbid refs/heads/HEAD
 - branch: split validate_new_branchname() into two
 - branch: streamline "attr_only" handling in validate_new_branchname()

 "git branch" and "git checkout -b" are now forbidden from creating
 a branch whose name is "HEAD".

 Reported to cause problems when renaming HEAD during a rebase.
 cf. <49563f7c-354e-334e-03a6-c3a40884b6d0@gmail.com>


* ot/mru-on-list (2017-10-01) 1 commit
 - mru: use double-linked list from list.h

 The first step to getting rid of mru API and using the
 doubly-linked list API directly instead.

 Is there any remaining issues on this one?


* jm/svn-pushmergeinfo-fix (2017-09-17) 1 commit
 - git-svn: fix svn.pushmergeinfo handling of svn+ssh usernames.

 "git svn dcommit" did not take into account the fact that a
 svn+ssh:// URL with a username@ (typically used for pushing) refers
 to the same SVN repository without the username@ and failed when
 svn.pushmergeinfo option is set.

 Needs a test, perhaps as a follow-up patch.

 Will merge to 'next'.


* bw/protocol-v1 (2017-10-17) 11 commits
 - Documentation: document Extra Parameters
 - ssh: introduce a 'simple' ssh variant
 - i5700: add interop test for protocol transition
 - http: tell server that the client understands v1
 - connect: tell server that the client understands v1
 - connect: teach client to recognize v1 server response
 - upload-pack, receive-pack: introduce protocol version 1
 - daemon: recognize hidden request arguments
 - protocol: introduce protocol extension mechanisms
 - pkt-line: add packet_write function
 - connect: in ref advertisement, shallows are last
 (this branch is used by jn/ssh-wrappers.)

 A new mechanism to upgrade the wire protocol in place is proposed
 and demonstrated that it works with the older versions of Git
 without harming them.

 Waiting for jn/ssh-wrappers topic.


* bc/hash-algo (2017-11-13) 4 commits
 - Switch empty tree and blob lookups to use hash abstraction
 - Integrate hash algorithm support with repo setup
 - Add structure representing hash algorithm
 - setup: expose enumerated repo info

 An infrastructure to define what hash function is used in Git is
 introduced, and an effort to plumb that throughout various
 codepaths has been started.

 Looked more or less OK to me.  Ready to merge to 'next'?  Further
 comments?


* sb/submodule-recursive-checkout-detach-head (2017-07-28) 2 commits
 - Documentation/checkout: clarify submodule HEADs to be detached
 - recursive submodules: detach HEAD from new state

 "git checkout --recursive" may overwrite and rewind the history of
 the branch that happens to be checked out in submodule
 repositories, which might not be desirable.  Detach the HEAD but
 still allow the recursive checkout to succeed in such a case.

 Expecting a reroll.

--------------------------------------------------
[Discarded]

* jk/ui-color-always-to-auto-maint (2017-10-13) 2 commits
 . color: document that "git -c color.*=always" is a bit special
 . color: downgrade "always" to "auto" only for on-disk configuration

 It turns out that "git -c color.ui=always cmd" is relied on by many
 third-party tools as a way to force coloured output no matter what
 the end-user configuration is, and a recent attempt to downgrade
 'always' to 'auto' to fix the regression to "git add -p" broke it.

 This has been reverted from 'next'.


* jt/partial-clone-lazy-fetch (2017-10-02) 18 commits
 . fetch-pack: restore save_commit_buffer after use
 . unpack-trees: batch fetching of missing blobs
 . clone: configure blobmaxbytes in created repos
 . clone: support excluding large blobs
 . fetch: support excluding large blobs
 . fetch: refactor calculation of remote list
 . fetch-pack: support excluding large blobs
 . pack-objects: support --blob-max-bytes
 . pack-objects: rename want_.* to ignore_.*
 . gc: do not repack promisor packfiles
 . rev-list: support termination at promisor objects
 . sha1_file: support lazily fetching missing objects
 . introduce fetch-object: fetch one promisor object
 . index-pack: refactor writing of .keep files
 . fsck: support promisor objects as CLI argument
 . fsck: support referenced promisor objects
 . fsck: support refs pointing to promisor objects
 . fsck: introduce partialclone extension

 A journey for "git clone" and "git fetch" to become "lazier" by
 depending more on its remote repository---this is the beginning of
 it.

 Superseded by three topics that end with jh/partial-clone.


* jh/dir-add-exclude-from-blob (2017-10-27) 1 commit
 . dir: allow exclusions from blob in addition to file

 The code to read exclusion list from a blob, which is used when the
 .gitignore file is outside a sparse checkout area, has been
 refactored so that other codepath can later use it to do the same
 outside the context of "sparse checkout".

 Now part of jh/object-filtering topic.

^ permalink raw reply	[relevance 5%]

* What's cooking in git.git (Nov 2017, #03; Wed, 8)
@ 2017-11-08  5:50  6% Junio C Hamano
  0 siblings, 0 replies; 25+ results
From: Junio C Hamano @ 2017-11-08  5:50 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.  The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.

The tip of 'next' has been rebuilt on top of v2.15, while kicking a
few topics back to 'pu'.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[New Topics]

* bw/rebase-i-ignored-submodule-fix (2017-11-07) 1 commit
 - wt-status: actually ignore submodules when requested

 "git rebase -i" recently started misbehaving when a submodule that
 is configured with 'submodule.<name>.ignore' is dirty; this has
 been corrected.

 Will merge to 'next'.
 I've edited in the tweak brought up in the discussion.  Please
 eyeball to sanity check.


* ar/unconfuse-three-dots (2017-11-07) 3 commits
 - Documentation: revisions: add note about 3dots usages as continuation indications
 - Documentation: user-manual: limit potentially confusing usage of 3dots (and 2dots)
 - checkout: describe_detached_head: remove 3dots after committish

 Ancient part of codebase still shows dots after an abbreviated
 object name just to show that it is not a full object name, but
 these ellipses are confusing to people who newly discovered Git
 who are used to seeing abbreviated object names and find them
 confusing with the range syntax.


* jt/submodule-tests-cleanup (2017-11-08) 1 commit
 - Tests: clean up and document submodule helpers

 Will merge to 'next'.

--------------------------------------------------
[Stalled]

* jn/ssh-wrappers (2017-10-30) 6 commits
 - fixup! ssh: 'auto' variant to select between 'ssh' and 'simple'
 - ssh: 'simple' variant does not support --port
 - ssh: 'simple' variant does not support -4/-6
 - ssh: 'auto' variant to select between 'ssh' and 'simple'
 - connect: split ssh command line options into separate function
 - connect: split git:// setup into a separate function
 (this branch uses bw/protocol-v1.)

 The ssh-variant 'simple' introduced earlier broke existing
 installations by not passing --port/-4/-6 and not diagnosing an
 attempt to pass these as an error.  Instead, default to
 automatically detect how compatible the GIT_SSH/GIT_SSH_COMMAND is
 to OpenSSH convention and then error out an invocation to make it
 easier to diagnose connection errors.

 Expecting a reroll.
 cf. <20171025163243.xmm7szrkwgblpgcc@aiede.mtv.corp.google.com>


* jc/merge-symlink-ours-theirs (2017-09-26) 1 commit
 - merge: teach -Xours/-Xtheirs to symbolic link merge

 "git merge -Xours/-Xtheirs" learned to use our/their version when
 resolving a conflicting updates to a symbolic link.

 Needs review.


* mg/merge-base-fork-point (2017-09-17) 3 commits
 - merge-base: find fork-point outside partial reflog
 - merge-base: return fork-point outside reflog
 - t6010: test actual test output

 "merge-base --fork-point $branch $commit" is used to guess on which
 commit among the commits that were once at the tip of the $branch the
 $commit was built on top of, and it learns these historical tips from
 the reflog of the $branch.  When the true fork-point is lost due to
 pruning of old reflog entries, the command does not give any output,
 because it has no way to guess correctly and does not want to mislead
 the user with a wrong guess.

 The command has been updated to give the best but not known to be
 correct guess, based on a hope that a merge-base between $commit and a
 virtual merge across all the reflog entries that still are available
 for $branch may still be a closer to the true fork-point than the
 merge-base between $commit and the current tip of the $branch.

 This may have to be offered by an additional option, to allow the
 users that are prepared to see a potentially incorrect guess to opt
 into the feature, without affecting the current callers that may not
 be prepared to accept a guess that is not known to be correct.

 What's the doneness of this one?


* cc/perf-run-config (2017-09-24) 9 commits
 - perf: store subsection results in "test-results/$GIT_PERF_SUBSECTION/"
 - perf/run: show name of rev being built
 - perf/run: add run_subsection()
 - perf/run: update get_var_from_env_or_config() for subsections
 - perf/run: add get_subsections()
 - perf/run: add calls to get_var_from_env_or_config()
 - perf/run: add GIT_PERF_DIRS_OR_REVS
 - perf/run: add get_var_from_env_or_config()
 - perf/run: add '--config' option to the 'run' script

 Needs review.


* jk/drop-ancient-curl (2017-08-09) 5 commits
 - http: #error on too-old curl
 - curl: remove ifdef'd code never used with curl >=7.19.4
 - http: drop support for curl < 7.19.4
 - http: drop support for curl < 7.16.0
 - http: drop support for curl < 7.11.1

 Some code in http.c that has bitrot is being removed.

 Expecting a reroll.


* mk/use-size-t-in-zlib (2017-08-10) 1 commit
 . zlib.c: use size_t for size

 The wrapper to call into zlib followed our long tradition to use
 "unsigned long" for sizes of regions in memory, which have been
 updated to use "size_t".

 Needs resurrecting by making sure the fix is good and still applies
 (or adjusted to today's codebase).


* mg/status-in-progress-info (2017-05-10) 2 commits
 - status --short --inprogress: spell it as --in-progress
 - status: show in-progress info for short status

 "git status" learns an option to report various operations
 (e.g. "merging") that the user is in the middle of.

 cf. <xmqqmvakcdqw.fsf@gitster.mtv.corp.google.com>


* nd/worktree-move (2017-04-20) 6 commits
 - worktree remove: new command
 - worktree move: refuse to move worktrees with submodules
 - worktree move: accept destination as directory
 - worktree move: new command
 - worktree.c: add update_worktree_location()
 - worktree.c: add validate_worktree()

 "git worktree" learned move and remove subcommands.

 Expecting a reroll.
 cf. <20170420101024.7593-1-pclouds@gmail.com>
 cf. <20170421145916.mknekgqzhxffu7di@sigill.intra.peff.net>
 cf. <d0e81b1e-5869-299e-f462-4d43dc997bd1@ramsayjones.plus.com>

--------------------------------------------------
[Cooking]

* js/for-each-ref-remote-name-and-ref (2017-11-08) 3 commits
 - for-each-ref: test :remotename and :remoteref
 - for-each-ref: let upstream/push report the remote ref name
 - for-each-ref: let upstream/push optionally report the remote name

 The "--format=..." option "git for-each-ref" takes learned to show
 the name of the 'remote' repository and the ref at the remote side
 that is affected for 'upstream' and 'push' via "%(push:remotename)"
 and friends.

 Will merge to 'next'.


* js/mingw-redirect-std-handles (2017-11-02) 3 commits
  (merged to 'next' on 2017-11-07 at 9af6a3dea0)
 + mingw: document the standard handle redirection
 + mingw: optionally redirect stderr/stdout via the same handle
 + mingw: add experimental feature to redirect standard handles

 MinGW updates.

 Will merge to 'master'.


* ma/bisect-leakfix (2017-11-06) 4 commits
 - bisect: fix memory leak when returning best element
 - bisect: fix off-by-one error in `best_bisection_sorted()`
 - bisect: fix memory leak in `find_bisection()`
 - bisect: change calling-convention of `find_bisection()`

 Leak fixes.

 Will merge to 'next'.


* ma/reduce-heads-leakfix (2017-11-08) 2 commits
 - reduce_heads: fix memory leaks
 - builtin/merge-base: free commit lists

 Leak fixes.

 Will merge to 'next'.


* sg/travis-fixes (2017-11-02) 2 commits
  (merged to 'next' on 2017-11-07 at bbf39361b6)
 + travis-ci: don't build Git for the static analysis job
 + travis-ci: fix running P4 and Git LFS tests in Linux build jobs

 TravisCI build updates.

 Will merge to 'master'.


* sr/wrapper-quote-filenames (2017-11-06) 1 commit
 - wrapper.c: consistently quote filenames in error messages

 Some error messages did not quote filenames shown in it, which have
 been fixed.

 Will merge to 'next'.


* jh/fsck-promisors (2017-11-08) 9 commits
 - gc: do not repack promisor packfiles
 - sha1_file: support lazily fetching missing objects
 - introduce fetch-object: fetch one promisor object
 - index-pack: refactor writing of .keep files
 - fsck: support promisor objects as CLI argument
 - fsck: support referenced promisor objects
 - fsck: support refs pointing to promisor objects
 - fsck: introduce partialclone extension
 - extension.partialclone: introduce partial clone extension
 (this branch is used by jh/partial-clone; uses jh/object-filtering.)


* jh/object-filtering (2017-11-08) 6 commits
 - pack-objects: add list-objects filtering
 - rev-list: add list-objects filtering support
 - list-objects: filter objects in traverse_commit_list
 - oidset: add iterator methods to oidset
 - oidmap: add oidmap iterator methods
 - dir: allow exclusions from blob in addition to file
 (this branch is used by jh/fsck-promisors and jh/partial-clone.)


* jh/partial-clone (2017-11-08) 15 commits
 - fixup! upload-pack: add object filtering for partial clone
 - index-pack: silently assume missing objects are promisor
 - fetch-pack: restore save_commit_buffer after use
 - unpack-trees: batch fetching of missing blobs
 - t5500: more tests for partial clone and fetch
 - t5601: test for partial clone
 - t5500: add fetch-pack tests for partial clone
 - fetch: add from_promisor and exclude-promisor-objects parameters
 - fetch-pack: test support excluding large blobs
 - pack-objects: test support for blob filtering
 - remote-curl: add object filtering for partial clone
 - fetch: add object filtering for partial fetch
 - fetch: refactor calculation of remote list
 - clone, fetch-pack, index-pack, transport: partial clone
 - upload-pack: add object filtering for partial clone
 (this branch uses jh/fsck-promisors and jh/object-filtering.)


* js/early-config (2017-11-03) 1 commit
  (merged to 'next' on 2017-11-07 at 9477c7c8ea)
 + setup: avoid double slashes when looking for HEAD

 Correct start-up sequence so that a repository could be placed
 immediately under the root directory again (which was broken at
 around Git 2.13).

 Will merge to 'master'.


* ks/mailmap (2017-11-03) 1 commit
  (merged to 'next' on 2017-11-07 at 46975637c7)
 + mailmap: use Kaartic Sivaraam's new address

 Will merge to 'master'.


* rs/imap-send-next-arg-fix (2017-11-03) 2 commits
  (merged to 'next' on 2017-11-07 at f4df55fe5b)
 + imap-send: handle missing response codes gracefully
 + imap-send: handle NULL return of next_arg()

 Error checking in "git imap-send" for empty response has been
 improved.

 Will merge to 'master'.


* dk/libsecret-unlock-to-load-fix (2017-11-04) 1 commit
  (merged to 'next' on 2017-11-07 at 57d1d76c8c)
 + credential-libsecret: unlock locked secrets

 The credential helper for libsecret (in contrib/) has been improved
 to allow possibly prompting the end user to unlock secrets that are
 currently locked (otherwise the secrets may not be loaded).

 Will merge to 'master'.


* jm/relnotes-2.15-typofix (2017-11-06) 1 commit
  (merged to 'next' on 2017-11-07 at 60fc937b62)
 + fix typos in 2.15.0 release notes

 Typofix.

 Will merge to 'master'.


* sb/blame-config-doc (2017-11-06) 1 commit
  (merged to 'next' on 2017-11-07 at 0576cb452f)
 + config: document blame configuration

 Description of blame.{showroot,blankboundary,showemail,date}
 configuration variables have been added to "git config --help".

 Will merge to 'master'.


* ad/5580-unc-tests-on-cygwin (2017-11-01) 1 commit
  (merged to 'next' on 2017-11-07 at 34fc479da2)
 + t5580: add Cygwin support

 UNC paths are also relevant in Cygwin builds and they are now
 tested just like Mingw builds.

 Will merge to 'master'.


* ao/merge-verbosity-getenv-just-once (2017-11-01) 1 commit
 - merge-recursive: check GIT_MERGE_VERBOSITY only once

 Code cleanup.

 Will merge to 'next'.


* bp/read-index-from-skip-verification (2017-11-08) 1 commit
 - read_index_from(): speed index loading by skipping verification of the entry order

 Drop (perhaps overly cautious) sanity check before using the index
 read from the filesystem at runtime.

 Will merge to 'next'.


* rs/hex-to-bytes-cleanup (2017-11-01) 3 commits
  (merged to 'next' on 2017-11-07 at fac14770e1)
 + sha1_file: use hex_to_bytes()
 + http-push: use hex_to_bytes()
 + notes: move hex_to_bytes() to hex.c and export it

 Code cleanup.

 Will merge to 'master'.


* rs/sequencer-rewrite-file-cleanup (2017-11-02) 3 commits
 - sequencer.c: check return value of close() in rewrite_file()
 - sequencer: use O_TRUNC to truncate files
 - sequencer: factor out rewrite_file()

 Code cleanup.

 Will merge to 'next'.


* sb/describe-blob (2017-11-03) 7 commits
 - builtin/describe.c: describe a blob
 - builtin/describe.c: factor out describe_commit
 - builtin/describe.c: print debug statements earlier
 - builtin/describe.c: rename `oid` to avoid variable shadowing
 - revision.h: introduce blob/tree walking in order of the commits
 - list-objects.c: factor out traverse_trees_and_blobs
 - t6120: fix typo in test name

 "git describe" was taught to dig trees deeper to find a
 <commit-ish>:<path> that refers to a given blob object.


* tb/add-renormalize (2017-11-07) 2 commits
 - SQUASH???
 - add: introduce "--renormalize"

 "git add --renormalize ." is a new and safer way to record the fact
 that you are correcting the end-of-line convention and other
 "convert_to_git()" glitches in the in-repository data.


* ab/mediawiki-name-truncation (2017-11-01) 1 commit
  (merged to 'next' on 2017-11-07 at b30233d585)
 + remote-mediawiki: limit filenames to legal

 The remote-helper for talking to MediaWiki has been updated to
 truncate an overlong pagename so that ".mw" suffix can still be
 added.

 Will merge to 'master'.


* ab/mediawiki-namespace (2017-11-08) 7 commits
 - remote-mediawiki: show progress while fetching namespaces
 - remote-mediawiki: process namespaces in order
 - remote-mediawiki: support fetching from (Main) namespace
 - remote-mediawiki: skip virtual namespaces
 - remote-mediawiki: show known namespace choices on failure
 - remote-mediawiki: allow fetching namespaces with spaces
 - remote-mediawiki: add namespace support

 The remote-helper for talking to MediaWiki has been updated to
 work with mediawiki namespaces.

 Will merge to 'next'.


* js/mingw-full-version-in-resources (2017-11-01) 1 commit
  (merged to 'next' on 2017-11-07 at 3a256b5ddc)
 + mingw: include the full version information in the resources

 MinGW updates.

 Will merge to 'master'.


* js/wincred-empty-cred (2017-11-01) 2 commits
  (merged to 'next' on 2017-11-07 at 43d3fcc30a)
 + wincred: handle empty username/password correctly
 + t0302: check helper can handle empty credentials

 MinGW updates.

 Will merge to 'master'.


* bw/diff-opt-impl-to-bitfields (2017-11-01) 8 commits
  (merged to 'next' on 2017-11-07 at 8be78206ba)
 + diff: make struct diff_flags members lowercase
 + diff: remove DIFF_OPT_CLR macro
 + diff: remove DIFF_OPT_SET macro
 + diff: remove DIFF_OPT_TST macro
 + diff: remove touched flags
 + diff: add flag to indicate textconv was set via cmdline
 + diff: convert flags to be stored in bitfields
 + add, reset: use DIFF_OPT_SET macro to set a diff flag

 A single-word "unsigned flags" in the diff options is being split
 into a structure with many bitfields.

 Will merge to 'master'.


* mh/tidy-ref-update-flags (2017-11-06) 10 commits
 - refs: update some more docs to use "oid" rather than "sha1"
 - write_packed_entry(): take `object_id` arguments
 - refs: rename constant `REF_ISPRUNING` to `REF_IS_PRUNING`
 - refs: rename constant `REF_NODEREF` to `REF_NO_DEREF`
 - refs: tidy up and adjust visibility of the `ref_update` flags
 - ref_transaction_add_update(): remove a check
 - ref_transaction_update(): die on disallowed flags
 - prune_ref(): call `ref_transaction_add_update()` directly
 - files_transaction_prepare(): don't leak flags to packed transaction
 - Merge branch 'bc/object-id' into base

 Code clean-up in refs API implementation.

 Will merge to 'next'.


* ao/diff-populate-filespec-lstat-errorpath-fix (2017-10-29) 1 commit
  (merged to 'next' on 2017-11-07 at b03241e6e5)
 + diff: fix lstat() error handling in diff_populate_filespec()

 After an error from lstat(), diff_populate_filespec() function
 sometimes still went ahead and used invalid data in struct stat,
 which has been fixed.

 Will merge to 'master'.


* av/fsmonitor (2017-11-01) 4 commits
  (merged to 'next' on 2017-11-07 at a06178754d)
 + fsmonitor: delay updating state until after split index is merged
 + fsmonitor: document GIT_TRACE_FSMONITOR
 + fsmonitor: don't bother pretty-printing JSON from watchman
 + fsmonitor: set the PWD to the top of the working tree
 (this branch uses bp/fsmonitor.)

 Various fixes to bp/fsmonitor topic.

 Will merge to 'master'.


* bc/submitting-patches-in-asciidoc (2017-10-30) 2 commits
 - Documentation: convert SubmittingPatches to AsciiDoc
 - Documentation: enable compat-mode for Asciidoctor

 The SubmittingPatches document has been converted to produce an
 HTML version via AsciiDoc/Asciidoctor.

 Any further comments?  Otherwise, will merge to 'next'.


* pb/bisect-helper-2 (2017-10-28) 8 commits
 - t6030: make various test to pass GETTEXT_POISON tests
 - bisect--helper: `bisect_start` shell function partially in C
 - bisect--helper: `get_terms` & `bisect_terms` shell function in C
 - bisect--helper: `bisect_next_check` shell function in C
 - bisect--helper: `check_and_set_terms` shell function in C
 - wrapper: move is_empty_file() and rename it as is_empty_or_missing_file()
 - bisect--helper: `bisect_write` shell function in C
 - bisect--helper: `bisect_reset` shell function in C

 Expecting a reroll.
 cf. <0102015f5e5ee171-f30f4868-886f-47a1-a4e4-b4936afc545d-000000@eu-west-1.amazonses.com>


* jc/ignore-cr-at-eol (2017-11-08) 2 commits
 - diff: --ignore-cr-at-eol
 - xdiff: reassign xpparm_t.flags bits

 The "diff" family of commands learned to ignore differences in
 carriage return at the end of line.


* mh/avoid-rewriting-packed-refs (2017-10-30) 2 commits
 - files-backend: don't rewrite the `packed-refs` file unnecessarily
 - t1409: check that `packed-refs` is not rewritten unnecessarily

 Recent update to the refs infrastructure implementation started
 rewriting packed-refs file more often than before; this has been
 optimized again for most trivial cases.

 Will merge to 'next'.


* cc/git-packet-pm (2017-11-07) 8 commits
 - Git/Packet.pm: extract parts of t0021/rot13-filter.pl for reuse
 - t0021/rot13-filter: add capability functions
 - t0021/rot13-filter: refactor checking final lf
 - t0021/rot13-filter: add packet_initialize()
 - t0021/rot13-filter: improve error message
 - t0021/rot13-filter: improve 'if .. elsif .. else' style
 - t0021/rot13-filter: refactor packet reading functions
 - t0021/rot13-filter: fix list comparison

 Parts of a test to drive the long-running content filter interface
 has been split into its own module, hopefully to eventually become
 reusable.

 Will merge to 'next'.


* jm/status-ignored-files-list (2017-10-31) 4 commits
  (merged to 'next' on 2017-11-07 at 682c74a2cb)
 + status: test ignored modes
 + status: document options to show matching ignored files
 + status: report matching ignored and normal untracked
 + status: add option to show ignored files differently

 Originally merged to 'next' on 2017-11-01

 The set of paths output from "git status --ignored" was tied
 closely with its "--untracked=<mode>" option, but now it can be
 controlled more flexibly.  Most notably, a directory that is
 ignored because it is listed to be ignored in the ignore/exclude
 mechanism can be handled differently from a directory that ends up
 to be ignored only because all files in it are ignored.

 Will merge to 'master'.


* jc/branch-name-sanity (2017-10-14) 3 commits
 - branch: forbid refs/heads/HEAD
 - branch: split validate_new_branchname() into two
 - branch: streamline "attr_only" handling in validate_new_branchname()

 "git branch" and "git checkout -b" are now forbidden from creating
 a branch whose name is "HEAD".

 Reported to cause problems when renaming HEAD during a rebase.
 cf. <49563f7c-354e-334e-03a6-c3a40884b6d0@gmail.com>


* ot/mru-on-list (2017-10-01) 1 commit
 - mru: use double-linked list from list.h

 The first step to getting rid of mru API and using the
 doubly-linked list API directly instead.

 Is there any remaining issues on this one?


* jm/svn-pushmergeinfo-fix (2017-09-17) 1 commit
 - git-svn: fix svn.pushmergeinfo handling of svn+ssh usernames.

 "git svn dcommit" did not take into account the fact that a
 svn+ssh:// URL with a username@ (typically used for pushing) refers
 to the same SVN repository without the username@ and failed when
 svn.pushmergeinfo option is set.

 Needs a test, perhaps as a follow-up patch.

 Will merge to 'next'.


* bp/fsmonitor (2017-10-05) 15 commits
  (merged to 'next' on 2017-11-07 at b08d44ba60)
 + fsmonitor: preserve utf8 filenames in fsmonitor-watchman log
 + fsmonitor: read entirety of watchman output
 + fsmonitor: MINGW support for watchman integration
 + fsmonitor: add a performance test
 + fsmonitor: add a sample integration script for Watchman
 + fsmonitor: add test cases for fsmonitor extension
 + split-index: disable the fsmonitor extension when running the split index test
 + fsmonitor: add a test tool to dump the index extension
 + update-index: add fsmonitor support to update-index
 + ls-files: Add support in ls-files to display the fsmonitor valid bit
 + fsmonitor: add documentation for the fsmonitor extension.
 + fsmonitor: teach git to optionally utilize a file system monitor to speed up detecting new or changed files.
 + update-index: add a new --force-write-index option
 + preload-index: add override to enable testing preload-index
 + bswap: add 64 bit endianness helper get_be64
 (this branch is used by av/fsmonitor.)

 Originally merged to 'next' on 2017-10-05

 We learned to talk to watchman to speed up "git status" and other
 operations that need to see which paths have been modified.

 Will merge to 'master'.


* bw/protocol-v1 (2017-10-17) 11 commits
 - Documentation: document Extra Parameters
 - ssh: introduce a 'simple' ssh variant
 - i5700: add interop test for protocol transition
 - http: tell server that the client understands v1
 - connect: tell server that the client understands v1
 - connect: teach client to recognize v1 server response
 - upload-pack, receive-pack: introduce protocol version 1
 - daemon: recognize hidden request arguments
 - protocol: introduce protocol extension mechanisms
 - pkt-line: add packet_write function
 - connect: in ref advertisement, shallows are last
 (this branch is used by jn/ssh-wrappers.)

 A new mechanism to upgrade the wire protocol in place is proposed
 and demonstrated that it works with the older versions of Git
 without harming them.

 Waiting for jn/ssh-wrappers topic.


* bc/hash-algo (2017-10-30) 4 commits
 - Switch empty tree and blob lookups to use hash abstraction
 - Integrate hash algorithm support with repo setup
 - Add structure representing hash algorithm
 - setup: expose enumerated repo info

 An infrastructure to define what hash function is used in Git is
 introduced, and an effort to plumb that throughout various
 codepaths has been started.

 cf. <20171028181239.59458-1-sandals@crustytoothpaste.net>


* sb/submodule-recursive-checkout-detach-head (2017-07-28) 2 commits
 - Documentation/checkout: clarify submodule HEADs to be detached
 - recursive submodules: detach HEAD from new state

 "git checkout --recursive" may overwrite and rewind the history of
 the branch that happens to be checked out in submodule
 repositories, which might not be desirable.  Detach the HEAD but
 still allow the recursive checkout to succeed in such a case.

 Expecting a reroll.

--------------------------------------------------
[Discarded]

* jk/ui-color-always-to-auto-maint (2017-10-13) 2 commits
 . color: document that "git -c color.*=always" is a bit special
 . color: downgrade "always" to "auto" only for on-disk configuration

 It turns out that "git -c color.ui=always cmd" is relied on by many
 third-party tools as a way to force coloured output no matter what
 the end-user configuration is, and a recent attempt to downgrade
 'always' to 'auto' to fix the regression to "git add -p" broke it.

 This has been reverted from 'next'.


* jt/partial-clone-lazy-fetch (2017-10-02) 18 commits
 . fetch-pack: restore save_commit_buffer after use
 . unpack-trees: batch fetching of missing blobs
 . clone: configure blobmaxbytes in created repos
 . clone: support excluding large blobs
 . fetch: support excluding large blobs
 . fetch: refactor calculation of remote list
 . fetch-pack: support excluding large blobs
 . pack-objects: support --blob-max-bytes
 . pack-objects: rename want_.* to ignore_.*
 . gc: do not repack promisor packfiles
 . rev-list: support termination at promisor objects
 . sha1_file: support lazily fetching missing objects
 . introduce fetch-object: fetch one promisor object
 . index-pack: refactor writing of .keep files
 . fsck: support promisor objects as CLI argument
 . fsck: support referenced promisor objects
 . fsck: support refs pointing to promisor objects
 . fsck: introduce partialclone extension

 A journey for "git clone" and "git fetch" to become "lazier" by
 depending more on its remote repository---this is the beginning of
 it.

 Superseded by three topics that end with jh/partial-clone.


* jh/dir-add-exclude-from-blob (2017-10-27) 1 commit
 . dir: allow exclusions from blob in addition to file

 The code to read exclusion list from a blob, which is used when the
 .gitignore file is outside a sparse checkout area, has been
 refactored so that other codepath can later use it to do the same
 outside the context of "sparse checkout".

 Now part of jh/object-filtering topic.

^ permalink raw reply	[relevance 6%]

* What's cooking in git.git (Nov 2017, #02; Mon, 6)
@ 2017-11-06  8:18  5% Junio C Hamano
  0 siblings, 0 replies; 25+ results
From: Junio C Hamano @ 2017-11-06  8:18 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.  The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.

Early batches for the next cycle has been merged to 'master' and
'next' has become thin enough so that we can rewind it and rebuild
it as usual, optionally with a handful of topics kicked out of it.
That hasn't happened yet, but it will shortly.

The status description of some of the topics in this report may need
updates that I should have made but forgotten.  Sorry about that.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[Graduated to "master"]

* ao/check-resolve-ref-unsafe-result (2017-10-21) 1 commit
  (merged to 'next' on 2017-10-26 at 84302ab59a)
 + commit: check result of resolve_ref_unsafe

 "git commit", after making a commit, did not check for errors when
 asking on what branch it made the commit, which has been correted.


* bc/object-id (2017-10-16) 25 commits
  (merged to 'next' on 2017-10-18 at ef8aa2698d)
 + refs/files-backend: convert static functions to object_id
 + refs: convert read_raw_ref backends to struct object_id
 + refs: convert peel_object to struct object_id
 + refs: convert resolve_ref_unsafe to struct object_id
 + worktree: convert struct worktree to object_id
 + refs: convert resolve_gitlink_ref to struct object_id
 + Convert remaining callers of resolve_gitlink_ref to object_id
 + sha1_file: convert index_path and index_fd to struct object_id
 + refs: convert reflog_expire parameter to struct object_id
 + refs: convert read_ref_at to struct object_id
 + refs: convert peel_ref to struct object_id
 + builtin/pack-objects: convert to struct object_id
 + pack-bitmap: convert traverse_bitmap_commit_list to object_id
 + refs: convert dwim_log to struct object_id
 + builtin/reflog: convert remaining unsigned char uses to object_id
 + refs: convert dwim_ref and expand_ref to struct object_id
 + refs: convert read_ref and read_ref_full to object_id
 + refs: convert resolve_refdup and refs_resolve_refdup to struct object_id
 + Convert check_connected to use struct object_id
 + refs: update ref transactions to use struct object_id
 + refs: prevent accidental NULL dereference in write_pseudoref
 + refs: convert update_ref and refs_update_ref to use struct object_id
 + refs: convert delete_ref and refs_delete_ref to struct object_id
 + refs/files-backend: convert struct ref_to_prune to object_id
 + walker: convert to struct object_id
 (this branch is used by mh/tidy-ref-update-flags.)

 Conversion from uchar[20] to struct object_id continues.


* bw/grep-recurse-submodules (2017-11-02) 1 commit
  (merged to 'next' on 2017-11-02 at 50bbebe9e3)
 + grep: take the read-lock when adding a submodule

 A broken access to object databases in recent update to "git grep
 --recurse-submodules" has been fixed.


* cn/diff-indent-no-longer-is-experimental (2017-11-02) 1 commit
  (merged to 'next' on 2017-11-02 at d3fe3952a7)
 + diff: --indent-heuristic is no longer experimental

 Doc update.


* dm/run-command-ignored-hook-advise (2017-10-10) 1 commit
  (merged to 'next' on 2017-10-10 at 0827814922)
 + run-command: add hint when a hook is ignored

 A hook script that is set unexecutable is simply ignored.  Git
 notifies when such a file is ignored, unless the message is
 squelched via advice.ignoredHook configuration.


* ds/find-unique-abbrev-optim (2017-10-13) 4 commits
  (merged to 'next' on 2017-10-16 at 7f4479ac52)
 + sha1_name: minimize OID comparisons during disambiguation
 + sha1_name: parse less while finding common prefix
 + sha1_name: unroll len loop in find_unique_abbrev_r()
 + p4211-line-log.sh: add log --online --raw --parents perf test

 Optimize the code to find shortest unique prefix of object names.


* ex/deprecate-empty-pathspec-as-match-all (2017-06-23) 2 commits
  (merged to 'next' on 2017-08-14 at 24db08a6e8)
 + pathspec: die on empty strings as pathspec
 + t0027: do not use an empty string as a pathspec element

 The final step to make an empty string as a pathspec element
 illegal.  We started this by first deprecating and warning a
 pathspec that has such an element in 2.11 (Nov 2016).


* gc/gitweb-filetest-acl (2017-10-24) 1 commit
  (merged to 'next' on 2017-10-26 at 5b490f53bf)
 + gitweb: use filetest to allow ACLs

 "gitweb" checks if a directory is searchable with Perl's "-x"
 operator, which can be enhanced by using "filetest 'access'"
 pragma, which now we do.


* hv/fetch-moved-submodules-on-demand (2017-10-17) 3 commits
  (merged to 'next' on 2017-10-26 at c446ea3e9a)
 + submodule: simplify decision tree whether to or not to fetch
 + implement fetching of moved submodules
 + fetch: add test to make sure we stay backwards compatible

 "git fetch --recurse-submodules" now knows that submodules can be
 moved around in the superproject in addition to getting updated,
 and finds the ones that need to be fetched accordingly.


* jc/check-ref-format-oor (2017-10-18) 3 commits
  (merged to 'next' on 2017-10-18 at 8b17566c80)
 + check-ref-format doc: --branch validates and expands <branch>
 + check-ref-format --branch: strip refs/heads/ using skip_prefix
 + check-ref-format --branch: do not expand @{...} outside repository

 "git check-ref-format --branch @{-1}" bit a "BUG()" when run
 outside a repository for obvious reasons; clarify the documentation
 and make sure we do not even try to expand the at-mark magic in
 such a case, but still call the validation logic for branch names.


* jc/no-cmd-as-subroutine (2017-10-11) 2 commits
  (merged to 'next' on 2017-10-16 at 5f4ee919ac)
 + merge-ours: do not use cmd_*() as a subroutine
 + describe: do not use cmd_*() as a subroutine

 Calling cmd_foo() as if it is a general purpose helper function is
 a no-no.  Correct two instances of such to set an example.


* jc/t5601-copy-workaround (2017-10-17) 1 commit
  (merged to 'next' on 2017-10-18 at ea1e133968)
 + t5601: rm the target file of cp that could still be executing

 A (possibly flakey) test fix.


* jk/diff-color-moved-fix (2017-10-21) 5 commits
  (merged to 'next' on 2017-10-26 at eb580e4c8c)
 + diff: handle NULs in get_string_hash()
 + diff: fix whitespace-skipping with --color-moved
 + t4015: test the output of "diff --color-moved -b"
 + t4015: check "negative" case for "-w --color-moved"
 + t4015: refactor --color-moved whitespace test
 (this branch is used by sb/diff-color-moved-use-xdl-recmatch.)

 The experimental "color moved lines differently in diff output"
 feature was buggy around "ignore whitespace changes" edges, whihch
 has been corrected.


* jk/misc-resolve-ref-unsafe-fixes (2017-10-21) 4 commits
  (merged to 'next' on 2017-10-26 at c327b2ec2f)
 + worktree: handle broken symrefs in find_shared_symref()
 + log: handle broken HEAD in decoration check
 + remote: handle broken symrefs
 + test-ref-store: avoid passing NULL to printf

 Some codepaths did not check for errors when asking what branch the
 HEAD points at, which have been fixed.


* jk/rebase-i-exec-gitdir-fix (2017-11-02) 1 commit
  (merged to 'next' on 2017-11-02 at 9a519c7150)
 + sequencer: pass absolute GIT_DIR to exec commands

 A recent regression in "git rebase -i" that broke execution of git
 commands from subdirectories via "exec" insn has been fixed.


* jk/revision-pruning-optim (2017-10-14) 1 commit
  (merged to 'next' on 2017-10-16 at 2662baa21d)
 + revision: quit pruning diff more quickly when possible

 Pathspec-limited revision traversal was taught not to keep finding
 unneeded differences once it knows two trees are different inside
 given pathspec.


* js/submodule-in-excluded (2017-10-26) 1 commit
  (merged to 'next' on 2017-10-26 at 2a262e6a0b)
 + status: do not get confused by submodules in excluded directories

 "git status --ignored -u" did not stop at a working tree of a
 separate project that is embedded in an ignored directory and
 listed files in that other project, instead of just showing the
 directory itself as ignored.


* kd/auto-col-with-pager-fix (2017-10-24) 2 commits
  (merged to 'next' on 2017-10-24 at ef3ff0f14b)
 + column: do not include pager.c
  (merged to 'next' on 2017-10-18 at fe89ff7e83)
 + column: show auto columns when pager is active

 "auto" as a value for the columnar output configuration ought to
 judge "is the output consumed by humans?" with the same criteria as
 "auto" for coloured output configuration, i.e. either the standard
 output stream is going to tty, or a pager is in use.  We forgot the
 latter, which has been fixed.


* ma/lockfile-fixes (2017-10-07) 12 commits
  (merged to 'next' on 2017-10-16 at 19fae5c138)
 + read_cache: roll back lock in `update_index_if_able()`
 + read-cache: leave lock in right state in `write_locked_index()`
 + read-cache: drop explicit `CLOSE_LOCK`-flag
 + cache.h: document `write_locked_index()`
 + apply: remove `newfd` from `struct apply_state`
 + apply: move lockfile into `apply_state`
 + cache-tree: simplify locking logic
 + checkout-index: simplify locking logic
 + tempfile: fix documentation on `delete_tempfile()`
 + lockfile: fix documentation on `close_lock_file_gently()`
 + treewide: prefer lockfiles on the stack
 + sha1_file: do not leak `lock_file`

 An earlier update made it possible to use an on-stack in-core
 lockfile structure (as opposed to having to deliberately leak an
 on-heap one).  Many codepaths have been updated to take advantage
 of this new facility.


* mh/test-local-canary (2017-10-31) 1 commit
  (merged to 'next' on 2017-11-02 at f34927f687)
 + t0000: check whether the shell supports the "local" keyword

 We try to see if somebody runs our test suite with a shell that
 does not support "local" like bash/dash does.


* mp/push-pushoption-config (2017-10-24) 1 commit
  (merged to 'next' on 2017-10-26 at 2c72164d12)
 + builtin/push.c: add push.pushOption config

 The "--push-option=<string>" option to "git push" now defaults to a
 list of strings configured via push.pushOption variable.


* pb/bisect-helper (2017-10-06) 6 commits
  (merged to 'next' on 2017-10-13 at ffc9aefe63)
 + bisect--helper: `is_expected_rev` & `check_expected_revs` shell function in C
 + t6030: explicitly test for bisection cleanup
 + bisect--helper: `bisect_clean_state` shell function in C
 + bisect--helper: `write_terms` shell function in C
 + bisect--helper: rewrite `check_term_format` shell function in C
 + bisect--helper: use OPT_CMDMODE instead of OPT_BOOL
 (this branch is used by pb/bisect-helper-2.)

 An early part of piece-by-piece rewrite of "git bisect".


* pc/submodule-helper (2017-10-07) 3 commits
  (merged to 'next' on 2017-10-16 at 2b38de12cc)
 + submodule: port submodule subcommand 'status' from shell to C
 + submodule--helper: introduce for_each_listed_submodule()
 + submodule--helper: introduce get_submodule_displaypath()

 GSoC.


* sb/diff-color-moved-use-xdl-recmatch (2017-10-26) 2 commits
  (merged to 'next' on 2017-10-26 at 6711f24498)
 + diff.c: get rid of duplicate implementation
 + xdiff-interface: export comparing and hashing strings
 (this branch uses jk/diff-color-moved-fix.)

 Instead of using custom line comparison and hashing functions to
 implement "moved lines" coloring in the diff output, use the pair
 of these functions from lower-layer xdiff/ code.


* tb/complete-checkout (2017-10-25) 1 commit
  (merged to 'next' on 2017-10-26 at beeaf5b00c)
 + completion: add remaining flags to checkout

 Command line completion (in contrib/) update.


* tg/deprecate-stash-save (2017-10-27) 3 commits
  (merged to 'next' on 2017-10-27 at 73b1edb73b)
 + stash: remove now superfluos help for "stash push"
 + stash: mark "git stash save" deprecated in the man page
 + stash: replace "git stash save" with "git stash push" in the documentation

 "git stash save" has been deprecated in favour of "git stash push".


* wk/pull-signoff (2017-10-13) 1 commit
  (merged to 'next' on 2017-10-16 at 5e48f349d9)
 + pull: pass --signoff/--no-signoff to "git merge"

 "git pull" has been taught to accept "--[no-]signoff" option and
 pass it down to "git merge".

--------------------------------------------------
[New Topics]

* js/mingw-redirect-std-handles (2017-11-02) 3 commits
 - mingw: document the standard handle redirection
 - mingw: optionally redirect stderr/stdout via the same handle
 - mingw: add experimental feature to redirect standard handles

 MinGW updates.

 Will merge to 'next'.


* ma/bisect-leakfix (2017-11-06) 4 commits
 - bisect: fix memory leak when returning best element
 - bisect: fix off-by-one error in `best_bisection_sorted()`
 - bisect: fix memory leak in `find_bisection()`
 - bisect: change calling-convention of `find_bisection()`

 Leak fixes.

 Will merge to 'next'.


* ma/reduce-heads-leakfix (2017-11-06) 2 commits
 - reduce_heads: fix memory leaks
 - builtin/merge-base: UNLEAK commit lists

 Leak fixes.

 Will merge to 'next'.


* sg/travis-fixes (2017-11-02) 2 commits
 - travis-ci: don't build Git for the static analysis job
 - travis-ci: fix running P4 and Git LFS tests in Linux build jobs

 TravisCI build updates.

 Will merge to 'next'.


* sr/wrapper-quote-filenames (2017-11-06) 1 commit
 - wrapper.c: consistently quote filenames in error messages

 Some error messages did not quote filenames shown in it, which have
 been fixed.

 Will merge to 'next'.


* jh/fsck-promisors (2017-11-03) 9 commits
 - gc: do not repack promisor packfiles
 - sha1_file: support lazily fetching missing objects
 - introduce fetch-object: fetch one promisor object
 - index-pack: refactor writing of .keep files
 - fsck: support promisor objects as CLI argument
 - fsck: support referenced promisor objects
 - fsck: support refs pointing to promisor objects
 - fsck: introduce partialclone extension
 - extension.partialclone: introduce partial clone extension
 (this branch is used by jh/partial-clone; uses jh/object-filtering.)


* jh/object-filtering (2017-11-03) 6 commits
 - pack-objects: add list-objects filtering
 - rev-list: add list-objects filtering support
 - list-objects: filter objects in traverse_commit_list
 - oidset: add iterator methods to oidset
 - oidmap: add oidmap iterator methods
 - dir: allow exclusions from blob in addition to file
 (this branch is used by jh/fsck-promisors and jh/partial-clone.)


* jh/partial-clone (2017-11-03) 14 commits
 - index-pack: silently assume missing objects are promisor
 - fetch-pack: restore save_commit_buffer after use
 - unpack-trees: batch fetching of missing blobs
 - t5500: more tests for partial clone and fetch
 - t5601: test for partial clone
 - t5500: add fetch-pack tests for partial clone
 - fetch: add from_promisor and exclude-promisor-objects parameters
 - fetch-pack: test support excluding large blobs
 - pack-objects: test support for blob filtering
 - remote-curl: add object filtering for partial clone
 - fetch: add object filtering for partial fetch
 - fetch: refactor calculation of remote list
 - clone, fetch-pack, index-pack, transport: partial clone
 - upload-pack: add object filtering for partial clone
 (this branch uses jh/fsck-promisors and jh/object-filtering.)


* js/early-config (2017-11-03) 1 commit
 - setup: avoid double slashes when looking for HEAD

 Correct start-up sequence so that a repository could hang
 immediately under the root directory again (which was broken at
 around Git 2.13).

 Will merge to 'next'.


* ks/mailmap (2017-11-03) 1 commit
 - mailmap: use Kaartic Sivaraam's new address

 Will merge to 'next'.


* rs/imap-send-next-arg-fix (2017-11-03) 2 commits
 - imap-send: handle missing response codes gracefully
 - imap-send: handle NULL return of next_arg()

 Error checking in "git imap-send" for empty response has been
 improved.

 Will merge to 'next'.


* dk/libsecret-unlock-to-load-fix (2017-11-04) 1 commit
 - credential-libsecret: unlock locked secrets

 The credential helper for libsecret (in contrib/) has been improved
 to allow possibly prompting the end user to unlock secrets that are
 currently locked (otherwise the secrets may not be loaded).

 Will merge to 'next'.


* jm/relnotes-2.15-typofix (2017-11-06) 1 commit
 - fix typos in 2.15.0 release notes

 Will merge to 'next'.


* sb/blame-config-doc (2017-11-06) 1 commit
 - config: document blame configuration

 Will merge to 'next'.

--------------------------------------------------
[Stalled]

* jn/ssh-wrappers (2017-10-30) 6 commits
 - fixup! ssh: 'auto' variant to select between 'ssh' and 'simple'
 - ssh: 'simple' variant does not support --port
 - ssh: 'simple' variant does not support -4/-6
 - ssh: 'auto' variant to select between 'ssh' and 'simple'
 - connect: split ssh command line options into separate function
 - connect: split git:// setup into a separate function
 (this branch uses bw/protocol-v1.)

 The ssh-variant 'simple' introduced earlier broke existing
 installations by not passing --port/-4/-6 and not diagnosing an
 attempt to pass these as an error.  Instead, default to
 automatically detect how compatible the GIT_SSH/GIT_SSH_COMMAND is
 to OpenSSH convention and then error out an invocation to make it
 easier to diagnose connection errors.

 Expecting a reroll.
 cf. <20171025163243.xmm7szrkwgblpgcc@aiede.mtv.corp.google.com>


* js/for-each-ref-remote-name-and-ref (2017-10-11) 3 commits
 - for-each-ref: test :remotename and :remoteref
 - for-each-ref: let upstream/push optionally report the remote ref name
 - for-each-ref: let upstream/push optionally report the remote name

 The "--format=..." option "git for-each-ref" takes learned to show
 the name of the 'remote' repository and the ref at the remote side
 that is affected for 'upstream' and 'push' via "%(push:remotename)"
 and friends.

 Needs a bit more work on the documentation part.


* jc/merge-symlink-ours-theirs (2017-09-26) 1 commit
 - merge: teach -Xours/-Xtheirs to symbolic link merge

 "git merge -Xours/-Xtheirs" learned to use our/their version when
 resolving a conflicting updates to a symbolic link.

 Needs review.


* mg/merge-base-fork-point (2017-09-17) 3 commits
 - merge-base: find fork-point outside partial reflog
 - merge-base: return fork-point outside reflog
 - t6010: test actual test output

 "merge-base --fork-point $branch $commit" is used to guess on which
 commit among the commits that were once at the tip of the $branch the
 $commit was built on top of, and it learns these historical tips from
 the reflog of the $branch.  When the true fork-point is lost due to
 pruning of old reflog entries, the command does not give any output,
 because it has no way to guess correctly and does not want to mislead
 the user with a wrong guess.

 The command has been updated to give the best but not known to be
 correct guess, based on a hope that a merge-base between $commit and a
 virtual merge across all the reflog entries that still are available
 for $branch may still be a closer to the true fork-point than the
 merge-base between $commit and the current tip of the $branch.

 This may have to be offered by an additional option, to allow the
 users that are prepared to see a potentially incorrect guess to opt
 into the feature, without affecting the current callers that may not
 be prepared to accept a guess that is not known to be correct.

 What's the doneness of this one?


* cc/perf-run-config (2017-09-24) 9 commits
 - perf: store subsection results in "test-results/$GIT_PERF_SUBSECTION/"
 - perf/run: show name of rev being built
 - perf/run: add run_subsection()
 - perf/run: update get_var_from_env_or_config() for subsections
 - perf/run: add get_subsections()
 - perf/run: add calls to get_var_from_env_or_config()
 - perf/run: add GIT_PERF_DIRS_OR_REVS
 - perf/run: add get_var_from_env_or_config()
 - perf/run: add '--config' option to the 'run' script

 Needs review.


* jk/drop-ancient-curl (2017-08-09) 5 commits
 - http: #error on too-old curl
 - curl: remove ifdef'd code never used with curl >=7.19.4
 - http: drop support for curl < 7.19.4
 - http: drop support for curl < 7.16.0
 - http: drop support for curl < 7.11.1

 Some code in http.c that has bitrot is being removed.

 Expecting a reroll.


* mk/use-size-t-in-zlib (2017-08-10) 1 commit
 . zlib.c: use size_t for size

 The wrapper to call into zlib followed our long tradition to use
 "unsigned long" for sizes of regions in memory, which have been
 updated to use "size_t".

 Needs resurrecting by making sure the fix is good and still applies
 (or adjusted to today's codebase).


* mg/status-in-progress-info (2017-05-10) 2 commits
 - status --short --inprogress: spell it as --in-progress
 - status: show in-progress info for short status

 "git status" learns an option to report various operations
 (e.g. "merging") that the user is in the middle of.

 cf. <xmqqmvakcdqw.fsf@gitster.mtv.corp.google.com>


* nd/worktree-move (2017-04-20) 6 commits
 - worktree remove: new command
 - worktree move: refuse to move worktrees with submodules
 - worktree move: accept destination as directory
 - worktree move: new command
 - worktree.c: add update_worktree_location()
 - worktree.c: add validate_worktree()

 "git worktree" learned move and remove subcommands.

 Expecting a reroll.
 cf. <20170420101024.7593-1-pclouds@gmail.com>
 cf. <20170421145916.mknekgqzhxffu7di@sigill.intra.peff.net>
 cf. <d0e81b1e-5869-299e-f462-4d43dc997bd1@ramsayjones.plus.com>

--------------------------------------------------
[Cooking]

* ad/5580-unc-tests-on-cygwin (2017-11-01) 1 commit
 - t5580: add Cygwin support

 UNC paths are also relevant in Cygwin builds and they are now
 tested just like Mingw builds.

 Will merge to 'next'.


* ao/merge-verbosity-getenv-just-once (2017-11-01) 1 commit
 - merge-recursive: check GIT_MERGE_VERBOSITY only once

 Code cleanup.

 Will merge to 'next'.


* bp/read-index-from-skip-verification (2017-11-01) 1 commit
 - read_index_from(): speed index loading by skiping verification of the entry order

 Drop (perhaps overly cautious) sanity check before using the index
 read from the filesystem at runtime.

 Will merge to 'next'.


* rs/hex-to-bytes-cleanup (2017-11-01) 3 commits
 - sha1_file: use hex_to_bytes()
 - http-push: use hex_to_bytes()
 - notes: move hex_to_bytes() to hex.c and export it

 Code cleanup.

 Will merge to 'next'.


* rs/sequencer-rewrite-file-cleanup (2017-11-02) 3 commits
 - sequencer.c: check return value of close() in rewrite_file()
 - sequencer: use O_TRUNC to truncate files
 - sequencer: factor out rewrite_file()

 Code cleanup.

 Will merge to 'next'.


* sb/describe-blob (2017-11-03) 7 commits
 - builtin/describe.c: describe a blob
 - builtin/describe.c: factor out describe_commit
 - builtin/describe.c: print debug statements earlier
 - builtin/describe.c: rename `oid` to avoid variable shadowing
 - revision.h: introduce blob/tree walking in order of the commits
 - list-objects.c: factor out traverse_trees_and_blobs
 - t6120: fix typo in test name

 "git describe" was taught to dig trees deeper to find a
 <commit-ish>:<path> that refers to a given blob object.


* tb/add-renormalize (2017-10-31) 1 commit
 - add: introduce "--renormalize"

 "git add --renormalize ." is a new and safer way to record the fact
 that you are correcting the end-of-line convention and other
 "convert_to_git()" glitches in the in-repository data.

 Needs review.


* ab/mediawiki-name-truncation (2017-11-01) 1 commit
 - remote-mediawiki: limit filenames to legal

 The remote-helper for talking to MediaWiki has been updated to
 truncate an overlong pagename so that ".mw" suffix can still be
 added.

 Will merge to 'next'.


* ab/mediawiki-namespace (2017-11-03) 7 commits
 - remote-mediawiki: show progress while fetching namespaces
 - remote-mediawiki: process namespaces in order
 - remote-mediawiki: support fetching from (Main) namespace
 - remote-mediawiki: skip virtual namespaces
 - remote-mediawiki: show known namespace choices on failure
 - remote-mediawiki: allow fetching namespaces with spaces
 - remote-mediawiki: add namespace support

 The remote-helper for talking to MediaWiki has been updated to
 work with mediawiki namespaces.

 Are we expecting another round for v4?  What is queued above came
 as <20171102212518.1601-8-anarcat@debian.org> and marked v3.
 cf. <87375w5qdw.fsf@curie.anarc.at>


* js/mingw-full-version-in-resources (2017-11-01) 1 commit
 - mingw: include the full version information in the resources

 MinGW updates.

 Will merge to 'next'.


* js/wincred-empty-cred (2017-11-01) 2 commits
 - wincred: handle empty username/password correctly
 - t0302: check helper can handle empty credentials

 MinGW updates.

 Will merge to 'next'.


* bw/diff-opt-impl-to-bitfields (2017-11-01) 8 commits
 - diff: make struct diff_flags members lowercase
 - diff: remove DIFF_OPT_CLR macro
 - diff: remove DIFF_OPT_SET macro
 - diff: remove DIFF_OPT_TST macro
 - diff: remove touched flags
 - diff: add flag to indicate textconv was set via cmdline
 - diff: convert flags to be stored in bitfields
 - add, reset: use DIFF_OPT_SET macro to set a diff flag

 A single-word "unsigned flags" in the diff options is being split
 into a structure with many bitfields.

 Will merge to 'next'.


* mh/tidy-ref-update-flags (2017-11-06) 10 commits
 - refs: update some more docs to use "oid" rather than "sha1"
 - write_packed_entry(): take `object_id` arguments
 - refs: rename constant `REF_ISPRUNING` to `REF_IS_PRUNING`
 - refs: rename constant `REF_NODEREF` to `REF_NO_DEREF`
 - refs: tidy up and adjust visibility of the `ref_update` flags
 - ref_transaction_add_update(): remove a check
 - ref_transaction_update(): die on disallowed flags
 - prune_ref(): call `ref_transaction_add_update()` directly
 - files_transaction_prepare(): don't leak flags to packed transaction
 - Merge branch 'bc/object-id' into base

 Code clean-up in refs API implementation.

 Will merge to 'next'.


* ao/diff-populate-filespec-lstat-errorpath-fix (2017-10-29) 1 commit
 - diff: fix lstat() error handling in diff_populate_filespec()

 After an error from lstat(), diff_populate_filespec() function
 sometimes still went ahead and used invalid data in struct stat,
 which has been fixed.

 Will merge to 'next'.


* av/fsmonitor (2017-11-01) 4 commits
 - fsmonitor: delay updating state until after split index is merged
 - fsmonitor: document GIT_TRACE_FSMONITOR
 - fsmonitor: don't bother pretty-printing JSON from watchman
 - fsmonitor: set the PWD to the top of the working tree
 (this branch uses bp/fsmonitor.)

 Various fixes to bp/fsmonitor topic.

 Will merge to 'next'.


* bc/submitting-patches-in-asciidoc (2017-10-30) 2 commits
 - Documentation: convert SubmittingPatches to AsciiDoc
 - Documentation: enable compat-mode for Asciidoctor

 The SubmittingPatches document has been converted to produce an
 HTML version via AsciiDoc/Asciidoctor.

 Any further comments?  Otherwise, will merge to 'next'.


* pb/bisect-helper-2 (2017-10-28) 8 commits
 - t6030: make various test to pass GETTEXT_POISON tests
 - bisect--helper: `bisect_start` shell function partially in C
 - bisect--helper: `get_terms` & `bisect_terms` shell function in C
 - bisect--helper: `bisect_next_check` shell function in C
 - bisect--helper: `check_and_set_terms` shell function in C
 - wrapper: move is_empty_file() and rename it as is_empty_or_missing_file()
 - bisect--helper: `bisect_write` shell function in C
 - bisect--helper: `bisect_reset` shell function in C

 Expecting a reroll.
 cf. <0102015f5e5ee171-f30f4868-886f-47a1-a4e4-b4936afc545d-000000@eu-west-1.amazonses.com>


* jc/ignore-cr-at-eol (2017-10-27) 2 commits
 - diff: --ignore-cr-at-eol
 - xdiff: reassign xpparm_t.flags bits

 The "diff" family of commands learned to ignore differences in
 carriage return at the end of line.

 Just a lunch-time hack.
 Lacks tests, docs and proper log message.


* mh/avoid-rewriting-packed-refs (2017-10-30) 2 commits
 - files-backend: don't rewrite the `packed-refs` file unnecessarily
 - t1409: check that `packed-refs` is not rewritten unnecessarily

 Recent update to the refs infrastructure implementation started
 rewriting packed-refs file more often than before; this has been
 optimized again for most trivial cases.

 Will merge to 'next'.


* cc/git-packet-pm (2017-10-31) 7 commits
 - fixup! Git/Packet.pm: extract parts of t0021/rot13-filter.pl for reuse
 - Git/Packet.pm: extract parts of t0021/rot13-filter.pl for reuse
 - t0021/rot13-filter: add capability functions
 - t0021/rot13-filter: add packet_initialize()
 - t0021/rot13-filter: improve error message
 - t0021/rot13-filter: improve 'if .. elsif .. else' style
 - t0021/rot13-filter: refactor packet reading functions

 Parts of a test to drive the long-running content filter interface
 has been split into its own module, hopefully to eventually become
 reusable.

 Reroll posted but not picked up yet.
 cf. <20171105213836.11717-1-chriscool@tuxfamily.org>


* jm/status-ignored-files-list (2017-10-31) 4 commits
  (merged to 'next' on 2017-11-01 at fe51978a30)
 + status: test ignored modes
 + status: document options to show matching ignored files
 + status: report matching ignored and normal untracked
 + status: add option to show ignored files differently

 The set of paths output from "git status --ignored" was tied
 closely with its "--untracked=<mode>" option, but now it can be
 controlled more flexibly.  Most notably, a directory that is
 ignored because it is listed to be ignored in the ignore/exclude
 mechanism can be handled differently from a directory that ends up
 to be ignored only because all files in it are ignored.

 Will merge to 'master'.


* jc/branch-name-sanity (2017-10-14) 3 commits
  (merged to 'next' on 2017-10-16 at 174646d1c3)
 + branch: forbid refs/heads/HEAD
 + branch: split validate_new_branchname() into two
 + branch: streamline "attr_only" handling in validate_new_branchname()

 "git branch" and "git checkout -b" are now forbidden from creating
 a branch whose name is "HEAD".

 Will kick back to 'pu'.


* ot/mru-on-list (2017-10-01) 1 commit
  (merged to 'next' on 2017-10-07 at e6ad4a16a2)
 + mru: use double-linked list from list.h

 The first step to getting rid of mru API and using the
 doubly-linked list API directly instead.

 Is there any remaining issues on this one?


* jm/svn-pushmergeinfo-fix (2017-09-17) 1 commit
 - git-svn: fix svn.pushmergeinfo handling of svn+ssh usernames.

 "git svn dcommit" did not take into account the fact that a
 svn+ssh:// URL with a username@ (typically used for pushing) refers
 to the same SVN repository without the username@ and failed when
 svn.pushmergeinfo option is set.

 Needs a test, perhaps as a follow-up patch.

 Will merge to 'next'.


* bp/fsmonitor (2017-10-05) 15 commits
  (merged to 'next' on 2017-10-05 at 964a029d13)
 + fsmonitor: preserve utf8 filenames in fsmonitor-watchman log
 + fsmonitor: read entirety of watchman output
 + fsmonitor: MINGW support for watchman integration
  (merged to 'next' on 2017-10-02 at cf0c67979c)
 + fsmonitor: add a performance test
 + fsmonitor: add a sample integration script for Watchman
 + fsmonitor: add test cases for fsmonitor extension
 + split-index: disable the fsmonitor extension when running the split index test
 + fsmonitor: add a test tool to dump the index extension
 + update-index: add fsmonitor support to update-index
 + ls-files: Add support in ls-files to display the fsmonitor valid bit
 + fsmonitor: add documentation for the fsmonitor extension.
 + fsmonitor: teach git to optionally utilize a file system monitor to speed up detecting new or changed files.
 + update-index: add a new --force-write-index option
 + preload-index: add override to enable testing preload-index
 + bswap: add 64 bit endianness helper get_be64
 (this branch is used by av/fsmonitor.)

 We learned to talk to watchman to speed up "git status" and other
 operations that need to see which paths have been modified.

 Waiting for av/fsmonitor topic.


* bw/protocol-v1 (2017-10-17) 11 commits
  (merged to 'next' on 2017-10-18 at 835fe09e50)
 + Documentation: document Extra Parameters
 + ssh: introduce a 'simple' ssh variant
 + i5700: add interop test for protocol transition
 + http: tell server that the client understands v1
 + connect: tell server that the client understands v1
 + connect: teach client to recognize v1 server response
 + upload-pack, receive-pack: introduce protocol version 1
 + daemon: recognize hidden request arguments
 + protocol: introduce protocol extension mechanisms
 + pkt-line: add packet_write function
 + connect: in ref advertisement, shallows are last
 (this branch is used by jn/ssh-wrappers.)

 A new mechanism to upgrade the wire protocol in place is proposed
 and demonstrated that it works with the older versions of Git
 without harming them.

 Waiting for jn/ssh-wrappers topic.


* bc/hash-algo (2017-10-30) 4 commits
 - Switch empty tree and blob lookups to use hash abstraction
 - Integrate hash algorithm support with repo setup
 - Add structure representing hash algorithm
 - setup: expose enumerated repo info

 An infrastructure to define what hash function is used in Git is
 introduced, and an effort to plumb that throughout various
 codepaths has been started.

 cf. <20171028181239.59458-1-sandals@crustytoothpaste.net>


* sb/submodule-recursive-checkout-detach-head (2017-07-28) 2 commits
  (merged to 'next' on 2017-10-26 at 30994b4c76)
 + Documentation/checkout: clarify submodule HEADs to be detached
 + recursive submodules: detach HEAD from new state

 "git checkout --recursive" may overwrite and rewind the history of
 the branch that happens to be checked out in submodule
 repositories, which might not be desirable.  Detach the HEAD but
 still allow the recursive checkout to succeed in such a case.

 Undecided.
 This needs justification in a larger picture; it is unclear why
 this is better than rejecting recursive checkout, for example.

--------------------------------------------------
[Discarded]

* jk/ui-color-always-to-auto-maint (2017-10-13) 2 commits
  (merged to 'next' on 2017-10-13 at bb16e1edc8)
 + color: document that "git -c color.*=always" is a bit special
 + color: downgrade "always" to "auto" only for on-disk configuration

 It turns out that "git -c color.ui=always cmd" is relied on by many
 third-party tools as a way to force coloured output no matter what
 the end-user configuration is, and a recent attempt to downgrade
 'always' to 'auto' to fix the regression to "git add -p" broke it.

 This has been reverted from 'next'.


* jt/partial-clone-lazy-fetch (2017-10-02) 18 commits
 . fetch-pack: restore save_commit_buffer after use
 . unpack-trees: batch fetching of missing blobs
 . clone: configure blobmaxbytes in created repos
 . clone: support excluding large blobs
 . fetch: support excluding large blobs
 . fetch: refactor calculation of remote list
 . fetch-pack: support excluding large blobs
 . pack-objects: support --blob-max-bytes
 . pack-objects: rename want_.* to ignore_.*
 . gc: do not repack promisor packfiles
 . rev-list: support termination at promisor objects
 . sha1_file: support lazily fetching missing objects
 . introduce fetch-object: fetch one promisor object
 . index-pack: refactor writing of .keep files
 . fsck: support promisor objects as CLI argument
 . fsck: support referenced promisor objects
 . fsck: support refs pointing to promisor objects
 . fsck: introduce partialclone extension

 A journey for "git clone" and "git fetch" to become "lazier" by
 depending more on its remote repository---this is the beginning of
 it.

 Superseded by three topics that end with jh/partial-clone.


* jh/dir-add-exclude-from-blob (2017-10-27) 1 commit
 - dir: allow exclusions from blob in addition to file

 The code to read exclusion list from a blob, which is used when the
 .gitignore file is outside a sparse checkout area, has been
 refactored so that other codepath can later use it to do the same
 outside the context of "sparse checkout".

 Now part of jh/object-filtering topic.

^ permalink raw reply	[relevance 5%]

* What's cooking in git.git (Nov 2017, #01; Wed, 1)
@ 2017-11-01  5:43  6% Junio C Hamano
  0 siblings, 0 replies; 25+ results
From: Junio C Hamano @ 2017-11-01  5:43 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.  The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.

Git 2.15 final was tagged.  I may not have fully caught up with the
list traffic and there may be topics that should have been scooped
up but lost in the noise, but I think the tree is in a better shape
than yesterday ;-)  We'll see if there is any brown paper bag bugs
by waiting til the end of the week.

And then we'll start the new cycle by rewinding the top of 'next'
and also marking topics that are marked as "will cook in 'next'" as
"will merge to 'master'" around the weekend.  The first to graduate
will be the ex/deprecate-empty-pathspec-as-match-all topic.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[New Topics]

* ad/5580-unc-tests-on-cygwin (2017-11-01) 1 commit
 - t5580: add Cygwin support

 UNC paths are also relevant in Cygwin builds and they are now
 tested just like Mingw builds.

 Will merge to 'next'.


* ao/merge-verbosity-getenv-just-once (2017-11-01) 1 commit
 - merge-recursive: check GIT_MERGE_VERBOSITY only once

 Code cleanup.

 Will merge to 'next'.


* bp/read-index-from-skip-verification (2017-11-01) 1 commit
 - read_index_from(): speed index loading by skiping verification of the entry order

 Drop (perhaps overly cautious) sanity check before using the index
 read from the filesystem at runtime.

 Will merge to 'next'.


* cn/diff-indent-no-longer-is-experimental (2017-11-01) 2 commits
 - SQUASH???
 - diff: --indent-heuristic is no longer experimental

 Doc update.

 Will merge to 'next' after squashing the fixup.


* jk/rebase-i-exec-gitdir-fix (2017-11-01) 1 commit
 - sequencer: pass absolute GIT_DIR to exec commands

 A recent regression in "git rebase -i" that broke execution of git
 commands from subdirectories via "exec" insn has been fixed.

 Ack from Dscho would be nice.


* mh/test-local-canary (2017-10-31) 1 commit
 - t0000: check whether the shell supports the "local" keyword

 We try to see if somebody runs our test suite with a shell that
 does not support "local" like bash/dash does.

 Will merge to 'next'.


* rs/hex-to-bytes-cleanup (2017-11-01) 3 commits
 - sha1_file: use hex_to_bytes()
 - http-push: use hex_to_bytes()
 - notes: move hex_to_bytes() to hex.c and export it

 Code cleanup.

 Will merge to 'next'.


* rs/sequencer-rewrite-file-cleanup (2017-11-01) 2 commits
 - sequencer: use O_TRUNC to truncate files
 - sequencer: factor out rewrite_file()

 Code cleanup.

 Will merge to 'next'.


* sb/describe-blob (2017-11-01) 7 commits
 - t6120: fix typo in test name
 - builtin/describe.c: describe a blob
 - builtin/describe.c: factor out describe_commit
 - builtin/describe.c: print debug statements earlier
 - builtin/describe.c: rename `oid` to avoid variable shadowing
 - revision.h: introduce blob/tree walking in order of the commits
 - list-objects.c: factor out traverse_trees_and_blobs

 "git describe" was taught to dig trees deeper to find a
 <commit-ish>:<path> that refers to a given blob object.


* tb/add-renormalize (2017-10-31) 1 commit
 - add: introduce "--renormalize"

 "git add --renormalize ." is a new and safer way to record the fact
 that you are correcting the end-of-line convention and other
 "convert_to_git()" glitches in the in-repository data.


* ab/mediawiki-name-truncation (2017-11-01) 1 commit
 - remote-mediawiki: limit filenames to legal

 The remote-helper for talking to MediaWiki has been updated to
 truncate an overlong pagename so that ".mw" suffix can still be
 added.

 Will merge to 'next'.


* ab/mediawiki-namespace (2017-11-01) 7 commits
 - remote-mediawiki: show progress while fetching namespaces
 - remote-mediawiki: process namespaces in order
 - remote-mediawiki: support fetching from (Main) namespace
 - remote-mediawiki: skip virtual namespaces
 - remote-mediawiki: show known namespace choices on failure
 - remote-mediawiki: allow fetching namespaces with spaces
 - remote-mediawiki: add namespace support

 The remote-helper for talking to MediaWiki has been updated to
 work with mediawiki namespaces.

 Will merge to 'next'.


* js/mingw-full-version-in-resources (2017-11-01) 1 commit
 - mingw: include the full version information in the resources

 MinGW updates.

 Will merge to 'next'.

* js/mingw-redirection (2017-11-01) 3 commits
 - mingw: document the experimental standard handle redirection
 - mingw: special-case GIT_REDIRECT_STDERR=2>&1
 - mingw: add experimental feature to redirect standard handles

 MinGW updates.


* js/wincred-empty-cred (2017-11-01) 2 commits
 - wincred: handle empty username/password correctly
 - t0302: check helper can handle empty credentials

 MinGW updates.

--------------------------------------------------
[Stalled]

* mk/use-size-t-in-zlib (2017-08-10) 1 commit
 . zlib.c: use size_t for size

 The wrapper to call into zlib followed our long tradition to use
 "unsigned long" for sizes of regions in memory, which have been
 updated to use "size_t".

 Needs resurrecting by making sure the fix is good and still applies
 (or adjusted to today's codebase).


* mg/status-in-progress-info (2017-05-10) 2 commits
 - status --short --inprogress: spell it as --in-progress
 - status: show in-progress info for short status

 "git status" learns an option to report various operations
 (e.g. "merging") that the user is in the middle of.

 cf. <xmqqmvakcdqw.fsf@gitster.mtv.corp.google.com>


* nd/worktree-move (2017-04-20) 6 commits
 - worktree remove: new command
 - worktree move: refuse to move worktrees with submodules
 - worktree move: accept destination as directory
 - worktree move: new command
 - worktree.c: add update_worktree_location()
 - worktree.c: add validate_worktree()

 "git worktree" learned move and remove subcommands.

 Expecting a reroll.
 cf. <20170420101024.7593-1-pclouds@gmail.com>
 cf. <20170421145916.mknekgqzhxffu7di@sigill.intra.peff.net>
 cf. <d0e81b1e-5869-299e-f462-4d43dc997bd1@ramsayjones.plus.com>

--------------------------------------------------
[Cooking]

* bw/diff-opt-impl-to-bitfields (2017-11-01) 8 commits
 - diff: make struct diff_flags members lowercase
 - diff: remove DIFF_OPT_CLR macro
 - diff: remove DIFF_OPT_SET macro
 - diff: remove DIFF_OPT_TST macro
 - diff: remove touched flags
 - diff: add flag to indicate textconv was set via cmdline
 - diff: convert flags to be stored in bitfields
 - add, reset: use DIFF_OPT_SET macro to set a diff flag

 A single-word "unsigned flags" in the diff options is being split
 into a structure with many bitfields.


* mh/tidy-ref-update-flags (2017-10-28) 8 commits
 - refs: rename constant `REF_ISPRUNING` to `REF_IS_PRUNING`
 - refs: rename constant `REF_NODEREF` to `REF_NO_DEREF`
 - refs: tidy up and adjust visibility of the `ref_update` flags
 - ref_transaction_add_update(): remove a check
 - ref_transaction_update(): die on disallowed flags
 - prune_ref(): call `ref_transaction_add_update()` directly
 - files_transaction_prepare(): don't leak flags to packed transaction
 - Merge branch 'bc/object-id' into base
 (this branch uses bc/object-id.)

 Code clean-up in refs API implementation.


* ao/diff-populate-filespec-lstat-errorpath-fix (2017-10-29) 1 commit
 - diff: fix lstat() error handling in diff_populate_filespec()

 After an error from lstat(), diff_populate_filespec() function
 sometimes still went ahead and used invalid data in struct stat,
 which has been fixed.


* av/fsmonitor (2017-11-01) 4 commits
 - fsmonitor: delay updating state until after split index is merged
 - fsmonitor: document GIT_TRACE_FSMONITOR
 - fsmonitor: don't bother pretty-printing JSON from watchman
 - fsmonitor: set the PWD to the top of the working tree
 (this branch uses bp/fsmonitor.)

 Various fixes to bp/fsmonitor topic.

 Will merge to 'next'.


* bc/submitting-patches-in-asciidoc (2017-10-30) 2 commits
 - Documentation: convert SubmittingPatches to AsciiDoc
 - Documentation: enable compat-mode for Asciidoctor

 The SubmittingPatches document has been converted to produce an
 HTML version via AsciiDoc/Asciidoctor.


* pb/bisect-helper-2 (2017-10-28) 8 commits
 - t6030: make various test to pass GETTEXT_POISON tests
 - bisect--helper: `bisect_start` shell function partially in C
 - bisect--helper: `get_terms` & `bisect_terms` shell function in C
 - bisect--helper: `bisect_next_check` shell function in C
 - bisect--helper: `check_and_set_terms` shell function in C
 - wrapper: move is_empty_file() and rename it as is_empty_or_missing_file()
 - bisect--helper: `bisect_write` shell function in C
 - bisect--helper: `bisect_reset` shell function in C
 (this branch uses pb/bisect-helper.)


* js/submodule-in-excluded (2017-10-26) 1 commit
  (merged to 'next' on 2017-10-26 at 2a262e6a0b)
 + status: do not get confused by submodules in excluded directories

 "git status --ignored -u" did not stop at a working tree of a
 separate project that is embedded in an ignored directory and
 listed files in that other project, instead of just showing the
 directory itself as ignored.

 Will cook in 'next'.


* tb/complete-checkout (2017-10-25) 1 commit
  (merged to 'next' on 2017-10-26 at beeaf5b00c)
 + completion: add remaining flags to checkout

 Command line completion (in contrib/) update.

 Will cook in 'next'.


* jc/ignore-cr-at-eol (2017-10-27) 2 commits
 - diff: --ignore-cr-at-eol
 - xdiff: reassign xpparm_t.flags bits

 The "diff" family of commands learned to ignore differences in
 carriage return at the end of line.

 Just a lunch-time hack.
 Lacks tests, docs and proper log message.


* sb/diff-color-moved-use-xdl-recmatch (2017-10-26) 2 commits
  (merged to 'next' on 2017-10-26 at 6711f24498)
 + diff.c: get rid of duplicate implementation
 + xdiff-interface: export comparing and hashing strings
 (this branch uses jk/diff-color-moved-fix.)

 Instead of using custom line comparison and hashing functions to
 implement "moved lines" coloring in the diff output, use the pair
 of these functions from lower-layer xdiff/ code.

 Will cook in 'next'.


* jh/dir-add-exclude-from-blob (2017-10-27) 1 commit
 - dir: allow exclusions from blob in addition to file

 The code to read exclusion list from a blob, which is used when the
 .gitignore file is outside a sparse checkout area, has been
 refactored so that other codepath can later use it to do the same
 outside the context of "sparse checkout".


* mh/avoid-rewriting-packed-refs (2017-10-30) 2 commits
 - files-backend: don't rewrite the `packed-refs` file unnecessarily
 - t1409: check that `packed-refs` is not rewritten unnecessarily

 Recent update to the refs infrastructure implementation started
 rewriting packed-refs file more often than before; this has been
 optimized again for most trivial cases.


* cc/git-packet-pm (2017-10-31) 7 commits
 - fixup! Git/Packet.pm: extract parts of t0021/rot13-filter.pl for reuse
 - Git/Packet.pm: extract parts of t0021/rot13-filter.pl for reuse
 - t0021/rot13-filter: add capability functions
 - t0021/rot13-filter: add packet_initialize()
 - t0021/rot13-filter: improve error message
 - t0021/rot13-filter: improve 'if .. elsif .. else' style
 - t0021/rot13-filter: refactor packet reading functions

 Parts of a test to drive the long-running content filter interface
 has been split into its own module, hopefully to eventually become
 reusable.

 Expecting a reroll.
 The original unfortunately is quite broken in error detection
 cases to make the result sub-par as a standalone module before it
 gets fixed.


* jk/diff-color-moved-fix (2017-10-21) 5 commits
  (merged to 'next' on 2017-10-26 at eb580e4c8c)
 + diff: handle NULs in get_string_hash()
 + diff: fix whitespace-skipping with --color-moved
 + t4015: test the output of "diff --color-moved -b"
 + t4015: check "negative" case for "-w --color-moved"
 + t4015: refactor --color-moved whitespace test
 (this branch is used by sb/diff-color-moved-use-xdl-recmatch.)

 The experimental "color moved lines differently in diff output"
 feature was buggy around "ignore whitespace changes" edges, whihch
 has been corrected.

 Will cook in 'next'.
 Most of the fixes to the incorrectly implemented custom helpers
 will go away with sb/diff-color-moved-use-xdl-recmatch topic.


* jk/misc-resolve-ref-unsafe-fixes (2017-10-21) 4 commits
  (merged to 'next' on 2017-10-26 at c327b2ec2f)
 + worktree: handle broken symrefs in find_shared_symref()
 + log: handle broken HEAD in decoration check
 + remote: handle broken symrefs
 + test-ref-store: avoid passing NULL to printf

 Some codepaths did not check for errors when asking what branch the
 HEAD points at, which have been fixed.

 Will cook in 'next'.


* ao/check-resolve-ref-unsafe-result (2017-10-21) 1 commit
  (merged to 'next' on 2017-10-26 at 84302ab59a)
 + commit: check result of resolve_ref_unsafe

 "git commit", after making a commit, did not check for errors when
 asking on what branch it made the commit, which has been correted.

 Will cook in 'next'.


* jm/status-ignored-files-list (2017-10-31) 4 commits
  (merged to 'next' on 2017-11-01 at fe51978a30)
 + status: test ignored modes
 + status: document options to show matching ignored files
 + status: report matching ignored and normal untracked
 + status: add option to show ignored files differently

 The set of paths output from "git status --ignored" was tied
 closely with its "--untracked=<mode>" option, but now it can be
 controlled more flexibly.  Most notably, a directory that is
 ignored because it is listed to be ignored in the ignore/exclude
 mechanism can be handled differently from a directory that ends up
 to be ignored only because all files in it are ignored.

 Will cook in 'next'.


* mp/push-pushoption-config (2017-10-24) 1 commit
  (merged to 'next' on 2017-10-26 at 2c72164d12)
 + builtin/push.c: add push.pushOption config

 The "--push-option=<string>" option to "git push" now defaults to a
 list of strings configured via push.pushOption variable.

 Will cook in 'next'.


* gc/gitweb-filetest-acl (2017-10-24) 1 commit
  (merged to 'next' on 2017-10-26 at 5b490f53bf)
 + gitweb: use filetest to allow ACLs

 "gitweb" checks if a directory is searchable with Perl's "-x"
 operator, which can be enhanced by using "filetest 'access'"
 pragma, which now we do.

 Will cook in 'next'.


* jn/ssh-wrappers (2017-10-30) 6 commits
 - fixup! ssh: 'auto' variant to select between 'ssh' and 'simple'
 - ssh: 'simple' variant does not support --port
 - ssh: 'simple' variant does not support -4/-6
 - ssh: 'auto' variant to select between 'ssh' and 'simple'
 - connect: split ssh command line options into separate function
 - connect: split git:// setup into a separate function
 (this branch uses bw/protocol-v1.)

 The ssh-variant 'simple' introduced earlier broke existing
 installations by not passing --port/-4/-6 and not diagnosing an
 attempt to pass these as an error.  Instead, default to
 automatically detect how compatible the GIT_SSH/GIT_SSH_COMMAND is
 to OpenSSH convention and then error out an invocation to make it
 easier to diagnose connection errors.

 Expecting a reroll.
 cf. <20171025163243.xmm7szrkwgblpgcc@aiede.mtv.corp.google.com>


* tg/deprecate-stash-save (2017-10-27) 3 commits
  (merged to 'next' on 2017-10-27 at 73b1edb73b)
 + stash: remove now superfluos help for "stash push"
 + stash: mark "git stash save" deprecated in the man page
 + stash: replace "git stash save" with "git stash push" in the documentation

 "git stash save" has been deprecated in favour of "git stash push".

 Will cook in 'next'.


* jc/check-ref-format-oor (2017-10-18) 3 commits
  (merged to 'next' on 2017-10-18 at 8b17566c80)
 + check-ref-format doc: --branch validates and expands <branch>
 + check-ref-format --branch: strip refs/heads/ using skip_prefix
 + check-ref-format --branch: do not expand @{...} outside repository

 "git check-ref-format --branch @{-1}" bit a "BUG()" when run
 outside a repository for obvious reasons; clarify the documentation
 and make sure we do not even try to expand the at-mark magic in
 such a case, but still call the validation logic for branch names.

 Will cook in 'next'.


* kd/auto-col-with-pager-fix (2017-10-24) 2 commits
  (merged to 'next' on 2017-10-24 at ef3ff0f14b)
 + column: do not include pager.c
  (merged to 'next' on 2017-10-18 at fe89ff7e83)
 + column: show auto columns when pager is active

 "auto" as a value for the columnar output configuration ought to
 judge "is the output consumed by humans?" with the same criteria as
 "auto" for coloured output configuration, i.e. either the standard
 output stream is going to tty, or a pager is in use.  We forgot the
 latter, which has been fixed.

 Will cook in 'next'.


* jc/t5601-copy-workaround (2017-10-17) 1 commit
  (merged to 'next' on 2017-10-18 at ea1e133968)
 + t5601: rm the target file of cp that could still be executing

 A (possibly flakey) test fix.

 Will cook in 'next'.


* jc/branch-name-sanity (2017-10-14) 3 commits
  (merged to 'next' on 2017-10-16 at 174646d1c3)
 + branch: forbid refs/heads/HEAD
 + branch: split validate_new_branchname() into two
 + branch: streamline "attr_only" handling in validate_new_branchname()

 "git branch" and "git checkout -b" are now forbidden from creating
 a branch whose name is "HEAD".

 Will cook in 'next'.


* jk/revision-pruning-optim (2017-10-14) 1 commit
  (merged to 'next' on 2017-10-16 at 2662baa21d)
 + revision: quit pruning diff more quickly when possible

 Pathspec-limited revision traversal was taught not to keep finding
 unneeded differences once it knows two trees are different inside
 given pathspec.

 Will cook in 'next'.


* wk/pull-signoff (2017-10-13) 1 commit
  (merged to 'next' on 2017-10-16 at 5e48f349d9)
 + pull: pass --signoff/--no-signoff to "git merge"

 "git pull" has been taught to accept "--[no-]signoff" option and
 pass it down to "git merge".

 Will cook in 'next'.


* dm/run-command-ignored-hook-advise (2017-10-10) 1 commit
  (merged to 'next' on 2017-10-10 at 0827814922)
 + run-command: add hint when a hook is ignored

 A hook script that is set unexecutable is simply ignored.  Git
 notifies when such a file is ignored, unless the message is
 squelched via advice.ignoredHook configuration.

 Will cook in 'next'.


* hv/fetch-moved-submodules-on-demand (2017-10-17) 3 commits
  (merged to 'next' on 2017-10-26 at c446ea3e9a)
 + submodule: simplify decision tree whether to or not to fetch
 + implement fetching of moved submodules
 + fetch: add test to make sure we stay backwards compatible

 "git fetch --recurse-submodules" now knows that submodules can be
 moved around in the superproject in addition to getting updated,
 and finds the ones that need to be fetched accordingly.

 Will cook in 'next'.


* js/for-each-ref-remote-name-and-ref (2017-10-11) 3 commits
 - for-each-ref: test :remotename and :remoteref
 - for-each-ref: let upstream/push optionally report the remote ref name
 - for-each-ref: let upstream/push optionally report the remote name

 The "--format=..." option "git for-each-ref" takes learned to show
 the name of the 'remote' repository and the ref at the remote side
 that is affected for 'upstream' and 'push' via "%(push:remotename)"
 and friends.

 Needs a bit more work on the documentation part.


* pb/bisect-helper (2017-10-06) 6 commits
  (merged to 'next' on 2017-10-13 at ffc9aefe63)
 + bisect--helper: `is_expected_rev` & `check_expected_revs` shell function in C
 + t6030: explicitly test for bisection cleanup
 + bisect--helper: `bisect_clean_state` shell function in C
 + bisect--helper: `write_terms` shell function in C
 + bisect--helper: rewrite `check_term_format` shell function in C
 + bisect--helper: use OPT_CMDMODE instead of OPT_BOOL
 (this branch is used by pb/bisect-helper-2.)

 An early part of piece-by-piece rewrite of "git bisect".

 Will cook in 'next'.


* bc/object-id (2017-10-16) 25 commits
  (merged to 'next' on 2017-10-18 at ef8aa2698d)
 + refs/files-backend: convert static functions to object_id
 + refs: convert read_raw_ref backends to struct object_id
 + refs: convert peel_object to struct object_id
 + refs: convert resolve_ref_unsafe to struct object_id
 + worktree: convert struct worktree to object_id
 + refs: convert resolve_gitlink_ref to struct object_id
 + Convert remaining callers of resolve_gitlink_ref to object_id
 + sha1_file: convert index_path and index_fd to struct object_id
 + refs: convert reflog_expire parameter to struct object_id
 + refs: convert read_ref_at to struct object_id
 + refs: convert peel_ref to struct object_id
 + builtin/pack-objects: convert to struct object_id
 + pack-bitmap: convert traverse_bitmap_commit_list to object_id
 + refs: convert dwim_log to struct object_id
 + builtin/reflog: convert remaining unsigned char uses to object_id
 + refs: convert dwim_ref and expand_ref to struct object_id
 + refs: convert read_ref and read_ref_full to object_id
 + refs: convert resolve_refdup and refs_resolve_refdup to struct object_id
 + Convert check_connected to use struct object_id
 + refs: update ref transactions to use struct object_id
 + refs: prevent accidental NULL dereference in write_pseudoref
 + refs: convert update_ref and refs_update_ref to use struct object_id
 + refs: convert delete_ref and refs_delete_ref to struct object_id
 + refs/files-backend: convert struct ref_to_prune to object_id
 + walker: convert to struct object_id
 (this branch is used by mh/tidy-ref-update-flags.)

 Conversion from uchar[20] to struct object_id continues.

 Will cook in 'next'.


* jc/no-cmd-as-subroutine (2017-10-11) 2 commits
  (merged to 'next' on 2017-10-16 at 5f4ee919ac)
 + merge-ours: do not use cmd_*() as a subroutine
 + describe: do not use cmd_*() as a subroutine

 Calling cmd_foo() as if it is a general purpose helper function is
 a no-no.  Correct two instances of such to set an example.

 Will cook in 'next'.


* jc/merge-symlink-ours-theirs (2017-09-26) 1 commit
 - merge: teach -Xours/-Xtheirs to symbolic link merge

 "git merge -Xours/-Xtheirs" learned to use our/their version when
 resolving a conflicting updates to a symbolic link.

 Needs review.


* jt/partial-clone-lazy-fetch (2017-10-02) 18 commits
 - fetch-pack: restore save_commit_buffer after use
 - unpack-trees: batch fetching of missing blobs
 - clone: configure blobmaxbytes in created repos
 - clone: support excluding large blobs
 - fetch: support excluding large blobs
 - fetch: refactor calculation of remote list
 - fetch-pack: support excluding large blobs
 - pack-objects: support --blob-max-bytes
 - pack-objects: rename want_.* to ignore_.*
 - gc: do not repack promisor packfiles
 - rev-list: support termination at promisor objects
 - sha1_file: support lazily fetching missing objects
 - introduce fetch-object: fetch one promisor object
 - index-pack: refactor writing of .keep files
 - fsck: support promisor objects as CLI argument
 - fsck: support referenced promisor objects
 - fsck: support refs pointing to promisor objects
 - fsck: introduce partialclone extension

 A journey for "git clone" and "git fetch" to become "lazier" by
 depending more on its remote repository---this is the beginning of
 it.

 Expecting a reroll.
 cf. <CAGf8dgLu-TeK8KbHv-U+18O+L2TxKcGv5vFFHy38J6a_YXRfew@mail.gmail.com>


* ma/lockfile-fixes (2017-10-07) 12 commits
  (merged to 'next' on 2017-10-16 at 19fae5c138)
 + read_cache: roll back lock in `update_index_if_able()`
 + read-cache: leave lock in right state in `write_locked_index()`
 + read-cache: drop explicit `CLOSE_LOCK`-flag
 + cache.h: document `write_locked_index()`
 + apply: remove `newfd` from `struct apply_state`
 + apply: move lockfile into `apply_state`
 + cache-tree: simplify locking logic
 + checkout-index: simplify locking logic
 + tempfile: fix documentation on `delete_tempfile()`
 + lockfile: fix documentation on `close_lock_file_gently()`
 + treewide: prefer lockfiles on the stack
 + sha1_file: do not leak `lock_file`

 An earlier update made it possible to use an on-stack in-core
 lockfile structure (as opposed to having to deliberately leak an
 on-heap one).  Many codepaths have been updated to take advantage
 of this new facility.

 Will cook in 'next'.


* ot/mru-on-list (2017-10-01) 1 commit
  (merged to 'next' on 2017-10-07 at e6ad4a16a2)
 + mru: use double-linked list from list.h

 The first step to getting rid of mru API and using the
 doubly-linked list API directly instead.

 Will cook in 'next'.


* jm/svn-pushmergeinfo-fix (2017-09-17) 1 commit
 - git-svn: fix svn.pushmergeinfo handling of svn+ssh usernames.

 "git svn dcommit" did not take into account the fact that a
 svn+ssh:// URL with a username@ (typically used for pushing) refers
 to the same SVN repository without the username@ and failed when
 svn.pushmergeinfo option is set.

 Needs a test, perhaps as a follow-up patch.


* mg/merge-base-fork-point (2017-09-17) 3 commits
 - merge-base: find fork-point outside partial reflog
 - merge-base: return fork-point outside reflog
 - t6010: test actual test output

 "merge-base --fork-point $branch $commit" is used to guess on which
 commit among the commits that were once at the tip of the $branch the
 $commit was built on top of, and it learns these historical tips from
 the reflog of the $branch.  When the true fork-point is lost due to
 pruning of old reflog entries, the command does not give any output,
 because it has no way to guess correctly and does not want to mislead
 the user with a wrong guess.

 The command has been updated to give the best but not known to be
 correct guess, based on a hope that a merge-base between $commit and a
 virtual merge across all the reflog entries that still are available
 for $branch may still be a closer to the true fork-point than the
 merge-base between $commit and the current tip of the $branch.

 This may have to be offered by an additional option, to allow the
 users that are prepared to see a potentially incorrect guess to opt
 into the feature, without affecting the current callers that may not
 be prepared to accept a guess that is not known to be correct.

 What's the doneness of this one?


* ds/find-unique-abbrev-optim (2017-10-13) 4 commits
  (merged to 'next' on 2017-10-16 at 7f4479ac52)
 + sha1_name: minimize OID comparisons during disambiguation
 + sha1_name: parse less while finding common prefix
 + sha1_name: unroll len loop in find_unique_abbrev_r()
 + p4211-line-log.sh: add log --online --raw --parents perf test

 Optimize the code to find shortest unique prefix of object names.

 Will cook in 'next'.


* cc/perf-run-config (2017-09-24) 9 commits
 - perf: store subsection results in "test-results/$GIT_PERF_SUBSECTION/"
 - perf/run: show name of rev being built
 - perf/run: add run_subsection()
 - perf/run: update get_var_from_env_or_config() for subsections
 - perf/run: add get_subsections()
 - perf/run: add calls to get_var_from_env_or_config()
 - perf/run: add GIT_PERF_DIRS_OR_REVS
 - perf/run: add get_var_from_env_or_config()
 - perf/run: add '--config' option to the 'run' script

 Needs review.


* bp/fsmonitor (2017-10-05) 15 commits
  (merged to 'next' on 2017-10-05 at 964a029d13)
 + fsmonitor: preserve utf8 filenames in fsmonitor-watchman log
 + fsmonitor: read entirety of watchman output
 + fsmonitor: MINGW support for watchman integration
  (merged to 'next' on 2017-10-02 at cf0c67979c)
 + fsmonitor: add a performance test
 + fsmonitor: add a sample integration script for Watchman
 + fsmonitor: add test cases for fsmonitor extension
 + split-index: disable the fsmonitor extension when running the split index test
 + fsmonitor: add a test tool to dump the index extension
 + update-index: add fsmonitor support to update-index
 + ls-files: Add support in ls-files to display the fsmonitor valid bit
 + fsmonitor: add documentation for the fsmonitor extension.
 + fsmonitor: teach git to optionally utilize a file system monitor to speed up detecting new or changed files.
 + update-index: add a new --force-write-index option
 + preload-index: add override to enable testing preload-index
 + bswap: add 64 bit endianness helper get_be64
 (this branch is used by av/fsmonitor.)

 We learned to talk to watchman to speed up "git status" and other
 operations that need to see which paths have been modified.

 Will cook in 'next'.


* bw/protocol-v1 (2017-10-17) 11 commits
  (merged to 'next' on 2017-10-18 at 835fe09e50)
 + Documentation: document Extra Parameters
 + ssh: introduce a 'simple' ssh variant
 + i5700: add interop test for protocol transition
 + http: tell server that the client understands v1
 + connect: tell server that the client understands v1
 + connect: teach client to recognize v1 server response
 + upload-pack, receive-pack: introduce protocol version 1
 + daemon: recognize hidden request arguments
 + protocol: introduce protocol extension mechanisms
 + pkt-line: add packet_write function
 + connect: in ref advertisement, shallows are last
 (this branch is used by jn/ssh-wrappers.)

 A new mechanism to upgrade the wire protocol in place is proposed
 and demonstrated that it works with the older versions of Git
 without harming them.

 Will cook in 'next'.


* pc/submodule-helper (2017-10-07) 3 commits
  (merged to 'next' on 2017-10-16 at 2b38de12cc)
 + submodule: port submodule subcommand 'status' from shell to C
 + submodule--helper: introduce for_each_listed_submodule()
 + submodule--helper: introduce get_submodule_displaypath()

 GSoC.
 Will cook in 'next'.


* bc/hash-algo (2017-10-30) 4 commits
 - Switch empty tree and blob lookups to use hash abstraction
 - Integrate hash algorithm support with repo setup
 - Add structure representing hash algorithm
 - setup: expose enumerated repo info

 An infrastructure to define what hash function is used in Git is
 introduced, and an effort to plumb that throughout various
 codepaths has been started.

 cf. <20171028181239.59458-1-sandals@crustytoothpaste.net>


* jk/drop-ancient-curl (2017-08-09) 5 commits
 - http: #error on too-old curl
 - curl: remove ifdef'd code never used with curl >=7.19.4
 - http: drop support for curl < 7.19.4
 - http: drop support for curl < 7.16.0
 - http: drop support for curl < 7.11.1

 Some code in http.c that has bitrot is being removed.

 Will be rerolled after tc/curl-with-backports stabilizes.


* sb/submodule-recursive-checkout-detach-head (2017-07-28) 2 commits
  (merged to 'next' on 2017-10-26 at 30994b4c76)
 + Documentation/checkout: clarify submodule HEADs to be detached
 + recursive submodules: detach HEAD from new state

 "git checkout --recursive" may overwrite and rewind the history of
 the branch that happens to be checked out in submodule
 repositories, which might not be desirable.  Detach the HEAD but
 still allow the recursive checkout to succeed in such a case.

 Undecided.
 This needs justification in a larger picture; it is unclear why
 this is better than rejecting recursive checkout, for example.


* ex/deprecate-empty-pathspec-as-match-all (2017-06-23) 2 commits
  (merged to 'next' on 2017-08-14 at 24db08a6e8)
 + pathspec: die on empty strings as pathspec
 + t0027: do not use an empty string as a pathspec element

 The final step to make an empty string as a pathspec element
 illegal.  We started this by first deprecating and warning a
 pathspec that has such an element in 2.11 (Nov 2016).

 Hopefully we can merge this down to the 'master' by the end of the
 year?  A deprecation warning period that is about 1 year does not
 sound too bad.

 Will cook in 'next'.
 As the draft RelNotes says, let's merge this to 'master' after
 this release cycle.

--------------------------------------------------
[Discarded]

* jk/ui-color-always-to-auto-maint (2017-10-13) 2 commits
  (merged to 'next' on 2017-10-13 at bb16e1edc8)
 + color: document that "git -c color.*=always" is a bit special
 + color: downgrade "always" to "auto" only for on-disk configuration

 It turns out that "git -c color.ui=always cmd" is relied on by many
 third-party tools as a way to force coloured output no matter what
 the end-user configuration is, and a recent attempt to downgrade
 'always' to 'auto' to fix the regression to "git add -p" broke it.

 This has been reverted from 'next'.

^ permalink raw reply	[relevance 6%]

* What's cooking in git.git (Oct 2017, #07; Mon, 30)
@ 2017-10-30  6:19  6% Junio C Hamano
  0 siblings, 0 replies; 25+ results
From: Junio C Hamano @ 2017-10-30  6:19 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.  The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[New Topics]

* bw/diff-opt-impl-to-bitfields (2017-10-29) 3 commits
 - diff: convert flags to be stored in bitfields
 - reset: use DIFF_OPT_SET macro to set a diff flag
 - add: use DIFF_OPT_SET macro to set a diff flag

 A single-word "unsigned flags" in the diff options is being split
 into a structure with many bitfields.


* mh/tidy-ref-update-flags (2017-10-28) 8 commits
 - refs: rename constant `REF_ISPRUNING` to `REF_IS_PRUNING`
 - refs: rename constant `REF_NODEREF` to `REF_NO_DEREF`
 - refs: tidy up and adjust visibility of the `ref_update` flags
 - ref_transaction_add_update(): remove a check
 - ref_transaction_update(): die on disallowed flags
 - prune_ref(): call `ref_transaction_add_update()` directly
 - files_transaction_prepare(): don't leak flags to packed transaction
 - Merge branch 'bc/object-id' into base
 (this branch uses bc/object-id.)

 Code clean-up in refs API implementation.


* ao/diff-populate-filespec-lstat-errorpath-fix (2017-10-29) 1 commit
 - diff: fix lstat() error handling in diff_populate_filespec()

 After an error from lstat(), diff_populate_filespec() function
 sometimes still went ahead and used invalid data in struct stat,
 which has been fixed.


* av/fsmonitor (2017-10-30) 5 commits
 - SQUASH???
 - fsmonitor: delay updating state until after split index is merged
 - fsmonitor: document GIT_TRACE_FSMONITOR
 - fsmonitor: don't bother pretty-printing JSON from watchman
 - fsmonitor: set the PWD to the top of the working tree
 (this branch uses bp/fsmonitor.)

 Various fixes to bp/fsmonitor topic.

 What's the status of this one?  I recall that I saw Dscho's "looks
 good" respose to the cover letter, and Ben sounded positive on most
 of the patches in the previous series.  Except for the SQUASH??? I
 had to add to squelch compiler warnings, is this good to go?


* bc/submitting-patches-in-asciidoc (2017-10-30) 2 commits
 - Documentation: convert SubmittingPatches to AsciiDoc
 - Documentation: enable compat-mode for Asciidoctor

 The SubmittingPatches document has been converted to produce an
 HTML version via AsciiDoc/Asciidoctor.


* pb/bisect-helper-2 (2017-10-28) 8 commits
 - t6030: make various test to pass GETTEXT_POISON tests
 - bisect--helper: `bisect_start` shell function partially in C
 - bisect--helper: `get_terms` & `bisect_terms` shell function in C
 - bisect--helper: `bisect_next_check` shell function in C
 - bisect--helper: `check_and_set_terms` shell function in C
 - wrapper: move is_empty_file() and rename it as is_empty_or_missing_file()
 - bisect--helper: `bisect_write` shell function in C
 - bisect--helper: `bisect_reset` shell function in C
 (this branch uses pb/bisect-helper.)

--------------------------------------------------
[Graduated to "master"]

* ao/path-use-xmalloc (2017-10-25) 1 commit
  (merged to 'next' on 2017-10-26 at 4cc04083fb)
 + path.c: use xmalloc() in add_to_trie()

 A possible oom error is now caught as a fatal error, instead of
 continuing and dereferencing NULL.


* np/config-path-doc (2017-10-19) 1 commit
  (merged to 'next' on 2017-10-26 at c17a3daafc)
 + config doc: clarify "git config --path" example

 Doc update.


* sb/rev-parse-show-superproject-root (2017-10-27) 1 commit
  (merged to 'next' on 2017-10-27 at f9a0520cec)
 + docs: fix formatting of rev-parse's --show-superproject-working-tree

 Doc markup fix.


* sg/rev-list-doc-reorder-fix (2017-10-27) 1 commit
  (merged to 'next' on 2017-10-27 at caf49859d7)
 + rev-list-options.txt: use correct directional reference

 Doc flow fix.

--------------------------------------------------
[Stalled]

* mk/use-size-t-in-zlib (2017-08-10) 1 commit
 . zlib.c: use size_t for size

 The wrapper to call into zlib followed our long tradition to use
 "unsigned long" for sizes of regions in memory, which have been
 updated to use "size_t".

 Needs resurrecting by making sure the fix is good and still applies
 (or adjusted to today's codebase).


* mg/status-in-progress-info (2017-05-10) 2 commits
 - status --short --inprogress: spell it as --in-progress
 - status: show in-progress info for short status

 "git status" learns an option to report various operations
 (e.g. "merging") that the user is in the middle of.

 cf. <xmqqmvakcdqw.fsf@gitster.mtv.corp.google.com>


* nd/worktree-move (2017-04-20) 6 commits
 - worktree remove: new command
 - worktree move: refuse to move worktrees with submodules
 - worktree move: accept destination as directory
 - worktree move: new command
 - worktree.c: add update_worktree_location()
 - worktree.c: add validate_worktree()

 "git worktree" learned move and remove subcommands.

 Expecting a reroll.
 cf. <20170420101024.7593-1-pclouds@gmail.com>
 cf. <20170421145916.mknekgqzhxffu7di@sigill.intra.peff.net>
 cf. <d0e81b1e-5869-299e-f462-4d43dc997bd1@ramsayjones.plus.com>

--------------------------------------------------
[Cooking]

* js/submodule-in-excluded (2017-10-26) 1 commit
  (merged to 'next' on 2017-10-26 at 2a262e6a0b)
 + status: do not get confused by submodules in excluded directories

 "git status --ignored -u" did not stop at a working tree of a
 separate project that is embedded in an ignored directory and
 listed files in that other project, instead of just showing the
 directory itself as ignored.

 Will cook in 'next'.


* tb/complete-checkout (2017-10-25) 1 commit
  (merged to 'next' on 2017-10-26 at beeaf5b00c)
 + completion: add remaining flags to checkout

 Command line completion (in contrib/) update.

 Will cook in 'next'.


* jc/ignore-cr-at-eol (2017-10-27) 2 commits
 - diff: --ignore-cr-at-eol
 - xdiff: reassign xpparm_t.flags bits

 The "diff" family of commands learned to ignore differences in
 carriage return at the end of line.

 Just a lunch-time hack.
 Lacks tests, docs and proper log message.


* sb/diff-color-moved-use-xdl-recmatch (2017-10-26) 2 commits
  (merged to 'next' on 2017-10-26 at 6711f24498)
 + diff.c: get rid of duplicate implementation
 + xdiff-interface: export comparing and hashing strings
 (this branch uses jk/diff-color-moved-fix.)

 Instead of using custom line comparison and hashing functions to
 implement "moved lines" coloring in the diff output, use the pair
 of these functions from lower-layer xdiff/ code.

 Will cook in 'next'.


* jh/dir-add-exclude-from-blob (2017-10-27) 1 commit
 - dir: allow exclusions from blob in addition to file

 The code to read exclusion list from a blob, which is used when the
 .gitignore file is outside a sparse checkout area, has been
 refactored so that other codepath can later use it to do the same
 outside the context of "sparse checkout".


* mh/avoid-rewriting-packed-refs (2017-10-30) 2 commits
 - files-backend: don't rewrite the `packed-refs` file unnecessarily
 - t1409: check that `packed-refs` is not rewritten unnecessarily

 Recent update to the refs infrastructure implementation started
 rewriting packed-refs file more often than before; this has been
 optimized again for most trivial cases.


* cc/git-packet-pm (2017-10-30) 7 commits
 - fixup! Git/Packet.pm: extract parts of t0021/rot13-filter.pl for reuse
 - Git/Packet.pm: extract parts of t0021/rot13-filter.pl for reuse
 - t0021/rot13-filter: add capability functions
 - t0021/rot13-filter: add packet_initialize()
 - t0021/rot13-filter: improve error message
 - t0021/rot13-filter: improve 'if .. elsif .. else' style
 - t0021/rot13-filter: refactor packet reading functions

 Parts of a test to drive the long-running content filter interface
 has been split into its own module, hopefully to eventually become
 reusable.

 Expecting a reroll.
 The original unfortunately is quite broken in error detection
 cases to make the result sub-par as a standalone module before it
 gets fixed.


* jk/diff-color-moved-fix (2017-10-21) 5 commits
  (merged to 'next' on 2017-10-26 at eb580e4c8c)
 + diff: handle NULs in get_string_hash()
 + diff: fix whitespace-skipping with --color-moved
 + t4015: test the output of "diff --color-moved -b"
 + t4015: check "negative" case for "-w --color-moved"
 + t4015: refactor --color-moved whitespace test
 (this branch is used by sb/diff-color-moved-use-xdl-recmatch.)

 The experimental "color moved lines differently in diff output"
 feature was buggy around "ignore whitespace changes" edges, whihch
 has been corrected.

 Will cook in 'next'.
 Most of the fixes to the incorrectly implemented custom helpers
 will go away with sb/diff-color-moved-use-xdl-recmatch topic.


* jk/misc-resolve-ref-unsafe-fixes (2017-10-21) 4 commits
  (merged to 'next' on 2017-10-26 at c327b2ec2f)
 + worktree: handle broken symrefs in find_shared_symref()
 + log: handle broken HEAD in decoration check
 + remote: handle broken symrefs
 + test-ref-store: avoid passing NULL to printf

 Some codepaths did not check for errors when asking what branch the
 HEAD points at, which have been fixed.

 Will cook in 'next'.


* ao/check-resolve-ref-unsafe-result (2017-10-21) 1 commit
  (merged to 'next' on 2017-10-26 at 84302ab59a)
 + commit: check result of resolve_ref_unsafe

 "git commit", after making a commit, did not check for errors when
 asking on what branch it made the commit, which has been correted.

 Will cook in 'next'.


* jm/status-ignored-files-list (2017-10-24) 4 commits
  (merged to 'next' on 2017-10-26 at 5df1e2354f)
 + status: test ignored modes
 + status: document options to show matching ignored files
 + status: report matching ignored and normal untracked
 + status: add option to show ignored files differently

 The set of paths output from "git status --ignored" was tied
 closely with its "--untracked=<mode>" option, but now it can be
 controlled more flexibly.  Most notably, a directory that is
 ignored because it is listed to be ignored in the ignore/exclude
 mechanism can be handled differently from a directory that ends up
 to be ignored only because all files in it are ignored.

 Will cook in 'next'.


* mp/push-pushoption-config (2017-10-24) 1 commit
  (merged to 'next' on 2017-10-26 at 2c72164d12)
 + builtin/push.c: add push.pushOption config

 The "--push-option=<string>" option to "git push" now defaults to a
 list of strings configured via push.pushOption variable.

 Will cook in 'next'.


* gc/gitweb-filetest-acl (2017-10-24) 1 commit
  (merged to 'next' on 2017-10-26 at 5b490f53bf)
 + gitweb: use filetest to allow ACLs

 "gitweb" checks if a directory is searchable with Perl's "-x"
 operator, which can be enhanced by using "filetest 'access'"
 pragma, which now we do.

 Will cook in 'next'.


* jn/ssh-wrappers (2017-10-30) 6 commits
 - fixup! ssh: 'auto' variant to select between 'ssh' and 'simple'
 - ssh: 'simple' variant does not support --port
 - ssh: 'simple' variant does not support -4/-6
 - ssh: 'auto' variant to select between 'ssh' and 'simple'
 - connect: split ssh command line options into separate function
 - connect: split git:// setup into a separate function
 (this branch uses bw/protocol-v1.)

 The ssh-variant 'simple' introduced earlier broke existing
 installations by not passing --port/-4/-6 and not diagnosing an
 attempt to pass these as an error.  Instead, default to
 automatically detect how compatible the GIT_SSH/GIT_SSH_COMMAND is
 to OpenSSH convention and then error out an invocation to make it
 easier to diagnose connection errors.

 Expecting a reroll.
 cf. <20171025163243.xmm7szrkwgblpgcc@aiede.mtv.corp.google.com>


* tg/deprecate-stash-save (2017-10-27) 3 commits
  (merged to 'next' on 2017-10-27 at 73b1edb73b)
 + stash: remove now superfluos help for "stash push"
 + stash: mark "git stash save" deprecated in the man page
 + stash: replace "git stash save" with "git stash push" in the documentation

 "git stash save" has been deprecated in favour of "git stash push".

 Will cook in 'next'.


* jc/check-ref-format-oor (2017-10-18) 3 commits
  (merged to 'next' on 2017-10-18 at 8b17566c80)
 + check-ref-format doc: --branch validates and expands <branch>
 + check-ref-format --branch: strip refs/heads/ using skip_prefix
 + check-ref-format --branch: do not expand @{...} outside repository

 "git check-ref-format --branch @{-1}" bit a "BUG()" when run
 outside a repository for obvious reasons; clarify the documentation
 and make sure we do not even try to expand the at-mark magic in
 such a case, but still call the validation logic for branch names.

 Will cook in 'next'.


* kd/auto-col-with-pager-fix (2017-10-24) 2 commits
  (merged to 'next' on 2017-10-24 at ef3ff0f14b)
 + column: do not include pager.c
  (merged to 'next' on 2017-10-18 at fe89ff7e83)
 + column: show auto columns when pager is active

 "auto" as a value for the columnar output configuration ought to
 judge "is the output consumed by humans?" with the same criteria as
 "auto" for coloured output configuration, i.e. either the standard
 output stream is going to tty, or a pager is in use.  We forgot the
 latter, which has been fixed.

 Will cook in 'next'.


* jc/t5601-copy-workaround (2017-10-17) 1 commit
  (merged to 'next' on 2017-10-18 at ea1e133968)
 + t5601: rm the target file of cp that could still be executing

 A (possibly flakey) test fix.

 Will cook in 'next'.


* jc/branch-name-sanity (2017-10-14) 3 commits
  (merged to 'next' on 2017-10-16 at 174646d1c3)
 + branch: forbid refs/heads/HEAD
 + branch: split validate_new_branchname() into two
 + branch: streamline "attr_only" handling in validate_new_branchname()

 "git branch" and "git checkout -b" are now forbidden from creating
 a branch whose name is "HEAD".

 Will cook in 'next'.


* jk/revision-pruning-optim (2017-10-14) 1 commit
  (merged to 'next' on 2017-10-16 at 2662baa21d)
 + revision: quit pruning diff more quickly when possible

 Pathspec-limited revision traversal was taught not to keep finding
 unneeded differences once it knows two trees are different inside
 given pathspec.

 Will cook in 'next'.


* wk/pull-signoff (2017-10-13) 1 commit
  (merged to 'next' on 2017-10-16 at 5e48f349d9)
 + pull: pass --signoff/--no-signoff to "git merge"

 "git pull" has been taught to accept "--[no-]signoff" option and
 pass it down to "git merge".

 Will cook in 'next'.


* dm/run-command-ignored-hook-advise (2017-10-10) 1 commit
  (merged to 'next' on 2017-10-10 at 0827814922)
 + run-command: add hint when a hook is ignored

 A hook script that is set unexecutable is simply ignored.  Git
 notifies when such a file is ignored, unless the message is
 squelched via advice.ignoredHook configuration.

 Will cook in 'next'.


* hv/fetch-moved-submodules-on-demand (2017-10-17) 3 commits
  (merged to 'next' on 2017-10-26 at c446ea3e9a)
 + submodule: simplify decision tree whether to or not to fetch
 + implement fetching of moved submodules
 + fetch: add test to make sure we stay backwards compatible

 "git fetch --recurse-submodules" now knows that submodules can be
 moved around in the superproject in addition to getting updated,
 and finds the ones that need to be fetched accordingly.

 Will cook in 'next'.


* js/for-each-ref-remote-name-and-ref (2017-10-11) 3 commits
 - for-each-ref: test :remotename and :remoteref
 - for-each-ref: let upstream/push optionally report the remote ref name
 - for-each-ref: let upstream/push optionally report the remote name

 The "--format=..." option "git for-each-ref" takes learned to show
 the name of the 'remote' repository and the ref at the remote side
 that is affected for 'upstream' and 'push' via "%(push:remotename)"
 and friends.

 Needs a bit more work on the documentation part.


* pb/bisect-helper (2017-10-06) 6 commits
  (merged to 'next' on 2017-10-13 at ffc9aefe63)
 + bisect--helper: `is_expected_rev` & `check_expected_revs` shell function in C
 + t6030: explicitly test for bisection cleanup
 + bisect--helper: `bisect_clean_state` shell function in C
 + bisect--helper: `write_terms` shell function in C
 + bisect--helper: rewrite `check_term_format` shell function in C
 + bisect--helper: use OPT_CMDMODE instead of OPT_BOOL
 (this branch is used by pb/bisect-helper-2.)

 An early part of piece-by-piece rewrite of "git bisect".

 Will cook in 'next'.


* bc/object-id (2017-10-16) 25 commits
  (merged to 'next' on 2017-10-18 at ef8aa2698d)
 + refs/files-backend: convert static functions to object_id
 + refs: convert read_raw_ref backends to struct object_id
 + refs: convert peel_object to struct object_id
 + refs: convert resolve_ref_unsafe to struct object_id
 + worktree: convert struct worktree to object_id
 + refs: convert resolve_gitlink_ref to struct object_id
 + Convert remaining callers of resolve_gitlink_ref to object_id
 + sha1_file: convert index_path and index_fd to struct object_id
 + refs: convert reflog_expire parameter to struct object_id
 + refs: convert read_ref_at to struct object_id
 + refs: convert peel_ref to struct object_id
 + builtin/pack-objects: convert to struct object_id
 + pack-bitmap: convert traverse_bitmap_commit_list to object_id
 + refs: convert dwim_log to struct object_id
 + builtin/reflog: convert remaining unsigned char uses to object_id
 + refs: convert dwim_ref and expand_ref to struct object_id
 + refs: convert read_ref and read_ref_full to object_id
 + refs: convert resolve_refdup and refs_resolve_refdup to struct object_id
 + Convert check_connected to use struct object_id
 + refs: update ref transactions to use struct object_id
 + refs: prevent accidental NULL dereference in write_pseudoref
 + refs: convert update_ref and refs_update_ref to use struct object_id
 + refs: convert delete_ref and refs_delete_ref to struct object_id
 + refs/files-backend: convert struct ref_to_prune to object_id
 + walker: convert to struct object_id
 (this branch is used by mh/tidy-ref-update-flags.)

 Conversion from uchar[20] to struct object_id continues.

 Will cook in 'next'.


* jc/no-cmd-as-subroutine (2017-10-11) 2 commits
  (merged to 'next' on 2017-10-16 at 5f4ee919ac)
 + merge-ours: do not use cmd_*() as a subroutine
 + describe: do not use cmd_*() as a subroutine

 Calling cmd_foo() as if it is a general purpose helper function is
 a no-no.  Correct two instances of such to set an example.

 Will cook in 'next'.


* jc/merge-symlink-ours-theirs (2017-09-26) 1 commit
 - merge: teach -Xours/-Xtheirs to symbolic link merge

 "git merge -Xours/-Xtheirs" learned to use our/their version when
 resolving a conflicting updates to a symbolic link.

 Needs review.


* jt/partial-clone-lazy-fetch (2017-10-02) 18 commits
 - fetch-pack: restore save_commit_buffer after use
 - unpack-trees: batch fetching of missing blobs
 - clone: configure blobmaxbytes in created repos
 - clone: support excluding large blobs
 - fetch: support excluding large blobs
 - fetch: refactor calculation of remote list
 - fetch-pack: support excluding large blobs
 - pack-objects: support --blob-max-bytes
 - pack-objects: rename want_.* to ignore_.*
 - gc: do not repack promisor packfiles
 - rev-list: support termination at promisor objects
 - sha1_file: support lazily fetching missing objects
 - introduce fetch-object: fetch one promisor object
 - index-pack: refactor writing of .keep files
 - fsck: support promisor objects as CLI argument
 - fsck: support referenced promisor objects
 - fsck: support refs pointing to promisor objects
 - fsck: introduce partialclone extension

 A journey for "git clone" and "git fetch" to become "lazier" by
 depending more on its remote repository---this is the beginning of
 it.

 Expecting a reroll.
 cf. <CAGf8dgLu-TeK8KbHv-U+18O+L2TxKcGv5vFFHy38J6a_YXRfew@mail.gmail.com>


* ma/lockfile-fixes (2017-10-07) 12 commits
  (merged to 'next' on 2017-10-16 at 19fae5c138)
 + read_cache: roll back lock in `update_index_if_able()`
 + read-cache: leave lock in right state in `write_locked_index()`
 + read-cache: drop explicit `CLOSE_LOCK`-flag
 + cache.h: document `write_locked_index()`
 + apply: remove `newfd` from `struct apply_state`
 + apply: move lockfile into `apply_state`
 + cache-tree: simplify locking logic
 + checkout-index: simplify locking logic
 + tempfile: fix documentation on `delete_tempfile()`
 + lockfile: fix documentation on `close_lock_file_gently()`
 + treewide: prefer lockfiles on the stack
 + sha1_file: do not leak `lock_file`

 An earlier update made it possible to use an on-stack in-core
 lockfile structure (as opposed to having to deliberately leak an
 on-heap one).  Many codepaths have been updated to take advantage
 of this new facility.

 Will cook in 'next'.


* ot/mru-on-list (2017-10-01) 1 commit
  (merged to 'next' on 2017-10-07 at e6ad4a16a2)
 + mru: use double-linked list from list.h

 The first step to getting rid of mru API and using the
 doubly-linked list API directly instead.

 Will cook in 'next'.


* jm/svn-pushmergeinfo-fix (2017-09-17) 1 commit
 - git-svn: fix svn.pushmergeinfo handling of svn+ssh usernames.

 "git svn dcommit" did not take into account the fact that a
 svn+ssh:// URL with a username@ (typically used for pushing) refers
 to the same SVN repository without the username@ and failed when
 svn.pushmergeinfo option is set.

 Needs a test, perhaps as a follow-up patch.


* mg/merge-base-fork-point (2017-09-17) 3 commits
 - merge-base: find fork-point outside partial reflog
 - merge-base: return fork-point outside reflog
 - t6010: test actual test output

 "merge-base --fork-point $branch $commit" is used to guess on which
 commit among the commits that were once at the tip of the $branch the
 $commit was built on top of, and it learns these historical tips from
 the reflog of the $branch.  When the true fork-point is lost due to
 pruning of old reflog entries, the command does not give any output,
 because it has no way to guess correctly and does not want to mislead
 the user with a wrong guess.

 The command has been updated to give the best but not known to be
 correct guess, based on a hope that a merge-base between $commit and a
 virtual merge across all the reflog entries that still are available
 for $branch may still be a closer to the true fork-point than the
 merge-base between $commit and the current tip of the $branch.

 This may have to be offered by an additional option, to allow the
 users that are prepared to see a potentially incorrect guess to opt
 into the feature, without affecting the current callers that may not
 be prepared to accept a guess that is not known to be correct.

 What's the doneness of this one?


* ds/find-unique-abbrev-optim (2017-10-13) 4 commits
  (merged to 'next' on 2017-10-16 at 7f4479ac52)
 + sha1_name: minimize OID comparisons during disambiguation
 + sha1_name: parse less while finding common prefix
 + sha1_name: unroll len loop in find_unique_abbrev_r()
 + p4211-line-log.sh: add log --online --raw --parents perf test

 Optimize the code to find shortest unique prefix of object names.

 Will cook in 'next'.


* cc/perf-run-config (2017-09-24) 9 commits
 - perf: store subsection results in "test-results/$GIT_PERF_SUBSECTION/"
 - perf/run: show name of rev being built
 - perf/run: add run_subsection()
 - perf/run: update get_var_from_env_or_config() for subsections
 - perf/run: add get_subsections()
 - perf/run: add calls to get_var_from_env_or_config()
 - perf/run: add GIT_PERF_DIRS_OR_REVS
 - perf/run: add get_var_from_env_or_config()
 - perf/run: add '--config' option to the 'run' script

 Needs review.


* bp/fsmonitor (2017-10-05) 15 commits
  (merged to 'next' on 2017-10-05 at 964a029d13)
 + fsmonitor: preserve utf8 filenames in fsmonitor-watchman log
 + fsmonitor: read entirety of watchman output
 + fsmonitor: MINGW support for watchman integration
  (merged to 'next' on 2017-10-02 at cf0c67979c)
 + fsmonitor: add a performance test
 + fsmonitor: add a sample integration script for Watchman
 + fsmonitor: add test cases for fsmonitor extension
 + split-index: disable the fsmonitor extension when running the split index test
 + fsmonitor: add a test tool to dump the index extension
 + update-index: add fsmonitor support to update-index
 + ls-files: Add support in ls-files to display the fsmonitor valid bit
 + fsmonitor: add documentation for the fsmonitor extension.
 + fsmonitor: teach git to optionally utilize a file system monitor to speed up detecting new or changed files.
 + update-index: add a new --force-write-index option
 + preload-index: add override to enable testing preload-index
 + bswap: add 64 bit endianness helper get_be64
 (this branch is used by av/fsmonitor.)

 We learned to talk to watchman to speed up "git status" and other
 operations that need to see which paths have been modified.

 Will cook in 'next'.


* bw/protocol-v1 (2017-10-17) 11 commits
  (merged to 'next' on 2017-10-18 at 835fe09e50)
 + Documentation: document Extra Parameters
 + ssh: introduce a 'simple' ssh variant
 + i5700: add interop test for protocol transition
 + http: tell server that the client understands v1
 + connect: tell server that the client understands v1
 + connect: teach client to recognize v1 server response
 + upload-pack, receive-pack: introduce protocol version 1
 + daemon: recognize hidden request arguments
 + protocol: introduce protocol extension mechanisms
 + pkt-line: add packet_write function
 + connect: in ref advertisement, shallows are last
 (this branch is used by jn/ssh-wrappers.)

 A new mechanism to upgrade the wire protocol in place is proposed
 and demonstrated that it works with the older versions of Git
 without harming them.

 Will cook in 'next'.


* pc/submodule-helper (2017-10-07) 3 commits
  (merged to 'next' on 2017-10-16 at 2b38de12cc)
 + submodule: port submodule subcommand 'status' from shell to C
 + submodule--helper: introduce for_each_listed_submodule()
 + submodule--helper: introduce get_submodule_displaypath()

 GSoC.
 Will cook in 'next'.


* bc/hash-algo (2017-10-30) 4 commits
 - Switch empty tree and blob lookups to use hash abstraction
 - Integrate hash algorithm support with repo setup
 - Add structure representing hash algorithm
 - setup: expose enumerated repo info

 An infrastructure to define what hash function is used in Git is
 introduced, and an effort to plumb that throughout various
 codepaths has been started.

 cf. <20171028181239.59458-1-sandals@crustytoothpaste.net>


* jk/drop-ancient-curl (2017-08-09) 5 commits
 - http: #error on too-old curl
 - curl: remove ifdef'd code never used with curl >=7.19.4
 - http: drop support for curl < 7.19.4
 - http: drop support for curl < 7.16.0
 - http: drop support for curl < 7.11.1

 Some code in http.c that has bitrot is being removed.

 Will be rerolled after tc/curl-with-backports stabilizes.


* sb/submodule-recursive-checkout-detach-head (2017-07-28) 2 commits
  (merged to 'next' on 2017-10-26 at 30994b4c76)
 + Documentation/checkout: clarify submodule HEADs to be detached
 + recursive submodules: detach HEAD from new state

 "git checkout --recursive" may overwrite and rewind the history of
 the branch that happens to be checked out in submodule
 repositories, which might not be desirable.  Detach the HEAD but
 still allow the recursive checkout to succeed in such a case.

 Undecided.
 This needs justification in a larger picture; it is unclear why
 this is better than rejecting recursive checkout, for example.


* ex/deprecate-empty-pathspec-as-match-all (2017-06-23) 2 commits
  (merged to 'next' on 2017-08-14 at 24db08a6e8)
 + pathspec: die on empty strings as pathspec
 + t0027: do not use an empty string as a pathspec element

 The final step to make an empty string as a pathspec element
 illegal.  We started this by first deprecating and warning a
 pathspec that has such an element in 2.11 (Nov 2016).

 Hopefully we can merge this down to the 'master' by the end of the
 year?  A deprecation warning period that is about 1 year does not
 sound too bad.

 Will cook in 'next'.
 As the draft RelNotes says, let's merge this to 'master' after
 this release cycle.

--------------------------------------------------
[Discarded]

* jk/ui-color-always-to-auto-maint (2017-10-13) 2 commits
  (merged to 'next' on 2017-10-13 at bb16e1edc8)
 + color: document that "git -c color.*=always" is a bit special
 + color: downgrade "always" to "auto" only for on-disk configuration

 It turns out that "git -c color.ui=always cmd" is relied on by many
 third-party tools as a way to force coloured output no matter what
 the end-user configuration is, and a recent attempt to downgrade
 'always' to 'auto' to fix the regression to "git add -p" broke it.

 This has been reverted from 'next'.

^ permalink raw reply	[relevance 6%]

* What's cooking in git.git (Aug 2017, #07; Sat, 26)
@ 2017-08-27  6:38  6% Junio C Hamano
  0 siblings, 0 replies; 25+ results
From: Junio C Hamano @ 2017-08-27  6:38 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.  The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.

As I am preparing to go offline next week for about a week, a
handful of topics have been merged to 'master' and 'next' is getting
thinner.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[Graduated to "master"]

* bc/vcs-svn-cleanup (2017-08-20) 2 commits
  (merged to 'next' on 2017-08-22 at d8494b5d5b)
 + vcs-svn: rename repo functions to "svn_repo"
 + vcs-svn: remove unused prototypes
 (this branch is used by bc/hash-algo and jn/vcs-svn-cleanup.)

 Code clean-up.


* bw/submodule-config-cleanup (2017-08-03) 17 commits
  (merged to 'next' on 2017-08-24 at e35d58c4c6)
 + submodule: remove gitmodules_config
 + unpack-trees: improve loading of .gitmodules
 + submodule-config: lazy-load a repository's .gitmodules file
 + submodule-config: move submodule-config functions to submodule-config.c
 + submodule-config: remove support for overlaying repository config
 + diff: stop allowing diff to have submodules configured in .git/config
 + submodule: remove submodule_config callback routine
 + unpack-trees: don't respect submodule.update
 + submodule: don't rely on overlayed config when setting diffopts
 + fetch: don't overlay config with submodule-config
 + submodule--helper: don't overlay config in update-clone
 + submodule--helper: don't overlay config in remote_submodule_branch
 + add, reset: ensure submodules can be added or reset
 + submodule: don't use submodule_from_name
 + t7411: check configuration parsing errors
 + Merge branch 'bc/object-id' into bw/submodule-config-cleanup
 + Merge branch 'bw/grep-recurse-submodules' into bw/submodule-config-cleanup

 Code clean-up to avoid mixing values read from the .gitmodules file
 and values read from the .git/config file.
 So, after the recent discussion around submodule.<name>.update (and
 its resolution "use submodule.<name>.active; "reset --hard" must
 ignore the .update thing"), this is now good to go, I presume?
 Please yell at me that I am clueless if that is not the case ;-)


* jc/cutoff-config (2017-08-22) 6 commits
  (merged to 'next' on 2017-08-24 at 2dcbf9ae04)
 + rerere: allow approxidate in gc.rerereResolved/gc.rerereUnresolved
 + rerere: represent time duration in timestamp_t internally
 + t4200: parameterize "rerere gc" custom expiry test
 + t4200: gather "rerere gc" together
 + t4200: make "rerere gc" test more robust
 + t4200: give us a clean slate after "rerere gc" tests

 "[gc] rerereResolved = 5.days" used to be invalid, as the variable
 is defined to take an integer counting the number of days.  It now
 is allowed.


* jk/trailers-parse (2017-08-20) 9 commits
  (merged to 'next' on 2017-08-22 at 2d4d937141)
 + doc/interpret-trailers: fix "the this" typo
  (merged to 'next' on 2017-08-19 at faa63f8196)
 + pretty: support normalization options for %(trailers)
 + t4205: refactor %(trailers) tests
 + pretty: move trailer formatting to trailer.c
 + interpret-trailers: add --parse convenience option
 + interpret-trailers: add an option to unfold values
 + interpret-trailers: add an option to show only existing trailers
 + interpret-trailers: add an option to show only the trailers
 + trailer: put process_trailers() options into a struct

 "git interpret-trailers" has been taught a "--parse" and a few
 other options to make it easier for scripts to grab existing
 trailer lines from a commit log message.
 Possible leftover bits are mentioned in
 cf. <20170820094009.z23wclpku35txflg@sigill.intra.peff.net>


* jn/vcs-svn-cleanup (2017-08-23) 4 commits
  (merged to 'next' on 2017-08-24 at c184f08f5f)
 + vcs-svn: move remaining repo_tree functions to fast_export.h
 + vcs-svn: remove repo_delete wrapper function
 + vcs-svn: remove custom mode constants
 + vcs-svn: remove more unused prototypes and declarations
 (this branch uses bc/vcs-svn-cleanup; is tangled with bc/hash-algo.)

 Code clean-up.


* js/gitweb-raw-blob-link-in-history (2017-08-22) 1 commit
  (merged to 'next' on 2017-08-23 at 16258266e2)
 + gitweb: add 'raw' blob_plain link in history overview

 "gitweb" shows a link to visit the 'raw' contents of blbos in the
 history overview page.


* jt/diff-color-move-fix (2017-08-16) 3 commits
  (merged to 'next' on 2017-08-19 at 6ae3831c8c)
 + diff: define block by number of alphanumeric chars
 + diff: respect MIN_BLOCK_LENGTH for last block
 + diff: avoid redundantly clearing a flag
 (this branch uses sb/diff-color-move.)

 A handful of bugfixes and an improvement to "diff --color-moved".


* jt/doc-pack-objects-fix (2017-08-23) 1 commit
  (merged to 'next' on 2017-08-24 at 7e4c3c0c9f)
 + Doc: clarify that pack-objects makes packs, plural

 Doc updates.


* jt/packmigrate (2017-08-23) 23 commits
  (merged to 'next' on 2017-08-24 at 34a628ae6c)
 + pack: move for_each_packed_object()
 + pack: move has_pack_index()
 + pack: move has_sha1_pack()
 + pack: move find_pack_entry() and make it global
 + pack: move find_sha1_pack()
 + pack: move find_pack_entry_one(), is_pack_valid()
 + pack: move check_pack_index_ptr(), nth_packed_object_offset()
 + pack: move nth_packed_object_{sha1,oid}
 + pack: move clear_delta_base_cache(), packed_object_info(), unpack_entry()
 + pack: move unpack_object_header()
 + pack: move get_size_from_delta()
 + pack: move unpack_object_header_buffer()
 + pack: move {,re}prepare_packed_git and approximate_object_count
 + pack: move install_packed_git()
 + pack: move add_packed_git()
 + pack: move unuse_pack()
 + pack: move use_pack()
 + pack: move pack-closing functions
 + pack: move release_pack_memory()
 + pack: move open_pack_index(), parse_pack_index()
 + pack: move pack_report()
 + pack: move static state variables
 + pack: move pack name-related functions

 Code movement to make it easier to hack later.


* jt/stash-tests (2017-08-19) 3 commits
  (merged to 'next' on 2017-08-22 at 0b022697aa)
 + stash: add a test for stashing in a detached state
 + stash: add a test for when apply fails during stash branch
 + stash: add a test for stash create with no files

 Test update to improve coverage for "git stash" operations.


* kw/write-index-reduce-alloc (2017-08-21) 3 commits
  (merged to 'next' on 2017-08-24 at 29f7daad85)
 + read-cache: avoid allocating every ondisk entry when writing
 + read-cache: fix memory leak in do_write_index
 + perf: add test for writing the index

 We used to spend more than necessary cycles allocating and freeing
 piece of memory while writing each index entry out.  This has been
 optimized.


* mg/killed-merge (2017-08-23) 4 commits
  (merged to 'next' on 2017-08-24 at 5db37fc192)
 + merge: save merge state earlier
 + merge: split write_merge_state in two
 + merge: clarify call chain
 + Documentation/git-merge: explain --continue

 Killing "git merge --edit" before the editor returns control left
 the repository in a state with MERGE_MSG but without MERGE_HEAD,
 which incorrectly tells the subsequent "git commit" that there was
 a squash merge in progress.  This has been fixed.


* mh/ref-lock-entry (2017-08-23) 1 commit
  (merged to 'next' on 2017-08-24 at 67760267f4)
 + refs: retry acquiring reference locks for 100ms

 The code to acquire a lock on a reference (e.g. while accepting a
 push from a client) used to immediately fail when the reference is
 already locked---now it waits for a very short while and retries,
 which can make it succeed if the lock holder was holding it during
 a read-only operation.


* pb/trailers-from-command-line (2017-08-14) 4 commits
  (merged to 'next' on 2017-08-19 at b12342e49e)
 + interpret-trailers: fix documentation typo
 + interpret-trailers: add options for actions
 + trailers: introduce struct new_trailer_item
 + trailers: export action enums and corresponding lookup functions

 "git interpret-trailers" learned to take the trailer specifications
 from the command line that overrides the configured values.


* po/object-id (2017-08-20) 6 commits
  (merged to 'next' on 2017-08-23 at 0faff383a8)
 + sha1_file: convert index_stream to struct object_id
 + sha1_file: convert hash_sha1_file_literally to struct object_id
 + sha1_file: convert index_fd to struct object_id
 + sha1_file: convert index_path to struct object_id
 + read-cache: convert to struct object_id
 + builtin/hash-object: convert to struct object_id

 Conversion from uchar[20] to struct object_id continues.


* sb/diff-color-move (2017-06-30) 26 commits
  (merged to 'next' on 2017-08-19 at a239d031bc)
 + diff: document the new --color-moved setting
 + diff.c: add dimming to moved line detection
 + diff.c: color moved lines differently, plain mode
 + diff.c: color moved lines differently
 + diff.c: buffer all output if asked to
 + diff.c: emit_diff_symbol learns about DIFF_SYMBOL_SUMMARY
 + diff.c: emit_diff_symbol learns about DIFF_SYMBOL_STAT_SEP
 + diff.c: convert word diffing to use emit_diff_symbol
 + diff.c: convert show_stats to use emit_diff_symbol
 + diff.c: convert emit_binary_diff_body to use emit_diff_symbol
 + submodule.c: migrate diff output to use emit_diff_symbol
 + diff.c: emit_diff_symbol learns DIFF_SYMBOL_REWRITE_DIFF
 + diff.c: emit_diff_symbol learns about DIFF_SYMBOL_BINARY_FILES
 + diff.c: emit_diff_symbol learns DIFF_SYMBOL_HEADER
 + diff.c: emit_diff_symbol learns DIFF_SYMBOL_FILEPAIR_{PLUS, MINUS}
 + diff.c: emit_diff_symbol learns DIFF_SYMBOL_CONTEXT_INCOMPLETE
 + diff.c: emit_diff_symbol learns DIFF_SYMBOL_WORDS[_PORCELAIN]
 + diff.c: migrate emit_line_checked to use emit_diff_symbol
 + diff.c: emit_diff_symbol learns DIFF_SYMBOL_NO_LF_EOF
 + diff.c: emit_diff_symbol learns DIFF_SYMBOL_CONTEXT_FRAGINFO
 + diff.c: emit_diff_symbol learns DIFF_SYMBOL_CONTEXT_MARKER
 + diff.c: introduce emit_diff_symbol
 + diff.c: factor out diff_flush_patch_all_file_pairs
 + diff.c: move line ending check into emit_hunk_header
 + diff.c: readability fix
 + Merge branch 'sb/hashmap-customize-comparison' into sb/diff-color-move
 (this branch is used by jt/diff-color-move-fix.)

 "git diff" has been taught to optionally paint new lines that are
 the same as deleted lines elsewhere differently from genuinely new
 lines.


* tb/apply-with-crlf (2017-08-19) 2 commits
  (merged to 'next' on 2017-08-22 at f92bf67061)
 + apply: file commited with CRLF should roundtrip diff and apply
 + convert: add SAFE_CRLF_KEEP_CRLF
 (this branch is tangled with jc/apply-with-crlf.)

 "git apply" that is used as a better "patch -p1" failed to apply a
 taken from a file with CRLF line endings to a file with CRLF line
 endings.  The root cause was because it misused convert_to_git()
 that tried to do "safe-crlf" processing by looking at the index
 entry at the same path, which is a nonsense---in that mode, "apply"
 is not working on the data in (or derived from) the index at all.
 This has been fixed.

--------------------------------------------------
[New Topics]

* jk/drop-sha1-entry-pos (2017-08-25) 1 commit
  (merged to 'next' on 2017-08-25 at 7ef03bb281)
 + sha1-lookup: remove sha1_entry_pos() from header file

 Code clean-up.

 Will merge to 'master'.


* ls/convert-filter-progress (2017-08-24) 1 commit
  (merged to 'next' on 2017-08-25 at ce0bb30e8f)
 + convert: display progress for filtered objects that have been delayed

 The codepath to call external process filter for smudge/clean
 operation learned to show the progress meter.

 Will merge to 'master'.


* mm/send-email-cc-cruft (2017-08-24) 2 commits
  (merged to 'next' on 2017-08-25 at 65933523ab)
 + send-email: don't use Mail::Address, even if available
 + send-email: fix garbage removal after address

 In addition to "cc: <a@dd.re.ss> # cruft", "cc: a@dd.re.ss # cruft"
 was taught to "git send-email" as a valid way to tell it that it
 needs to also send a carbon copy to <a@dd.re.ss> in the trailer
 section.

 Will merge to 'master'.


* nd/worktree-kill-parse-ref (2017-08-24) 1 commit
  (merged to 'next' on 2017-08-25 at a5da82b2ea)
 + branch: fix branch renaming not updating HEADs correctly

 "git branch -M a b" while on a branch that is completely unrelated
 to either branch a or branch b misbehaved when multiple worktree
 was in use.  This has been fixed.

 Will merge to 'master'.


* pc/submodule-helper (2017-08-25) 4 commits
 - submodule: port submodule subcommand 'status' from shell to C
 - submodule: port set_name_rev() from shell to C
 - submodule--helper: introduce for_each_listed_submodule()
 - submodule--helper: introduce get_submodule_displaypath()

 GSoC.


* sb/parse-options-blank-line-before-option-list (2017-08-25) 1 commit
 - usage_with_options: omit double new line on empty option list

 "git worktree" with no option and no subcommand showed too many
 blank lines in its help text, which has been reduced.


* rs/apply-epoch (2017-08-25) 2 commits
  (merged to 'next' on 2017-08-26 at c2bf5ceca3)
 + apply: remove epoch date from regex
 + apply: check date of potential epoch timestamps first

 Code simplification.

 Will merge to 'master'.


* mh/notes-cleanup (2017-08-26) 12 commits
  (merged to 'next' on 2017-08-26 at 2d6df46966)
 + load_subtree(): declare some variables to be `size_t`
 + hex_to_bytes(): simpler replacement for `get_oid_hex_segment()`
 + get_oid_hex_segment(): don't pad the rest of `oid`
 + load_subtree(): combine some common code
 + get_oid_hex_segment(): return 0 on success
 + load_subtree(): only consider blobs to be potential notes
 + load_subtree(): check earlier whether an internal node is a tree entry
 + load_subtree(): separate logic for internal vs. terminal entries
 + load_subtree(): fix incorrect comment
 + load_subtree(): reduce the scope of some local variables
 + load_subtree(): remove unnecessary conditional
 + notes: make GET_NIBBLE macro more robust

 Code clean-up.

 Will merge to 'master'.

--------------------------------------------------
[Stalled]

* mg/status-in-progress-info (2017-05-10) 2 commits
 - status --short --inprogress: spell it as --in-progress
 - status: show in-progress info for short status

 "git status" learns an option to report various operations
 (e.g. "merging") that the user is in the middle of.

 cf. <xmqqmvakcdqw.fsf@gitster.mtv.corp.google.com>


* nd/worktree-move (2017-04-20) 6 commits
 - worktree remove: new command
 - worktree move: refuse to move worktrees with submodules
 - worktree move: accept destination as directory
 - worktree move: new command
 - worktree.c: add update_worktree_location()
 - worktree.c: add validate_worktree()

 "git worktree" learned move and remove subcommands.

 Expecting a reroll.
 cf. <20170420101024.7593-1-pclouds@gmail.com>
 cf. <20170421145916.mknekgqzhxffu7di@sigill.intra.peff.net>
 cf. <d0e81b1e-5869-299e-f462-4d43dc997bd1@ramsayjones.plus.com>


* sg/clone-refspec-from-command-line-config (2017-06-16) 2 commits
 - Documentation/clone: document ignored configuration variables
 - clone: respect additional configured fetch refspecs during initial fetch
 (this branch is used by sg/remote-no-string-refspecs.)

 "git clone -c var=val" is a way to set configuration variables in
 the resulting repository, but it is more useful to also make these
 variables take effect while the initial clone is happening,
 e.g. these configuration variables could be fetch refspecs.

 Waiting for a response.
 cf. <20170617112228.vugswym4o4owf6wj@sigill.intra.peff.net>
 cf. <xmqqmv8zhdap.fsf@gitster.mtv.corp.google.com>


* js/rebase-i-final (2017-07-27) 10 commits
 - rebase -i: rearrange fixup/squash lines using the rebase--helper
 - t3415: test fixup with wrapped oneline
 - rebase -i: skip unnecessary picks using the rebase--helper
 - rebase -i: check for missing commits in the rebase--helper
 - t3404: relax rebase.missingCommitsCheck tests
 - rebase -i: also expand/collapse the SHA-1s via the rebase--helper
 - rebase -i: do not invent onelines when expanding/collapsing SHA-1s
 - rebase -i: remove useless indentation
 - rebase -i: generate the script via rebase--helper
 - t3415: verify that an empty instructionFormat is handled as before

 The final batch to "git rebase -i" updates to move more code from
 the shell script to C.

 Expecting a reroll.


* bp/fsmonitor (2017-06-12) 6 commits
 - fsmonitor: add a sample query-fsmonitor hook script for Watchman
 - fsmonitor: add documentation for the fsmonitor extension.
 - fsmonitor: add test cases for fsmonitor extension
 - fsmonitor: teach git to optionally utilize a file system monitor to speed up detecting new or changed files.
 - dir: make lookup_untracked() available outside of dir.c
 - bswap: add 64 bit endianness helper get_be64

 We learned to talk to watchman to speed up "git status".

 Expecting a reroll.
 cf. <bade1166-e646-b05a-f65b-adb8da8ba0a7@gmail.com>

--------------------------------------------------
[Cooking]

* nd/prune-in-worktree (2017-08-24) 16 commits
 - refs.c: reindent get_submodule_ref_store()
 - refs.c: remove fallback-to-main-store code get_submodule_ref_store()
 - rev-list: expose and document --single-worktree
 - revision.c: --reflog add HEAD reflog from all worktrees
 - files-backend: make reflog iterator go through per-worktree reflog
 - revision.c: --all adds HEAD from all worktrees
 - refs: remove dead for_each_*_submodule()
 - refs.c: move for_each_remote_ref_submodule() to submodule.c
 - revision.c: use refs_for_each*() instead of for_each_*_submodule()
 - refs: add refs_head_ref()
 - refs: move submodule slash stripping code to get_submodule_ref_store
 - refs.c: refactor get_submodule_ref_store(), share common free block
 - revision.c: --indexed-objects add objects from all worktrees
 - revision.c: refactor add_index_objects_to_pending()
 - refs.c: use is_dir_sep() in resolve_gitlink_ref()
 - revision.h: new flag in struct rev_info wrt. worktree-related refs

 "git gc" and friends when multiple worktrees are used off of a
 single repository did not consider the index and per-worktree refs
 of other worktrees as the root for reachability traversal, making
 objects that are in use only in other worktrees to be subject to
 garbage collection.


* ma/ts-cleanups (2017-08-23) 4 commits
  (merged to 'next' on 2017-08-25 at e0e8cc53ec)
 + ThreadSanitizer: add suppressions
 + strbuf_setlen: don't write to strbuf_slopbuf
 + pack-objects: take lock before accessing `remaining`
 + convert: always initialize attr_action in convert_attrs

 Assorted bugfixes and clean-ups.

 Will merge to 'master'.


* ma/up-to-date (2017-08-23) 2 commits
  (merged to 'next' on 2017-08-25 at 902f6e9140)
 + treewide: correct several "up-to-date" to "up to date"
 + Documentation/user-manual: update outdated example output

 Message and doc updates.

 Will merge to 'master'.


* rs/archive-excluded-directory (2017-08-19) 3 commits
  (merged to 'next' on 2017-08-22 at 1853597c35)
 + archive: don't queue excluded directories
 + archive: factor out helper functions for handling attributes
 + t5001: add tests for export-ignore attributes and exclude pathspecs

 "git archive" did not work well with pathspecs and the
 export-ignore attribute.

 Will merge to 'master'.

 We may want to resurrect the "we don't archive an empty directory"
 bonus patch, but I do not mind merging the above early to 'next'
 and leave it as a separate follow-up enhancement.
 cf. <20170820090629.tumvqwzkromcykjf@sigill.intra.peff.net>


* bc/hash-algo (2017-08-20) 5 commits
 - hash-algo: switch empty tree and blob lookups to use hash abstraction
 - hash-algo: integrate hash algorithm support with repo setup
 - hash-algo: add structure representing hash algorithm
 - setup: expose enumerated repo info
 - Merge branch 'bc/vcs-svn-cleanup' into bc/hash-algo

 RFC 
 cf. <20170821000022.26729-1-sandals@crustytoothpaste.net>


* ks/branch-set-upstream (2017-08-17) 3 commits
  (merged to 'next' on 2017-08-22 at 10fd938390)
 + branch: quote branch/ref names to improve readability
 + builtin/branch: stop supporting the "--set-upstream" option
 + t3200: cleanup cruft of a test

 "branch --set-upstream" that has been deprecated in Git 1.8 has
 finally been retired.

 Will merge to 'master'.


* po/read-graft-line (2017-08-18) 4 commits
  (merged to 'next' on 2017-08-22 at 1e3fe0d3a1)
 + commit: rewrite read_graft_line
 + commit: allocate array using object_id size
 + commit: replace the raw buffer with strbuf in read_graft_line
 + sha1_file: fix definition of null_sha1

 Conversion from uchar[20] to struct object_id continues; this is to
 ensure that we do not assume sizeof(struct object_id) is the same
 as the length of SHA-1 hash (or length of longest hash we support).

 Will merge to 'master'.


* mk/diff-delta-uint-may-be-shorter-than-ulong (2017-08-10) 1 commit
 . diff-delta: fix encoding size that would not fit in "unsigned int"

 The machinery to create xdelta used in pack files received the
 sizes of the data in size_t, but lost the higher bits of them by
 storing them in "unsigned int" during the computation, which is
 fixed.

 Dropped, as it was rerolled for review as part of a larger series.
 cf. <1502914591-26215-1-git-send-email-martin@mail.zuhause>


* jk/drop-ancient-curl (2017-08-09) 5 commits
 - http: #error on too-old curl
 - curl: remove ifdef'd code never used with curl >=7.19.4
 - http: drop support for curl < 7.19.4
 - http: drop support for curl < 7.16.0
 - http: drop support for curl < 7.11.1

 Some code in http.c that has bitrot is being removed.

 Will be rerolled after tc/curl-with-backports stabilizes.


* mk/use-size-t-in-zlib (2017-08-10) 1 commit
 . zlib.c: use size_t for size

 The wrapper to call into zlib followed our long tradition to use
 "unsigned long" for sizes of regions in memory, which have been
 updated to use "size_t".

 Dropped, as it was rerolled for review as part of a larger series.
 cf. <1502914591-26215-1-git-send-email-martin@mail.zuhause>


* mk/diff-delta-avoid-large-offset (2017-08-11) 1 commit
 . diff-delta: do not allow delta offset truncation

 The delta format used in the packfile cannot reference data at
 offset larger than what can be expressed in 4-byte, but the
 generator for the data failed to make sure the offset does not
 overflow.  This has been corrected.

 Dropped, as it was rerolled for review as part of a larger series.
 cf. <1502914591-26215-1-git-send-email-martin@mail.zuhause>


* bw/git-clang-format (2017-08-14) 2 commits
 - Makefile: add style build rule
 - clang-format: outline the git project's coding style

 "make style" runs git-clang-format to help developers by pointing
 out coding style issues.


* sb/submodule-recursive-checkout-detach-head (2017-07-28) 2 commits
 - Documentation/checkout: clarify submodule HEADs to be detached
 - recursive submodules: detach HEAD from new state

 "git checkout --recursive" may overwrite and rewind the history of
 the branch that happens to be checked out in submodule
 repositories, which might not be desirable.  Detach the HEAD but
 still allow the recursive checkout to succeed in such a case.

 Undecided.
 This needs justification in a larger picture; it is unclear why
 this is better than rejecting recursive checkout, for example.


* ti/external-sha1dc (2017-08-16) 2 commits
  (merged to 'next' on 2017-08-26 at a0fb4e91a5)
 + sha1dc: allow building with the external sha1dc library
 + sha1dc: build git plumbing code more explicitly

 Platforms that ship with a separate sha1 with collision detection
 library can link to it instead of using the copy we ship as part of
 our source tree.

 Will merge to 'master'.


* jk/check-ref-format-oor-fix (2017-07-14) 1 commit
 - check-ref-format: require a repository for --branch

 Discussion slowly continues...
 cf. <20170717172709.GL93855@aiede.mtv.corp.google.com>
 cf. <20170817102217.3yw7uxnkupdy3lh5@sigill.intra.peff.net>


* rs/sha1-file-micro-optim (2017-07-09) 2 commits
 - SQUASH???
 - sha1_file: add slash once in for_each_file_in_obj_subdir()

 Code cleanup.

 Perhaps drop.
 cf. <f59c8256-716b-9305-2a4f-d4fe49f666ff@web.de>


* jc/allow-lazy-cas (2017-07-06) 1 commit
 - push: disable lazy --force-with-lease by default

 Because "git push --force-with-lease[=<ref>]" that relies on the
 stability of remote-tracking branches is unsafe when something
 fetches into the repository behind user's back, it is now disabled
 by default.  A new configuration variable can be used to enable it
 by users who know what they are doing.  This would pave the way to
 possibly turn `--force` into `--force-with-lease`.

 Will discard.
 Independent from disabling the feature by default, this stirred up
 a discussion to replace the DWIM heuristics with a better one, which
 deserves to be its own topic.
 cf. <alpine.DEB.2.21.1.1707131435220.4193@virtualbox>


* ex/deprecate-empty-pathspec-as-match-all (2017-06-23) 2 commits
  (merged to 'next' on 2017-08-14 at 24db08a6e8)
 + pathspec: die on empty strings as pathspec
 + t0027: do not use an empty string as a pathspec element

 The final step to make an empty string as a pathspec element
 illegal.  We started this by first deprecating and warning a
 pathspec that has such an element in 2.11 (Nov 2016).

 Hopefully we can merge this down to the 'master' by the end of the
 year?  A deprecation warning period that is about 1 year does not
 sound too bad.

 Will cook in 'next'.
 As the draft RelNotes says, let's merge this to 'master' after
 this release cycle.


* sd/branch-copy (2017-06-18) 3 commits
 - branch: add a --copy (-c) option to go with --move (-m)
 - branch: add test for -m renaming multiple config sections
 - config: create a function to format section headers

 "git branch" learned "-c/-C" to create and switch to a new branch
 by copying an existing one.

 I personally do not think "branch --copy master backup" while on
 "master" that switches to "backup" is a good UI, and I *will* say
 "I told you so" when users complain after we merge this down to
 'master'.

--------------------------------------------------
[Discarded]

* jc/apply-with-crlf (2017-08-16) 5 commits
 . apply: clarify read_old_data() is about no-index case
 . apply: localize the CRLF business to read_old_data()
 . apply: only pay attention to CRLF in the preimage
 . apply: remove unused field apply_state.flags
 . apply: file commited with CRLF should roundtrip diff and apply

 This served as an input to updated tb/apply-with-crlf.

^ permalink raw reply	[relevance 6%]

* What's cooking in git.git (Aug 2017, #06; Thu, 24)
@ 2017-08-24 18:50  6% Junio C Hamano
  0 siblings, 0 replies; 25+ results
From: Junio C Hamano @ 2017-08-24 18:50 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.  The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.

As I am preparing to go offline next week for about a week, a
handful of topics have been merged to 'master' and 'next' is getting
thinner.  There are a few topics of importance that are still only
on the mailing list archive and not in my tree that I'd like to
review them and help them get into a reasonable shape, but that
hasn't happened yet.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[Graduated to "master"]

* ah/doc-empty-string-is-false (2017-08-14) 1 commit
  (merged to 'next' on 2017-08-19 at df47ffeffa)
 + doc: clarify "config --bool" behaviour with empty string

 Doc update.


* as/grep-quiet-no-match-exit-code-fix (2017-08-17) 1 commit
  (merged to 'next' on 2017-08-19 at 362f88fb41)
 + git-grep: correct exit code with --quiet and -L

 "git grep -L" and "git grep --quiet -L" reported different exit
 codes; this has been corrected.


* cc/subprocess-handshake-missing-capabilities (2017-08-16) 1 commit
  (merged to 'next' on 2017-08-19 at c512710fda)
 + sub-process: print the cmd when a capability is unsupported

 When handshake with a subprocess filter notices that the process
 asked for an unknown capability, Git did not report what program
 the offending subprocess was running.  This has been corrected.

 We may want a follow-up fix to tighten the error checking, though.


* hv/t5526-andand-chain-fix (2017-08-17) 1 commit
  (merged to 'next' on 2017-08-19 at fa95053653)
 + t5526: fix some broken && chains

 Test fix.


* jc/diff-sane-truncate-no-more (2017-08-17) 1 commit
  (merged to 'next' on 2017-08-19 at 3ba3980eed)
 + diff: retire sane_truncate_fn

 Code clean-up.


* jc/simplify-progress (2017-08-19) 1 commit
  (merged to 'next' on 2017-08-22 at 9077ff6912)
 + progress: simplify "delayed" progress API

 The API to start showing progress meter after a short delay has
 been simplified.


* jk/doc-the-this (2017-08-20) 1 commit
  (merged to 'next' on 2017-08-22 at 6625e50025)
 + doc: fix typo in sendemail.identity

 Doc clean-up.


* jt/sha1-file-cleanup (2017-08-11) 2 commits
  (merged to 'next' on 2017-08-19 at 93f4c94578)
 + sha1_file: remove read_packed_sha1()
 + sha1_file: set whence in storage-specific info fn
 (this branch is used by jt/packmigrate.)

 Preparatory code clean-up.


* kd/stash-with-bash-4.4 (2017-08-14) 1 commit
  (merged to 'next' on 2017-08-19 at 79b2c4b052)
 + stash: prevent warning about null bytes in input

 bash 4.4 or newer gave a warning on NUL byte in command
 substitution done in "git stash"; this has been squelched.


* ks/prepare-commit-msg-sample-fix (2017-08-14) 1 commit
  (merged to 'next' on 2017-08-19 at e75c30de64)
 + hook: use correct logical variable

 An "oops" fix to a topic that is already in 'master'.


* kw/commit-keep-index-when-pre-commit-is-not-run (2017-08-16) 1 commit
  (merged to 'next' on 2017-08-19 at 2b5a25e5ae)
 + commit: skip discarding the index if there is no pre-commit hook

 "git commit" used to discard the index and re-read from the filesystem
 just in case the pre-commit hook has updated it in the middle; this
 has been optimized out when we know we do not run the pre-commit hook.


* kw/rebase-progress (2017-08-14) 2 commits
  (merged to 'next' on 2017-08-19 at 1958f378dd)
 + rebase: turn on progress option by default for format-patch
 + format-patch: have progress option while generating patches

 "git rebase", especially when it is run by mistake and ends up
 trying to replay many changes, spent long time in silence.  The
 command has been taught to show progress report when it spends
 long time preparing these many changes to replay (which would give
 the user a chance to abort with ^C).


* lg/merge-signoff (2017-07-25) 1 commit
  (merged to 'next' on 2017-08-19 at cb53d7b026)
 + merge: add a --signoff flag

 "git merge" learned a "--signoff" option to add the Signed-off-by:
 trailer with the committer's name.


* mg/format-ref-doc-fix (2017-08-18) 2 commits
  (merged to 'next' on 2017-08-19 at 6490525c54)
 + Documentation/git-for-each-ref: clarify peeling of tags for --format
 + Documentation: use proper wording for ref format strings

 Doc fix.


* nm/stash-untracked (2017-08-11) 1 commit
  (merged to 'next' on 2017-08-19 at 70990d7eb3)
 + stash: clean untracked files before reset

 "git stash -u" used the contents of the committed version of the
 ".gitignore" file to decide which paths are ignored, even when the
 file has local changes.  The command has been taught to instead use
 the locally modified contents.


* rs/commit-h-single-parent-cleanup (2017-08-19) 1 commit
  (merged to 'next' on 2017-08-22 at 7db01c4035)
 + commit: remove unused inline function single_parent()

 Code clean-up.


* rs/object-id (2017-08-14) 1 commit
  (merged to 'next' on 2017-08-19 at 0f7283cd19)
 + tree-walk: convert fill_tree_descriptor() to object_id

 Conversion from uchar[20] to struct object_id continues.


* rs/t1002-do-not-use-sum (2017-08-15) 1 commit
  (merged to 'next' on 2017-08-19 at 15b2a5f21b)
 + t1002: stop using sum(1)

 Test simplification.


* sb/sha1-file-cleanup (2017-08-15) 1 commit
  (merged to 'next' on 2017-08-19 at 85898d1e7c)
 + sha1_file: make read_info_alternates static

 Code clean-up.


* sb/submodule-parallel-update (2017-08-17) 1 commit
  (merged to 'next' on 2017-08-19 at c023a834f0)
 + submodule.sh: remove unused variable

 Code clean-up.


* tc/curl-with-backports (2017-08-11) 2 commits
  (merged to 'next' on 2017-08-22 at 06c21e1eb9)
 + http: use a feature check to enable GSSAPI delegation control
 + http: fix handling of missing CURLPROTO_*

 Updates to the HTTP layer we made recently unconditionally used
 features of libCurl without checking the existence of them, causing
 compilation errors, which has been fixed.  Also migrate the code to
 check feature macros, not version numbers, to cope better with
 libCurl that vendor ships with backported features.

--------------------------------------------------
[New Topics]

* js/gitweb-raw-blob-link-in-history (2017-08-22) 1 commit
  (merged to 'next' on 2017-08-23 at 16258266e2)
 + gitweb: add 'raw' blob_plain link in history overview

 "gitweb" shows a link to visit the 'raw' contents of blbos in the
 history overview page.

 Will merge to 'master'.


* jn/vcs-svn-cleanup (2017-08-23) 4 commits
  (merged to 'next' on 2017-08-24 at c184f08f5f)
 + vcs-svn: move remaining repo_tree functions to fast_export.h
 + vcs-svn: remove repo_delete wrapper function
 + vcs-svn: remove custom mode constants
 + vcs-svn: remove more unused prototypes and declarations
 (this branch uses bc/vcs-svn-cleanup; is tangled with bc/hash-algo.)

 Code clean-up.

 Will merge to 'master'.


* jt/doc-pack-objects-fix (2017-08-23) 1 commit
  (merged to 'next' on 2017-08-24 at 7e4c3c0c9f)
 + Doc: clarify that pack-objects makes packs, plural

 Doc updates.

 Will merge to 'master'.


* ma/ts-cleanups (2017-08-23) 4 commits
 - ThreadSanitizer: add suppressions
 - strbuf_setlen: don't write to strbuf_slopbuf
 - pack-objects: take lock before accessing `remaining`
 - convert: always initialize attr_action in convert_attrs

 Assorted bugfixes and clean-ups.

 Will merge to 'next'.


* ma/up-to-date (2017-08-23) 2 commits
 - treewide: correct several "up-to-date" to "up to date"
 - Documentation/user-manual: update outdated example output

 Message and doc updates.

 Will merge to 'next'.


* mh/ref-lock-entry (2017-08-23) 1 commit
  (merged to 'next' on 2017-08-24 at 67760267f4)
 + refs: retry acquiring reference locks for 100ms

 The code to acquire a lock on a reference (e.g. while accepting a
 push from a client) used to immediately fail when the reference is
 already locked---now it waits for a very short while and retries,
 which can make it succeed if the lock holder was holding it during
 a read-only operation.

 Will merge to 'master'.

--------------------------------------------------
[Stalled]

* mg/status-in-progress-info (2017-05-10) 2 commits
 - status --short --inprogress: spell it as --in-progress
 - status: show in-progress info for short status

 "git status" learns an option to report various operations
 (e.g. "merging") that the user is in the middle of.

 cf. <xmqqmvakcdqw.fsf@gitster.mtv.corp.google.com>


* nd/worktree-move (2017-04-20) 6 commits
 - worktree remove: new command
 - worktree move: refuse to move worktrees with submodules
 - worktree move: accept destination as directory
 - worktree move: new command
 - worktree.c: add update_worktree_location()
 - worktree.c: add validate_worktree()

 "git worktree" learned move and remove subcommands.

 Expecting a reroll.
 cf. <20170420101024.7593-1-pclouds@gmail.com>
 cf. <20170421145916.mknekgqzhxffu7di@sigill.intra.peff.net>
 cf. <d0e81b1e-5869-299e-f462-4d43dc997bd1@ramsayjones.plus.com>


* sg/clone-refspec-from-command-line-config (2017-06-16) 2 commits
 - Documentation/clone: document ignored configuration variables
 - clone: respect additional configured fetch refspecs during initial fetch
 (this branch is used by sg/remote-no-string-refspecs.)

 "git clone -c var=val" is a way to set configuration variables in
 the resulting repository, but it is more useful to also make these
 variables take effect while the initial clone is happening,
 e.g. these configuration variables could be fetch refspecs.

 Waiting for a response.
 cf. <20170617112228.vugswym4o4owf6wj@sigill.intra.peff.net>
 cf. <xmqqmv8zhdap.fsf@gitster.mtv.corp.google.com>


* js/rebase-i-final (2017-07-27) 10 commits
 - rebase -i: rearrange fixup/squash lines using the rebase--helper
 - t3415: test fixup with wrapped oneline
 - rebase -i: skip unnecessary picks using the rebase--helper
 - rebase -i: check for missing commits in the rebase--helper
 - t3404: relax rebase.missingCommitsCheck tests
 - rebase -i: also expand/collapse the SHA-1s via the rebase--helper
 - rebase -i: do not invent onelines when expanding/collapsing SHA-1s
 - rebase -i: remove useless indentation
 - rebase -i: generate the script via rebase--helper
 - t3415: verify that an empty instructionFormat is handled as before

 The final batch to "git rebase -i" updates to move more code from
 the shell script to C.

 Expecting a reroll.


* bp/fsmonitor (2017-06-12) 6 commits
 - fsmonitor: add a sample query-fsmonitor hook script for Watchman
 - fsmonitor: add documentation for the fsmonitor extension.
 - fsmonitor: add test cases for fsmonitor extension
 - fsmonitor: teach git to optionally utilize a file system monitor to speed up detecting new or changed files.
 - dir: make lookup_untracked() available outside of dir.c
 - bswap: add 64 bit endianness helper get_be64

 We learned to talk to watchman to speed up "git status".

 Expecting a reroll.
 cf. <bade1166-e646-b05a-f65b-adb8da8ba0a7@gmail.com>

--------------------------------------------------
[Cooking]

* jt/packmigrate (2017-08-23) 23 commits
  (merged to 'next' on 2017-08-24 at 34a628ae6c)
 + pack: move for_each_packed_object()
 + pack: move has_pack_index()
 + pack: move has_sha1_pack()
 + pack: move find_pack_entry() and make it global
 + pack: move find_sha1_pack()
 + pack: move find_pack_entry_one(), is_pack_valid()
 + pack: move check_pack_index_ptr(), nth_packed_object_offset()
 + pack: move nth_packed_object_{sha1,oid}
 + pack: move clear_delta_base_cache(), packed_object_info(), unpack_entry()
 + pack: move unpack_object_header()
 + pack: move get_size_from_delta()
 + pack: move unpack_object_header_buffer()
 + pack: move {,re}prepare_packed_git and approximate_object_count
 + pack: move install_packed_git()
 + pack: move add_packed_git()
 + pack: move unuse_pack()
 + pack: move use_pack()
 + pack: move pack-closing functions
 + pack: move release_pack_memory()
 + pack: move open_pack_index(), parse_pack_index()
 + pack: move pack_report()
 + pack: move static state variables
 + pack: move pack name-related functions

 Code movement to make it easier to hack later.

 Will merge to 'master'.


* jc/cutoff-config (2017-08-22) 6 commits
  (merged to 'next' on 2017-08-24 at 2dcbf9ae04)
 + rerere: allow approxidate in gc.rerereResolved/gc.rerereUnresolved
 + rerere: represent time duration in timestamp_t internally
 + t4200: parameterize "rerere gc" custom expiry test
 + t4200: gather "rerere gc" together
 + t4200: make "rerere gc" test more robust
 + t4200: give us a clean slate after "rerere gc" tests

 "[gc] rerereResolved = 5.days" used to be invalid, as the variable
 is defined to take an integer counting the number of days.  It now
 is allowed.

 Will merge to 'master'.


* jt/stash-tests (2017-08-19) 3 commits
  (merged to 'next' on 2017-08-22 at 0b022697aa)
 + stash: add a test for stashing in a detached state
 + stash: add a test for when apply fails during stash branch
 + stash: add a test for stash create with no files

 Test update to improve coverage for "git stash" operations.

 Will merge to 'master'.


* rs/archive-excluded-directory (2017-08-19) 3 commits
  (merged to 'next' on 2017-08-22 at 1853597c35)
 + archive: don't queue excluded directories
 + archive: factor out helper functions for handling attributes
 + t5001: add tests for export-ignore attributes and exclude pathspecs

 "git archive" did not work well with pathspecs and the
 export-ignore attribute.

 Will merge to 'master'.

 We may want to resurrect the "we don't archive an empty directory"
 bonus patch, but I do not mind merging the above early to 'next'
 and leave it as a separate follow-up enhancement.
 cf. <20170820090629.tumvqwzkromcykjf@sigill.intra.peff.net>


* bc/hash-algo (2017-08-20) 5 commits
 - hash-algo: switch empty tree and blob lookups to use hash abstraction
 - hash-algo: integrate hash algorithm support with repo setup
 - hash-algo: add structure representing hash algorithm
 - setup: expose enumerated repo info
 - Merge branch 'bc/vcs-svn-cleanup' into bc/hash-algo
 (this branch uses bc/vcs-svn-cleanup; is tangled with jn/vcs-svn-cleanup.)


* bc/vcs-svn-cleanup (2017-08-20) 2 commits
  (merged to 'next' on 2017-08-22 at d8494b5d5b)
 + vcs-svn: rename repo functions to "svn_repo"
 + vcs-svn: remove unused prototypes
 (this branch is used by bc/hash-algo and jn/vcs-svn-cleanup.)

 Code clean-up.

 Will merge to 'master'.


* kw/write-index-reduce-alloc (2017-08-21) 3 commits
  (merged to 'next' on 2017-08-24 at 29f7daad85)
 + read-cache: avoid allocating every ondisk entry when writing
 + read-cache: fix memory leak in do_write_index
 + perf: add test for writing the index

 We used to spend more than necessary cycles allocating and freeing
 piece of memory while writing each index entry out.  This has been
 optimized.

 Will merge to 'master'.


* mg/killed-merge (2017-08-23) 4 commits
  (merged to 'next' on 2017-08-24 at 5db37fc192)
 + merge: save merge state earlier
 + merge: split write_merge_state in two
 + merge: clarify call chain
 + Documentation/git-merge: explain --continue

 Killing "git merge --edit" before the editor returns control left
 the repository in a state with MERGE_MSG but without MERGE_HEAD,
 which incorrectly tells the subsequent "git commit" that there was
 a squash merge in progress.  This has been fixed.

 Will merge to 'master'.


* po/object-id (2017-08-20) 6 commits
  (merged to 'next' on 2017-08-23 at 0faff383a8)
 + sha1_file: convert index_stream to struct object_id
 + sha1_file: convert hash_sha1_file_literally to struct object_id
 + sha1_file: convert index_fd to struct object_id
 + sha1_file: convert index_path to struct object_id
 + read-cache: convert to struct object_id
 + builtin/hash-object: convert to struct object_id

 Will merge to 'master'.


* tb/apply-with-crlf (2017-08-19) 2 commits
  (merged to 'next' on 2017-08-22 at f92bf67061)
 + apply: file commited with CRLF should roundtrip diff and apply
 + convert: add SAFE_CRLF_KEEP_CRLF
 (this branch is tangled with jc/apply-with-crlf.)

 "git apply" that is used as a better "patch -p1" failed to apply a
 taken from a file with CRLF line endings to a file with CRLF line
 endings.  The root cause was because it misused convert_to_git()
 that tried to do "safe-crlf" processing by looking at the index
 entry at the same path, which is a nonsense---in that mode, "apply"
 is not working on the data in (or derived from) the index at all.
 This has been fixed.

 Will merge to 'master'.


* ks/branch-set-upstream (2017-08-17) 3 commits
  (merged to 'next' on 2017-08-22 at 10fd938390)
 + branch: quote branch/ref names to improve readability
 + builtin/branch: stop supporting the "--set-upstream" option
 + t3200: cleanup cruft of a test

 "branch --set-upstream" that has been deprecated in Git 1.8 has
 finally been retired.

 Will merge to 'master'.


* po/read-graft-line (2017-08-18) 4 commits
  (merged to 'next' on 2017-08-22 at 1e3fe0d3a1)
 + commit: rewrite read_graft_line
 + commit: allocate array using object_id size
 + commit: replace the raw buffer with strbuf in read_graft_line
 + sha1_file: fix definition of null_sha1

 Conversion from uchar[20] to struct object_id continues; this is to
 ensure that we do not assume sizeof(struct object_id) is the same
 as the length of SHA-1 hash (or length of longest hash we support).

 Will merge to 'master'.


* mk/diff-delta-uint-may-be-shorter-than-ulong (2017-08-10) 1 commit
 . diff-delta: fix encoding size that would not fit in "unsigned int"

 The machinery to create xdelta used in pack files received the
 sizes of the data in size_t, but lost the higher bits of them by
 storing them in "unsigned int" during the computation, which is
 fixed.

 Dropped, as it was rerolled for review as part of a larger series.
 cf. <1502914591-26215-1-git-send-email-martin@mail.zuhause>


* jk/drop-ancient-curl (2017-08-09) 5 commits
 - http: #error on too-old curl
 - curl: remove ifdef'd code never used with curl >=7.19.4
 - http: drop support for curl < 7.19.4
 - http: drop support for curl < 7.16.0
 - http: drop support for curl < 7.11.1

 Some code in http.c that has bitrot is being removed.

 Will be rerolled after tc/curl-with-backports stabilizes.


* jk/trailers-parse (2017-08-20) 9 commits
  (merged to 'next' on 2017-08-22 at 2d4d937141)
 + doc/interpret-trailers: fix "the this" typo
  (merged to 'next' on 2017-08-19 at faa63f8196)
 + pretty: support normalization options for %(trailers)
 + t4205: refactor %(trailers) tests
 + pretty: move trailer formatting to trailer.c
 + interpret-trailers: add --parse convenience option
 + interpret-trailers: add an option to unfold values
 + interpret-trailers: add an option to show only existing trailers
 + interpret-trailers: add an option to show only the trailers
 + trailer: put process_trailers() options into a struct

 "git interpret-trailers" has been taught a "--parse" and a few
 other options to make it easier for scripts to grab existing
 trailer lines from a commit log message.

 Will merge to 'master'.
 Possible leftover bits are mentioned in
 cf. <20170820094009.z23wclpku35txflg@sigill.intra.peff.net>


* mk/use-size-t-in-zlib (2017-08-10) 1 commit
 . zlib.c: use size_t for size

 The wrapper to call into zlib followed our long tradition to use
 "unsigned long" for sizes of regions in memory, which have been
 updated to use "size_t".

 Dropped, as it was rerolled for review as part of a larger series.
 cf. <1502914591-26215-1-git-send-email-martin@mail.zuhause>


* mk/diff-delta-avoid-large-offset (2017-08-11) 1 commit
 . diff-delta: do not allow delta offset truncation

 The delta format used in the packfile cannot reference data at
 offset larger than what can be expressed in 4-byte, but the
 generator for the data failed to make sure the offset does not
 overflow.  This has been corrected.

 Dropped, as it was rerolled for review as part of a larger series.
 cf. <1502914591-26215-1-git-send-email-martin@mail.zuhause>


* jt/diff-color-move-fix (2017-08-16) 3 commits
  (merged to 'next' on 2017-08-19 at 6ae3831c8c)
 + diff: define block by number of alphanumeric chars
 + diff: respect MIN_BLOCK_LENGTH for last block
 + diff: avoid redundantly clearing a flag
 (this branch uses sb/diff-color-move.)

 A handful of bugfixes and an improvement to "diff --color-moved".

 Will merge to 'master'.


* bw/git-clang-format (2017-08-14) 2 commits
 - Makefile: add style build rule
 - clang-format: outline the git project's coding style

 "make style" runs git-clang-format to help developers by pointing
 out coding style issues.


* pb/trailers-from-command-line (2017-08-14) 4 commits
  (merged to 'next' on 2017-08-19 at b12342e49e)
 + interpret-trailers: fix documentation typo
 + interpret-trailers: add options for actions
 + trailers: introduce struct new_trailer_item
 + trailers: export action enums and corresponding lookup functions

 "git interpret-trailers" learned to take the trailer specifications
 from the command line that overrides the configured values.

 Will merge to 'master'.


* sb/submodule-recursive-checkout-detach-head (2017-07-28) 2 commits
 - Documentation/checkout: clarify submodule HEADs to be detached
 - recursive submodules: detach HEAD from new state

 "git checkout --recursive" may overwrite and rewind the history of
 the branch that happens to be checked out in submodule
 repositories, which might not be desirable.  Detach the HEAD but
 still allow the recursive checkout to succeed in such a case.

 Undecided.
 This needs justification in a larger picture; it is unclear why
 this is better than rejecting recursive checkout, for example.


* ti/external-sha1dc (2017-08-16) 2 commits
 - sha1dc: allow building with the external sha1dc library
 - sha1dc: build git plumbing code more explicitly

 Platforms that ship with a separate sha1 with collision detection
 library can link to it instead of using the copy we ship as part of
 our source tree.

 Waiting for reviews.
 cf. <20170815120417.31616-1-tiwai@suse.de>


* bw/submodule-config-cleanup (2017-08-03) 17 commits
  (merged to 'next' on 2017-08-24 at e35d58c4c6)
 + submodule: remove gitmodules_config
 + unpack-trees: improve loading of .gitmodules
 + submodule-config: lazy-load a repository's .gitmodules file
 + submodule-config: move submodule-config functions to submodule-config.c
 + submodule-config: remove support for overlaying repository config
 + diff: stop allowing diff to have submodules configured in .git/config
 + submodule: remove submodule_config callback routine
 + unpack-trees: don't respect submodule.update
 + submodule: don't rely on overlayed config when setting diffopts
 + fetch: don't overlay config with submodule-config
 + submodule--helper: don't overlay config in update-clone
 + submodule--helper: don't overlay config in remote_submodule_branch
 + add, reset: ensure submodules can be added or reset
 + submodule: don't use submodule_from_name
 + t7411: check configuration parsing errors
 + Merge branch 'bc/object-id' into bw/submodule-config-cleanup
 + Merge branch 'bw/grep-recurse-submodules' into bw/submodule-config-cleanup

 Code clean-up to avoid mixing values read from the .gitmodules file
 and values read from the .git/config file.

 Will merge to 'master'.
 So, after the recent discussion around submodule.<name>.update (and
 its resolution "use submodule.<name>.active; "reset --hard" must
 ignore the .update thing"), this is now good to go, I presume?
 Please yell at me that I am clueless if that is not the case ;-)


* jk/check-ref-format-oor-fix (2017-07-14) 1 commit
 - check-ref-format: require a repository for --branch

 Discussion slowly continues...
 cf. <20170717172709.GL93855@aiede.mtv.corp.google.com>
 cf. <20170817102217.3yw7uxnkupdy3lh5@sigill.intra.peff.net>


* rs/sha1-file-micro-optim (2017-07-09) 2 commits
 - SQUASH???
 - sha1_file: add slash once in for_each_file_in_obj_subdir()

 Code cleanup.

 Perhaps drop.
 cf. <f59c8256-716b-9305-2a4f-d4fe49f666ff@web.de>


* jc/allow-lazy-cas (2017-07-06) 1 commit
 - push: disable lazy --force-with-lease by default

 Because "git push --force-with-lease[=<ref>]" that relies on the
 stability of remote-tracking branches is unsafe when something
 fetches into the repository behind user's back, it is now disabled
 by default.  A new configuration variable can be used to enable it
 by users who know what they are doing.  This would pave the way to
 possibly turn `--force` into `--force-with-lease`.

 Will discard.
 Independent from disabling the feature by default, this stirred up
 a discussion to replace the DWIM heuristics with a better one, which
 deserves to be its own topic.
 cf. <alpine.DEB.2.21.1.1707131435220.4193@virtualbox>


* ex/deprecate-empty-pathspec-as-match-all (2017-06-23) 2 commits
  (merged to 'next' on 2017-08-14 at 24db08a6e8)
 + pathspec: die on empty strings as pathspec
 + t0027: do not use an empty string as a pathspec element

 The final step to make an empty string as a pathspec element
 illegal.  We started this by first deprecating and warning a
 pathspec that has such an element in 2.11 (Nov 2016).

 Hopefully we can merge this down to the 'master' by the end of the
 year?  A deprecation warning period that is about 1 year does not
 sound too bad.

 Will cook in 'next'.
 As the draft RelNotes says, let's merge this to 'master' after
 this release cycle.


* sd/branch-copy (2017-06-18) 3 commits
 - branch: add a --copy (-c) option to go with --move (-m)
 - branch: add test for -m renaming multiple config sections
 - config: create a function to format section headers

 "git branch" learned "-c/-C" to create and switch to a new branch
 by copying an existing one.

 I personally do not think "branch --copy master backup" while on
 "master" that switches to "backup" is a good UI, and I *will* say
 "I told you so" when users complain after we merge this down to
 'master'.


* sb/diff-color-move (2017-06-30) 26 commits
  (merged to 'next' on 2017-08-19 at a239d031bc)
 + diff: document the new --color-moved setting
 + diff.c: add dimming to moved line detection
 + diff.c: color moved lines differently, plain mode
 + diff.c: color moved lines differently
 + diff.c: buffer all output if asked to
 + diff.c: emit_diff_symbol learns about DIFF_SYMBOL_SUMMARY
 + diff.c: emit_diff_symbol learns about DIFF_SYMBOL_STAT_SEP
 + diff.c: convert word diffing to use emit_diff_symbol
 + diff.c: convert show_stats to use emit_diff_symbol
 + diff.c: convert emit_binary_diff_body to use emit_diff_symbol
 + submodule.c: migrate diff output to use emit_diff_symbol
 + diff.c: emit_diff_symbol learns DIFF_SYMBOL_REWRITE_DIFF
 + diff.c: emit_diff_symbol learns about DIFF_SYMBOL_BINARY_FILES
 + diff.c: emit_diff_symbol learns DIFF_SYMBOL_HEADER
 + diff.c: emit_diff_symbol learns DIFF_SYMBOL_FILEPAIR_{PLUS, MINUS}
 + diff.c: emit_diff_symbol learns DIFF_SYMBOL_CONTEXT_INCOMPLETE
 + diff.c: emit_diff_symbol learns DIFF_SYMBOL_WORDS[_PORCELAIN]
 + diff.c: migrate emit_line_checked to use emit_diff_symbol
 + diff.c: emit_diff_symbol learns DIFF_SYMBOL_NO_LF_EOF
 + diff.c: emit_diff_symbol learns DIFF_SYMBOL_CONTEXT_FRAGINFO
 + diff.c: emit_diff_symbol learns DIFF_SYMBOL_CONTEXT_MARKER
 + diff.c: introduce emit_diff_symbol
 + diff.c: factor out diff_flush_patch_all_file_pairs
 + diff.c: move line ending check into emit_hunk_header
 + diff.c: readability fix
 + Merge branch 'sb/hashmap-customize-comparison' into sb/diff-color-move
 (this branch is used by jt/diff-color-move-fix.)

 "git diff" has been taught to optionally paint new lines that are
 the same as deleted lines elsewhere differently from genuinely new
 lines.

 Will merge to 'master'.

--------------------------------------------------
[Discarded]

* nd/prune-in-worktree (2017-04-24) 12 commits
 . rev-list: expose and document --single-worktree
 . revision.c: --reflog add HEAD reflog from all worktrees
 . files-backend: make reflog iterator go through per-worktree reflog
 . revision.c: --all adds HEAD from all worktrees
 . refs: remove dead for_each_*_submodule()
 . revision.c: use refs_for_each*() instead of for_each_*_submodule()
 . refs: add refs_head_ref()
 . refs: move submodule slash stripping code to get_submodule_ref_store
 . refs.c: refactor get_submodule_ref_store(), share common free block
 . revision.c: --indexed-objects add objects from all worktrees
 . revision.c: refactor add_index_objects_to_pending()
 . revision.h: new flag in struct rev_info wrt. worktree-related refs

 "git gc" and friends when multiple worktrees are used off of a
 single repository did not consider the index and per-worktree refs
 of other worktrees as the root for reachability traversal, making
 objects that are in use only in other worktrees to be subject to
 garbage collection.


* jc/apply-with-crlf (2017-08-16) 6 commits
 . apply: clarify read_old_data() is about no-index case
 . apply: localize the CRLF business to read_old_data()
 . apply: only pay attention to CRLF in the preimage
 . apply: remove unused field apply_state.flags
 . apply: file commited with CRLF should roundtrip diff and apply
 + convert: add SAFE_CRLF_KEEP_CRLF
 (this branch is tangled with tb/apply-with-crlf.)

 This served as an input to updated tb/apply-with-crlf.

^ permalink raw reply	[relevance 6%]

* Re: What's cooking in git.git (Aug 2017, #05; Tue, 22)
  2017-08-22 19:56  6% What's cooking in git.git (Aug 2017, #05; Tue, 22) Junio C Hamano
@ 2017-08-23  1:00  0% ` Brandon Williams
  0 siblings, 0 replies; 25+ results
From: Brandon Williams @ 2017-08-23  1:00 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git

On 08/22, Junio C Hamano wrote:
> 
> * bw/submodule-config-cleanup (2017-08-03) 17 commits
>  - submodule: remove gitmodules_config
>  - unpack-trees: improve loading of .gitmodules
>  - submodule-config: lazy-load a repository's .gitmodules file
>  - submodule-config: move submodule-config functions to submodule-config.c
>  - submodule-config: remove support for overlaying repository config
>  - diff: stop allowing diff to have submodules configured in .git/config
>  - submodule: remove submodule_config callback routine
>  - unpack-trees: don't respect submodule.update
>  - submodule: don't rely on overlayed config when setting diffopts
>  - fetch: don't overlay config with submodule-config
>  - submodule--helper: don't overlay config in update-clone
>  - submodule--helper: don't overlay config in remote_submodule_branch
>  - add, reset: ensure submodules can be added or reset
>  - submodule: don't use submodule_from_name
>  - t7411: check configuration parsing errors
>  - Merge branch 'bc/object-id' into bw/submodule-config-cleanup
>  - Merge branch 'bw/grep-recurse-submodules' into bw/submodule-config-cleanup
> 
>  Code clean-up to avoid mixing values read from the .gitmodules file
>  and values read from the .git/config file.
> 
>  So, after the recent discussion around submodule.<name>.update (and
>  its resolution "use submodule.<name>.active; "reset --hard" must
>  ignore the .update thing"), this is now good to go, I presume?
>  Please yell at me that I am clueless if that is not the case ;-)

Yep I came to the same conclusion that you did so this should be good to
go!

-- 
Brandon Williams

^ permalink raw reply	[relevance 0%]

* What's cooking in git.git (Aug 2017, #05; Tue, 22)
@ 2017-08-22 19:56  6% Junio C Hamano
  2017-08-23  1:00  0% ` Brandon Williams
  0 siblings, 1 reply; 25+ results
From: Junio C Hamano @ 2017-08-22 19:56 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.  The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.

The second batch of topics are in.  This cycle is going a bit slower
than the previous one (as of mid-week #3 of this cycle, we have
about 200 patches on 'master' since v2.14, compared to about 300
patches in the cycle towards v2.14 at a similar point in the cycle),
but hopefully we can catch up eventually.  

I am planning to be offline most of the next week, by the way.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[Graduated to "master"]

* ab/ref-filter-no-contains (2017-08-07) 1 commit
  (merged to 'next' on 2017-08-18 at 7ec9d3d3a2)
 + tests: don't give unportable ">" to "test" built-in, use -gt

 A test fix.


* bw/clone-recursive-quiet (2017-08-04) 1 commit
  (merged to 'next' on 2017-08-14 at fbd4473ce4)
 + clone: teach recursive clones to respect -q

 "git clone --recurse-submodules --quiet" did not pass the quiet
 option down to submodules.


* bw/grep-recurse-submodules (2017-08-02) 10 commits
  (merged to 'next' on 2017-08-14 at dcfcfc94af)
 + grep: recurse in-process using 'struct repository'
 + submodule: merge repo_read_gitmodules and gitmodules_config
 + submodule: check for unmerged .gitmodules outside of config parsing
 + submodule: check for unstaged .gitmodules outside of config parsing
 + submodule: remove fetch.recursesubmodules from submodule-config parsing
 + submodule: remove submodule.fetchjobs from submodule-config parsing
 + config: add config_from_gitmodules
 + cache.h: add GITMODULES_FILE macro
 + repository: have the_repository use the_index
 + repo_read_index: don't discard the index
 (this branch is used by bw/submodule-config-cleanup.)

 "git grep --recurse-submodules" has been reworked to give a more
 consistent output across submodule boundary (and do its thing
 without having to fork a separate process).


* bw/push-options-recursively-to-submodules (2017-07-20) 1 commit
  (merged to 'next' on 2017-08-14 at 421dc09fd0)
 + submodule--helper: teach push-check to handle HEAD

 "git push --recurse-submodules $there HEAD:$target" was not
 propagated down to the submodules, but now it is.


* jc/perl-git-comment-typofix (2017-08-07) 1 commit
  (merged to 'next' on 2017-08-18 at b2ad043e6a)
 + perl/Git.pm: typofix in a comment

 A comment fix.


* jk/drop-sha1-entry-pos (2017-08-09) 1 commit
  (merged to 'next' on 2017-08-18 at 3a4d9bcf12)
 + sha1_file: drop experimental GIT_USE_LOOKUP search
 (this branch is used by jt/packmigrate.)

 Code clean-up.


* jk/hashcmp-memcmp (2017-08-09) 1 commit
  (merged to 'next' on 2017-08-18 at 27c4aa5520)
 + hashcmp: use memcmp instead of open-coded loop

 Code clean-up.


* ma/parse-maybe-bool (2017-08-07) 6 commits
  (merged to 'next' on 2017-08-18 at ba22bb836c)
 + parse_decoration_style: drop unused argument `var`
 + treewide: deprecate git_config_maybe_bool, use git_parse_maybe_bool
 + config: make git_{config,parse}_maybe_bool equivalent
 + config: introduce git_parse_maybe_bool_text
 + t5334: document that git push --signed=1 does not work
 + Doc/git-{push,send-pack}: correct --sign= to --signed=

 Code clean-up.


* mf/no-dashed-subcommands (2017-08-07) 1 commit
  (merged to 'next' on 2017-08-18 at 05365af2ff)
 + scripts: use "git foo" not "git-foo"

 Code clean-up.


* mh/packed-ref-store (2017-08-17) 32 commits
  (merged to 'next' on 2017-08-18 at 14c58936e1)
 + files-backend: cheapen refname_available check when locking refs
  (merged to 'next' on 2017-08-14 at 987b76d302)
 + packed_ref_store: handle a packed-refs file that is a symlink
 + read_packed_refs(): die if `packed-refs` contains bogus data
 + t3210: add some tests of bogus packed-refs file contents
 + repack_without_refs(): don't lock or unlock the packed refs
 + commit_packed_refs(): remove call to `packed_refs_unlock()`
 + clear_packed_ref_cache(): don't protest if the lock is held
 + packed_refs_unlock(), packed_refs_is_locked(): new functions
 + packed_refs_lock(): report errors via a `struct strbuf *err`
 + packed_refs_lock(): function renamed from lock_packed_refs()
 + commit_packed_refs(): use a staging file separate from the lockfile
 + commit_packed_refs(): report errors rather than dying
 + packed_ref_store: make class into a subclass of `ref_store`
 + packed-backend: new module for handling packed references
 + packed_read_raw_ref(): new function, replacing `resolve_packed_ref()`
 + packed_ref_store: support iteration
 + packed_peel_ref(): new function, extracted from `files_peel_ref()`
 + repack_without_refs(): take a `packed_ref_store *` parameter
 + get_packed_ref(): take a `packed_ref_store *` parameter
 + rollback_packed_refs(): take a `packed_ref_store *` parameter
 + commit_packed_refs(): take a `packed_ref_store *` parameter
 + lock_packed_refs(): take a `packed_ref_store *` parameter
 + add_packed_ref(): take a `packed_ref_store *` parameter
 + get_packed_refs(): take a `packed_ref_store *` parameter
 + get_packed_ref_cache(): take a `packed_ref_store *` parameter
 + validate_packed_ref_cache(): take a `packed_ref_store *` parameter
 + clear_packed_ref_cache(): take a `packed_ref_store *` parameter
 + packed_ref_store: move `packed_refs_lock` member here
 + packed_ref_store: move `packed_refs_path` here
 + packed_ref_store: new struct
 + add_packed_ref(): teach function to overwrite existing refs
 + t1408: add a test of stale packed refs covered by loose refs

 The "ref-store" code reorganization continues.


* pw/am-signoff (2017-08-08) 1 commit
  (merged to 'next' on 2017-08-18 at 7678ed822c)
 + am: fix signoff when other trailers are present

 "git am -s" has been taught that some input may end with a trailer
 block that is not Signed-off-by: and it should refrain from adding
 an extra blank line before adding a new sign-off in such a case.


* pw/sequence-rerere-autoupdate (2017-08-02) 6 commits
  (merged to 'next' on 2017-08-14 at 010cbb0cbe)
 + cherry-pick/revert: reject --rerere-autoupdate when continuing
 + cherry-pick/revert: remember --rerere-autoupdate
 + t3504: use test_commit
 + rebase -i: honor --rerere-autoupdate
 + rebase: honor --rerere-autoupdate
 + am: remember --rerere-autoupdate setting

 Commands like "git rebase" accepted the --rerere-autoupdate option
 from the command line, but did not always use it.  This has been
 fixed.


* rj/add-chmod-error-message (2017-08-09) 1 commit
  (merged to 'next' on 2017-08-18 at ba2afb696a)
 + builtin/add: add detail to a 'cannot chmod' error message

 Message fix.


* rs/apply-lose-prefix-length (2017-08-09) 1 commit
  (merged to 'next' on 2017-08-18 at 6ce0dbb3f0)
 + apply: remove prefix_length member from apply_state

 Code clean-up.


* rs/find-pack-entry-bisection (2017-08-09) 1 commit
  (merged to 'next' on 2017-08-18 at b4130177a9)
 + sha1_file: avoid comparison if no packed hash matches the first byte
 (this branch is used by jt/packmigrate.)

 Code clean-up.


* rs/fsck-obj-leakfix (2017-08-10) 1 commit
  (merged to 'next' on 2017-08-18 at 77e3d111ef)
 + fsck: free buffers on error in fsck_obj()

 Memory leak in an error codepath has been plugged.


* rs/in-obsd-basename-dirname-take-const (2017-08-07) 1 commit
  (merged to 'next' on 2017-08-18 at c739077e3b)
 + test-path-utils: handle const parameter of basename and dirname

 Portability fix.


* rs/merge-microcleanup (2017-08-10) 1 commit
  (merged to 'next' on 2017-08-18 at 79ba7d301d)
 + merge: use skip_prefix()

 Code clean-up.


* rs/obsd-getcwd-workaround (2017-08-07) 1 commit
  (merged to 'next' on 2017-08-18 at adb98cfe0c)
 + t0001: skip test with restrictive permissions if getpwd(3) respects them

 Test portability fix for BSDs.


* rs/strbuf-getwholeline-fix (2017-08-10) 1 commit
  (merged to 'next' on 2017-08-18 at 5f879d8261)
 + strbuf: clear errno before calling getdelim(3)

 A helper function to read a single whole line into strbuf
 mistakenly triggered OOM error at EOF under certain conditions,
 which has been fixed.


* rs/t3700-clean-leftover (2017-08-08) 1 commit
  (merged to 'next' on 2017-08-18 at 12232a8cd3)
 + t3700: fix broken test under !POSIXPERM

 A test fix.


* rs/t4062-obsd (2017-08-09) 1 commit
  (merged to 'next' on 2017-08-18 at 02bff42d86)
 + t4062: use less than 256 repetitions in regex

 Test portability fix.


* rs/unpack-entry-leakfix (2017-08-10) 1 commit
  (merged to 'next' on 2017-08-18 at 1e7d8f54b1)
 + sha1_file: release delta_stack on error in unpack_entry()
 (this branch is used by jt/packmigrate.)

 Memory leak in an error codepath has been plugged.


* rs/win32-syslog-leakfix (2017-08-10) 1 commit
  (merged to 'next' on 2017-08-18 at 011eccb7bd)
 + win32: plug memory leak on realloc() failure in syslog()

 Memory leak in an error codepath has been plugged.


* sb/retire-t1200 (2017-08-10) 1 commit
  (merged to 'next' on 2017-08-18 at d436f9bbce)
 + t1200: remove t1200-tutorial.sh

 A test script that outlived its usefulness has been removed.


* ur/svn-local-zone (2017-08-08) 1 commit
  (merged to 'next' on 2017-08-18 at f222bb6db0)
 + git svn fetch: Create correct commit timestamp when using --localtime

 "git svn" used with "--localtime" option did not compute the tz
 offset for the timestamp in question and instead always used the
 current time, which has been corrected.

--------------------------------------------------
[New Topics]

* jt/packmigrate (2017-08-19) 27 commits
 - pack: move for_each_packed_object()
 - pack: move has_pack_index()
 - pack: move has_sha1_pack()
 - pack: move find_pack_entry() and make it global
 - pack: move find_sha1_pack()
 - pack: move find_pack_entry_one(), is_pack_valid()
 - pack: move check_pack_index_ptr(), nth_packed_object_offset()
 - pack: move nth_packed_object_{sha1,oid}
 - pack: move clear_delta_base_cache(), packed_object_info(), unpack_entry()
 - pack: move unpack_object_header()
 - pack: move get_size_from_delta()
 - pack: move unpack_object_header_buffer()
 - pack: move {,re}prepare_packed_git and approximate_object_count
 - pack: move install_packed_git()
 - pack: move add_packed_git()
 - pack: move unuse_pack()
 - pack: move use_pack()
 - pack: move pack-closing functions
 - pack: move release_pack_memory()
 - pack: move open_pack_index(), parse_pack_index()
 - pack: move pack_report()
 - pack: move static state variables
 - pack: move pack name-related functions
 - Merge branch 'rs/unpack-entry-leakfix' into HEAD
 - Merge branch 'jt/sha1-file-cleanup' into HEAD
 - Merge branch 'jk/drop-sha1-entry-pos' into HEAD
 - Merge branch 'rs/find-pack-entry-bisection' into HEAD
 (this branch uses jt/sha1-file-cleanup.)

 Code movement to make it easier to hack later.

 Rebase this on the master after jt/sha1-file-cleanup graduates and
 merge it to 'next' (if reviewers found this a good change, that
 is).


* jc/cutoff-config (2017-08-19) 2 commits
 - rerere: allow approxidate in gc.rerereResolved/gc.rerereUnresolved
 - rerere: represent time duration in timestamp_t internally

 "[gc] rerereResolved = 5.days" used to be invalid, as the variable
 is defined to take an integer counting the number of days.  It now
 is allowed.

 Needs reroll.
 cf. <xmqqa82t7ov1.fsf@gitster.mtv.corp.google.com>


* jc/simplify-progress (2017-08-19) 1 commit
 - progress: simplify "delayed" progress API

 The API to start showing progress meter after a short delay has
 been simplified.

 Will merge to 'next'.


* jt/stash-tests (2017-08-19) 3 commits
  (merged to 'next' on 2017-08-22 at 0b022697aa)
 + stash: add a test for stashing in a detached state
 + stash: add a test for when apply fails during stash branch
 + stash: add a test for stash create with no files

 Test update to improve coverage for "git stash" operations.

 Will merge to 'master'.


* rs/archive-excluded-directory (2017-08-19) 3 commits
 - archive: don't queue excluded directories
 - archive: factor out helper functions for handling attributes
 - t5001: add tests for export-ignore attributes and exclude pathspecs

 "git archive" did not work well with pathspecs and the
 export-ignore attribute.

 Will merge to 'next'.

 We may want to resurrect the "we don't archive an empty directory"
 bonus patch, but I do not mind merging the above early to 'next'
 and leave it as a separate follow-up enhancement.
 cf. <20170820090629.tumvqwzkromcykjf@sigill.intra.peff.net>


* rs/commit-h-single-parent-cleanup (2017-08-19) 1 commit
  (merged to 'next' on 2017-08-22 at 7db01c4035)
 + commit: remove unused inline function single_parent()

 Code clean-up.

 Will merge to 'master'.


* bc/hash-algo (2017-08-20) 5 commits
 - hash-algo: switch empty tree and blob lookups to use hash abstraction
 - hash-algo: integrate hash algorithm support with repo setup
 - hash-algo: add structure representing hash algorithm
 - setup: expose enumerated repo info
 - Merge branch 'bc/vcs-svn-cleanup' into bc/hash-algo
 (this branch uses bc/vcs-svn-cleanup.)


* bc/vcs-svn-cleanup (2017-08-20) 2 commits
 - vcs-svn: rename repo functions to "svn_repo"
 - vcs-svn: remove unused prototypes
 (this branch is used by bc/hash-algo.)

 Code clean-up.

 Will merge to 'next'.


* jk/doc-the-this (2017-08-20) 1 commit
 - doc: fix typo in sendemail.identity

 Doc clean-up.

 Will merge to 'next'.


* kw/write-index-reduce-alloc (2017-08-21) 3 commits
 - read-cache: avoid allocating every ondisk entry when writing
 - read-cache: fix memory leak in do_write_index
 - perf: add test for writing the index


* mg/killed-merge (2017-08-21) 3 commits
 - merge: save merge state earlier
 - merge: split write_merge_state in two
 - Documentation/git-merge: explain --continue

 Killing "git merge --edit" before the editor returns control left
 the repository in a state with MERGE_MSG but without MERGE_HEAD,
 which incorrectly tells the subsequent "git commit" that there was
 a squash merge in progress.  This has been fixed.

 Looked mostly good with minor nits.
 cf. <36bea69b-010a-9542-ec87-38b00d2bb009@grubix.eu>


* po/object-id (2017-08-20) 6 commits
 - sha1_file: convert index_stream to struct object_id
 - sha1_file: convert hash_sha1_file_literally to struct object_id
 - sha1_file: convert index_fd to struct object_id
 - sha1_file: convert index_path to struct object_id
 - read-cache: convert to struct object_id
 - builtin/hash-object: convert to struct object_id

 Will merge to 'next'.


--------------------------------------------------
[Stalled]

* mg/status-in-progress-info (2017-05-10) 2 commits
 - status --short --inprogress: spell it as --in-progress
 - status: show in-progress info for short status

 "git status" learns an option to report various operations
 (e.g. "merging") that the user is in the middle of.

 cf. <xmqqmvakcdqw.fsf@gitster.mtv.corp.google.com>


* nd/worktree-move (2017-04-20) 6 commits
 - worktree remove: new command
 - worktree move: refuse to move worktrees with submodules
 - worktree move: accept destination as directory
 - worktree move: new command
 - worktree.c: add update_worktree_location()
 - worktree.c: add validate_worktree()

 "git worktree" learned move and remove subcommands.

 Expecting a reroll.
 cf. <20170420101024.7593-1-pclouds@gmail.com>
 cf. <20170421145916.mknekgqzhxffu7di@sigill.intra.peff.net>
 cf. <d0e81b1e-5869-299e-f462-4d43dc997bd1@ramsayjones.plus.com>


* sg/clone-refspec-from-command-line-config (2017-06-16) 2 commits
 - Documentation/clone: document ignored configuration variables
 - clone: respect additional configured fetch refspecs during initial fetch
 (this branch is used by sg/remote-no-string-refspecs.)

 "git clone -c var=val" is a way to set configuration variables in
 the resulting repository, but it is more useful to also make these
 variables take effect while the initial clone is happening,
 e.g. these configuration variables could be fetch refspecs.

 Waiting for a response.
 cf. <20170617112228.vugswym4o4owf6wj@sigill.intra.peff.net>
 cf. <xmqqmv8zhdap.fsf@gitster.mtv.corp.google.com>


* js/rebase-i-final (2017-07-27) 10 commits
 - rebase -i: rearrange fixup/squash lines using the rebase--helper
 - t3415: test fixup with wrapped oneline
 - rebase -i: skip unnecessary picks using the rebase--helper
 - rebase -i: check for missing commits in the rebase--helper
 - t3404: relax rebase.missingCommitsCheck tests
 - rebase -i: also expand/collapse the SHA-1s via the rebase--helper
 - rebase -i: do not invent onelines when expanding/collapsing SHA-1s
 - rebase -i: remove useless indentation
 - rebase -i: generate the script via rebase--helper
 - t3415: verify that an empty instructionFormat is handled as before

 The final batch to "git rebase -i" updates to move more code from
 the shell script to C.

 Expecting a reroll.


* bp/fsmonitor (2017-06-12) 6 commits
 - fsmonitor: add a sample query-fsmonitor hook script for Watchman
 - fsmonitor: add documentation for the fsmonitor extension.
 - fsmonitor: add test cases for fsmonitor extension
 - fsmonitor: teach git to optionally utilize a file system monitor to speed up detecting new or changed files.
 - dir: make lookup_untracked() available outside of dir.c
 - bswap: add 64 bit endianness helper get_be64

 We learned to talk to watchman to speed up "git status".

 Expecting a reroll.
 cf. <bade1166-e646-b05a-f65b-adb8da8ba0a7@gmail.com>

--------------------------------------------------
[Cooking]

* cc/subprocess-handshake-missing-capabilities (2017-08-16) 1 commit
  (merged to 'next' on 2017-08-19 at c512710fda)
 + sub-process: print the cmd when a capability is unsupported

 When handshake with a subprocess filter notices that the process
 asked for an unknown capability, Git did not report what program
 the offending subprocess was running.  This has been corrected.

 Will merge to 'master'.

 We may want a follow-up fix to tighten the error checking, though.


* tb/apply-with-crlf (2017-08-19) 2 commits
  (merged to 'next' on 2017-08-22 at f92bf67061)
 + apply: file commited with CRLF should roundtrip diff and apply
 + convert: add SAFE_CRLF_KEEP_CRLF
 (this branch is tangled with jc/apply-with-crlf.)

 "git apply" that is used as a better "patch -p1" failed to apply a
 taken from a file with CRLF line endings to a file with CRLF line
 endings.  The root cause was because it misused convert_to_git()
 that tried to do "safe-crlf" processing by looking at the index
 entry at the same path, which is a nonsense---in that mode, "apply"
 is not working on the data in (or derived from) the index at all.
 This has been fixed.

 Will merge to 'master'.


* rs/t1002-do-not-use-sum (2017-08-15) 1 commit
  (merged to 'next' on 2017-08-19 at 15b2a5f21b)
 + t1002: stop using sum(1)

 Test simplification.

 Will merge to 'master'.


* sb/sha1-file-cleanup (2017-08-15) 1 commit
  (merged to 'next' on 2017-08-19 at 85898d1e7c)
 + sha1_file: make read_info_alternates static

 Code clean-up.

 Will merge to 'master'.


* as/grep-quiet-no-match-exit-code-fix (2017-08-17) 1 commit
  (merged to 'next' on 2017-08-19 at 362f88fb41)
 + git-grep: correct exit code with --quiet and -L

 "git grep -L" and "git grep --quiet -L" reported different exit
 codes; this has been corrected.

 Will merge to 'master'.


* hv/t5526-andand-chain-fix (2017-08-17) 1 commit
  (merged to 'next' on 2017-08-19 at fa95053653)
 + t5526: fix some broken && chains

 Test fix.

 Will merge to 'master'.


* jc/diff-sane-truncate-no-more (2017-08-17) 1 commit
  (merged to 'next' on 2017-08-19 at 3ba3980eed)
 + diff: retire sane_truncate_fn

 Code clean-up.

 Will merge to 'master'.


* ks/branch-set-upstream (2017-08-17) 3 commits
 - branch: quote branch/ref names to improve readability
 - builtin/branch: stop supporting the "--set-upstream" option
 - t3200: cleanup cruft of a test

 "branch --set-upstream" that has been deprecated in Git 1.8 has
 finally been retired.

 Will merge to 'next'.


* mg/format-ref-doc-fix (2017-08-18) 2 commits
  (merged to 'next' on 2017-08-19 at 6490525c54)
 + Documentation/git-for-each-ref: clarify peeling of tags for --format
 + Documentation: use proper wording for ref format strings

 Doc fix.

 Will merge to 'master'.


* po/read-graft-line (2017-08-18) 4 commits
  (merged to 'next' on 2017-08-22 at 1e3fe0d3a1)
 + commit: rewrite read_graft_line
 + commit: allocate array using object_id size
 + commit: replace the raw buffer with strbuf in read_graft_line
 + sha1_file: fix definition of null_sha1

 Conversion from uchar[20] to struct object_id continues; this is to
 ensure that we do not assume sizeof(struct object_id) is the same
 as the length of SHA-1 hash (or length of longest hash we support).

 Will merge to 'master'.


* sb/submodule-parallel-update (2017-08-17) 1 commit
  (merged to 'next' on 2017-08-19 at c023a834f0)
 + submodule.sh: remove unused variable

 Code clean-up.

 Will merge to 'master'.


* ks/prepare-commit-msg-sample-fix (2017-08-14) 1 commit
  (merged to 'next' on 2017-08-19 at e75c30de64)
 + hook: use correct logical variable

 An "oops" fix to a topic that is already in 'master'.

 Will merge to 'master'.


* mk/diff-delta-uint-may-be-shorter-than-ulong (2017-08-10) 1 commit
 . diff-delta: fix encoding size that would not fit in "unsigned int"

 The machinery to create xdelta used in pack files received the
 sizes of the data in size_t, but lost the higher bits of them by
 storing them in "unsigned int" during the computation, which is
 fixed.

 Dropped, as it was rerolled for review as part of a larger series.
 cf. <1502914591-26215-1-git-send-email-martin@mail.zuhause>


* jk/drop-ancient-curl (2017-08-09) 5 commits
 - http: #error on too-old curl
 - curl: remove ifdef'd code never used with curl >=7.19.4
 - http: drop support for curl < 7.19.4
 - http: drop support for curl < 7.16.0
 - http: drop support for curl < 7.11.1

 Some code in http.c that has bitrot is being removed.

 Will be rerolled after tc/curl-with-backports stabilizes.


* tc/curl-with-backports (2017-08-11) 2 commits
 - http: use a feature check to enable GSSAPI delegation control
 - http: fix handling of missing CURLPROTO_*

 Updates to the HTTP layer we made recently unconditionally used
 features of libCurl without checking the existence of them, causing
 compilation errors, which has been fixed.  Also migrate the code to
 check feature macros, not version numbers, to cope better with
 libCurl that vendor ships with backported features.

 Will merge to 'next'.


* jk/trailers-parse (2017-08-20) 9 commits
  (merged to 'next' on 2017-08-22 at 2d4d937141)
 + doc/interpret-trailers: fix "the this" typo
  (merged to 'next' on 2017-08-19 at faa63f8196)
 + pretty: support normalization options for %(trailers)
 + t4205: refactor %(trailers) tests
 + pretty: move trailer formatting to trailer.c
 + interpret-trailers: add --parse convenience option
 + interpret-trailers: add an option to unfold values
 + interpret-trailers: add an option to show only existing trailers
 + interpret-trailers: add an option to show only the trailers
 + trailer: put process_trailers() options into a struct

 "git interpret-trailers" has been taught a "--parse" and a few
 other options to make it easier for scripts to grab existing
 trailer lines from a commit log message.

 Will merge to 'master'.
 Possible leftover bits are mentioned in
 cf. <20170820094009.z23wclpku35txflg@sigill.intra.peff.net>


* mk/use-size-t-in-zlib (2017-08-10) 1 commit
 . zlib.c: use size_t for size

 The wrapper to call into zlib followed our long tradition to use
 "unsigned long" for sizes of regions in memory, which have been
 updated to use "size_t".

 Dropped, as it was rerolled for review as part of a larger series.
 cf. <1502914591-26215-1-git-send-email-martin@mail.zuhause>


* jt/sha1-file-cleanup (2017-08-11) 2 commits
  (merged to 'next' on 2017-08-19 at 93f4c94578)
 + sha1_file: remove read_packed_sha1()
 + sha1_file: set whence in storage-specific info fn
 (this branch is used by jt/packmigrate.)

 Preparatory code clean-up.

 Will merge to 'master'.


* kw/rebase-progress (2017-08-14) 2 commits
  (merged to 'next' on 2017-08-19 at 1958f378dd)
 + rebase: turn on progress option by default for format-patch
 + format-patch: have progress option while generating patches

 "git rebase", especially when it is run by mistake and ends up
 trying to replay many changes, spent long time in silence.  The
 command has been taught to show progress report when it spends
 long time preparing these many changes to replay (which would give
 the user a chance to abort with ^C).

 Will merge to 'master'.


* mk/diff-delta-avoid-large-offset (2017-08-11) 1 commit
 . diff-delta: do not allow delta offset truncation

 The delta format used in the packfile cannot reference data at
 offset larger than what can be expressed in 4-byte, but the
 generator for the data failed to make sure the offset does not
 overflow.  This has been corrected.

 Dropped, as it was rerolled for review as part of a larger series.
 cf. <1502914591-26215-1-git-send-email-martin@mail.zuhause>


* nm/stash-untracked (2017-08-11) 1 commit
  (merged to 'next' on 2017-08-19 at 70990d7eb3)
 + stash: clean untracked files before reset

 "git stash -u" used the contents of the committed version of the
 ".gitignore" file to decide which paths are ignored, even when the
 file has local changes.  The command has been taught to instead use
 the locally modified contents.

 Will merge to 'master'.


* rs/object-id (2017-08-14) 1 commit
  (merged to 'next' on 2017-08-19 at 0f7283cd19)
 + tree-walk: convert fill_tree_descriptor() to object_id

 Conversion from uchar[20] to struct object_id continues.

 Will merge to 'master'.


* ah/doc-empty-string-is-false (2017-08-14) 1 commit
  (merged to 'next' on 2017-08-19 at df47ffeffa)
 + doc: clarify "config --bool" behaviour with empty string

 Doc update.

 Will merge to 'master'.


* jt/diff-color-move-fix (2017-08-16) 3 commits
  (merged to 'next' on 2017-08-19 at 6ae3831c8c)
 + diff: define block by number of alphanumeric chars
 + diff: respect MIN_BLOCK_LENGTH for last block
 + diff: avoid redundantly clearing a flag
 (this branch uses sb/diff-color-move.)

 A handful of bugfixes and an improvement to "diff --color-moved".

 Will merge to 'master'.


* kd/stash-with-bash-4.4 (2017-08-14) 1 commit
  (merged to 'next' on 2017-08-19 at 79b2c4b052)
 + stash: prevent warning about null bytes in input

 bash 4.4 or newer gave a warning on NUL byte in command
 substitution done in "git stash"; this has been squelched.

 Will merge to 'master'.


* kw/commit-keep-index-when-pre-commit-is-not-run (2017-08-16) 1 commit
  (merged to 'next' on 2017-08-19 at 2b5a25e5ae)
 + commit: skip discarding the index if there is no pre-commit hook

 "git commit" used to discard the index and re-read from the filesystem
 just in case the pre-commit hook has updated it in the middle; this
 has been optimized out when we know we do not run the pre-commit hook.

 Will merge to 'master'.


* bw/git-clang-format (2017-08-14) 2 commits
 - Makefile: add style build rule
 - clang-format: outline the git project's coding style

 "make style" runs git-clang-format to help developers by pointing
 out coding style issues.


* lg/merge-signoff (2017-07-25) 1 commit
  (merged to 'next' on 2017-08-19 at cb53d7b026)
 + merge: add a --signoff flag

 "git merge" learned a "--signoff" option to add the Signed-off-by:
 trailer with the committer's name.

 Will merge to 'master'.


* pb/trailers-from-command-line (2017-08-14) 4 commits
  (merged to 'next' on 2017-08-19 at b12342e49e)
 + interpret-trailers: fix documentation typo
 + interpret-trailers: add options for actions
 + trailers: introduce struct new_trailer_item
 + trailers: export action enums and corresponding lookup functions

 "git interpret-trailers" learned to take the trailer specifications
 from the command line that overrides the configured values.

 Will merge to 'master'.


* sb/submodule-recursive-checkout-detach-head (2017-07-28) 2 commits
 - Documentation/checkout: clarify submodule HEADs to be detached
 - recursive submodules: detach HEAD from new state

 "git checkout --recursive" may overwrite and rewind the history of
 the branch that happens to be checked out in submodule
 repositories, which might not be desirable.  Detach the HEAD but
 still allow the recursive checkout to succeed in such a case.

 Undecided.
 This needs justification in a larger picture; it is unclear why
 this is better than rejecting recursive checkout, for example.


* ti/external-sha1dc (2017-08-16) 2 commits
 - sha1dc: allow building with the external sha1dc library
 - sha1dc: build git plumbing code more explicitly

 Platforms that ship with a separate sha1 with collision detection
 library can link to it instead of using the copy we ship as part of
 our source tree.

 Waiting for reviews.
 cf. <20170815120417.31616-1-tiwai@suse.de>


* bw/submodule-config-cleanup (2017-08-03) 17 commits
 - submodule: remove gitmodules_config
 - unpack-trees: improve loading of .gitmodules
 - submodule-config: lazy-load a repository's .gitmodules file
 - submodule-config: move submodule-config functions to submodule-config.c
 - submodule-config: remove support for overlaying repository config
 - diff: stop allowing diff to have submodules configured in .git/config
 - submodule: remove submodule_config callback routine
 - unpack-trees: don't respect submodule.update
 - submodule: don't rely on overlayed config when setting diffopts
 - fetch: don't overlay config with submodule-config
 - submodule--helper: don't overlay config in update-clone
 - submodule--helper: don't overlay config in remote_submodule_branch
 - add, reset: ensure submodules can be added or reset
 - submodule: don't use submodule_from_name
 - t7411: check configuration parsing errors
 - Merge branch 'bc/object-id' into bw/submodule-config-cleanup
 - Merge branch 'bw/grep-recurse-submodules' into bw/submodule-config-cleanup

 Code clean-up to avoid mixing values read from the .gitmodules file
 and values read from the .git/config file.

 So, after the recent discussion around submodule.<name>.update (and
 its resolution "use submodule.<name>.active; "reset --hard" must
 ignore the .update thing"), this is now good to go, I presume?
 Please yell at me that I am clueless if that is not the case ;-)


* jk/check-ref-format-oor-fix (2017-07-14) 1 commit
 - check-ref-format: require a repository for --branch

 Discussion slowly continues...
 cf. <20170717172709.GL93855@aiede.mtv.corp.google.com>
 cf. <20170817102217.3yw7uxnkupdy3lh5@sigill.intra.peff.net>


* rs/sha1-file-micro-optim (2017-07-09) 2 commits
 - SQUASH???
 - sha1_file: add slash once in for_each_file_in_obj_subdir()

 Code cleanup.

 Perhaps drop.
 cf. <f59c8256-716b-9305-2a4f-d4fe49f666ff@web.de>


* jc/allow-lazy-cas (2017-07-06) 1 commit
 - push: disable lazy --force-with-lease by default

 Because "git push --force-with-lease[=<ref>]" that relies on the
 stability of remote-tracking branches is unsafe when something
 fetches into the repository behind user's back, it is now disabled
 by default.  A new configuration variable can be used to enable it
 by users who know what they are doing.  This would pave the way to
 possibly turn `--force` into `--force-with-lease`.

 Will discard.
 Independent from disabling the feature by default, this stirred up
 a discussion to replace the DWIM heuristics with a better one, which
 deserves to be its own topic.
 cf. <alpine.DEB.2.21.1.1707131435220.4193@virtualbox>


* ex/deprecate-empty-pathspec-as-match-all (2017-06-23) 2 commits
  (merged to 'next' on 2017-08-14 at 24db08a6e8)
 + pathspec: die on empty strings as pathspec
 + t0027: do not use an empty string as a pathspec element

 The final step to make an empty string as a pathspec element
 illegal.  We started this by first deprecating and warning a
 pathspec that has such an element in 2.11 (Nov 2016).

 Hopefully we can merge this down to the 'master' by the end of the
 year?  A deprecation warning period that is about 1 year does not
 sound too bad.

 Will cook in 'next'.
 As the draft RelNotes says, let's merge this to 'master' after
 this release cycle.


* sd/branch-copy (2017-06-18) 3 commits
 - branch: add a --copy (-c) option to go with --move (-m)
 - branch: add test for -m renaming multiple config sections
 - config: create a function to format section headers

 "git branch" learned "-c/-C" to create and switch to a new branch
 by copying an existing one.

 I personally do not think "branch --copy master backup" while on
 "master" that switches to "backup" is a good UI, and I *will* say
 "I told you so" when users complain after we merge this down to
 'master'.


* sb/diff-color-move (2017-06-30) 26 commits
  (merged to 'next' on 2017-08-19 at a239d031bc)
 + diff: document the new --color-moved setting
 + diff.c: add dimming to moved line detection
 + diff.c: color moved lines differently, plain mode
 + diff.c: color moved lines differently
 + diff.c: buffer all output if asked to
 + diff.c: emit_diff_symbol learns about DIFF_SYMBOL_SUMMARY
 + diff.c: emit_diff_symbol learns about DIFF_SYMBOL_STAT_SEP
 + diff.c: convert word diffing to use emit_diff_symbol
 + diff.c: convert show_stats to use emit_diff_symbol
 + diff.c: convert emit_binary_diff_body to use emit_diff_symbol
 + submodule.c: migrate diff output to use emit_diff_symbol
 + diff.c: emit_diff_symbol learns DIFF_SYMBOL_REWRITE_DIFF
 + diff.c: emit_diff_symbol learns about DIFF_SYMBOL_BINARY_FILES
 + diff.c: emit_diff_symbol learns DIFF_SYMBOL_HEADER
 + diff.c: emit_diff_symbol learns DIFF_SYMBOL_FILEPAIR_{PLUS, MINUS}
 + diff.c: emit_diff_symbol learns DIFF_SYMBOL_CONTEXT_INCOMPLETE
 + diff.c: emit_diff_symbol learns DIFF_SYMBOL_WORDS[_PORCELAIN]
 + diff.c: migrate emit_line_checked to use emit_diff_symbol
 + diff.c: emit_diff_symbol learns DIFF_SYMBOL_NO_LF_EOF
 + diff.c: emit_diff_symbol learns DIFF_SYMBOL_CONTEXT_FRAGINFO
 + diff.c: emit_diff_symbol learns DIFF_SYMBOL_CONTEXT_MARKER
 + diff.c: introduce emit_diff_symbol
 + diff.c: factor out diff_flush_patch_all_file_pairs
 + diff.c: move line ending check into emit_hunk_header
 + diff.c: readability fix
 + Merge branch 'sb/hashmap-customize-comparison' into sb/diff-color-move
 (this branch is used by jt/diff-color-move-fix.)

 "git diff" has been taught to optionally paint new lines that are
 the same as deleted lines elsewhere differently from genuinely new
 lines.

 Will merge to 'master'.

--------------------------------------------------
[Discarded]

* nd/prune-in-worktree (2017-04-24) 12 commits
 . rev-list: expose and document --single-worktree
 . revision.c: --reflog add HEAD reflog from all worktrees
 . files-backend: make reflog iterator go through per-worktree reflog
 . revision.c: --all adds HEAD from all worktrees
 . refs: remove dead for_each_*_submodule()
 . revision.c: use refs_for_each*() instead of for_each_*_submodule()
 . refs: add refs_head_ref()
 . refs: move submodule slash stripping code to get_submodule_ref_store
 . refs.c: refactor get_submodule_ref_store(), share common free block
 . revision.c: --indexed-objects add objects from all worktrees
 . revision.c: refactor add_index_objects_to_pending()
 . revision.h: new flag in struct rev_info wrt. worktree-related refs

 "git gc" and friends when multiple worktrees are used off of a
 single repository did not consider the index and per-worktree refs
 of other worktrees as the root for reachability traversal, making
 objects that are in use only in other worktrees to be subject to
 garbage collection.


* jc/apply-with-crlf (2017-08-16) 6 commits
 . apply: clarify read_old_data() is about no-index case
 . apply: localize the CRLF business to read_old_data()
 . apply: only pay attention to CRLF in the preimage
 . apply: remove unused field apply_state.flags
 . apply: file commited with CRLF should roundtrip diff and apply
 + convert: add SAFE_CRLF_KEEP_CRLF
 (this branch is tangled with tb/apply-with-crlf.)

 This served as an input to updated tb/apply-with-crlf.

^ permalink raw reply	[relevance 6%]

* Re: What's cooking in git.git (Aug 2017, #04; Fri, 18)
  2017-08-18 21:26  4% What's cooking in git.git (Aug 2017, #04; Fri, 18) Junio C Hamano
@ 2017-08-19 11:26  0% ` Torsten Bögershausen
  0 siblings, 0 replies; 25+ results
From: Torsten Bögershausen @ 2017-08-19 11:26 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git


> * tb/apply-with-crlf (2017-08-17) 3 commits
>  - SQUASH???
>  - apply: file commited with CRLF should roundtrip diff and apply
>  - convert: add SAFE_CRLF_KEEP_CRLF
>  (this branch is tangled with jc/apply-with-crlf.)
> 
>  "git apply" that is used as a better "patch -p1" failed to apply a
>  taken from a file with CRLF line endings to a file with CRLF line
>  endings.  The root cause was because it misused convert_to_git()
>  that tried to do "safe-crlf" processing by looking at the index
>  entry at the same path, which is a nonsense---in that mode, "apply"
>  is not working on the data in (or derived from) the index at all.
>  This has been fixed.
> 
>  Will merge to 'next' after squashing the fix in.
> 
> 
> * rs/t1002-do-not-use-sum (2017-08-15) 1 commit
>  - t1002: stop using sum(1)
> 
>  Test simplification.
> 
>  Will merge to 'next'.
> 
> 
> * sb/sha1-file-cleanup (2017-08-15) 1 commit
>  - sha1_file: make read_info_alternates static
> 
>  Code clean-up.
> 
>  Will merge to 'next'.
> 
> 
> * as/grep-quiet-no-match-exit-code-fix (2017-08-17) 1 commit
>  - git-grep: correct exit code with --quiet and -L
> 
>  "git grep -L" and "git grep --quiet -L" reported different exit
>  codes; this has been corrected.
> 
>  Will merge to 'next'.
> 
> 
> * hv/t5526-andand-chain-fix (2017-08-17) 1 commit
>  - t5526: fix some broken && chains
> 
>  Test fix.
> 
>  Will merge to 'next'.
> 
> 
> * jc/diff-sane-truncate-no-more (2017-08-17) 1 commit
>  - diff: retire sane_truncate_fn
> 
>  Code clean-up.
> 
>  Will merge to 'next'.
> 
> 
> * ks/branch-set-upstream (2017-08-17) 3 commits
>  - branch: quote branch/ref names to improve readability
>  - builtin/branch: stop supporting the "--set-upstream" option
>  - t3200: cleanup cruft of a test
> 
>  "branch --set-upstream" that has been deprecated in Git 1.8 has
>  finally been retired.
> 
>  Will merge to 'next'.
> 
> 
> * mg/format-ref-doc-fix (2017-08-18) 2 commits
>  - Documentation/git-for-each-ref: clarify peeling of tags for --format
>  - Documentation: use proper wording for ref format strings
> 
>  Doc fix.
> 
>  Will merge to 'next'.
> 
> 
> * po/read-graft-line (2017-08-18) 4 commits
>  - commit: rewrite read_graft_line
>  - commit: allocate array using object_id size
>  - commit: replace the raw buffer with strbuf in read_graft_line
>  - sha1_file: fix definition of null_sha1
> 
>  Conversion from uchar[20] to struct object_id continues; this is to
>  ensure that we do not assume sizeof(struct object_id) is the same
>  as the length of SHA-1 hash (or length of longest hash we support).
> 
>  Will merge to 'next'.
> 
> 
> * sb/submodule-parallel-update (2017-08-17) 1 commit
>  - submodule.sh: remove unused variable
> 
>  Code clean-up.
> 
>  Will merge to 'next'.
> 
> 
> * jc/apply-with-crlf (2017-08-16) 6 commits
>  . apply: clarify read_old_data() is about no-index case
>  . apply: localize the CRLF business to read_old_data()
>  . apply: only pay attention to CRLF in the preimage
>  . apply: remove unused field apply_state.flags
>  . apply: file commited with CRLF should roundtrip diff and apply
>  - convert: add SAFE_CRLF_KEEP_CRLF
>  (this branch is tangled with tb/apply-with-crlf.)
> 
>  Will discard as it now is part of the tb/apply-with-crlf topic.
> 
> --------------------------------------------------
> [Stalled]
> 
> * mg/status-in-progress-info (2017-05-10) 2 commits
>  - status --short --inprogress: spell it as --in-progress
>  - status: show in-progress info for short status
> 
>  "git status" learns an option to report various operations
>  (e.g. "merging") that the user is in the middle of.
> 
>  cf. <xmqqmvakcdqw.fsf@gitster.mtv.corp.google.com>
> 
> 
> * nd/worktree-move (2017-04-20) 6 commits
>  - worktree remove: new command
>  - worktree move: refuse to move worktrees with submodules
>  - worktree move: accept destination as directory
>  - worktree move: new command
>  - worktree.c: add update_worktree_location()
>  - worktree.c: add validate_worktree()
> 
>  "git worktree" learned move and remove subcommands.
> 
>  Expecting a reroll.
>  cf. <20170420101024.7593-1-pclouds@gmail.com>
>  cf. <20170421145916.mknekgqzhxffu7di@sigill.intra.peff.net>
>  cf. <d0e81b1e-5869-299e-f462-4d43dc997bd1@ramsayjones.plus.com>
> 
> 
> * sg/clone-refspec-from-command-line-config (2017-06-16) 2 commits
>  - Documentation/clone: document ignored configuration variables
>  - clone: respect additional configured fetch refspecs during initial fetch
>  (this branch is used by sg/remote-no-string-refspecs.)
> 
>  "git clone -c var=val" is a way to set configuration variables in
>  the resulting repository, but it is more useful to also make these
>  variables take effect while the initial clone is happening,
>  e.g. these configuration variables could be fetch refspecs.
> 
>  Waiting for a response.
>  cf. <20170617112228.vugswym4o4owf6wj@sigill.intra.peff.net>
>  cf. <xmqqmv8zhdap.fsf@gitster.mtv.corp.google.com>
> 
> 
> * js/rebase-i-final (2017-07-27) 10 commits
>  - rebase -i: rearrange fixup/squash lines using the rebase--helper
>  - t3415: test fixup with wrapped oneline
>  - rebase -i: skip unnecessary picks using the rebase--helper
>  - rebase -i: check for missing commits in the rebase--helper
>  - t3404: relax rebase.missingCommitsCheck tests
>  - rebase -i: also expand/collapse the SHA-1s via the rebase--helper
>  - rebase -i: do not invent onelines when expanding/collapsing SHA-1s
>  - rebase -i: remove useless indentation
>  - rebase -i: generate the script via rebase--helper
>  - t3415: verify that an empty instructionFormat is handled as before
> 
>  The final batch to "git rebase -i" updates to move more code from
>  the shell script to C.
> 
>  Expecting a reroll.
> 
> 
> * bp/fsmonitor (2017-06-12) 6 commits
>  - fsmonitor: add a sample query-fsmonitor hook script for Watchman
>  - fsmonitor: add documentation for the fsmonitor extension.
>  - fsmonitor: add test cases for fsmonitor extension
>  - fsmonitor: teach git to optionally utilize a file system monitor to speed up detecting new or changed files.
>  - dir: make lookup_untracked() available outside of dir.c
>  - bswap: add 64 bit endianness helper get_be64
> 
>  We learned to talk to watchman to speed up "git status".
> 
>  Expecting a reroll.
>  cf. <bade1166-e646-b05a-f65b-adb8da8ba0a7@gmail.com>
> 
> --------------------------------------------------
> [Cooking]
> 
> * ks/prepare-commit-msg-sample-fix (2017-08-14) 1 commit
>  - hook: use correct logical variable
> 
>  An "oops" fix to a topic that is already in 'master'.
> 
>  Will merge to 'next'.
> 
> 
> * ab/ref-filter-no-contains (2017-08-07) 1 commit
>   (merged to 'next' on 2017-08-18 at 7ec9d3d3a2)
>  + tests: don't give unportable ">" to "test" built-in, use -gt
> 
>  A test fix.
> 
>  Will merge to 'master'.
> 
> 
> * ma/parse-maybe-bool (2017-08-07) 6 commits
>   (merged to 'next' on 2017-08-18 at ba22bb836c)
>  + parse_decoration_style: drop unused argument `var`
>  + treewide: deprecate git_config_maybe_bool, use git_parse_maybe_bool
>  + config: make git_{config,parse}_maybe_bool equivalent
>  + config: introduce git_parse_maybe_bool_text
>  + t5334: document that git push --signed=1 does not work
>  + Doc/git-{push,send-pack}: correct --sign= to --signed=
> 
>  Code clean-up.
> 
>  Will merge to 'master'.
> 
> 
> * mf/no-dashed-subcommands (2017-08-07) 1 commit
>   (merged to 'next' on 2017-08-18 at 05365af2ff)
>  + scripts: use "git foo" not "git-foo"
> 
>  Code clean-up.
> 
>  Will merge to 'master'.
> 
> 
> * mk/diff-delta-uint-may-be-shorter-than-ulong (2017-08-10) 1 commit
>  - diff-delta: fix encoding size that would not fit in "unsigned int"
> 
>  The machinery to create xdelta used in pack files received the
>  sizes of the data in size_t, but lost the higher bits of them by
>  storing them in "unsigned int" during the computation, which is
>  fixed.
> 
>  Will merge to 'next'.
> 
> 
> * rs/obsd-getcwd-workaround (2017-08-07) 1 commit
>   (merged to 'next' on 2017-08-18 at adb98cfe0c)
>  + t0001: skip test with restrictive permissions if getpwd(3) respects them
> 
>  Test portability fix for BSDs.
> 
>  Will merge to 'master'.
> 
> 
> * rs/in-obsd-basename-dirname-take-const (2017-08-07) 1 commit
>   (merged to 'next' on 2017-08-18 at c739077e3b)
>  + test-path-utils: handle const parameter of basename and dirname
> 
>  Portability fix.
> 
>  Will merge to 'master'.
> 
> 
> * rs/t3700-clean-leftover (2017-08-08) 1 commit
>   (merged to 'next' on 2017-08-18 at 12232a8cd3)
>  + t3700: fix broken test under !POSIXPERM
> 
>  A test fix.
> 
>  Will merge to 'master'.
> 
> 
> * jc/perl-git-comment-typofix (2017-08-07) 1 commit
>   (merged to 'next' on 2017-08-18 at b2ad043e6a)
>  + perl/Git.pm: typofix in a comment
> 
>  A comment fix.
> 
>  Will merge to 'master'.
> 
> 
> * jk/drop-ancient-curl (2017-08-09) 5 commits
>  - http: #error on too-old curl
>  - curl: remove ifdef'd code never used with curl >=7.19.4
>  - http: drop support for curl < 7.19.4
>  - http: drop support for curl < 7.16.0
>  - http: drop support for curl < 7.11.1
> 
>  Some code in http.c that has bitrot is being removed.
> 
>  What is the status of the discussion around this area????
> 
> 
> * tc/curl-with-backports (2017-08-11) 2 commits
>  - http: use a feature check to enable GSSAPI delegation control
>  - http: fix handling of missing CURLPROTO_*
> 
>  Updates to the HTTP layer we made recently unconditionally used
>  features of libCurl without checking the existence of them, causing
>  compilation errors, which has been fixed.  Also migrate the code to
>  check feature macros, not version numbers, to cope better with
>  libCurl that vendor ships with backported features.
> 
>  What is the doneness of this topic????
> 
> 
> * jk/drop-sha1-entry-pos (2017-08-09) 1 commit
>   (merged to 'next' on 2017-08-18 at 3a4d9bcf12)
>  + sha1_file: drop experimental GIT_USE_LOOKUP search
> 
>  Code clean-up.
> 
>  Will merge to 'master'.
> 
> 
> * jk/hashcmp-memcmp (2017-08-09) 1 commit
>   (merged to 'next' on 2017-08-18 at 27c4aa5520)
>  + hashcmp: use memcmp instead of open-coded loop
> 
>  Code clean-up.
> 
>  Will merge to 'master'.
> 
> 
> * jk/trailers-parse (2017-08-15) 8 commits
>  - pretty: support normalization options for %(trailers)
>  - t4205: refactor %(trailers) tests
>  - pretty: move trailer formatting to trailer.c
>  - interpret-trailers: add --parse convenience option
>  - interpret-trailers: add an option to unfold values
>  - interpret-trailers: add an option to show only existing trailers
>  - interpret-trailers: add an option to show only the trailers
>  - trailer: put process_trailers() options into a struct
> 
>  "git interpret-trailers" has been taught a "--parse" and a few
>  other options to make it easier for scripts to grab existing
>  trailer lines from a commit log message.
> 
>  Will merge to 'next'.
> 
> 
> * mk/use-size-t-in-zlib (2017-08-10) 1 commit
>  - zlib.c: use size_t for size
> 
>  The wrapper to call into zlib followed our long tradition to use
>  "unsigned long" for sizes of regions in memory, which have been
>  updated to use "size_t".
> 
>  Needs review.
> 
>  There were some concerns raised around s/off_t/size_t/ in this
>  change.
> 
> 
> * pw/am-signoff (2017-08-08) 1 commit
>   (merged to 'next' on 2017-08-18 at 7678ed822c)
>  + am: fix signoff when other trailers are present
> 
>  "git am -s" has been taught that some input may end with a trailer
>  block that is not Signed-off-by: and it should refrain from adding
>  an extra blank line before adding a new sign-off in such a case.
> 
>  Will merge to 'master'.
> 
> 
> * rj/add-chmod-error-message (2017-08-09) 1 commit
>   (merged to 'next' on 2017-08-18 at ba2afb696a)
>  + builtin/add: add detail to a 'cannot chmod' error message
> 
>  Message fix.
> 
>  Will merge to 'master'.
> 
> 
> * rs/apply-lose-prefix-length (2017-08-09) 1 commit
>   (merged to 'next' on 2017-08-18 at 6ce0dbb3f0)
>  + apply: remove prefix_length member from apply_state
> 
>  Code clean-up.
> 
>  Will merge to 'master'.
> 
> 
> * rs/find-pack-entry-bisection (2017-08-09) 1 commit
>   (merged to 'next' on 2017-08-18 at b4130177a9)
>  + sha1_file: avoid comparison if no packed hash matches the first byte
> 
>  Code clean-up.
> 
>  Will merge to 'master'.
> 
> 
> * rs/fsck-obj-leakfix (2017-08-10) 1 commit
>   (merged to 'next' on 2017-08-18 at 77e3d111ef)
>  + fsck: free buffers on error in fsck_obj()
> 
>  Memory leak in an error codepath has been plugged.
> 
>  Will merge to 'master'.
> 
> 
> * rs/merge-microcleanup (2017-08-10) 1 commit
>   (merged to 'next' on 2017-08-18 at 79ba7d301d)
>  + merge: use skip_prefix()
> 
>  Code clean-up.
> 
>  Will merge to 'master'.
> 
> 
> * rs/strbuf-getwholeline-fix (2017-08-10) 1 commit
>   (merged to 'next' on 2017-08-18 at 5f879d8261)
>  + strbuf: clear errno before calling getdelim(3)
> 
>  A helper function to read a single whole line into strbuf
>  mistakenly triggered OOM error at EOF under certain conditions,
>  which has been fixed.
> 
>  Will merge to 'master'.
> 
> 
> * rs/t4062-obsd (2017-08-09) 1 commit
>   (merged to 'next' on 2017-08-18 at 02bff42d86)
>  + t4062: use less than 256 repetitions in regex
> 
>  Test portability fix.
> 
>  Will merge to 'master'.
> 
> 
> * rs/unpack-entry-leakfix (2017-08-10) 1 commit
>   (merged to 'next' on 2017-08-18 at 1e7d8f54b1)
>  + sha1_file: release delta_stack on error in unpack_entry()
> 
>  Memory leak in an error codepath has been plugged.
> 
>  Will merge to 'master'.
> 
> 
> * rs/win32-syslog-leakfix (2017-08-10) 1 commit
>   (merged to 'next' on 2017-08-18 at 011eccb7bd)
>  + win32: plug memory leak on realloc() failure in syslog()
> 
>  Memory leak in an error codepath has been plugged.
> 
>  Will merge to 'master'.
> 
> 
> * sb/retire-t1200 (2017-08-10) 1 commit
>   (merged to 'next' on 2017-08-18 at d436f9bbce)
>  + t1200: remove t1200-tutorial.sh
> 
>  A test script that outlived its usefulness has been removed.
> 
>  Will merge to 'master'.
> 
> 
> * ur/svn-local-zone (2017-08-08) 1 commit
>   (merged to 'next' on 2017-08-18 at f222bb6db0)
>  + git svn fetch: Create correct commit timestamp when using --localtime
> 
>  "git svn" used with "--localtime" option did not compute the tz
>  offset for the timestamp in question and instead always used the
>  current time, which has been corrected.
> 
>  Will merge to 'master'.
> 
> 
> * jt/sha1-file-cleanup (2017-08-11) 2 commits
>  - sha1_file: remove read_packed_sha1()
>  - sha1_file: set whence in storage-specific info fn
> 
>  Preparatory code clean-up.
> 
>  Will merge to 'next'.
> 
> 
> * kw/rebase-progress (2017-08-14) 2 commits
>  - rebase: turn on progress option by default for format-patch
>  - format-patch: have progress option while generating patches
> 
>  "git rebase", especially when it is run by mistake and ends up
>  trying to replay many changes, spent long time in silence.  The
>  command has been taught to show progress report when it spends
>  long time preparing these many changes to replay (which would give
>  the user a chance to abort with ^C).
> 
>  Will merge to 'next'.
> 
> 
> * mk/diff-delta-avoid-large-offset (2017-08-11) 1 commit
>  - diff-delta: do not allow delta offset truncation
> 
>  The delta format used in the packfile cannot reference data at
>  offset larger than what can be expressed in 4-byte, but the
>  generator for the data failed to make sure the offset does not
>  overflow.  This has been corrected.
> 
>  Will merge to 'next'.
> 
> 
> * nm/stash-untracked (2017-08-11) 1 commit
>  - stash: clean untracked files before reset
> 
>  "git stash -u" used the contents of the committed version of the
>  ".gitignore" file to decide which paths are ignored, even when the
>  file has local changes.  The command has been taught to instead use
>  the locally modified contents.
> 
>  Will merge to 'next'.
> 
> 
> * rs/object-id (2017-08-14) 1 commit
>  - tree-walk: convert fill_tree_descriptor() to object_id
> 
>  Conversion from uchar[20] to struct object_id continues.
> 
>  Will merge to 'next'.
> 
> 
> * ah/doc-empty-string-is-false (2017-08-14) 1 commit
>  - doc: clarify "config --bool" behaviour with empty string
> 
>  Doc update.
> 
>  Will merge to 'next'.
> 
> 
> * jt/diff-color-move-fix (2017-08-16) 3 commits
>  - diff: define block by number of alphanumeric chars
>  - diff: respect MIN_BLOCK_LENGTH for last block
>  - diff: avoid redundantly clearing a flag
>  (this branch uses sb/diff-color-move.)
> 
>  A handful of bugfixes and an improvement to "diff --color-moved".
> 
>  Will merge to 'next'.
> 
> 
> * kd/stash-with-bash-4.4 (2017-08-14) 1 commit
>  - stash: prevent warning about null bytes in input
> 
>  bash 4.4 or newer gave a warning on NUL byte in command
>  substitution done in "git stash"; this has been squelched.
> 
>  Will merge to 'next'.
> 
> 
> * kw/commit-keep-index-when-pre-commit-is-not-run (2017-08-16) 1 commit
>  - commit: skip discarding the index if there is no pre-commit hook
> 
>  "git commit" used to discard the index and re-read from the filesystem
>  just in case the pre-commit hook has updated it in the middle; this
>  has been optimized out when we know we do not run the pre-commit hook.
> 
>  Will merge to 'next'.
> 
> 
> * bw/git-clang-format (2017-08-14) 2 commits
>  - Makefile: add style build rule
>  - clang-format: outline the git project's coding style
> 
>  "make style" runs git-clang-format to help developers by pointing
>  out coding style issues.
> 
> 
> * pw/sequence-rerere-autoupdate (2017-08-02) 6 commits
>   (merged to 'next' on 2017-08-14 at 010cbb0cbe)
>  + cherry-pick/revert: reject --rerere-autoupdate when continuing
>  + cherry-pick/revert: remember --rerere-autoupdate
>  + t3504: use test_commit
>  + rebase -i: honor --rerere-autoupdate
>  + rebase: honor --rerere-autoupdate
>  + am: remember --rerere-autoupdate setting
> 
>  Commands like "git rebase" accepted the --rerere-autoupdate option
>  from the command line, but did not always use it.  This has been
>  fixed.
> 
>  Will merge to 'master'.
> 
> 
> * bw/clone-recursive-quiet (2017-08-04) 1 commit
>   (merged to 'next' on 2017-08-14 at fbd4473ce4)
>  + clone: teach recursive clones to respect -q
> 
>  "git clone --recurse-submodules --quiet" did not pass the quiet
>  option down to submodules.
> 
>  Will merge to 'master'.
> 
> 
> * lg/merge-signoff (2017-07-25) 1 commit
>  - merge: add a --signoff flag
> 
>  "git merge" learned a "--signoff" option to add the Signed-off-by:
>  trailer with the committer's name.
> 
>  Will merge to 'next'.
> 
> 
> * pb/trailers-from-command-line (2017-08-14) 4 commits
>  - interpret-trailers: fix documentation typo
>  - interpret-trailers: add options for actions
>  - trailers: introduce struct new_trailer_item
>  - trailers: export action enums and corresponding lookup functions
> 
>  "git interpret-trailers" learned to take the trailer specifications
>  from the command line that overrides the configured values.
> 
>  Will merge to 'next'.
> 
> 
> * sb/submodule-recursive-checkout-detach-head (2017-07-28) 2 commits
>  - Documentation/checkout: clarify submodule HEADs to be detached
>  - recursive submodules: detach HEAD from new state
> 
>  "git checkout --recursive" may overwrite and rewind the history of
>  the branch that happens to be checked out in submodule
>  repositories, which might not be desirable.  Detach the HEAD but
>  still allow the recursive checkout to succeed in such a case.
> 
>  Undecided.
>  This needs justification in a larger picture; it is unclear why
>  this is better than rejecting recursive checkout, for example.
> 
> 
> * ti/external-sha1dc (2017-08-16) 2 commits
>  - sha1dc: allow building with the external sha1dc library
>  - sha1dc: build git plumbing code more explicitly
> 
>  Platforms that ship with a separate sha1 with collision detection
>  library can link to it instead of using the copy we ship as part of
>  our source tree.
> 
>  Waiting for reviews.
>  cf. <20170815120417.31616-1-tiwai@suse.de>
> 
> 
> * bw/submodule-config-cleanup (2017-08-03) 17 commits
>  - submodule: remove gitmodules_config
>  - unpack-trees: improve loading of .gitmodules
>  - submodule-config: lazy-load a repository's .gitmodules file
>  - submodule-config: move submodule-config functions to submodule-config.c
>  - submodule-config: remove support for overlaying repository config
>  - diff: stop allowing diff to have submodules configured in .git/config
>  - submodule: remove submodule_config callback routine
>  - unpack-trees: don't respect submodule.update
>  - submodule: don't rely on overlayed config when setting diffopts
>  - fetch: don't overlay config with submodule-config
>  - submodule--helper: don't overlay config in update-clone
>  - submodule--helper: don't overlay config in remote_submodule_branch
>  - add, reset: ensure submodules can be added or reset
>  - submodule: don't use submodule_from_name
>  - t7411: check configuration parsing errors
>  - Merge branch 'bc/object-id' into bw/submodule-config-cleanup
>  - Merge branch 'bw/grep-recurse-submodules' into bw/submodule-config-cleanup
>  (this branch uses bw/grep-recurse-submodules.)
> 
>  Code clean-up to avoid mixing values read from the .gitmodules file
>  and values read from the .git/config file.
> 
> 
> * bw/push-options-recursively-to-submodules (2017-07-20) 1 commit
>   (merged to 'next' on 2017-08-14 at 421dc09fd0)
>  + submodule--helper: teach push-check to handle HEAD
> 
>  "git push --recurse-submodules $there HEAD:$target" was not
>  propagated down to the submodules, but now it is.
> 
>  Will merge to 'master'.
> 
> 
> * jk/check-ref-format-oor-fix (2017-07-14) 1 commit
>  - check-ref-format: require a repository for --branch
> 
>  Discussion slowly continues...
>  cf. <20170717172709.GL93855@aiede.mtv.corp.google.com>
>  cf. <20170817102217.3yw7uxnkupdy3lh5@sigill.intra.peff.net>
> 
> 
> * bw/grep-recurse-submodules (2017-08-02) 10 commits
>   (merged to 'next' on 2017-08-14 at dcfcfc94af)
>  + grep: recurse in-process using 'struct repository'
>  + submodule: merge repo_read_gitmodules and gitmodules_config
>  + submodule: check for unmerged .gitmodules outside of config parsing
>  + submodule: check for unstaged .gitmodules outside of config parsing
>  + submodule: remove fetch.recursesubmodules from submodule-config parsing
>  + submodule: remove submodule.fetchjobs from submodule-config parsing
>  + config: add config_from_gitmodules
>  + cache.h: add GITMODULES_FILE macro
>  + repository: have the_repository use the_index
>  + repo_read_index: don't discard the index
>  (this branch is used by bw/submodule-config-cleanup.)
> 
>  "git grep --recurse-submodules" has been reworked to give a more
>  consistent output across submodule boundary (and do its thing
>  without having to fork a separate process).
> 
>  Will merge to 'master'.
> 
> 
> * rs/sha1-file-micro-optim (2017-07-09) 2 commits
>  - SQUASH???
>  - sha1_file: add slash once in for_each_file_in_obj_subdir()
> 
>  Code cleanup.
> 
>  Perhaps drop.
>  cf. <f59c8256-716b-9305-2a4f-d4fe49f666ff@web.de>
> 
> 
> * jc/allow-lazy-cas (2017-07-06) 1 commit
>  - push: disable lazy --force-with-lease by default
> 
>  Because "git push --force-with-lease[=<ref>]" that relies on the
>  stability of remote-tracking branches is unsafe when something
>  fetches into the repository behind user's back, it is now disabled
>  by default.  A new configuration variable can be used to enable it
>  by users who know what they are doing.  This would pave the way to
>  possibly turn `--force` into `--force-with-lease`.
> 
>  Will discard.
>  Independent from disabling the feature by default, this stirred up
>  a discussion to replace the DWIM heuristics with a better one, which
>  deserves to be its own topic.
>  cf. <alpine.DEB.2.21.1.1707131435220.4193@virtualbox>
> 
> 
> * ex/deprecate-empty-pathspec-as-match-all (2017-06-23) 2 commits
>   (merged to 'next' on 2017-08-14 at 24db08a6e8)
>  + pathspec: die on empty strings as pathspec
>  + t0027: do not use an empty string as a pathspec element
> 
>  The final step to make an empty string as a pathspec element
>  illegal.  We started this by first deprecating and warning a
>  pathspec that has such an element in 2.11 (Nov 2016).
> 
>  Hopefully we can merge this down to the 'master' by the end of the
>  year?  A deprecation warning period that is about 1 year does not
>  sound too bad.
> 
>  Will cook in 'next'.
> 
> 
> * mh/packed-ref-store (2017-08-17) 32 commits
>   (merged to 'next' on 2017-08-18 at 14c58936e1)
>  + files-backend: cheapen refname_available check when locking refs
>   (merged to 'next' on 2017-08-14 at 987b76d302)
>  + packed_ref_store: handle a packed-refs file that is a symlink
>  + read_packed_refs(): die if `packed-refs` contains bogus data
>  + t3210: add some tests of bogus packed-refs file contents
>  + repack_without_refs(): don't lock or unlock the packed refs
>  + commit_packed_refs(): remove call to `packed_refs_unlock()`
>  + clear_packed_ref_cache(): don't protest if the lock is held
>  + packed_refs_unlock(), packed_refs_is_locked(): new functions
>  + packed_refs_lock(): report errors via a `struct strbuf *err`
>  + packed_refs_lock(): function renamed from lock_packed_refs()
>  + commit_packed_refs(): use a staging file separate from the lockfile
>  + commit_packed_refs(): report errors rather than dying
>  + packed_ref_store: make class into a subclass of `ref_store`
>  + packed-backend: new module for handling packed references
>  + packed_read_raw_ref(): new function, replacing `resolve_packed_ref()`
>  + packed_ref_store: support iteration
>  + packed_peel_ref(): new function, extracted from `files_peel_ref()`
>  + repack_without_refs(): take a `packed_ref_store *` parameter
>  + get_packed_ref(): take a `packed_ref_store *` parameter
>  + rollback_packed_refs(): take a `packed_ref_store *` parameter
>  + commit_packed_refs(): take a `packed_ref_store *` parameter
>  + lock_packed_refs(): take a `packed_ref_store *` parameter
>  + add_packed_ref(): take a `packed_ref_store *` parameter
>  + get_packed_refs(): take a `packed_ref_store *` parameter
>  + get_packed_ref_cache(): take a `packed_ref_store *` parameter
>  + validate_packed_ref_cache(): take a `packed_ref_store *` parameter
>  + clear_packed_ref_cache(): take a `packed_ref_store *` parameter
>  + packed_ref_store: move `packed_refs_lock` member here
>  + packed_ref_store: move `packed_refs_path` here
>  + packed_ref_store: new struct
>  + add_packed_ref(): teach function to overwrite existing refs
>  + t1408: add a test of stale packed refs covered by loose refs
> 
>  The "ref-store" code reorganization continues.
> 
>  Will merge to 'master'.
> 
> 
> * sd/branch-copy (2017-06-18) 3 commits
>  - branch: add a --copy (-c) option to go with --move (-m)
>  - branch: add test for -m renaming multiple config sections
>  - config: create a function to format section headers
> 
>  "git branch" learned "-c/-C" to create and switch to a new branch
>  by copying an existing one.
> 
>  I personally do not think "branch --copy master backup" while on
>  "master" that switches to "backup" is a good UI, and I *will* say
>  "I told you so" when users complain after we merge this down to
>  'master'.
> 
> 
> * sb/diff-color-move (2017-06-30) 26 commits
>  - diff: document the new --color-moved setting
>  - diff.c: add dimming to moved line detection
>  - diff.c: color moved lines differently, plain mode
>  - diff.c: color moved lines differently
>  - diff.c: buffer all output if asked to
>  - diff.c: emit_diff_symbol learns about DIFF_SYMBOL_SUMMARY
>  - diff.c: emit_diff_symbol learns about DIFF_SYMBOL_STAT_SEP
>  - diff.c: convert word diffing to use emit_diff_symbol
>  - diff.c: convert show_stats to use emit_diff_symbol
>  - diff.c: convert emit_binary_diff_body to use emit_diff_symbol
>  - submodule.c: migrate diff output to use emit_diff_symbol
>  - diff.c: emit_diff_symbol learns DIFF_SYMBOL_REWRITE_DIFF
>  - diff.c: emit_diff_symbol learns about DIFF_SYMBOL_BINARY_FILES
>  - diff.c: emit_diff_symbol learns DIFF_SYMBOL_HEADER
>  - diff.c: emit_diff_symbol learns DIFF_SYMBOL_FILEPAIR_{PLUS, MINUS}
>  - diff.c: emit_diff_symbol learns DIFF_SYMBOL_CONTEXT_INCOMPLETE
>  - diff.c: emit_diff_symbol learns DIFF_SYMBOL_WORDS[_PORCELAIN]
>  - diff.c: migrate emit_line_checked to use emit_diff_symbol
>  - diff.c: emit_diff_symbol learns DIFF_SYMBOL_NO_LF_EOF
>  - diff.c: emit_diff_symbol learns DIFF_SYMBOL_CONTEXT_FRAGINFO
>  - diff.c: emit_diff_symbol learns DIFF_SYMBOL_CONTEXT_MARKER
>  - diff.c: introduce emit_diff_symbol
>  - diff.c: factor out diff_flush_patch_all_file_pairs
>  - diff.c: move line ending check into emit_hunk_header
>  - diff.c: readability fix
>  - Merge branch 'sb/hashmap-customize-comparison' into sb/diff-color-move
>  (this branch is used by jt/diff-color-move-fix.)
> 
>  "git diff" has been taught to optionally paint new lines that are
>  the same as deleted lines elsewhere differently from genuinely new
>  lines.
> 
>  Will merge to 'next'.
>  ... again.
> 
> --------------------------------------------------
> [Discarded]
> 
> * nd/prune-in-worktree (2017-04-24) 12 commits
>  . rev-list: expose and document --single-worktree
>  . revision.c: --reflog add HEAD reflog from all worktrees
>  . files-backend: make reflog iterator go through per-worktree reflog
>  . revision.c: --all adds HEAD from all worktrees
>  . refs: remove dead for_each_*_submodule()
>  . revision.c: use refs_for_each*() instead of for_each_*_submodule()
>  . refs: add refs_head_ref()
>  . refs: move submodule slash stripping code to get_submodule_ref_store
>  . refs.c: refactor get_submodule_ref_store(), share common free block
>  . revision.c: --indexed-objects add objects from all worktrees
>  . revision.c: refactor add_index_objects_to_pending()
>  . revision.h: new flag in struct rev_info wrt. worktree-related refs
> 
>  "git gc" and friends when multiple worktrees are used off of a
>  single repository did not consider the index and per-worktree refs
>  of other worktrees as the root for reachability traversal, making
>  objects that are in use only in other worktrees to be subject to
>  garbage collection.

I will send V4 in a second (hopefully the last version)

^ permalink raw reply	[relevance 0%]

* What's cooking in git.git (Aug 2017, #04; Fri, 18)
@ 2017-08-18 21:26  4% Junio C Hamano
  2017-08-19 11:26  0% ` Torsten Bögershausen
  0 siblings, 1 reply; 25+ results
From: Junio C Hamano @ 2017-08-18 21:26 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.  The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.

The top part of the draft release notes for the next cycle, which I
tentatively called Git 2.15, declares that "git add ''" will still
be supported up to this release but will become illegal after that.
Given that a typical release cycle is 8-12 weeks, that will happen
sometime early next year.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[New Topics]

* cc/subprocess-handshake-missing-capabilities (2017-08-16) 1 commit
 - sub-process: print the cmd when a capability is unsupported

 When handshake with a subprocess filter notices that the process
 asked for an unknown capability, Git did not report what program
 the offending subprocess was running.  This has been corrected.

 Will merge to 'next'.

 We may want a follow-up fix to tighten the error checking, though.


* tb/apply-with-crlf (2017-08-17) 3 commits
 - SQUASH???
 - apply: file commited with CRLF should roundtrip diff and apply
 - convert: add SAFE_CRLF_KEEP_CRLF
 (this branch is tangled with jc/apply-with-crlf.)

 "git apply" that is used as a better "patch -p1" failed to apply a
 taken from a file with CRLF line endings to a file with CRLF line
 endings.  The root cause was because it misused convert_to_git()
 that tried to do "safe-crlf" processing by looking at the index
 entry at the same path, which is a nonsense---in that mode, "apply"
 is not working on the data in (or derived from) the index at all.
 This has been fixed.

 Will merge to 'next' after squashing the fix in.


* rs/t1002-do-not-use-sum (2017-08-15) 1 commit
 - t1002: stop using sum(1)

 Test simplification.

 Will merge to 'next'.


* sb/sha1-file-cleanup (2017-08-15) 1 commit
 - sha1_file: make read_info_alternates static

 Code clean-up.

 Will merge to 'next'.


* as/grep-quiet-no-match-exit-code-fix (2017-08-17) 1 commit
 - git-grep: correct exit code with --quiet and -L

 "git grep -L" and "git grep --quiet -L" reported different exit
 codes; this has been corrected.

 Will merge to 'next'.


* hv/t5526-andand-chain-fix (2017-08-17) 1 commit
 - t5526: fix some broken && chains

 Test fix.

 Will merge to 'next'.


* jc/diff-sane-truncate-no-more (2017-08-17) 1 commit
 - diff: retire sane_truncate_fn

 Code clean-up.

 Will merge to 'next'.


* ks/branch-set-upstream (2017-08-17) 3 commits
 - branch: quote branch/ref names to improve readability
 - builtin/branch: stop supporting the "--set-upstream" option
 - t3200: cleanup cruft of a test

 "branch --set-upstream" that has been deprecated in Git 1.8 has
 finally been retired.

 Will merge to 'next'.


* mg/format-ref-doc-fix (2017-08-18) 2 commits
 - Documentation/git-for-each-ref: clarify peeling of tags for --format
 - Documentation: use proper wording for ref format strings

 Doc fix.

 Will merge to 'next'.


* po/read-graft-line (2017-08-18) 4 commits
 - commit: rewrite read_graft_line
 - commit: allocate array using object_id size
 - commit: replace the raw buffer with strbuf in read_graft_line
 - sha1_file: fix definition of null_sha1

 Conversion from uchar[20] to struct object_id continues; this is to
 ensure that we do not assume sizeof(struct object_id) is the same
 as the length of SHA-1 hash (or length of longest hash we support).

 Will merge to 'next'.


* sb/submodule-parallel-update (2017-08-17) 1 commit
 - submodule.sh: remove unused variable

 Code clean-up.

 Will merge to 'next'.


* jc/apply-with-crlf (2017-08-16) 6 commits
 . apply: clarify read_old_data() is about no-index case
 . apply: localize the CRLF business to read_old_data()
 . apply: only pay attention to CRLF in the preimage
 . apply: remove unused field apply_state.flags
 . apply: file commited with CRLF should roundtrip diff and apply
 - convert: add SAFE_CRLF_KEEP_CRLF
 (this branch is tangled with tb/apply-with-crlf.)

 Will discard as it now is part of the tb/apply-with-crlf topic.

--------------------------------------------------
[Stalled]

* mg/status-in-progress-info (2017-05-10) 2 commits
 - status --short --inprogress: spell it as --in-progress
 - status: show in-progress info for short status

 "git status" learns an option to report various operations
 (e.g. "merging") that the user is in the middle of.

 cf. <xmqqmvakcdqw.fsf@gitster.mtv.corp.google.com>


* nd/worktree-move (2017-04-20) 6 commits
 - worktree remove: new command
 - worktree move: refuse to move worktrees with submodules
 - worktree move: accept destination as directory
 - worktree move: new command
 - worktree.c: add update_worktree_location()
 - worktree.c: add validate_worktree()

 "git worktree" learned move and remove subcommands.

 Expecting a reroll.
 cf. <20170420101024.7593-1-pclouds@gmail.com>
 cf. <20170421145916.mknekgqzhxffu7di@sigill.intra.peff.net>
 cf. <d0e81b1e-5869-299e-f462-4d43dc997bd1@ramsayjones.plus.com>


* sg/clone-refspec-from-command-line-config (2017-06-16) 2 commits
 - Documentation/clone: document ignored configuration variables
 - clone: respect additional configured fetch refspecs during initial fetch
 (this branch is used by sg/remote-no-string-refspecs.)

 "git clone -c var=val" is a way to set configuration variables in
 the resulting repository, but it is more useful to also make these
 variables take effect while the initial clone is happening,
 e.g. these configuration variables could be fetch refspecs.

 Waiting for a response.
 cf. <20170617112228.vugswym4o4owf6wj@sigill.intra.peff.net>
 cf. <xmqqmv8zhdap.fsf@gitster.mtv.corp.google.com>


* js/rebase-i-final (2017-07-27) 10 commits
 - rebase -i: rearrange fixup/squash lines using the rebase--helper
 - t3415: test fixup with wrapped oneline
 - rebase -i: skip unnecessary picks using the rebase--helper
 - rebase -i: check for missing commits in the rebase--helper
 - t3404: relax rebase.missingCommitsCheck tests
 - rebase -i: also expand/collapse the SHA-1s via the rebase--helper
 - rebase -i: do not invent onelines when expanding/collapsing SHA-1s
 - rebase -i: remove useless indentation
 - rebase -i: generate the script via rebase--helper
 - t3415: verify that an empty instructionFormat is handled as before

 The final batch to "git rebase -i" updates to move more code from
 the shell script to C.

 Expecting a reroll.


* bp/fsmonitor (2017-06-12) 6 commits
 - fsmonitor: add a sample query-fsmonitor hook script for Watchman
 - fsmonitor: add documentation for the fsmonitor extension.
 - fsmonitor: add test cases for fsmonitor extension
 - fsmonitor: teach git to optionally utilize a file system monitor to speed up detecting new or changed files.
 - dir: make lookup_untracked() available outside of dir.c
 - bswap: add 64 bit endianness helper get_be64

 We learned to talk to watchman to speed up "git status".

 Expecting a reroll.
 cf. <bade1166-e646-b05a-f65b-adb8da8ba0a7@gmail.com>

--------------------------------------------------
[Cooking]

* ks/prepare-commit-msg-sample-fix (2017-08-14) 1 commit
 - hook: use correct logical variable

 An "oops" fix to a topic that is already in 'master'.

 Will merge to 'next'.


* ab/ref-filter-no-contains (2017-08-07) 1 commit
  (merged to 'next' on 2017-08-18 at 7ec9d3d3a2)
 + tests: don't give unportable ">" to "test" built-in, use -gt

 A test fix.

 Will merge to 'master'.


* ma/parse-maybe-bool (2017-08-07) 6 commits
  (merged to 'next' on 2017-08-18 at ba22bb836c)
 + parse_decoration_style: drop unused argument `var`
 + treewide: deprecate git_config_maybe_bool, use git_parse_maybe_bool
 + config: make git_{config,parse}_maybe_bool equivalent
 + config: introduce git_parse_maybe_bool_text
 + t5334: document that git push --signed=1 does not work
 + Doc/git-{push,send-pack}: correct --sign= to --signed=

 Code clean-up.

 Will merge to 'master'.


* mf/no-dashed-subcommands (2017-08-07) 1 commit
  (merged to 'next' on 2017-08-18 at 05365af2ff)
 + scripts: use "git foo" not "git-foo"

 Code clean-up.

 Will merge to 'master'.


* mk/diff-delta-uint-may-be-shorter-than-ulong (2017-08-10) 1 commit
 - diff-delta: fix encoding size that would not fit in "unsigned int"

 The machinery to create xdelta used in pack files received the
 sizes of the data in size_t, but lost the higher bits of them by
 storing them in "unsigned int" during the computation, which is
 fixed.

 Will merge to 'next'.


* rs/obsd-getcwd-workaround (2017-08-07) 1 commit
  (merged to 'next' on 2017-08-18 at adb98cfe0c)
 + t0001: skip test with restrictive permissions if getpwd(3) respects them

 Test portability fix for BSDs.

 Will merge to 'master'.


* rs/in-obsd-basename-dirname-take-const (2017-08-07) 1 commit
  (merged to 'next' on 2017-08-18 at c739077e3b)
 + test-path-utils: handle const parameter of basename and dirname

 Portability fix.

 Will merge to 'master'.


* rs/t3700-clean-leftover (2017-08-08) 1 commit
  (merged to 'next' on 2017-08-18 at 12232a8cd3)
 + t3700: fix broken test under !POSIXPERM

 A test fix.

 Will merge to 'master'.


* jc/perl-git-comment-typofix (2017-08-07) 1 commit
  (merged to 'next' on 2017-08-18 at b2ad043e6a)
 + perl/Git.pm: typofix in a comment

 A comment fix.

 Will merge to 'master'.


* jk/drop-ancient-curl (2017-08-09) 5 commits
 - http: #error on too-old curl
 - curl: remove ifdef'd code never used with curl >=7.19.4
 - http: drop support for curl < 7.19.4
 - http: drop support for curl < 7.16.0
 - http: drop support for curl < 7.11.1

 Some code in http.c that has bitrot is being removed.

 What is the status of the discussion around this area????


* tc/curl-with-backports (2017-08-11) 2 commits
 - http: use a feature check to enable GSSAPI delegation control
 - http: fix handling of missing CURLPROTO_*

 Updates to the HTTP layer we made recently unconditionally used
 features of libCurl without checking the existence of them, causing
 compilation errors, which has been fixed.  Also migrate the code to
 check feature macros, not version numbers, to cope better with
 libCurl that vendor ships with backported features.

 What is the doneness of this topic????


* jk/drop-sha1-entry-pos (2017-08-09) 1 commit
  (merged to 'next' on 2017-08-18 at 3a4d9bcf12)
 + sha1_file: drop experimental GIT_USE_LOOKUP search

 Code clean-up.

 Will merge to 'master'.


* jk/hashcmp-memcmp (2017-08-09) 1 commit
  (merged to 'next' on 2017-08-18 at 27c4aa5520)
 + hashcmp: use memcmp instead of open-coded loop

 Code clean-up.

 Will merge to 'master'.


* jk/trailers-parse (2017-08-15) 8 commits
 - pretty: support normalization options for %(trailers)
 - t4205: refactor %(trailers) tests
 - pretty: move trailer formatting to trailer.c
 - interpret-trailers: add --parse convenience option
 - interpret-trailers: add an option to unfold values
 - interpret-trailers: add an option to show only existing trailers
 - interpret-trailers: add an option to show only the trailers
 - trailer: put process_trailers() options into a struct

 "git interpret-trailers" has been taught a "--parse" and a few
 other options to make it easier for scripts to grab existing
 trailer lines from a commit log message.

 Will merge to 'next'.


* mk/use-size-t-in-zlib (2017-08-10) 1 commit
 - zlib.c: use size_t for size

 The wrapper to call into zlib followed our long tradition to use
 "unsigned long" for sizes of regions in memory, which have been
 updated to use "size_t".

 Needs review.

 There were some concerns raised around s/off_t/size_t/ in this
 change.


* pw/am-signoff (2017-08-08) 1 commit
  (merged to 'next' on 2017-08-18 at 7678ed822c)
 + am: fix signoff when other trailers are present

 "git am -s" has been taught that some input may end with a trailer
 block that is not Signed-off-by: and it should refrain from adding
 an extra blank line before adding a new sign-off in such a case.

 Will merge to 'master'.


* rj/add-chmod-error-message (2017-08-09) 1 commit
  (merged to 'next' on 2017-08-18 at ba2afb696a)
 + builtin/add: add detail to a 'cannot chmod' error message

 Message fix.

 Will merge to 'master'.


* rs/apply-lose-prefix-length (2017-08-09) 1 commit
  (merged to 'next' on 2017-08-18 at 6ce0dbb3f0)
 + apply: remove prefix_length member from apply_state

 Code clean-up.

 Will merge to 'master'.


* rs/find-pack-entry-bisection (2017-08-09) 1 commit
  (merged to 'next' on 2017-08-18 at b4130177a9)
 + sha1_file: avoid comparison if no packed hash matches the first byte

 Code clean-up.

 Will merge to 'master'.


* rs/fsck-obj-leakfix (2017-08-10) 1 commit
  (merged to 'next' on 2017-08-18 at 77e3d111ef)
 + fsck: free buffers on error in fsck_obj()

 Memory leak in an error codepath has been plugged.

 Will merge to 'master'.


* rs/merge-microcleanup (2017-08-10) 1 commit
  (merged to 'next' on 2017-08-18 at 79ba7d301d)
 + merge: use skip_prefix()

 Code clean-up.

 Will merge to 'master'.


* rs/strbuf-getwholeline-fix (2017-08-10) 1 commit
  (merged to 'next' on 2017-08-18 at 5f879d8261)
 + strbuf: clear errno before calling getdelim(3)

 A helper function to read a single whole line into strbuf
 mistakenly triggered OOM error at EOF under certain conditions,
 which has been fixed.

 Will merge to 'master'.


* rs/t4062-obsd (2017-08-09) 1 commit
  (merged to 'next' on 2017-08-18 at 02bff42d86)
 + t4062: use less than 256 repetitions in regex

 Test portability fix.

 Will merge to 'master'.


* rs/unpack-entry-leakfix (2017-08-10) 1 commit
  (merged to 'next' on 2017-08-18 at 1e7d8f54b1)
 + sha1_file: release delta_stack on error in unpack_entry()

 Memory leak in an error codepath has been plugged.

 Will merge to 'master'.


* rs/win32-syslog-leakfix (2017-08-10) 1 commit
  (merged to 'next' on 2017-08-18 at 011eccb7bd)
 + win32: plug memory leak on realloc() failure in syslog()

 Memory leak in an error codepath has been plugged.

 Will merge to 'master'.


* sb/retire-t1200 (2017-08-10) 1 commit
  (merged to 'next' on 2017-08-18 at d436f9bbce)
 + t1200: remove t1200-tutorial.sh

 A test script that outlived its usefulness has been removed.

 Will merge to 'master'.


* ur/svn-local-zone (2017-08-08) 1 commit
  (merged to 'next' on 2017-08-18 at f222bb6db0)
 + git svn fetch: Create correct commit timestamp when using --localtime

 "git svn" used with "--localtime" option did not compute the tz
 offset for the timestamp in question and instead always used the
 current time, which has been corrected.

 Will merge to 'master'.


* jt/sha1-file-cleanup (2017-08-11) 2 commits
 - sha1_file: remove read_packed_sha1()
 - sha1_file: set whence in storage-specific info fn

 Preparatory code clean-up.

 Will merge to 'next'.


* kw/rebase-progress (2017-08-14) 2 commits
 - rebase: turn on progress option by default for format-patch
 - format-patch: have progress option while generating patches

 "git rebase", especially when it is run by mistake and ends up
 trying to replay many changes, spent long time in silence.  The
 command has been taught to show progress report when it spends
 long time preparing these many changes to replay (which would give
 the user a chance to abort with ^C).

 Will merge to 'next'.


* mk/diff-delta-avoid-large-offset (2017-08-11) 1 commit
 - diff-delta: do not allow delta offset truncation

 The delta format used in the packfile cannot reference data at
 offset larger than what can be expressed in 4-byte, but the
 generator for the data failed to make sure the offset does not
 overflow.  This has been corrected.

 Will merge to 'next'.


* nm/stash-untracked (2017-08-11) 1 commit
 - stash: clean untracked files before reset

 "git stash -u" used the contents of the committed version of the
 ".gitignore" file to decide which paths are ignored, even when the
 file has local changes.  The command has been taught to instead use
 the locally modified contents.

 Will merge to 'next'.


* rs/object-id (2017-08-14) 1 commit
 - tree-walk: convert fill_tree_descriptor() to object_id

 Conversion from uchar[20] to struct object_id continues.

 Will merge to 'next'.


* ah/doc-empty-string-is-false (2017-08-14) 1 commit
 - doc: clarify "config --bool" behaviour with empty string

 Doc update.

 Will merge to 'next'.


* jt/diff-color-move-fix (2017-08-16) 3 commits
 - diff: define block by number of alphanumeric chars
 - diff: respect MIN_BLOCK_LENGTH for last block
 - diff: avoid redundantly clearing a flag
 (this branch uses sb/diff-color-move.)

 A handful of bugfixes and an improvement to "diff --color-moved".

 Will merge to 'next'.


* kd/stash-with-bash-4.4 (2017-08-14) 1 commit
 - stash: prevent warning about null bytes in input

 bash 4.4 or newer gave a warning on NUL byte in command
 substitution done in "git stash"; this has been squelched.

 Will merge to 'next'.


* kw/commit-keep-index-when-pre-commit-is-not-run (2017-08-16) 1 commit
 - commit: skip discarding the index if there is no pre-commit hook

 "git commit" used to discard the index and re-read from the filesystem
 just in case the pre-commit hook has updated it in the middle; this
 has been optimized out when we know we do not run the pre-commit hook.

 Will merge to 'next'.


* bw/git-clang-format (2017-08-14) 2 commits
 - Makefile: add style build rule
 - clang-format: outline the git project's coding style

 "make style" runs git-clang-format to help developers by pointing
 out coding style issues.


* pw/sequence-rerere-autoupdate (2017-08-02) 6 commits
  (merged to 'next' on 2017-08-14 at 010cbb0cbe)
 + cherry-pick/revert: reject --rerere-autoupdate when continuing
 + cherry-pick/revert: remember --rerere-autoupdate
 + t3504: use test_commit
 + rebase -i: honor --rerere-autoupdate
 + rebase: honor --rerere-autoupdate
 + am: remember --rerere-autoupdate setting

 Commands like "git rebase" accepted the --rerere-autoupdate option
 from the command line, but did not always use it.  This has been
 fixed.

 Will merge to 'master'.


* bw/clone-recursive-quiet (2017-08-04) 1 commit
  (merged to 'next' on 2017-08-14 at fbd4473ce4)
 + clone: teach recursive clones to respect -q

 "git clone --recurse-submodules --quiet" did not pass the quiet
 option down to submodules.

 Will merge to 'master'.


* lg/merge-signoff (2017-07-25) 1 commit
 - merge: add a --signoff flag

 "git merge" learned a "--signoff" option to add the Signed-off-by:
 trailer with the committer's name.

 Will merge to 'next'.


* pb/trailers-from-command-line (2017-08-14) 4 commits
 - interpret-trailers: fix documentation typo
 - interpret-trailers: add options for actions
 - trailers: introduce struct new_trailer_item
 - trailers: export action enums and corresponding lookup functions

 "git interpret-trailers" learned to take the trailer specifications
 from the command line that overrides the configured values.

 Will merge to 'next'.


* sb/submodule-recursive-checkout-detach-head (2017-07-28) 2 commits
 - Documentation/checkout: clarify submodule HEADs to be detached
 - recursive submodules: detach HEAD from new state

 "git checkout --recursive" may overwrite and rewind the history of
 the branch that happens to be checked out in submodule
 repositories, which might not be desirable.  Detach the HEAD but
 still allow the recursive checkout to succeed in such a case.

 Undecided.
 This needs justification in a larger picture; it is unclear why
 this is better than rejecting recursive checkout, for example.


* ti/external-sha1dc (2017-08-16) 2 commits
 - sha1dc: allow building with the external sha1dc library
 - sha1dc: build git plumbing code more explicitly

 Platforms that ship with a separate sha1 with collision detection
 library can link to it instead of using the copy we ship as part of
 our source tree.

 Waiting for reviews.
 cf. <20170815120417.31616-1-tiwai@suse.de>


* bw/submodule-config-cleanup (2017-08-03) 17 commits
 - submodule: remove gitmodules_config
 - unpack-trees: improve loading of .gitmodules
 - submodule-config: lazy-load a repository's .gitmodules file
 - submodule-config: move submodule-config functions to submodule-config.c
 - submodule-config: remove support for overlaying repository config
 - diff: stop allowing diff to have submodules configured in .git/config
 - submodule: remove submodule_config callback routine
 - unpack-trees: don't respect submodule.update
 - submodule: don't rely on overlayed config when setting diffopts
 - fetch: don't overlay config with submodule-config
 - submodule--helper: don't overlay config in update-clone
 - submodule--helper: don't overlay config in remote_submodule_branch
 - add, reset: ensure submodules can be added or reset
 - submodule: don't use submodule_from_name
 - t7411: check configuration parsing errors
 - Merge branch 'bc/object-id' into bw/submodule-config-cleanup
 - Merge branch 'bw/grep-recurse-submodules' into bw/submodule-config-cleanup
 (this branch uses bw/grep-recurse-submodules.)

 Code clean-up to avoid mixing values read from the .gitmodules file
 and values read from the .git/config file.


* bw/push-options-recursively-to-submodules (2017-07-20) 1 commit
  (merged to 'next' on 2017-08-14 at 421dc09fd0)
 + submodule--helper: teach push-check to handle HEAD

 "git push --recurse-submodules $there HEAD:$target" was not
 propagated down to the submodules, but now it is.

 Will merge to 'master'.


* jk/check-ref-format-oor-fix (2017-07-14) 1 commit
 - check-ref-format: require a repository for --branch

 Discussion slowly continues...
 cf. <20170717172709.GL93855@aiede.mtv.corp.google.com>
 cf. <20170817102217.3yw7uxnkupdy3lh5@sigill.intra.peff.net>


* bw/grep-recurse-submodules (2017-08-02) 10 commits
  (merged to 'next' on 2017-08-14 at dcfcfc94af)
 + grep: recurse in-process using 'struct repository'
 + submodule: merge repo_read_gitmodules and gitmodules_config
 + submodule: check for unmerged .gitmodules outside of config parsing
 + submodule: check for unstaged .gitmodules outside of config parsing
 + submodule: remove fetch.recursesubmodules from submodule-config parsing
 + submodule: remove submodule.fetchjobs from submodule-config parsing
 + config: add config_from_gitmodules
 + cache.h: add GITMODULES_FILE macro
 + repository: have the_repository use the_index
 + repo_read_index: don't discard the index
 (this branch is used by bw/submodule-config-cleanup.)

 "git grep --recurse-submodules" has been reworked to give a more
 consistent output across submodule boundary (and do its thing
 without having to fork a separate process).

 Will merge to 'master'.


* rs/sha1-file-micro-optim (2017-07-09) 2 commits
 - SQUASH???
 - sha1_file: add slash once in for_each_file_in_obj_subdir()

 Code cleanup.

 Perhaps drop.
 cf. <f59c8256-716b-9305-2a4f-d4fe49f666ff@web.de>


* jc/allow-lazy-cas (2017-07-06) 1 commit
 - push: disable lazy --force-with-lease by default

 Because "git push --force-with-lease[=<ref>]" that relies on the
 stability of remote-tracking branches is unsafe when something
 fetches into the repository behind user's back, it is now disabled
 by default.  A new configuration variable can be used to enable it
 by users who know what they are doing.  This would pave the way to
 possibly turn `--force` into `--force-with-lease`.

 Will discard.
 Independent from disabling the feature by default, this stirred up
 a discussion to replace the DWIM heuristics with a better one, which
 deserves to be its own topic.
 cf. <alpine.DEB.2.21.1.1707131435220.4193@virtualbox>


* ex/deprecate-empty-pathspec-as-match-all (2017-06-23) 2 commits
  (merged to 'next' on 2017-08-14 at 24db08a6e8)
 + pathspec: die on empty strings as pathspec
 + t0027: do not use an empty string as a pathspec element

 The final step to make an empty string as a pathspec element
 illegal.  We started this by first deprecating and warning a
 pathspec that has such an element in 2.11 (Nov 2016).

 Hopefully we can merge this down to the 'master' by the end of the
 year?  A deprecation warning period that is about 1 year does not
 sound too bad.

 Will cook in 'next'.


* mh/packed-ref-store (2017-08-17) 32 commits
  (merged to 'next' on 2017-08-18 at 14c58936e1)
 + files-backend: cheapen refname_available check when locking refs
  (merged to 'next' on 2017-08-14 at 987b76d302)
 + packed_ref_store: handle a packed-refs file that is a symlink
 + read_packed_refs(): die if `packed-refs` contains bogus data
 + t3210: add some tests of bogus packed-refs file contents
 + repack_without_refs(): don't lock or unlock the packed refs
 + commit_packed_refs(): remove call to `packed_refs_unlock()`
 + clear_packed_ref_cache(): don't protest if the lock is held
 + packed_refs_unlock(), packed_refs_is_locked(): new functions
 + packed_refs_lock(): report errors via a `struct strbuf *err`
 + packed_refs_lock(): function renamed from lock_packed_refs()
 + commit_packed_refs(): use a staging file separate from the lockfile
 + commit_packed_refs(): report errors rather than dying
 + packed_ref_store: make class into a subclass of `ref_store`
 + packed-backend: new module for handling packed references
 + packed_read_raw_ref(): new function, replacing `resolve_packed_ref()`
 + packed_ref_store: support iteration
 + packed_peel_ref(): new function, extracted from `files_peel_ref()`
 + repack_without_refs(): take a `packed_ref_store *` parameter
 + get_packed_ref(): take a `packed_ref_store *` parameter
 + rollback_packed_refs(): take a `packed_ref_store *` parameter
 + commit_packed_refs(): take a `packed_ref_store *` parameter
 + lock_packed_refs(): take a `packed_ref_store *` parameter
 + add_packed_ref(): take a `packed_ref_store *` parameter
 + get_packed_refs(): take a `packed_ref_store *` parameter
 + get_packed_ref_cache(): take a `packed_ref_store *` parameter
 + validate_packed_ref_cache(): take a `packed_ref_store *` parameter
 + clear_packed_ref_cache(): take a `packed_ref_store *` parameter
 + packed_ref_store: move `packed_refs_lock` member here
 + packed_ref_store: move `packed_refs_path` here
 + packed_ref_store: new struct
 + add_packed_ref(): teach function to overwrite existing refs
 + t1408: add a test of stale packed refs covered by loose refs

 The "ref-store" code reorganization continues.

 Will merge to 'master'.


* sd/branch-copy (2017-06-18) 3 commits
 - branch: add a --copy (-c) option to go with --move (-m)
 - branch: add test for -m renaming multiple config sections
 - config: create a function to format section headers

 "git branch" learned "-c/-C" to create and switch to a new branch
 by copying an existing one.

 I personally do not think "branch --copy master backup" while on
 "master" that switches to "backup" is a good UI, and I *will* say
 "I told you so" when users complain after we merge this down to
 'master'.


* sb/diff-color-move (2017-06-30) 26 commits
 - diff: document the new --color-moved setting
 - diff.c: add dimming to moved line detection
 - diff.c: color moved lines differently, plain mode
 - diff.c: color moved lines differently
 - diff.c: buffer all output if asked to
 - diff.c: emit_diff_symbol learns about DIFF_SYMBOL_SUMMARY
 - diff.c: emit_diff_symbol learns about DIFF_SYMBOL_STAT_SEP
 - diff.c: convert word diffing to use emit_diff_symbol
 - diff.c: convert show_stats to use emit_diff_symbol
 - diff.c: convert emit_binary_diff_body to use emit_diff_symbol
 - submodule.c: migrate diff output to use emit_diff_symbol
 - diff.c: emit_diff_symbol learns DIFF_SYMBOL_REWRITE_DIFF
 - diff.c: emit_diff_symbol learns about DIFF_SYMBOL_BINARY_FILES
 - diff.c: emit_diff_symbol learns DIFF_SYMBOL_HEADER
 - diff.c: emit_diff_symbol learns DIFF_SYMBOL_FILEPAIR_{PLUS, MINUS}
 - diff.c: emit_diff_symbol learns DIFF_SYMBOL_CONTEXT_INCOMPLETE
 - diff.c: emit_diff_symbol learns DIFF_SYMBOL_WORDS[_PORCELAIN]
 - diff.c: migrate emit_line_checked to use emit_diff_symbol
 - diff.c: emit_diff_symbol learns DIFF_SYMBOL_NO_LF_EOF
 - diff.c: emit_diff_symbol learns DIFF_SYMBOL_CONTEXT_FRAGINFO
 - diff.c: emit_diff_symbol learns DIFF_SYMBOL_CONTEXT_MARKER
 - diff.c: introduce emit_diff_symbol
 - diff.c: factor out diff_flush_patch_all_file_pairs
 - diff.c: move line ending check into emit_hunk_header
 - diff.c: readability fix
 - Merge branch 'sb/hashmap-customize-comparison' into sb/diff-color-move
 (this branch is used by jt/diff-color-move-fix.)

 "git diff" has been taught to optionally paint new lines that are
 the same as deleted lines elsewhere differently from genuinely new
 lines.

 Will merge to 'next'.
 ... again.

--------------------------------------------------
[Discarded]

* nd/prune-in-worktree (2017-04-24) 12 commits
 . rev-list: expose and document --single-worktree
 . revision.c: --reflog add HEAD reflog from all worktrees
 . files-backend: make reflog iterator go through per-worktree reflog
 . revision.c: --all adds HEAD from all worktrees
 . refs: remove dead for_each_*_submodule()
 . revision.c: use refs_for_each*() instead of for_each_*_submodule()
 . refs: add refs_head_ref()
 . refs: move submodule slash stripping code to get_submodule_ref_store
 . refs.c: refactor get_submodule_ref_store(), share common free block
 . revision.c: --indexed-objects add objects from all worktrees
 . revision.c: refactor add_index_objects_to_pending()
 . revision.h: new flag in struct rev_info wrt. worktree-related refs

 "git gc" and friends when multiple worktrees are used off of a
 single repository did not consider the index and per-worktree refs
 of other worktrees as the root for reachability traversal, making
 objects that are in use only in other worktrees to be subject to
 garbage collection.

^ permalink raw reply	[relevance 4%]

* What's cooking in git.git (Aug 2017, #03; Mon, 14)
@ 2017-08-14 23:53  6% Junio C Hamano
  0 siblings, 0 replies; 25+ results
From: Junio C Hamano @ 2017-08-14 23:53 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.  The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.

The tip of 'next' has been rebuilt on top of the 'master' branch,
and a handful of new topics floating since v2.14 pre-release freeze
period have been picked up.

The top part of the draft release notes for the next cycle, which I
tentatively called Git 2.15, declares that "git add ''" will still
be supported up to this release but will become illegal after that.
Given that a typical release cycle is 8-12 weeks, that will happen
sometime early next year.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[Graduated to "master"]

* ah/doc-wserrorhighlight (2017-07-25) 1 commit
  (merged to 'next' on 2017-07-27 at cd1bb28d95)
 + doc: add missing values "none" and "default" for diff.wsErrorHighlight

 Doc update.


* bc/object-id (2017-07-17) 12 commits
  (merged to 'next' on 2017-07-18 at fd161056e4)
 + sha1_name: convert uses of 40 to GIT_SHA1_HEXSZ
 + sha1_name: convert GET_SHA1* flags to GET_OID*
 + sha1_name: convert get_sha1* to get_oid*
 + Convert remaining callers of get_sha1 to get_oid.
 + builtin/unpack-file: convert to struct object_id
 + bisect: convert bisect_checkout to struct object_id
 + builtin/update_ref: convert to struct object_id
 + sequencer: convert to struct object_id
 + remote: convert struct push_cas to struct object_id
 + submodule: convert submodule config lookup to use object_id
 + builtin/merge-tree: convert remaining caller of get_sha1 to object_id
 + builtin/fsck: convert remaining caller of get_sha1 to object_id
 (this branch is used by bw/submodule-config-cleanup; uses sb/object-id.)

 Conversion from uchar[20] to struct object_id continues.


* bw/object-id (2017-07-17) 3 commits
  (merged to 'next' on 2017-07-18 at 90d27c0e7c)
 + receive-pack: don't access hash of NULL object_id pointer
 + notes: don't access hash of NULL object_id pointer
 + tree-diff: don't access hash of NULL object_id pointer

 Conversion from uchar[20] to struct object_id continues.


* cc/ref-is-hidden-microcleanup (2017-07-24) 1 commit
  (merged to 'next' on 2017-07-27 at 37af544e1c)
 + refs: use skip_prefix() in ref_is_hidden()

 Code cleanup.


* dc/fmt-merge-msg-microcleanup (2017-07-25) 1 commit
  (merged to 'next' on 2017-07-27 at 6df06eb788)
 + fmt-merge-msg: fix coding style

 Code cleanup.


* dl/credential-cache-socket-in-xdg-cache (2017-07-27) 1 commit
  (merged to 'next' on 2017-08-01 at 87687ae1d4)
 + credential-cache: interpret an ECONNRESET as an EOF

 A recently added test for the "credential-cache" helper revealed
 that EOF detection done around the time the connection to the cache
 daemon is torn down were flaky.  This was fixed by reacting to
 ECONNRESET and behaving as if we got an EOF.


* eb/contacts-reported-by (2017-07-27) 1 commit
  (merged to 'next' on 2017-08-01 at cca9972d6b)
 + git-contacts: also recognise "Reported-by:"

 "git contacts" (in contrib/) now lists the address on the
 "Reported-by:" trailer to its output, in addition to those on
 S-o-b: and other trailers, to make it easier to notify (and thank)
 the original bug reporter.


* hb/gitweb-project-list (2017-07-18) 1 commit
  (merged to 'next' on 2017-07-27 at c25d65ca25)
 + gitweb: skip unreadable subdirectories

 When a directory is not readable, "gitweb" fails to build the
 project list.  Work this around by skipping such a directory.

 It might end up hiding a problem under the rug and a better
 solution might be to loudly complain to the administrator pointing
 out the problematic directory, but this will at least make it
 "work".


* jb/t8008-cleanup (2017-07-26) 1 commit
  (merged to 'next' on 2017-08-01 at f979c9340d)
 + t8008: rely on rev-parse'd HEAD instead of sha1 value

 Code clean-up.


* jc/http-sslkey-and-ssl-cert-are-paths (2017-07-20) 1 commit
  (merged to 'next' on 2017-07-20 at 5489304b99)
 + http.c: http.sslcert and http.sslkey are both pathnames

 The http.{sslkey,sslCert} configuration variables are to be
 interpreted as a pathname that honors "~[username]/" prefix, but
 weren't, which has been fixed.


* jk/c99 (2017-07-18) 2 commits
  (merged to 'next' on 2017-07-18 at 1cfc30f7c1)
 + clean.c: use designated initializer
 + strbuf: use designated initializers in STRBUF_INIT

 Start using selected c99 constructs in small, stable and
 essentialpart of the system to catch people who care about
 older compilers that do not grok them.


* jk/ref-filter-colors (2017-07-13) 15 commits
  (merged to 'next' on 2017-07-18 at 75d4eb7ecf)
 + ref-filter: consult want_color() before emitting colors
 + pretty: respect color settings for %C placeholders
 + rev-list: pass diffopt->use_colors through to pretty-print
 + for-each-ref: load config earlier
 + color: check color.ui in git_default_config()
 + ref-filter: pass ref_format struct to atom parsers
 + ref-filter: factor out the parsing of sorting atoms
 + ref-filter: make parse_ref_filter_atom a private function
 + ref-filter: provide a function for parsing sort options
 + ref-filter: move need_color_reset_at_eol into ref_format
 + ref-filter: abstract ref format into its own struct
 + ref-filter: simplify automatic color reset
 + t: use test_decode_color rather than literal ANSI codes
 + docs/for-each-ref: update pointer to color syntax
 + check return value of verify_ref_format()

 "%C(color name)" in the pretty print format always produced ANSI
 color escape codes, which was an early design mistake.  They now
 honor the configuration (e.g. "color.ui = never") and also tty-ness
 of the output medium.


* jk/reflog-walk (2017-07-09) 9 commits
  (merged to 'next' on 2017-07-09 at 7449e964c6)
 + reflog-walk: apply --since/--until to reflog dates
 + reflog-walk: stop using fake parents
 + rev-list: check reflog_info before showing usage
 + get_revision_1(): replace do-while with an early return
 + log: do not free parents when walking reflog
 + log: clarify comment about reflog cycles
 + revision: disallow reflog walking with revs->limited
 + t1414: document some reflog-walk oddities
 + Merge branch 'jk/reflog-walk-maint' into jk/reflog-walk

 Numerous bugs in walking of reflogs via "log -g" and friends have
 been fixed.


* jk/rev-list-empty-input (2017-08-02) 4 commits
  (merged to 'next' on 2017-08-04 at cb4f9b84e0)
 + revision: do not fallback to default when rev_input_given is set
 + rev-list: don't show usage when we see empty ref patterns
 + revision: add rev_input_given flag
 + t6018: flesh out empty input/output rev-list tests

 "git log --tag=no-such-tag" showed log starting from HEAD, which
 has been fixed---it now shows nothing.


* js/git-gui-msgfmt-on-windows (2017-07-25) 7 commits
  (merged to 'next' on 2017-08-01 at 219577a73e)
 + Merge branch 'js/msgfmt-on-windows' of ../git-gui into js/git-gui-msgfmt-on-windows
 + git-gui (MinGW): make use of MSys2's msgfmt
 + Merge remote-tracking branch 'philoakley/dup-gui'
 + git gui: allow for a long recentrepo list
 + git gui: de-dup selected repo from recentrepo history
 + git gui: cope with duplicates in _get_recentrepo
 + git-gui: remove duplicate entries from .gitconfig's gui.recentrepo

 Because recent Git for Windows do come with a real msgfmt, the
 build procedure for git-gui has been updated to use it instead of a
 hand-rolled substitute.


* js/run-process-parallel-api-fix (2017-07-21) 1 commit
  (merged to 'next' on 2017-07-27 at 4b54b69172)
 + run_processes_parallel: change confusing task_cb convention

 API fix.


* jt/fsck-code-cleanup (2017-07-26) 3 commits
  (merged to 'next' on 2017-07-26 at 7a17e279da)
 + fsck: cleanup unused variable
  (merged to 'next' on 2017-07-20 at f7045a8c47)
 + object: remove "used" field from struct object
 + fsck: remove redundant parse_tree() invocation

 Code clean-up.


* jt/subprocess-handshake (2017-07-26) 3 commits
  (merged to 'next' on 2017-08-01 at a0f78deffd)
 + sub-process: refactor handshake to common function
 + Documentation: migrate sub-process docs to header
 + Merge branch 'ls/filter-process-delayed' into jt/subprocess-handshake
 (this branch uses ls/filter-process-delayed.)

 Code cleanup.


* jt/t1450-fsck-corrupt-packfile (2017-07-28) 1 commit
  (merged to 'next' on 2017-08-04 at 44d09da2fc)
 + tests: ensure fsck fails on corrupt packfiles

 A test update.


* ks/commit-abort-on-empty-message-fix (2017-07-17) 1 commit
  (merged to 'next' on 2017-07-27 at e81ad4c1dc)
 + commit: check for empty message before the check for untouched template

 "git commit" when seeing an totally empty message said "you did not
 edit the message", which is clearly wrong.  The message has been
 corrected.


* ks/prepare-commit-msg-sample (2017-07-12) 4 commits
  (merged to 'next' on 2017-07-18 at 48d9650a30)
 + hook: add a simple first example
 + hook: add sign-off using "interpret-trailers"
 + hook: name the positional variables
 + hook: cleanup script

 Remove an example that is now obsolete from a sample hook,
 and improve an old example in it that added a sign-off manually
 to use the interpret-trailers command.


* ls/filter-process-delayed (2017-06-30) 7 commits
  (merged to 'next' on 2017-07-05 at a35e644082)
 + convert: add "status=delayed" to filter process protocol
 + convert: refactor capabilities negotiation
 + convert: move multiple file filter error handling to separate function
 + convert: put the flags field before the flag itself for consistent style
 + t0021: write "OUT <size>" only on success
 + t0021: make debug log file name configurable
 + t0021: keep filter log files on comparison
 (this branch is used by jt/subprocess-handshake.)

 The filter-process interface learned to allow a process with long
 latency give a "delayed" response.


* ma/pager-per-subcommand-action (2017-08-03) 7 commits
  (merged to 'next' on 2017-08-04 at 0f760bcf5d)
 + git.c: ignore pager.* when launching builtin as dashed external
 + tag: change default of `pager.tag` to "on"
 + tag: respect `pager.tag` in list-mode only
 + t7006: add tests for how git tag paginates
 + git.c: provide setup_auto_pager()
 + git.c: let builtins opt for handling `pager.foo` themselves
 + builtin.h: take over documentation from api-builtin.txt

 The "tag.pager" configuration variable was useless for those who
 actually create tag objects, as it interfered with the use of an
 editor.  A new mechanism has been introduced for commands to enable
 pager depending on what operation is being carried out to fix this,
 and then "git tag -l" is made to run pager by default.

 If this works out OK, I think there are low-hanging fruits in
 other commands like "git branch" that outputs long list in one mode
 while taking input in another.


* rg/rerere-train-overwrite (2017-07-26) 1 commit
  (merged to 'next' on 2017-08-01 at 7fcd42974c)
 + contrib/rerere-train: optionally overwrite existing resolutions

 The "rerere-train" script (in contrib/) learned the "--overwrite"
 option to allow overwriting existing recorded resolutions.


* rs/bswap-ubsan-fix (2017-07-17) 2 commits
  (merged to 'next' on 2017-07-20 at ce6bad07b0)
 + bswap: convert get_be16, get_be32 and put_be32 to inline functions
 + bswap: convert to unsigned before shifting in get_be32

 Code clean-up.


* rs/move-array (2017-07-17) 4 commits
  (merged to 'next' on 2017-07-20 at f3086cd20e)
 + ls-files: don't try to prune an empty index
 + apply: use COPY_ARRAY and MOVE_ARRAY in update_image()
 + use MOVE_ARRAY
 + add MOVE_ARRAY

 Code clean-up.


* rs/pack-objects-pbase-cleanup (2017-07-20) 1 commit
  (merged to 'next' on 2017-07-20 at a6b618559b)
 + pack-objects: remove unnecessary NULL check

 Code clean-up.


* rs/stat-data-unaligned-reads-fix (2017-07-17) 1 commit
  (merged to 'next' on 2017-07-20 at e7d3782823)
 + dir: support platforms that require aligned reads

 Code clean-up.


* sb/hashmap-cleanup (2017-07-05) 10 commits
  (merged to 'next' on 2017-07-12 at ce31d06165)
 + t/helper/test-hashmap: use custom data instead of duplicate cmp functions
 + name-hash.c: drop hashmap_cmp_fn cast
 + submodule-config.c: drop hashmap_cmp_fn cast
 + remote.c: drop hashmap_cmp_fn cast
 + patch-ids.c: drop hashmap_cmp_fn cast
 + convert/sub-process: drop cast to hashmap_cmp_fn
 + config.c: drop hashmap_cmp_fn cast
 + builtin/describe: drop hashmap_cmp_fn cast
 + builtin/difftool.c: drop hashmap_cmp_fn cast
 + attr.c: drop hashmap_cmp_fn cast

 Many uses of comparision callback function the hashmap API uses
 cast the callback function type when registering it to
 hashmap_init(), which defeats the compile time type checking when
 the callback interface changes (e.g. gaining more parameters).
 The callback implementations have been updated to take "void *"
 pointers and cast them to the type they expect instead.


* sb/object-id (2017-07-13) 2 commits
  (merged to 'next' on 2017-07-18 at e4df0ba3b1)
 + tag: convert gpg_verify_tag to use struct object_id
 + commit: convert lookup_commit_graft to struct object_id
 (this branch is used by bc/object-id and bw/submodule-config-cleanup.)

 Conversion from uchar[20] to struct object_id continues.


* st/lib-gpg-kill-stray-agent (2017-07-20) 1 commit
  (merged to 'next' on 2017-07-20 at 8ea68c483f)
 + t: lib-gpg: flush gpg agent on startup

 Some versions of GnuPG fails to kill gpg-agent it auto-spawned
 and such a left-over agent can interfere with a test.  Work it
 around by attempting to kill one before starting a new test.


* wd/rebase-conflict-guide (2017-07-17) 1 commit
  (merged to 'next' on 2017-07-20 at c78e758b23)
 + rebase: make resolve message clearer for inexperienced users

 The advice message given when "git rebase" stops for conflicting
 changes has been improved.

--------------------------------------------------
[New Topics]

* ks/prepare-commit-msg-sample-fix (2017-08-14) 1 commit
 - hook: use correct logical variable

 An "oops" fix to a topic that is already in 'master'.

 Will merge to 'next'.


* ab/ref-filter-no-contains (2017-08-07) 1 commit
 - tests: don't give unportable ">" to "test" built-in, use -gt

 A test fix.

 Will merge to 'next'.


* ma/parse-maybe-bool (2017-08-07) 6 commits
 - parse_decoration_style: drop unused argument `var`
 - treewide: deprecate git_config_maybe_bool, use git_parse_maybe_bool
 - config: make git_{config,parse}_maybe_bool equivalent
 - config: introduce git_parse_maybe_bool_text
 - t5334: document that git push --signed=1 does not work
 - Doc/git-{push,send-pack}: correct --sign= to --signed=

 Code clean-up.

 Will merge to 'next'.


* mf/no-dashed-subcommands (2017-08-07) 1 commit
 - scripts: use "git foo" not "git-foo"

 Code clean-up.

 Will merge to 'next'.


* mk/diff-delta-uint-may-be-shorter-than-ulong (2017-08-10) 1 commit
 - diff-delta: fix encoding size that would not fit in "unsigned int"

 The machinery to create xdelta used in pack files received the
 sizes of the data in size_t, but lost the higher bits of them by
 storing them in "unsigned int" during the computation, which is
 fixed.

 Will merge to 'next'.


* rs/obsd-getcwd-workaround (2017-08-07) 1 commit
 - t0001: skip test with restrictive permissions if getpwd(3) respects them

 Test portability fix for BSDs.

 Will merge to 'next'.


* rs/in-obsd-basename-dirname-take-const (2017-08-07) 1 commit
 - test-path-utils: handle const parameter of basename and dirname

 Portability fix.

 Will merge to 'next'.


* rs/t3700-clean-leftover (2017-08-08) 1 commit
 - t3700: fix broken test under !POSIXPERM

 A test fix.

 Will merge to 'next'.


* jc/perl-git-comment-typofix (2017-08-07) 1 commit
 - perl/Git.pm: typofix in a comment

 A comment fix.

 Will merge to 'next'.


* jk/drop-ancient-curl (2017-08-09) 5 commits
 - http: #error on too-old curl
 - curl: remove ifdef'd code never used with curl >=7.19.4
 - http: drop support for curl < 7.19.4
 - http: drop support for curl < 7.16.0
 - http: drop support for curl < 7.11.1


* tc/curl-with-backports (2017-08-11) 2 commits
 - http: use a feature check to enable GSSAPI delegation control
 - http: fix handling of missing CURLPROTO_*

 Updates to the HTTP layer we made recently unconditionally used
 features of libCurl without checking the existence of them, causing
 compilation errors, which has been fixed.  Also migrate the code to
 check feature macros, not version numbers, to cope better with
 libCurl that vendor ships with backported features.


* jk/drop-sha1-entry-pos (2017-08-09) 1 commit
 - sha1_file: drop experimental GIT_USE_LOOKUP search

 Code clean-up.

 Will merge to 'next'.


* jk/hashcmp-memcmp (2017-08-09) 1 commit
 - hashcmp: use memcmp instead of open-coded loop

 Code clean-up.

 Will merge to 'next'.


* jk/trailers-parse (2017-08-10) 5 commits
 - interpret-trailers: add --parse convenience option
 - interpret-trailers: add an option to normalize output
 - interpret-trailers: add an option to show only existing trailers
 - interpret-trailers: add an option to show only the trailers
 - trailer: put process_trailers() options into a struct

 "git interpret-trailers" has been taught a "--parse" and a few
 other options to make it easier for scripts to grab existing
 trailer lines from a commit log message.

 Will merge to 'next'.


* mk/use-size-t-in-zlib (2017-08-10) 1 commit
 - zlib.c: use size_t for size

 The wrapper to call into zlib followed our long tradition to use
 "unsigned long" for sizes of regions in memory, which have been
 updated to use "size_t".

 Needs review.

 There were some concerns raised around s/off_t/size_t/ in this
 change.


* pw/am-signoff (2017-08-08) 1 commit
 - am: fix signoff when other trailers are present

 "git am -s" has been taught that some input may end with a trailer
 block that is not Signed-off-by: and it should refrain from adding
 an extra blank line before adding a new sign-off in such a case.

 Will merge to 'next'.


* rj/add-chmod-error-message (2017-08-09) 1 commit
 - builtin/add: add detail to a 'cannot chmod' error message

 Message fix.

 Will merge to 'next'.


* rs/apply-lose-prefix-length (2017-08-09) 1 commit
 - apply: remove prefix_length member from apply_state

 Code clean-up.

 Will merge to 'next'.


* rs/find-pack-entry-bisection (2017-08-09) 1 commit
 - sha1_file: avoid comparison if no packed hash matches the first byte

 Code clean-up.

 Will merge to 'next'.


* rs/fsck-obj-leakfix (2017-08-10) 1 commit
 - fsck: free buffers on error in fsck_obj()

 Memory leak in an error codepath has been plugged.

 Will merge to 'next'.


* rs/merge-microcleanup (2017-08-10) 1 commit
 - merge: use skip_prefix()

 Code clean-up.

 Will merge to 'next'.


* rs/strbuf-getwholeline-fix (2017-08-10) 1 commit
 - strbuf: clear errno before calling getdelim(3)

 A helper function to read a single whole line into strbuf
 mistakenly triggered OOM error at EOF under certain conditions,
 which has been fixed.

 Will merge to 'next'.


* rs/t4062-obsd (2017-08-09) 1 commit
 - t4062: use less than 256 repetitions in regex

 Test portability fix.

 Will merge to 'next'.


* rs/unpack-entry-leakfix (2017-08-10) 1 commit
 - sha1_file: release delta_stack on error in unpack_entry()

 Memory leak in an error codepath has been plugged.

 Will merge to 'next'.


* rs/win32-syslog-leakfix (2017-08-10) 1 commit
 - win32: plug memory leak on realloc() failure in syslog()

 Memory leak in an error codepath has been plugged.

 Will merge to 'next'.


* sb/retire-t1200 (2017-08-10) 1 commit
 - t1200: remove t1200-tutorial.sh

 A test script that outlived its usefulness has been removed.

 Will merge to 'next'.


* ur/svn-local-zone (2017-08-08) 1 commit
 - git svn fetch: Create correct commit timestamp when using --localtime

 "git svn" used with "--localtime" option did not compute the tz
 offset for the timestamp in question and instead always used the
 current time, which has been corrected.

 Will merge to 'next'.


* jt/sha1-file-cleanup (2017-08-11) 2 commits
 - sha1_file: remove read_packed_sha1()
 - sha1_file: set whence in storage-specific info fn

 Preparatory code clean-up.

 Will merge to 'next'.


* kw/rebase-progress (2017-08-14) 2 commits
 - rebase: turn on progress option by default for format-patch
 - format-patch: have progress option while generating patches

 "git rebase", especially when it is run by mistake and ends up
 trying to replay many changes, spent long time in silence.  The
 command has been taught to show progress report when it spends
 long time preparing these many changes to replay (which would give
 the user a chance to abort with ^C).

 Will merge to 'next'.


* mk/diff-delta-avoid-large-offset (2017-08-11) 1 commit
 - diff-delta: do not allow delta offset truncation

 The delta format used in the packfile cannot reference data at
 offset larger than what can be expressed in 4-byte, but the
 generator for the data failed to make sure the offset does not
 overflow.  This has been corrected.

 Will merge to 'next'.


* nm/stash-untracked (2017-08-11) 1 commit
 - stash: clean untracked files before reset

 "git stash -u" used the contents of the committed version of the
 ".gitignore" file to decide which paths are ignored, even when the
 file has local changes.  The command has been taught to instead use
 the locally modified contents.

 Will merge to 'next'.


* rs/object-id (2017-08-14) 1 commit
 - tree-walk: convert fill_tree_descriptor() to object_id

 Conversion from uchar[20] to struct object_id continues.

 Will merge to 'next'.


* ah/doc-empty-string-is-false (2017-08-14) 1 commit
 - doc: clarify "config --bool" behaviour with empty string

 Doc update.

 Will merge to 'next'.


* jt/diff-color-move-fix (2017-08-14) 3 commits
 - diff: check MIN_BLOCK_LENGTH at start of new block
 - diff: respect MIN_BLOCK_LENGTH for last block
 - diff: avoid redundantly clearing a flag
 (this branch uses sb/diff-color-move.)

 A handful of bugfixes to "diff --color-moved".


* kd/stash-with-bash-4.4 (2017-08-14) 1 commit
 - stash: prevent warning about null bytes in input

 bash 4.4 or newer gave a warning on NUL byte in command
 substitution done in "git stash"; this has been squelched.

 Will merge to 'next'.


* kw/commit-keep-index-when-pre-commit-is-not-run (2017-08-14) 1 commit
 - commit: skip discarding the index if there is no pre-commit hook

 "git commit" used to discard the index and re-read from the filesystem
 just in case the pre-commit hook has updated it in the middle; this
 has been optimized out when we know we do not run the pre-commit hook.

 Will merge to 'next'.


* bw/git-clang-format (2017-08-14) 2 commits
 - Makefile: add style build rule
 - clang-format: outline the git project's coding style

 "make style" runs git-clang-format to help developers by pointing
 out coding style issues.

--------------------------------------------------
[Stalled]

* mg/status-in-progress-info (2017-05-10) 2 commits
 - status --short --inprogress: spell it as --in-progress
 - status: show in-progress info for short status

 "git status" learns an option to report various operations
 (e.g. "merging") that the user is in the middle of.

 cf. <xmqqmvakcdqw.fsf@gitster.mtv.corp.google.com>


* nd/worktree-move (2017-04-20) 6 commits
 - worktree remove: new command
 - worktree move: refuse to move worktrees with submodules
 - worktree move: accept destination as directory
 - worktree move: new command
 - worktree.c: add update_worktree_location()
 - worktree.c: add validate_worktree()

 "git worktree" learned move and remove subcommands.

 Expecting a reroll.
 cf. <20170420101024.7593-1-pclouds@gmail.com>
 cf. <20170421145916.mknekgqzhxffu7di@sigill.intra.peff.net>
 cf. <d0e81b1e-5869-299e-f462-4d43dc997bd1@ramsayjones.plus.com>


* sg/clone-refspec-from-command-line-config (2017-06-16) 2 commits
 - Documentation/clone: document ignored configuration variables
 - clone: respect additional configured fetch refspecs during initial fetch
 (this branch is used by sg/remote-no-string-refspecs.)

 "git clone -c var=val" is a way to set configuration variables in
 the resulting repository, but it is more useful to also make these
 variables take effect while the initial clone is happening,
 e.g. these configuration variables could be fetch refspecs.

 Waiting for a response.
 cf. <20170617112228.vugswym4o4owf6wj@sigill.intra.peff.net>
 cf. <xmqqmv8zhdap.fsf@gitster.mtv.corp.google.com>


* js/rebase-i-final (2017-07-27) 10 commits
 - rebase -i: rearrange fixup/squash lines using the rebase--helper
 - t3415: test fixup with wrapped oneline
 - rebase -i: skip unnecessary picks using the rebase--helper
 - rebase -i: check for missing commits in the rebase--helper
 - t3404: relax rebase.missingCommitsCheck tests
 - rebase -i: also expand/collapse the SHA-1s via the rebase--helper
 - rebase -i: do not invent onelines when expanding/collapsing SHA-1s
 - rebase -i: remove useless indentation
 - rebase -i: generate the script via rebase--helper
 - t3415: verify that an empty instructionFormat is handled as before

 The final batch to "git rebase -i" updates to move more code from
 the shell script to C.

 Expecting a reroll.


* bp/fsmonitor (2017-06-12) 6 commits
 - fsmonitor: add a sample query-fsmonitor hook script for Watchman
 - fsmonitor: add documentation for the fsmonitor extension.
 - fsmonitor: add test cases for fsmonitor extension
 - fsmonitor: teach git to optionally utilize a file system monitor to speed up detecting new or changed files.
 - dir: make lookup_untracked() available outside of dir.c
 - bswap: add 64 bit endianness helper get_be64

 We learned to talk to watchman to speed up "git status".

 Expecting a reroll.
 cf. <bade1166-e646-b05a-f65b-adb8da8ba0a7@gmail.com>

--------------------------------------------------
[Cooking]

* pw/sequence-rerere-autoupdate (2017-08-02) 6 commits
  (merged to 'next' on 2017-08-14 at 010cbb0cbe)
 + cherry-pick/revert: reject --rerere-autoupdate when continuing
 + cherry-pick/revert: remember --rerere-autoupdate
 + t3504: use test_commit
 + rebase -i: honor --rerere-autoupdate
 + rebase: honor --rerere-autoupdate
 + am: remember --rerere-autoupdate setting

 Commands like "git rebase" accepted the --rerere-autoupdate option
 from the command line, but did not always use it.  This has been
 fixed.

 Will merge to 'master'.


* bw/clone-recursive-quiet (2017-08-04) 1 commit
  (merged to 'next' on 2017-08-14 at fbd4473ce4)
 + clone: teach recursive clones to respect -q

 "git clone --recurse-submodules --quiet" did not pass the quiet
 option down to submodules.

 Will merge to 'master'.


* lg/merge-signoff (2017-07-25) 1 commit
 - merge: add a --signoff flag

 "git merge" learned a "--signoff" option to add the Signed-off-by:
 trailer with the committer's name.


* pb/trailers-from-command-line (2017-08-14) 4 commits
 - interpret-trailers: fix documentation typo
 - interpret-trailers: add options for actions
 - trailers: introduce struct new_trailer_item
 - trailers: export action enums and corresponding lookup functions

 "git interpret-trailers" learned to take the trailer specifications
 from the command line that overrides the configured values.


* sb/submodule-recursive-checkout-detach-head (2017-07-28) 2 commits
 - Documentation/checkout: clarify submodule HEADs to be detached
 - recursive submodules: detach HEAD from new state

 "git checkout --recursive" may overwrite and rewind the history of
 the branch that happens to be checked out in submodule
 repositories, which might not be desirable.  Detach the HEAD but
 still allow the recursive checkout to succeed in such a case.

 Undecided.
 This needs justification in a larger picture; it is unclear why
 this is better than rejecting recursive checkout, for example.


* ti/external-sha1dc (2017-07-25) 1 commit
 - hash: allow building with the external sha1dc library

 Platforms that ship with a separate sha1 with collision detection
 library can link to it instead of using the copy we ship as part of
 our source tree.

 Waiting for review to conclude
 cf. <CACBZZX7M=H8tNkZXpHBvv0rbY58EJk4dkoUzGKMftWoKUqF8sA@mail.gmail.com>


* bw/submodule-config-cleanup (2017-08-03) 17 commits
 - submodule: remove gitmodules_config
 - unpack-trees: improve loading of .gitmodules
 - submodule-config: lazy-load a repository's .gitmodules file
 - submodule-config: move submodule-config functions to submodule-config.c
 - submodule-config: remove support for overlaying repository config
 - diff: stop allowing diff to have submodules configured in .git/config
 - submodule: remove submodule_config callback routine
 - unpack-trees: don't respect submodule.update
 - submodule: don't rely on overlayed config when setting diffopts
 - fetch: don't overlay config with submodule-config
 - submodule--helper: don't overlay config in update-clone
 - submodule--helper: don't overlay config in remote_submodule_branch
 - add, reset: ensure submodules can be added or reset
 - submodule: don't use submodule_from_name
 - t7411: check configuration parsing errors
 - Merge branch 'bc/object-id' into bw/submodule-config-cleanup
 - Merge branch 'bw/grep-recurse-submodules' into bw/submodule-config-cleanup
 (this branch uses bw/grep-recurse-submodules.)

 Code clean-up to avoid mixing values read from the .gitmodules file
 and values read from the .git/config file.


* bw/push-options-recursively-to-submodules (2017-07-20) 1 commit
  (merged to 'next' on 2017-08-14 at 421dc09fd0)
 + submodule--helper: teach push-check to handle HEAD

 "git push --recurse-submodules $there HEAD:$target" was not
 propagated down to the submodules, but now it is.

 Will merge to 'master'.


* jk/check-ref-format-oor-fix (2017-07-14) 1 commit
 - check-ref-format: require a repository for --branch

 Objected...
 cf. <20170717172709.GL93855@aiede.mtv.corp.google.com>


* bw/grep-recurse-submodules (2017-08-02) 10 commits
  (merged to 'next' on 2017-08-14 at dcfcfc94af)
 + grep: recurse in-process using 'struct repository'
 + submodule: merge repo_read_gitmodules and gitmodules_config
 + submodule: check for unmerged .gitmodules outside of config parsing
 + submodule: check for unstaged .gitmodules outside of config parsing
 + submodule: remove fetch.recursesubmodules from submodule-config parsing
 + submodule: remove submodule.fetchjobs from submodule-config parsing
 + config: add config_from_gitmodules
 + cache.h: add GITMODULES_FILE macro
 + repository: have the_repository use the_index
 + repo_read_index: don't discard the index
 (this branch is used by bw/submodule-config-cleanup.)

 "git grep --recurse-submodules" has been reworked to give a more
 consistent output across submodule boundary (and do its thing
 without having to fork a separate process).

 Will merge to 'master'.


* rs/sha1-file-micro-optim (2017-07-09) 2 commits
 - SQUASH???
 - sha1_file: add slash once in for_each_file_in_obj_subdir()

 Code cleanup.

 Perhaps drop.
 cf. <f59c8256-716b-9305-2a4f-d4fe49f666ff@web.de>


* jc/allow-lazy-cas (2017-07-06) 1 commit
 - push: disable lazy --force-with-lease by default

 Because "git push --force-with-lease[=<ref>]" that relies on the
 stability of remote-tracking branches is unsafe when something
 fetches into the repository behind user's back, it is now disabled
 by default.  A new configuration variable can be used to enable it
 by users who know what they are doing.  This would pave the way to
 possibly turn `--force` into `--force-with-lease`.

 Undecided.
 Independent from disabling the feature by default, this stirred up
 a discussion to replace the DWIM heuristics with a better one, which
 deserves to be its own topic.
 cf. <alpine.DEB.2.21.1.1707131435220.4193@virtualbox>


* ex/deprecate-empty-pathspec-as-match-all (2017-06-23) 2 commits
  (merged to 'next' on 2017-08-14 at 24db08a6e8)
 + pathspec: die on empty strings as pathspec
 + t0027: do not use an empty string as a pathspec element

 The final step to make an empty string as a pathspec element
 illegal.  We started this by first deprecating and warning a
 pathspec that has such an element in 2.11 (Nov 2016).

 Hopefully we can merge this down to the 'master' by the end of the
 year?  A deprecation warning period that is about 1 year does not
 sound too bad.

 Will cook in 'next'.


* mh/packed-ref-store (2017-07-27) 31 commits
  (merged to 'next' on 2017-08-14 at 987b76d302)
 + packed_ref_store: handle a packed-refs file that is a symlink
 + read_packed_refs(): die if `packed-refs` contains bogus data
 + t3210: add some tests of bogus packed-refs file contents
 + repack_without_refs(): don't lock or unlock the packed refs
 + commit_packed_refs(): remove call to `packed_refs_unlock()`
 + clear_packed_ref_cache(): don't protest if the lock is held
 + packed_refs_unlock(), packed_refs_is_locked(): new functions
 + packed_refs_lock(): report errors via a `struct strbuf *err`
 + packed_refs_lock(): function renamed from lock_packed_refs()
 + commit_packed_refs(): use a staging file separate from the lockfile
 + commit_packed_refs(): report errors rather than dying
 + packed_ref_store: make class into a subclass of `ref_store`
 + packed-backend: new module for handling packed references
 + packed_read_raw_ref(): new function, replacing `resolve_packed_ref()`
 + packed_ref_store: support iteration
 + packed_peel_ref(): new function, extracted from `files_peel_ref()`
 + repack_without_refs(): take a `packed_ref_store *` parameter
 + get_packed_ref(): take a `packed_ref_store *` parameter
 + rollback_packed_refs(): take a `packed_ref_store *` parameter
 + commit_packed_refs(): take a `packed_ref_store *` parameter
 + lock_packed_refs(): take a `packed_ref_store *` parameter
 + add_packed_ref(): take a `packed_ref_store *` parameter
 + get_packed_refs(): take a `packed_ref_store *` parameter
 + get_packed_ref_cache(): take a `packed_ref_store *` parameter
 + validate_packed_ref_cache(): take a `packed_ref_store *` parameter
 + clear_packed_ref_cache(): take a `packed_ref_store *` parameter
 + packed_ref_store: move `packed_refs_lock` member here
 + packed_ref_store: move `packed_refs_path` here
 + packed_ref_store: new struct
 + add_packed_ref(): teach function to overwrite existing refs
 + t1408: add a test of stale packed refs covered by loose refs

 The "ref-store" code reorganization continues.

 Will merge to 'master'.


* sd/branch-copy (2017-06-18) 3 commits
 - branch: add a --copy (-c) option to go with --move (-m)
 - branch: add test for -m renaming multiple config sections
 - config: create a function to format section headers

 "git branch" learned "-c/-C" to create and switch to a new branch
 by copying an existing one.

 I personally do not think "branch --copy master backup" while on
 "master" that switches to "backup" is a good UI, and I *will* say
 "I told you so" when users complain after we merge this down to
 'master'.


* sb/diff-color-move (2017-06-30) 26 commits
 - diff: document the new --color-moved setting
 - diff.c: add dimming to moved line detection
 - diff.c: color moved lines differently, plain mode
 - diff.c: color moved lines differently
 - diff.c: buffer all output if asked to
 - diff.c: emit_diff_symbol learns about DIFF_SYMBOL_SUMMARY
 - diff.c: emit_diff_symbol learns about DIFF_SYMBOL_STAT_SEP
 - diff.c: convert word diffing to use emit_diff_symbol
 - diff.c: convert show_stats to use emit_diff_symbol
 - diff.c: convert emit_binary_diff_body to use emit_diff_symbol
 - submodule.c: migrate diff output to use emit_diff_symbol
 - diff.c: emit_diff_symbol learns DIFF_SYMBOL_REWRITE_DIFF
 - diff.c: emit_diff_symbol learns about DIFF_SYMBOL_BINARY_FILES
 - diff.c: emit_diff_symbol learns DIFF_SYMBOL_HEADER
 - diff.c: emit_diff_symbol learns DIFF_SYMBOL_FILEPAIR_{PLUS, MINUS}
 - diff.c: emit_diff_symbol learns DIFF_SYMBOL_CONTEXT_INCOMPLETE
 - diff.c: emit_diff_symbol learns DIFF_SYMBOL_WORDS[_PORCELAIN]
 - diff.c: migrate emit_line_checked to use emit_diff_symbol
 - diff.c: emit_diff_symbol learns DIFF_SYMBOL_NO_LF_EOF
 - diff.c: emit_diff_symbol learns DIFF_SYMBOL_CONTEXT_FRAGINFO
 - diff.c: emit_diff_symbol learns DIFF_SYMBOL_CONTEXT_MARKER
 - diff.c: introduce emit_diff_symbol
 - diff.c: factor out diff_flush_patch_all_file_pairs
 - diff.c: move line ending check into emit_hunk_header
 - diff.c: readability fix
 - Merge branch 'sb/hashmap-customize-comparison' into sb/diff-color-move
 (this branch is used by jt/diff-color-move-fix.)

 "git diff" has been taught to optionally paint new lines that are
 the same as deleted lines elsewhere differently from genuinely new
 lines.

--------------------------------------------------
[Discarded]

* mh/packed-ref-store-prep-extra (2017-06-18) 1 commit
 . prefix_ref_iterator_advance(): relax the check of trim length

 Split out of mh/packed-ref-store-prep.


* nd/prune-in-worktree (2017-04-24) 12 commits
 . rev-list: expose and document --single-worktree
 . revision.c: --reflog add HEAD reflog from all worktrees
 . files-backend: make reflog iterator go through per-worktree reflog
 . revision.c: --all adds HEAD from all worktrees
 . refs: remove dead for_each_*_submodule()
 . revision.c: use refs_for_each*() instead of for_each_*_submodule()
 . refs: add refs_head_ref()
 . refs: move submodule slash stripping code to get_submodule_ref_store
 . refs.c: refactor get_submodule_ref_store(), share common free block
 . revision.c: --indexed-objects add objects from all worktrees
 . revision.c: refactor add_index_objects_to_pending()
 . revision.h: new flag in struct rev_info wrt. worktree-related refs

 "git gc" and friends when multiple worktrees are used off of a
 single repository did not consider the index and per-worktree refs
 of other worktrees as the root for reachability traversal, making
 objects that are in use only in other worktrees to be subject to
 garbage collection.

^ permalink raw reply	[relevance 6%]

* What's cooking in git.git (Aug 2017, #02; Fri, 11)
@ 2017-08-12  0:54  5% Junio C Hamano
  0 siblings, 0 replies; 25+ results
From: Junio C Hamano @ 2017-08-12  0:54 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.  The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.

The first batch of 32 topics (not counting the v2.14.1 update which
was a security fix), which are the ones that have been cooking in
'next' during the pre-release freeze period, have now been merged to
'master'.  I have not really started pickng up new topics posted to
the list yet and yet to rewind and rebuild the 'next' branch to
start a new cycle.  Hopefully it can happen early next week.

The top part of the draft release notes for the next cycle, which I
tentatively called Git 2.15, declares that "git add ''" will still
be supported up to this release but will become illegal after that.
Given that a typical release cycle is 8-12 weeks, that will happen
sometime early next year.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[Graduated to "master"]

* ah/doc-wserrorhighlight (2017-07-25) 1 commit
  (merged to 'next' on 2017-07-27 at cd1bb28d95)
 + doc: add missing values "none" and "default" for diff.wsErrorHighlight

 Doc update.


* bc/object-id (2017-07-17) 12 commits
  (merged to 'next' on 2017-07-18 at fd161056e4)
 + sha1_name: convert uses of 40 to GIT_SHA1_HEXSZ
 + sha1_name: convert GET_SHA1* flags to GET_OID*
 + sha1_name: convert get_sha1* to get_oid*
 + Convert remaining callers of get_sha1 to get_oid.
 + builtin/unpack-file: convert to struct object_id
 + bisect: convert bisect_checkout to struct object_id
 + builtin/update_ref: convert to struct object_id
 + sequencer: convert to struct object_id
 + remote: convert struct push_cas to struct object_id
 + submodule: convert submodule config lookup to use object_id
 + builtin/merge-tree: convert remaining caller of get_sha1 to object_id
 + builtin/fsck: convert remaining caller of get_sha1 to object_id
 (this branch is used by bw/submodule-config-cleanup; uses sb/object-id.)

 Conversion from uchar[20] to struct object_id continues.


* bw/object-id (2017-07-17) 3 commits
  (merged to 'next' on 2017-07-18 at 90d27c0e7c)
 + receive-pack: don't access hash of NULL object_id pointer
 + notes: don't access hash of NULL object_id pointer
 + tree-diff: don't access hash of NULL object_id pointer

 Conversion from uchar[20] to struct object_id continues.


* cc/ref-is-hidden-microcleanup (2017-07-24) 1 commit
  (merged to 'next' on 2017-07-27 at 37af544e1c)
 + refs: use skip_prefix() in ref_is_hidden()

 Code cleanup.


* dc/fmt-merge-msg-microcleanup (2017-07-25) 1 commit
  (merged to 'next' on 2017-07-27 at 6df06eb788)
 + fmt-merge-msg: fix coding style

 Code cleanup.


* dl/credential-cache-socket-in-xdg-cache (2017-07-27) 1 commit
  (merged to 'next' on 2017-08-01 at 87687ae1d4)
 + credential-cache: interpret an ECONNRESET as an EOF

 A recently added test for the "credential-cache" helper revealed
 that EOF detection done around the time the connection to the cache
 daemon is torn down were flaky.  This was fixed by reacting to
 ECONNRESET and behaving as if we got an EOF.


* eb/contacts-reported-by (2017-07-27) 1 commit
  (merged to 'next' on 2017-08-01 at cca9972d6b)
 + git-contacts: also recognise "Reported-by:"

 "git contacts" (in contrib/) now lists the address on the
 "Reported-by:" trailer to its output, in addition to those on
 S-o-b: and other trailers, to make it easier to notify (and thank)
 the original bug reporter.


* hb/gitweb-project-list (2017-07-18) 1 commit
  (merged to 'next' on 2017-07-27 at c25d65ca25)
 + gitweb: skip unreadable subdirectories

 When a directory is not readable, "gitweb" fails to build the
 project list.  Work this around by skipping such a directory.

 It might end up hiding a problem under the rug and a better
 solution might be to loudly complain to the administrator pointing
 out the problematic directory, but this will at least make it
 "work".


* jb/t8008-cleanup (2017-07-26) 1 commit
  (merged to 'next' on 2017-08-01 at f979c9340d)
 + t8008: rely on rev-parse'd HEAD instead of sha1 value

 Code clean-up.


* jc/http-sslkey-and-ssl-cert-are-paths (2017-07-20) 1 commit
  (merged to 'next' on 2017-07-20 at 5489304b99)
 + http.c: http.sslcert and http.sslkey are both pathnames

 The http.{sslkey,sslCert} configuration variables are to be
 interpreted as a pathname that honors "~[username]/" prefix, but
 weren't, which has been fixed.


* jk/c99 (2017-07-18) 2 commits
  (merged to 'next' on 2017-07-18 at 1cfc30f7c1)
 + clean.c: use designated initializer
 + strbuf: use designated initializers in STRBUF_INIT

 Start using selected c99 constructs in small, stable and
 essentialpart of the system to catch people who care about
 older compilers that do not grok them.


* jk/ref-filter-colors (2017-07-13) 15 commits
  (merged to 'next' on 2017-07-18 at 75d4eb7ecf)
 + ref-filter: consult want_color() before emitting colors
 + pretty: respect color settings for %C placeholders
 + rev-list: pass diffopt->use_colors through to pretty-print
 + for-each-ref: load config earlier
 + color: check color.ui in git_default_config()
 + ref-filter: pass ref_format struct to atom parsers
 + ref-filter: factor out the parsing of sorting atoms
 + ref-filter: make parse_ref_filter_atom a private function
 + ref-filter: provide a function for parsing sort options
 + ref-filter: move need_color_reset_at_eol into ref_format
 + ref-filter: abstract ref format into its own struct
 + ref-filter: simplify automatic color reset
 + t: use test_decode_color rather than literal ANSI codes
 + docs/for-each-ref: update pointer to color syntax
 + check return value of verify_ref_format()

 "%C(color name)" in the pretty print format always produced ANSI
 color escape codes, which was an early design mistake.  They now
 honor the configuration (e.g. "color.ui = never") and also tty-ness
 of the output medium.


* jk/reflog-walk (2017-07-09) 9 commits
  (merged to 'next' on 2017-07-09 at 7449e964c6)
 + reflog-walk: apply --since/--until to reflog dates
 + reflog-walk: stop using fake parents
 + rev-list: check reflog_info before showing usage
 + get_revision_1(): replace do-while with an early return
 + log: do not free parents when walking reflog
 + log: clarify comment about reflog cycles
 + revision: disallow reflog walking with revs->limited
 + t1414: document some reflog-walk oddities
 + Merge branch 'jk/reflog-walk-maint' into jk/reflog-walk

 Numerous bugs in walking of reflogs via "log -g" and friends have
 been fixed.


* jk/rev-list-empty-input (2017-08-02) 4 commits
  (merged to 'next' on 2017-08-04 at cb4f9b84e0)
 + revision: do not fallback to default when rev_input_given is set
 + rev-list: don't show usage when we see empty ref patterns
 + revision: add rev_input_given flag
 + t6018: flesh out empty input/output rev-list tests

 "git log --tag=no-such-tag" showed log starting from HEAD, which
 has been fixed---it now shows nothing.


* js/git-gui-msgfmt-on-windows (2017-07-25) 7 commits
  (merged to 'next' on 2017-08-01 at 219577a73e)
 + Merge branch 'js/msgfmt-on-windows' of ../git-gui into js/git-gui-msgfmt-on-windows
 + git-gui (MinGW): make use of MSys2's msgfmt
 + Merge remote-tracking branch 'philoakley/dup-gui'
 + git gui: allow for a long recentrepo list
 + git gui: de-dup selected repo from recentrepo history
 + git gui: cope with duplicates in _get_recentrepo
 + git-gui: remove duplicate entries from .gitconfig's gui.recentrepo

 Because recent Git for Windows do come with a real msgfmt, the
 build procedure for git-gui has been updated to use it instead of a
 hand-rolled substitute.


* js/run-process-parallel-api-fix (2017-07-21) 1 commit
  (merged to 'next' on 2017-07-27 at 4b54b69172)
 + run_processes_parallel: change confusing task_cb convention

 API fix.


* jt/fsck-code-cleanup (2017-07-26) 3 commits
  (merged to 'next' on 2017-07-26 at 7a17e279da)
 + fsck: cleanup unused variable
  (merged to 'next' on 2017-07-20 at f7045a8c47)
 + object: remove "used" field from struct object
 + fsck: remove redundant parse_tree() invocation

 Code clean-up.


* jt/subprocess-handshake (2017-07-26) 3 commits
  (merged to 'next' on 2017-08-01 at a0f78deffd)
 + sub-process: refactor handshake to common function
 + Documentation: migrate sub-process docs to header
 + Merge branch 'ls/filter-process-delayed' into jt/subprocess-handshake
 (this branch uses ls/filter-process-delayed.)

 Code cleanup.


* jt/t1450-fsck-corrupt-packfile (2017-07-28) 1 commit
  (merged to 'next' on 2017-08-04 at 44d09da2fc)
 + tests: ensure fsck fails on corrupt packfiles

 A test update.


* ks/commit-abort-on-empty-message-fix (2017-07-17) 1 commit
  (merged to 'next' on 2017-07-27 at e81ad4c1dc)
 + commit: check for empty message before the check for untouched template

 "git commit" when seeing an totally empty message said "you did not
 edit the message", which is clearly wrong.  The message has been
 corrected.


* ks/prepare-commit-msg-sample (2017-07-12) 4 commits
  (merged to 'next' on 2017-07-18 at 48d9650a30)
 + hook: add a simple first example
 + hook: add sign-off using "interpret-trailers"
 + hook: name the positional variables
 + hook: cleanup script

 Remove an example that is now obsolete from a sample hook,
 and improve an old example in it that added a sign-off manually
 to use the interpret-trailers command.


* ls/filter-process-delayed (2017-06-30) 7 commits
  (merged to 'next' on 2017-07-05 at a35e644082)
 + convert: add "status=delayed" to filter process protocol
 + convert: refactor capabilities negotiation
 + convert: move multiple file filter error handling to separate function
 + convert: put the flags field before the flag itself for consistent style
 + t0021: write "OUT <size>" only on success
 + t0021: make debug log file name configurable
 + t0021: keep filter log files on comparison
 (this branch is used by jt/subprocess-handshake.)

 The filter-process interface learned to allow a process with long
 latency give a "delayed" response.


* ma/pager-per-subcommand-action (2017-08-03) 7 commits
  (merged to 'next' on 2017-08-04 at 0f760bcf5d)
 + git.c: ignore pager.* when launching builtin as dashed external
 + tag: change default of `pager.tag` to "on"
 + tag: respect `pager.tag` in list-mode only
 + t7006: add tests for how git tag paginates
 + git.c: provide setup_auto_pager()
 + git.c: let builtins opt for handling `pager.foo` themselves
 + builtin.h: take over documentation from api-builtin.txt

 The "tag.pager" configuration variable was useless for those who
 actually create tag objects, as it interfered with the use of an
 editor.  A new mechanism has been introduced for commands to enable
 pager depending on what operation is being carried out to fix this,
 and then "git tag -l" is made to run pager by default.

 If this works out OK, I think there are low-hanging fruits in
 other commands like "git branch" that outputs long list in one mode
 while taking input in another.


* rg/rerere-train-overwrite (2017-07-26) 1 commit
  (merged to 'next' on 2017-08-01 at 7fcd42974c)
 + contrib/rerere-train: optionally overwrite existing resolutions

 The "rerere-train" script (in contrib/) learned the "--overwrite"
 option to allow overwriting existing recorded resolutions.


* rs/bswap-ubsan-fix (2017-07-17) 2 commits
  (merged to 'next' on 2017-07-20 at ce6bad07b0)
 + bswap: convert get_be16, get_be32 and put_be32 to inline functions
 + bswap: convert to unsigned before shifting in get_be32

 Code clean-up.


* rs/move-array (2017-07-17) 4 commits
  (merged to 'next' on 2017-07-20 at f3086cd20e)
 + ls-files: don't try to prune an empty index
 + apply: use COPY_ARRAY and MOVE_ARRAY in update_image()
 + use MOVE_ARRAY
 + add MOVE_ARRAY

 Code clean-up.


* rs/pack-objects-pbase-cleanup (2017-07-20) 1 commit
  (merged to 'next' on 2017-07-20 at a6b618559b)
 + pack-objects: remove unnecessary NULL check

 Code clean-up.


* rs/stat-data-unaligned-reads-fix (2017-07-17) 1 commit
  (merged to 'next' on 2017-07-20 at e7d3782823)
 + dir: support platforms that require aligned reads

 Code clean-up.


* sb/hashmap-cleanup (2017-07-05) 10 commits
  (merged to 'next' on 2017-07-12 at ce31d06165)
 + t/helper/test-hashmap: use custom data instead of duplicate cmp functions
 + name-hash.c: drop hashmap_cmp_fn cast
 + submodule-config.c: drop hashmap_cmp_fn cast
 + remote.c: drop hashmap_cmp_fn cast
 + patch-ids.c: drop hashmap_cmp_fn cast
 + convert/sub-process: drop cast to hashmap_cmp_fn
 + config.c: drop hashmap_cmp_fn cast
 + builtin/describe: drop hashmap_cmp_fn cast
 + builtin/difftool.c: drop hashmap_cmp_fn cast
 + attr.c: drop hashmap_cmp_fn cast

 Many uses of comparision callback function the hashmap API uses
 cast the callback function type when registering it to
 hashmap_init(), which defeats the compile time type checking when
 the callback interface changes (e.g. gaining more parameters).
 The callback implementations have been updated to take "void *"
 pointers and cast them to the type they expect instead.


* sb/object-id (2017-07-13) 2 commits
  (merged to 'next' on 2017-07-18 at e4df0ba3b1)
 + tag: convert gpg_verify_tag to use struct object_id
 + commit: convert lookup_commit_graft to struct object_id
 (this branch is used by bc/object-id and bw/submodule-config-cleanup.)

 Conversion from uchar[20] to struct object_id continues.


* st/lib-gpg-kill-stray-agent (2017-07-20) 1 commit
  (merged to 'next' on 2017-07-20 at 8ea68c483f)
 + t: lib-gpg: flush gpg agent on startup

 Some versions of GnuPG fails to kill gpg-agent it auto-spawned
 and such a left-over agent can interfere with a test.  Work it
 around by attempting to kill one before starting a new test.


* wd/rebase-conflict-guide (2017-07-17) 1 commit
  (merged to 'next' on 2017-07-20 at c78e758b23)
 + rebase: make resolve message clearer for inexperienced users

 The advice message given when "git rebase" stops for conflicting
 changes has been improved.

--------------------------------------------------
[New Topics]

* ab/ref-filter-no-contains (2017-08-07) 1 commit
 - tests: don't give unportable ">" to "test" built-in, use -gt

 A test fix.

 Will merge to 'next'.


* ma/parse-maybe-bool (2017-08-07) 6 commits
 - parse_decoration_style: drop unused argument `var`
 - treewide: deprecate git_config_maybe_bool, use git_parse_maybe_bool
 - config: make git_{config,parse}_maybe_bool equivalent
 - config: introduce git_parse_maybe_bool_text
 - t5334: document that git push --signed=1 does not work
 - Doc/git-{push,send-pack}: correct --sign= to --signed=

 Code clean-up.

 Will merge to 'next'.


* mf/no-dashed-subcommands (2017-08-07) 1 commit
 - scripts: use "git foo" not "git-foo"

 Code clean-up.

 Will merge to 'next'.


* mk/diff-delta-uint-may-be-shorter-than-ulong (2017-08-10) 1 commit
 - diff-delta: fix encoding size that would not fit in "unsigned int"

 The machinery to create xdelta used in pack files received the
 sizes of the data in size_t, but lost the higher bits of them by
 storing them in "unsigned int" during the computation, which is
 fixed.

 Will merge to 'next'.


* rs/freebsd-getcwd-workaround (2017-08-07) 1 commit
 - t0001: skip test with restrictive permissions if getpwd(3) respects them

 Test portability fix for BSDs.

 Will merge to 'next'.


* rs/in-obsd-basename-dirname-take-const (2017-08-07) 1 commit
 - test-path-utils: handle const parameter of basename and dirname

 Portability fix.

 Will merge to 'next'.


* rs/t3700-clean-leftover (2017-08-08) 1 commit
 - t3700: fix broken test under !POSIXPERM

 A test fix.

 Will merge to 'next'.


* jc/perl-git-comment-typofix (2017-08-07) 1 commit
 - perl/Git.pm: typofix in a comment

 A comment fix.

 Will merge to 'next'.


* jk/drop-ancient-curl (2017-08-09) 5 commits
 . http: #error on too-old curl
 . curl: remove ifdef'd code never used with curl >=7.19.4
 . http: drop support for curl < 7.19.4
 . http: drop support for curl < 7.16.0
 . http: drop support for curl < 7.11.1


* jk/drop-sha1-entry-pos (2017-08-09) 1 commit
 - sha1_file: drop experimental GIT_USE_LOOKUP search

 Code clean-up.

 Will merge to 'next'.


* jk/hashcmp-memcmp (2017-08-09) 1 commit
 - hashcmp: use memcmp instead of open-coded loop

 Code clean-up.

 Will merge to 'next'.


* jk/trailers-parse (2017-08-10) 5 commits
 - interpret-trailers: add --parse convenience option
 - interpret-trailers: add an option to normalize output
 - interpret-trailers: add an option to show only existing trailers
 - interpret-trailers: add an option to show only the trailers
 - trailer: put process_trailers() options into a struct


* mk/use-size-t-in-zlib (2017-08-10) 1 commit
 - zlib.c: use size_t for size

 The wrapper to call into zlib followed our long tradition to use
 "unsigned long" for sizes of regions in memory, which have been
 updated to use "size_t".

 Will merge to 'next'.


* pw/am-signoff (2017-08-08) 1 commit
 - am: fix signoff when other trailers are present

 "git am -s" has been taught that some input may end with a trailer
 block that is not Signed-off-by: and it should refrain from adding
 an extra blank line before adding a new sign-off in such a case.

 Will merge to 'next'.


* rj/add-chmod-error-message (2017-08-09) 1 commit
 - builtin/add: add detail to a 'cannot chmod' error message

 Message fix.

 Will merge to 'next'.


* rs/apply-lose-prefix-length (2017-08-09) 1 commit
 - apply: remove prefix_length member from apply_state

 Code clean-up.

 Will merge to 'next'.


* rs/find-pack-entry-bisection (2017-08-09) 1 commit
 - sha1_file: avoid comparison if no packed hash matches the first byte

 Code clean-up.

 Will merge to 'next'.


* rs/fsck-obj-leakfix (2017-08-10) 1 commit
 - fsck: free buffers on error in fsck_obj()

 Memory leak in an error codepath has been plugged.

 Will merge to 'next'.


* rs/merge-microcleanup (2017-08-10) 1 commit
 - merge: use skip_prefix()

 Code clean-up.

 Will merge to 'next'.


* rs/strbuf-getwholeline-fix (2017-08-10) 1 commit
 - strbuf: clear errno before calling getdelim(3)

 A helper function to read a single whole line into strbuf
 mistakenly triggered OOM error at EOF under certain conditions,
 which has been fixed.

 Will merge to 'next'.


* rs/t4062-obsd (2017-08-09) 1 commit
 - t4062: use less than 256 repetitions in regex

 Test portability fix.

 Will merge to 'next'.


* rs/unpack-entry-leakfix (2017-08-10) 1 commit
 - sha1_file: release delta_stack on error in unpack_entry()

 Memory leak in an error codepath has been plugged.

 Will merge to 'next'.


* rs/win32-syslog-leakfix (2017-08-10) 1 commit
 - win32: plug memory leak on realloc() failure in syslog()

 Memory leak in an error codepath has been plugged.

 Will merge to 'next'.


* sb/retire-t1200 (2017-08-10) 1 commit
 - t1200: remove t1200-tutorial.sh

 A test script that outlived its usefulness has been removed.

 Will merge to 'next'.


* ur/svn-local-zone (2017-08-08) 1 commit
 - git svn fetch: Create correct commit timestamp when using --localtime

 "git svn" used with "--localtime" option did not compute the tz
 offset for the timestamp in question and instead always used the
 current time, which has been corrected.

 Will merge to 'next'.


* jt/sha1-file-cleanup (2017-08-11) 2 commits
 - sha1_file: remove read_packed_sha1()
 - sha1_file: set whence in storage-specific info fn

 Preparatory code clean-up.

 Will merge to 'next'.


* kw/rebase-progress (2017-08-11) 2 commits
 - rebase: turn on progress option by default for format-patch
 - format-patch: have progress option while generating patches

 "git rebase", especially when it is run by mistake and ends up
 trying to replay many changes, spent long time in silence.  The
 command has been taught to show progress report when it spends
 long time preparing these many changes to replay (which would give
 the user a chance to abort with ^C).

 Waiting for a response.
 cf. <20170810232033.46ujnozvnodkguog@sigill.intra.peff.net>
 cf. <xmqqshgxycal.fsf@gitster.mtv.corp.google.com>


* mk/diff-delta-avoid-large-offset (2017-08-11) 1 commit
 - diff-delta: do not allow delta offset truncation

 The delta format used in the packfile cannot reference data at
 offset larger than what can be expressed in 4-byte, but the
 generator for the data failed to make sure the offset does not
 overflow.  This has been corrected.

 Will merge to 'next'.


* nm/stash-untracked (2017-08-11) 1 commit
 - stash: clean untracked files before reset

 "git stash -u" used the contents of the committed version of the
 ".gitignore" file to decide which paths are ignored, even when the
 file has local changes.  The command has been taught to instead use
 the locally modified contents.

 Will merge to 'next'.


* tc/curl-with-backports (2017-08-11) 2 commits
 - http: use a feature check to enable GSSAPI delegation control
 - http: fix handling of missing CURLPROTO_*

 Updates to the HTTP layer we made recently unconditionally used
 features of libCurl without checking the existence of them, causing
 compilation errors, which has been fixed.  Also migrate the code to
 check feature macros, not version numbers, to cope better with
 libCurl that vendor ships with backported features.

--------------------------------------------------
[Stalled]

* mg/status-in-progress-info (2017-05-10) 2 commits
 - status --short --inprogress: spell it as --in-progress
 - status: show in-progress info for short status

 "git status" learns an option to report various operations
 (e.g. "merging") that the user is in the middle of.

 cf. <xmqqmvakcdqw.fsf@gitster.mtv.corp.google.com>


* nd/worktree-move (2017-04-20) 6 commits
 - worktree remove: new command
 - worktree move: refuse to move worktrees with submodules
 - worktree move: accept destination as directory
 - worktree move: new command
 - worktree.c: add update_worktree_location()
 - worktree.c: add validate_worktree()

 "git worktree" learned move and remove subcommands.

 Expecting a reroll.
 cf. <20170420101024.7593-1-pclouds@gmail.com>
 cf. <20170421145916.mknekgqzhxffu7di@sigill.intra.peff.net>
 cf. <d0e81b1e-5869-299e-f462-4d43dc997bd1@ramsayjones.plus.com>


* sg/clone-refspec-from-command-line-config (2017-06-16) 2 commits
 - Documentation/clone: document ignored configuration variables
 - clone: respect additional configured fetch refspecs during initial fetch
 (this branch is used by sg/remote-no-string-refspecs.)

 "git clone -c var=val" is a way to set configuration variables in
 the resulting repository, but it is more useful to also make these
 variables take effect while the initial clone is happening,
 e.g. these configuration variables could be fetch refspecs.

 Waiting for a response.
 cf. <20170617112228.vugswym4o4owf6wj@sigill.intra.peff.net>
 cf. <xmqqmv8zhdap.fsf@gitster.mtv.corp.google.com>


* js/rebase-i-final (2017-07-27) 10 commits
 - rebase -i: rearrange fixup/squash lines using the rebase--helper
 - t3415: test fixup with wrapped oneline
 - rebase -i: skip unnecessary picks using the rebase--helper
 - rebase -i: check for missing commits in the rebase--helper
 - t3404: relax rebase.missingCommitsCheck tests
 - rebase -i: also expand/collapse the SHA-1s via the rebase--helper
 - rebase -i: do not invent onelines when expanding/collapsing SHA-1s
 - rebase -i: remove useless indentation
 - rebase -i: generate the script via rebase--helper
 - t3415: verify that an empty instructionFormat is handled as before

 The final batch to "git rebase -i" updates to move more code from
 the shell script to C.

 Expecting a reroll.


* bp/fsmonitor (2017-06-12) 6 commits
 - fsmonitor: add a sample query-fsmonitor hook script for Watchman
 - fsmonitor: add documentation for the fsmonitor extension.
 - fsmonitor: add test cases for fsmonitor extension
 - fsmonitor: teach git to optionally utilize a file system monitor to speed up detecting new or changed files.
 - dir: make lookup_untracked() available outside of dir.c
 - bswap: add 64 bit endianness helper get_be64

 We learned to talk to watchman to speed up "git status".

 Expecting a reroll.
 cf. <bade1166-e646-b05a-f65b-adb8da8ba0a7@gmail.com>

--------------------------------------------------
[Cooking]

* pw/sequence-rerere-autoupdate (2017-08-02) 6 commits
  (merged to 'next' on 2017-08-11 at cd2d165be2)
 + cherry-pick/revert: reject --rerere-autoupdate when continuing
 + cherry-pick/revert: remember --rerere-autoupdate
 + t3504: use test_commit
 + rebase -i: honor --rerere-autoupdate
 + rebase: honor --rerere-autoupdate
 + am: remember --rerere-autoupdate setting

 Commands like "git rebase" accepted the --rerere-autoupdate option
 from the command line, but did not always use it.  This has been
 fixed.

 Will merge to 'master'.


* bw/clone-recursive-quiet (2017-08-04) 1 commit
  (merged to 'next' on 2017-08-11 at f49ac463f7)
 + clone: teach recursive clones to respect -q

 "git clone --recurse-submodules --quiet" did not pass the quiet
 option down to submodules.

 Will merge to 'master'.


* lg/merge-signoff (2017-07-25) 1 commit
 - merge: add a --signoff flag

 "git merge" learned a "--signoff" option to add the Signed-off-by:
 trailer with the committer's name.


* pb/trailers-from-command-line (2017-07-25) 4 commits
 - SQUASH???
 - interpret-trailers: add options for actions
 - trailers: introduce struct new_trailer_item
 - trailers: export action enums and corresponding lookup functions

 "git interpret-trailers" learned to take the trailer specifications
 from the command line that overrides the configured values.

 Expecting a reroll for compilation fix.


* sb/submodule-recursive-checkout-detach-head (2017-07-28) 2 commits
 - Documentation/checkout: clarify submodule HEADs to be detached
 - recursive submodules: detach HEAD from new state

 "git checkout --recursive" may overwrite and rewind the history of
 the branch that happens to be checked out in submodule
 repositories, which might not be desirable.  Detach the HEAD but
 still allow the recursive checkout to succeed in such a case.

 Undecided.
 This needs justification in a larger picture; it is unclear why
 this is better than rejecting recursive checkout, for example.


* ti/external-sha1dc (2017-07-25) 1 commit
  (merged to 'next' on 2017-07-27 at d1ce394fe2)
 + hash: allow building with the external sha1dc library

 Platforms that ship with a separate sha1 with collision detection
 library can link to it instead of using the copy we ship as part of
 our source tree.

 Waiting for review to conclude
 cf. <CACBZZX7M=H8tNkZXpHBvv0rbY58EJk4dkoUzGKMftWoKUqF8sA@mail.gmail.com>


* bw/submodule-config-cleanup (2017-08-03) 17 commits
 - submodule: remove gitmodules_config
 - unpack-trees: improve loading of .gitmodules
 - submodule-config: lazy-load a repository's .gitmodules file
 - submodule-config: move submodule-config functions to submodule-config.c
 - submodule-config: remove support for overlaying repository config
 - diff: stop allowing diff to have submodules configured in .git/config
 - submodule: remove submodule_config callback routine
 - unpack-trees: don't respect submodule.update
 - submodule: don't rely on overlayed config when setting diffopts
 - fetch: don't overlay config with submodule-config
 - submodule--helper: don't overlay config in update-clone
 - submodule--helper: don't overlay config in remote_submodule_branch
 - add, reset: ensure submodules can be added or reset
 - submodule: don't use submodule_from_name
 - t7411: check configuration parsing errors
 - Merge branch 'bc/object-id' into bw/submodule-config-cleanup
 - Merge branch 'bw/grep-recurse-submodules' into bw/submodule-config-cleanup
 (this branch uses bw/grep-recurse-submodules.)

 Code clean-up to avoid mixing values read from the .gitmodules file
 and values read from the .git/config file.


* bw/push-options-recursively-to-submodules (2017-07-20) 1 commit
  (merged to 'next' on 2017-07-27 at 26b3af2544)
 + submodule--helper: teach push-check to handle HEAD

 "git push --recurse-submodules $there HEAD:$target" was not
 propagated down to the submodules, but now it is.

 Will merge to 'master'.


* jk/check-ref-format-oor-fix (2017-07-14) 1 commit
 - check-ref-format: require a repository for --branch

 Objected...
 cf. <20170717172709.GL93855@aiede.mtv.corp.google.com>


* bw/grep-recurse-submodules (2017-08-02) 10 commits
  (merged to 'next' on 2017-08-04 at 4e60c34bad)
 + grep: recurse in-process using 'struct repository'
 + submodule: merge repo_read_gitmodules and gitmodules_config
 + submodule: check for unmerged .gitmodules outside of config parsing
 + submodule: check for unstaged .gitmodules outside of config parsing
 + submodule: remove fetch.recursesubmodules from submodule-config parsing
 + submodule: remove submodule.fetchjobs from submodule-config parsing
 + config: add config_from_gitmodules
 + cache.h: add GITMODULES_FILE macro
 + repository: have the_repository use the_index
 + repo_read_index: don't discard the index
 (this branch is used by bw/submodule-config-cleanup.)

 "git grep --recurse-submodules" has been reworked to give a more
 consistent output across submodule boundary (and do its thing
 without having to fork a separate process).

 Will merge to 'master'.


* rs/sha1-file-micro-optim (2017-07-09) 2 commits
 - SQUASH???
 - sha1_file: add slash once in for_each_file_in_obj_subdir()

 Code cleanup.

 Perhaps drop.
 cf. <f59c8256-716b-9305-2a4f-d4fe49f666ff@web.de>


* jc/allow-lazy-cas (2017-07-06) 1 commit
 - push: disable lazy --force-with-lease by default

 Because "git push --force-with-lease[=<ref>]" that relies on the
 stability of remote-tracking branches is unsafe when something
 fetches into the repository behind user's back, it is now disabled
 by default.  A new configuration variable can be used to enable it
 by users who know what they are doing.  This would pave the way to
 possibly turn `--force` into `--force-with-lease`.

 Undecided.
 Independent from disabling the feature by default, this stirred up
 a discussion to replace the DWIM heuristics with a better one, which
 deserves to be its own topic.
 cf. <alpine.DEB.2.21.1.1707131435220.4193@virtualbox>


* ex/deprecate-empty-pathspec-as-match-all (2017-06-23) 2 commits
  (merged to 'next' on 2017-06-26 at d026281517)
 + pathspec: die on empty strings as pathspec
 + t0027: do not use an empty string as a pathspec element

 The final step to make an empty string as a pathspec element
 illegal.  We started this by first deprecating and warning a
 pathspec that has such an element in 2.11 (Nov 2016).

 Hopefully we can merge this down to the 'master' by the end of the
 year?  A deprecation warning period that is about 1 year does not
 sound too bad.

 Will cook in 'next'.


* mh/packed-ref-store (2017-07-27) 31 commits
  (merged to 'next' on 2017-07-27 at 857dcb8cba)
 + packed_ref_store: handle a packed-refs file that is a symlink
  (merged to 'next' on 2017-07-05 at 6c68c603cc)
 + read_packed_refs(): die if `packed-refs` contains bogus data
 + t3210: add some tests of bogus packed-refs file contents
 + repack_without_refs(): don't lock or unlock the packed refs
 + commit_packed_refs(): remove call to `packed_refs_unlock()`
 + clear_packed_ref_cache(): don't protest if the lock is held
 + packed_refs_unlock(), packed_refs_is_locked(): new functions
 + packed_refs_lock(): report errors via a `struct strbuf *err`
 + packed_refs_lock(): function renamed from lock_packed_refs()
 + commit_packed_refs(): use a staging file separate from the lockfile
 + commit_packed_refs(): report errors rather than dying
 + packed_ref_store: make class into a subclass of `ref_store`
 + packed-backend: new module for handling packed references
 + packed_read_raw_ref(): new function, replacing `resolve_packed_ref()`
 + packed_ref_store: support iteration
 + packed_peel_ref(): new function, extracted from `files_peel_ref()`
 + repack_without_refs(): take a `packed_ref_store *` parameter
 + get_packed_ref(): take a `packed_ref_store *` parameter
 + rollback_packed_refs(): take a `packed_ref_store *` parameter
 + commit_packed_refs(): take a `packed_ref_store *` parameter
 + lock_packed_refs(): take a `packed_ref_store *` parameter
 + add_packed_ref(): take a `packed_ref_store *` parameter
 + get_packed_refs(): take a `packed_ref_store *` parameter
 + get_packed_ref_cache(): take a `packed_ref_store *` parameter
 + validate_packed_ref_cache(): take a `packed_ref_store *` parameter
 + clear_packed_ref_cache(): take a `packed_ref_store *` parameter
 + packed_ref_store: move `packed_refs_lock` member here
 + packed_ref_store: move `packed_refs_path` here
 + packed_ref_store: new struct
 + add_packed_ref(): teach function to overwrite existing refs
 + t1408: add a test of stale packed refs covered by loose refs

 The "ref-store" code reorganization continues.

 Will merge to 'master'.


* sd/branch-copy (2017-06-18) 3 commits
  (merged to 'next' on 2017-07-18 at 5e3b9357ea)
 + branch: add a --copy (-c) option to go with --move (-m)
 + branch: add test for -m renaming multiple config sections
 + config: create a function to format section headers

 "git branch" learned "-c/-C" to create and switch to a new branch
 by copying an existing one.

 Will merge to 'master'.

 I personally do not think "branch --copy master backup" while on
 "master" that switches to "backup" is a good UI, and I *will* say
 "I told you so" when users complain after we merge this down to
 'master'.


* sb/diff-color-move (2017-06-30) 26 commits
  (merged to 'next' on 2017-07-06 at 758ed40e4f)
 + diff: document the new --color-moved setting
 + diff.c: add dimming to moved line detection
 + diff.c: color moved lines differently, plain mode
 + diff.c: color moved lines differently
 + diff.c: buffer all output if asked to
 + diff.c: emit_diff_symbol learns about DIFF_SYMBOL_SUMMARY
 + diff.c: emit_diff_symbol learns about DIFF_SYMBOL_STAT_SEP
 + diff.c: convert word diffing to use emit_diff_symbol
 + diff.c: convert show_stats to use emit_diff_symbol
 + diff.c: convert emit_binary_diff_body to use emit_diff_symbol
 + submodule.c: migrate diff output to use emit_diff_symbol
 + diff.c: emit_diff_symbol learns DIFF_SYMBOL_REWRITE_DIFF
 + diff.c: emit_diff_symbol learns about DIFF_SYMBOL_BINARY_FILES
 + diff.c: emit_diff_symbol learns DIFF_SYMBOL_HEADER
 + diff.c: emit_diff_symbol learns DIFF_SYMBOL_FILEPAIR_{PLUS, MINUS}
 + diff.c: emit_diff_symbol learns DIFF_SYMBOL_CONTEXT_INCOMPLETE
 + diff.c: emit_diff_symbol learns DIFF_SYMBOL_WORDS[_PORCELAIN]
 + diff.c: migrate emit_line_checked to use emit_diff_symbol
 + diff.c: emit_diff_symbol learns DIFF_SYMBOL_NO_LF_EOF
 + diff.c: emit_diff_symbol learns DIFF_SYMBOL_CONTEXT_FRAGINFO
 + diff.c: emit_diff_symbol learns DIFF_SYMBOL_CONTEXT_MARKER
 + diff.c: introduce emit_diff_symbol
 + diff.c: factor out diff_flush_patch_all_file_pairs
 + diff.c: move line ending check into emit_hunk_header
 + diff.c: readability fix
 + Merge branch 'sb/hashmap-customize-comparison' into sb/diff-color-move

 "git diff" has been taught to optionally paint new lines that are
 the same as deleted lines elsewhere differently from genuinely new
 lines.

 Will merge to 'master'.

--------------------------------------------------
[Discarded]

* mh/packed-ref-store-prep-extra (2017-06-18) 1 commit
 . prefix_ref_iterator_advance(): relax the check of trim length

 Split out of mh/packed-ref-store-prep.


* nd/prune-in-worktree (2017-04-24) 12 commits
 . rev-list: expose and document --single-worktree
 . revision.c: --reflog add HEAD reflog from all worktrees
 . files-backend: make reflog iterator go through per-worktree reflog
 . revision.c: --all adds HEAD from all worktrees
 . refs: remove dead for_each_*_submodule()
 . revision.c: use refs_for_each*() instead of for_each_*_submodule()
 . refs: add refs_head_ref()
 . refs: move submodule slash stripping code to get_submodule_ref_store
 . refs.c: refactor get_submodule_ref_store(), share common free block
 . revision.c: --indexed-objects add objects from all worktrees
 . revision.c: refactor add_index_objects_to_pending()
 . revision.h: new flag in struct rev_info wrt. worktree-related refs

 "git gc" and friends when multiple worktrees are used off of a
 single repository did not consider the index and per-worktree refs
 of other worktrees as the root for reachability traversal, making
 objects that are in use only in other worktrees to be subject to
 garbage collection.

^ permalink raw reply	[relevance 5%]

* What's cooking in git.git (Aug 2017, #01; Fri, 4)
@ 2017-08-04 16:55  6% Junio C Hamano
  0 siblings, 0 replies; 25+ results
From: Junio C Hamano @ 2017-08-04 16:55 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.  The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.

The 2.14-rc2 was a bit delayed for various reasons and then there
wasn't any last-minite regressions discovered and fixed during that
timeframe, so I just decided to skip the second release candidate
and go straight to tag the final, which was done a few minutes ago.

I expect that the tree to stay a bit quiet for a week until the first
maintenance release for 2.14 series is tagged, perhaps by the end of
the next week.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[Graduated to "master"]

* ah/patch-id-doc (2017-07-28) 1 commit
  (merged to 'next' on 2017-08-04 at 7808b7abd3)
 + doc: remove unsupported parameter from patch-id

 Docfix.


* as/diff-options-grammofix (2017-07-31) 1 commit
  (merged to 'next' on 2017-08-01 at bfc60e3ec5)
 + diff-options doc: grammar fix

 A grammofix.


* js/blame-lib (2017-07-24) 1 commit
  (merged to 'next' on 2017-07-26 at db0d081012)
 + blame: fix memory corruption scrambling revision name in error message

 A hotfix to a topic already in 'master'.

--------------------------------------------------
[New Topics]

* jk/rev-list-empty-input (2017-08-02) 4 commits
  (merged to 'next' on 2017-08-04 at cb4f9b84e0)
 + revision: do not fallback to default when rev_input_given is set
 + rev-list: don't show usage when we see empty ref patterns
 + revision: add rev_input_given flag
 + t6018: flesh out empty input/output rev-list tests

 "git log --tag=no-such-tag" showed log starting from HEAD, which
 has been fixed---it now shows nothing.

 Will cook in 'next'.


* jt/t1450-fsck-corrupt-packfile (2017-07-28) 1 commit
  (merged to 'next' on 2017-08-04 at 44d09da2fc)
 + tests: ensure fsck fails on corrupt packfiles

 A test update.

 Will cook in 'next'.


* ma/pager-per-subcommand-action (2017-08-03) 7 commits
  (merged to 'next' on 2017-08-04 at 0f760bcf5d)
 + git.c: ignore pager.* when launching builtin as dashed external
 + tag: change default of `pager.tag` to "on"
 + tag: respect `pager.tag` in list-mode only
 + t7006: add tests for how git tag paginates
 + git.c: provide setup_auto_pager()
 + git.c: let builtins opt for handling `pager.foo` themselves
 + builtin.h: take over documentation from api-builtin.txt

 The "tag.pager" configuration variable was useless for those who
 actually create tag objects, as it interfered with the use of an
 editor.  A new mechanism has been introduced for commands to enable
 pager depending on what operation is being carried out to fix this,
 and then "git tag -l" is made to run pager by default.

 Will cook in 'next'.

 If this works out OK, I think there are low-hanging fruits in
 other commands like "git branch" that outputs long list in one mode
 while taking input in another.


* pw/sequence-rerere-autoupdate (2017-08-02) 6 commits
 - cherry-pick/revert: reject --rerere-autoupdate when continuing
 - cherry-pick/revert: remember --rerere-autoupdate
 - t3504: use test_commit
 - rebase -i: honor --rerere-autoupdate
 - rebase: honor --rerere-autoupdate
 - am: remember --rerere-autoupdate setting

 Commands like "git rebase" accepted the --rerere-autoupdate option
 from the command line, but did not always use it.  This has been
 fixed.

 Will merge to and cook in 'next'.


* bw/clone-recursive-quiet (2017-08-04) 1 commit
 - clone: teach recursive clones to respect -q

 "git clone --recurse-submodules --quiet" did not pass the quiet
 option down to submodules.

 Will merge to and cook in 'next'.

--------------------------------------------------
[Stalled]

* mg/status-in-progress-info (2017-05-10) 2 commits
 - status --short --inprogress: spell it as --in-progress
 - status: show in-progress info for short status

 "git status" learns an option to report various operations
 (e.g. "merging") that the user is in the middle of.

 cf. <xmqqmvakcdqw.fsf@gitster.mtv.corp.google.com>


* nd/worktree-move (2017-04-20) 6 commits
 - worktree remove: new command
 - worktree move: refuse to move worktrees with submodules
 - worktree move: accept destination as directory
 - worktree move: new command
 - worktree.c: add update_worktree_location()
 - worktree.c: add validate_worktree()

 "git worktree" learned move and remove subcommands.

 Expecting a reroll.
 cf. <20170420101024.7593-1-pclouds@gmail.com>
 cf. <20170421145916.mknekgqzhxffu7di@sigill.intra.peff.net>
 cf. <d0e81b1e-5869-299e-f462-4d43dc997bd1@ramsayjones.plus.com>


* sg/clone-refspec-from-command-line-config (2017-06-16) 2 commits
 - Documentation/clone: document ignored configuration variables
 - clone: respect additional configured fetch refspecs during initial fetch
 (this branch is used by sg/remote-no-string-refspecs.)

 "git clone -c var=val" is a way to set configuration variables in
 the resulting repository, but it is more useful to also make these
 variables take effect while the initial clone is happening,
 e.g. these configuration variables could be fetch refspecs.

 Waiting for a response.
 cf. <20170617112228.vugswym4o4owf6wj@sigill.intra.peff.net>
 cf. <xmqqmv8zhdap.fsf@gitster.mtv.corp.google.com>


* js/rebase-i-final (2017-07-27) 10 commits
 - rebase -i: rearrange fixup/squash lines using the rebase--helper
 - t3415: test fixup with wrapped oneline
 - rebase -i: skip unnecessary picks using the rebase--helper
 - rebase -i: check for missing commits in the rebase--helper
 - t3404: relax rebase.missingCommitsCheck tests
 - rebase -i: also expand/collapse the SHA-1s via the rebase--helper
 - rebase -i: do not invent onelines when expanding/collapsing SHA-1s
 - rebase -i: remove useless indentation
 - rebase -i: generate the script via rebase--helper
 - t3415: verify that an empty instructionFormat is handled as before

 The final batch to "git rebase -i" updates to move more code from
 the shell script to C.

 Expecting a reroll.


* bp/fsmonitor (2017-06-12) 6 commits
 - fsmonitor: add a sample query-fsmonitor hook script for Watchman
 - fsmonitor: add documentation for the fsmonitor extension.
 - fsmonitor: add test cases for fsmonitor extension
 - fsmonitor: teach git to optionally utilize a file system monitor to speed up detecting new or changed files.
 - dir: make lookup_untracked() available outside of dir.c
 - bswap: add 64 bit endianness helper get_be64

 We learned to talk to watchman to speed up "git status".

 Expecting a reroll.
 cf. <bade1166-e646-b05a-f65b-adb8da8ba0a7@gmail.com>

--------------------------------------------------
[Cooking]

* ah/doc-wserrorhighlight (2017-07-25) 1 commit
  (merged to 'next' on 2017-07-27 at cd1bb28d95)
 + doc: add missing values "none" and "default" for diff.wsErrorHighlight

 Doc update.

 Will cook in 'next'.


* dc/fmt-merge-msg-microcleanup (2017-07-25) 1 commit
  (merged to 'next' on 2017-07-27 at 6df06eb788)
 + fmt-merge-msg: fix coding style

 Code cleanup.

 Will cook in 'next'.


* js/git-gui-msgfmt-on-windows (2017-07-25) 7 commits
  (merged to 'next' on 2017-08-01 at 219577a73e)
 + Merge branch 'js/msgfmt-on-windows' of ../git-gui into js/git-gui-msgfmt-on-windows
 + git-gui (MinGW): make use of MSys2's msgfmt
 + Merge remote-tracking branch 'philoakley/dup-gui'
 + git gui: allow for a long recentrepo list
 + git gui: de-dup selected repo from recentrepo history
 + git gui: cope with duplicates in _get_recentrepo
 + git-gui: remove duplicate entries from .gitconfig's gui.recentrepo

 Because recent Git for Windows do come with a real msgfmt, the
 build procedure for git-gui has been updated to use it instead of a
 hand-rolled substitute.

 Will cook in 'next'.
 As we haven't heard from Pat, let's advance the update to 'next'
 ourselves.


* jt/subprocess-handshake (2017-07-26) 3 commits
  (merged to 'next' on 2017-08-01 at a0f78deffd)
 + sub-process: refactor handshake to common function
 + Documentation: migrate sub-process docs to header
 + Merge branch 'ls/filter-process-delayed' into jt/subprocess-handshake
 (this branch uses ls/filter-process-delayed.)

 Code cleanup.

 Will cook in 'next'.


* lg/merge-signoff (2017-07-25) 1 commit
 - merge: add a --signoff flag

 "git merge" learned a "--signoff" option to add the Signed-off-by:
 trailer with the committer's name.


* pb/trailers-from-command-line (2017-07-25) 4 commits
 - SQUASH???
 - interpret-trailers: add options for actions
 - trailers: introduce struct new_trailer_item
 - trailers: export action enums and corresponding lookup functions

 "git interpret-trailers" learned to take the trailer specifications
 from the command line that overrides the configured values.

 Expecting a reroll for compilation fix.


* sb/submodule-recursive-checkout-detach-head (2017-07-28) 2 commits
 - Documentation/checkout: clarify submodule HEADs to be detached
 - recursive submodules: detach HEAD from new state

 "git checkout --recursive" may overwrite and rewind the history of
 the branch that happens to be checked out in submodule
 repositories, which might not be desirable.  Detach the HEAD but
 still allow the recursive checkout to succeed in such a case.

 Undecided.
 This needs justification in a larger picture; it is unclear why
 this is better than rejecting recursive checkout, for example.


* ti/external-sha1dc (2017-07-25) 1 commit
  (merged to 'next' on 2017-07-27 at d1ce394fe2)
 + hash: allow building with the external sha1dc library

 Platforms that ship with a separate sha1 with collision detection
 library can link to it instead of using the copy we ship as part of
 our source tree.

 Waiting for review to conclude
 cf. <CACBZZX7M=H8tNkZXpHBvv0rbY58EJk4dkoUzGKMftWoKUqF8sA@mail.gmail.com>


* bw/submodule-config-cleanup (2017-08-03) 17 commits
 - submodule: remove gitmodules_config
 - unpack-trees: improve loading of .gitmodules
 - submodule-config: lazy-load a repository's .gitmodules file
 - submodule-config: move submodule-config functions to submodule-config.c
 - submodule-config: remove support for overlaying repository config
 - diff: stop allowing diff to have submodules configured in .git/config
 - submodule: remove submodule_config callback routine
 - unpack-trees: don't respect submodule.update
 - submodule: don't rely on overlayed config when setting diffopts
 - fetch: don't overlay config with submodule-config
 - submodule--helper: don't overlay config in update-clone
 - submodule--helper: don't overlay config in remote_submodule_branch
 - add, reset: ensure submodules can be added or reset
 - submodule: don't use submodule_from_name
 - t7411: check configuration parsing errors
 - Merge branch 'bc/object-id' into bw/submodule-config-cleanup
 - Merge branch 'bw/grep-recurse-submodules' into bw/submodule-config-cleanup
 (this branch uses bc/object-id, bw/grep-recurse-submodules and sb/object-id.)

 Code clean-up to avoid mixing values read from the .gitmodules file
 and values read from the .git/config file.


* jb/t8008-cleanup (2017-07-26) 1 commit
  (merged to 'next' on 2017-08-01 at f979c9340d)
 + t8008: rely on rev-parse'd HEAD instead of sha1 value

 Code clean-up.

 Will cook in 'next'.


* rg/rerere-train-overwrite (2017-07-26) 1 commit
  (merged to 'next' on 2017-08-01 at 7fcd42974c)
 + contrib/rerere-train: optionally overwrite existing resolutions

 The "rerere-train" script (in contrib/) learned the "--overwrite"
 option to allow overwriting existing recorded resolutions.

 Will cook in 'next'.


* dl/credential-cache-socket-in-xdg-cache (2017-07-27) 1 commit
  (merged to 'next' on 2017-08-01 at 87687ae1d4)
 + credential-cache: interpret an ECONNRESET as an EOF

 A recently added test for the "credential-cache" helper revealed
 that EOF detection done around the time the connection to the cache
 daemon is torn down were flaky.  This was fixed by reacting to
 ECONNRESET and behaving as if we got an EOF.

 Will cook in 'next'.


* eb/contacts-reported-by (2017-07-27) 1 commit
  (merged to 'next' on 2017-08-01 at cca9972d6b)
 + git-contacts: also recognise "Reported-by:"

 "git contacts" (in contrib/) now lists the address on the
 "Reported-by:" trailer to its output, in addition to those on
 S-o-b: and other trailers, to make it easier to notify (and thank)
 the original bug reporter.

 Will cook in 'next'.


* js/run-process-parallel-api-fix (2017-07-21) 1 commit
  (merged to 'next' on 2017-07-27 at 4b54b69172)
 + run_processes_parallel: change confusing task_cb convention

 API fix.

 Will cook in 'next'.


* cc/ref-is-hidden-microcleanup (2017-07-24) 1 commit
  (merged to 'next' on 2017-07-27 at 37af544e1c)
 + refs: use skip_prefix() in ref_is_hidden()

 Code cleanup.

 Will cook in 'next'.


* bw/push-options-recursively-to-submodules (2017-07-20) 1 commit
  (merged to 'next' on 2017-07-27 at 26b3af2544)
 + submodule--helper: teach push-check to handle HEAD

 "git push --recurse-submodules $there HEAD:$target" was not
 propagated down to the submodules, but now it is.

 Will cook in 'next'.


* jc/http-sslkey-and-ssl-cert-are-paths (2017-07-20) 1 commit
  (merged to 'next' on 2017-07-20 at 5489304b99)
 + http.c: http.sslcert and http.sslkey are both pathnames

 The http.{sslkey,sslCert} configuration variables are to be
 interpreted as a pathname that honors "~[username]/" prefix, but
 weren't, which has been fixed.

 Will cook in 'next'.


* jt/fsck-code-cleanup (2017-07-26) 3 commits
  (merged to 'next' on 2017-07-26 at 7a17e279da)
 + fsck: cleanup unused variable
  (merged to 'next' on 2017-07-20 at f7045a8c47)
 + object: remove "used" field from struct object
 + fsck: remove redundant parse_tree() invocation

 Code clean-up.

 Will cook in 'next'.


* rs/pack-objects-pbase-cleanup (2017-07-20) 1 commit
  (merged to 'next' on 2017-07-20 at a6b618559b)
 + pack-objects: remove unnecessary NULL check

 Code clean-up.

 Will cook in 'next'.


* st/lib-gpg-kill-stray-agent (2017-07-20) 1 commit
  (merged to 'next' on 2017-07-20 at 8ea68c483f)
 + t: lib-gpg: flush gpg agent on startup

 Some versions of GnuPG fails to kill gpg-agent it auto-spawned
 and such a left-over agent can interfere with a test.  Work it
 around by attempting to kill one before starting a new test.

 Will cook in 'next'.


* jk/c99 (2017-07-18) 2 commits
  (merged to 'next' on 2017-07-18 at 1cfc30f7c1)
 + clean.c: use designated initializer
 + strbuf: use designated initializers in STRBUF_INIT

 Start using selected c99 constructs in small, stable and
 essentialpart of the system to catch people who care about
 older compilers that do not grok them.

 Will cook in 'next'.


* jk/check-ref-format-oor-fix (2017-07-14) 1 commit
 - check-ref-format: require a repository for --branch

 Objected...
 cf. <20170717172709.GL93855@aiede.mtv.corp.google.com>


* bw/grep-recurse-submodules (2017-08-02) 10 commits
  (merged to 'next' on 2017-08-04 at 4e60c34bad)
 + grep: recurse in-process using 'struct repository'
 + submodule: merge repo_read_gitmodules and gitmodules_config
 + submodule: check for unmerged .gitmodules outside of config parsing
 + submodule: check for unstaged .gitmodules outside of config parsing
 + submodule: remove fetch.recursesubmodules from submodule-config parsing
 + submodule: remove submodule.fetchjobs from submodule-config parsing
 + config: add config_from_gitmodules
 + cache.h: add GITMODULES_FILE macro
 + repository: have the_repository use the_index
 + repo_read_index: don't discard the index
 (this branch is used by bw/submodule-config-cleanup.)

 "git grep --recurse-submodules" has been reworked to give a more
 consistent output across submodule boundary (and do its thing
 without having to fork a separate process).

 Will cook in 'next'.


* bw/object-id (2017-07-17) 3 commits
  (merged to 'next' on 2017-07-18 at 90d27c0e7c)
 + receive-pack: don't access hash of NULL object_id pointer
 + notes: don't access hash of NULL object_id pointer
 + tree-diff: don't access hash of NULL object_id pointer

 Conversion from uchar[20] to struct object_id continues.

 Will cook in 'next'.


* ks/commit-abort-on-empty-message-fix (2017-07-17) 1 commit
  (merged to 'next' on 2017-07-27 at e81ad4c1dc)
 + commit: check for empty message before the check for untouched template

 "git commit" when seeing an totally empty message said "you did not
 edit the message", which is clearly wrong.  The message has been
 corrected.

 Will cook in 'next'.


* rs/bswap-ubsan-fix (2017-07-17) 2 commits
  (merged to 'next' on 2017-07-20 at ce6bad07b0)
 + bswap: convert get_be16, get_be32 and put_be32 to inline functions
 + bswap: convert to unsigned before shifting in get_be32

 Code clean-up.

 Will cook in 'next'.


* rs/move-array (2017-07-17) 4 commits
  (merged to 'next' on 2017-07-20 at f3086cd20e)
 + ls-files: don't try to prune an empty index
 + apply: use COPY_ARRAY and MOVE_ARRAY in update_image()
 + use MOVE_ARRAY
 + add MOVE_ARRAY

 Code clean-up.

 Will cook in 'next'.


* rs/stat-data-unaligned-reads-fix (2017-07-17) 1 commit
  (merged to 'next' on 2017-07-20 at e7d3782823)
 + dir: support platforms that require aligned reads

 Code clean-up.

 Will cook in 'next'.


* wd/rebase-conflict-guide (2017-07-17) 1 commit
  (merged to 'next' on 2017-07-20 at c78e758b23)
 + rebase: make resolve message clearer for inexperienced users

 The advice message given when "git rebase" stops for conflicting
 changes has been improved.

 Will cook in 'next'.


* hb/gitweb-project-list (2017-07-18) 1 commit
  (merged to 'next' on 2017-07-27 at c25d65ca25)
 + gitweb: skip unreadable subdirectories

 When a directory is not readable, "gitweb" fails to build the
 project list.  Work this around by skipping such a directory.

 Will cook in 'next'.

 It might end up hiding a problem under the rug and a better
 solution might be to loudly complain to the administrator pointing
 out the problematic directory, but this will at least make it
 "work".


* jk/ref-filter-colors (2017-07-13) 15 commits
  (merged to 'next' on 2017-07-18 at 75d4eb7ecf)
 + ref-filter: consult want_color() before emitting colors
 + pretty: respect color settings for %C placeholders
 + rev-list: pass diffopt->use_colors through to pretty-print
 + for-each-ref: load config earlier
 + color: check color.ui in git_default_config()
 + ref-filter: pass ref_format struct to atom parsers
 + ref-filter: factor out the parsing of sorting atoms
 + ref-filter: make parse_ref_filter_atom a private function
 + ref-filter: provide a function for parsing sort options
 + ref-filter: move need_color_reset_at_eol into ref_format
 + ref-filter: abstract ref format into its own struct
 + ref-filter: simplify automatic color reset
 + t: use test_decode_color rather than literal ANSI codes
 + docs/for-each-ref: update pointer to color syntax
 + check return value of verify_ref_format()

 "%C(color name)" in the pretty print format always produced ANSI
 color escape codes, which was an early design mistake.  They now
 honor the configuration (e.g. "color.ui = never") and also tty-ness
 of the output medium.

 Will cook in 'next'.


* sb/object-id (2017-07-13) 2 commits
  (merged to 'next' on 2017-07-18 at e4df0ba3b1)
 + tag: convert gpg_verify_tag to use struct object_id
 + commit: convert lookup_commit_graft to struct object_id
 (this branch is used by bc/object-id and bw/submodule-config-cleanup.)

 Conversion from uchar[20] to struct object_id continues.

 Will cook in 'next'.


* rs/sha1-file-micro-optim (2017-07-09) 2 commits
 - SQUASH???
 - sha1_file: add slash once in for_each_file_in_obj_subdir()

 Code cleanup.

 Perhaps drop.
 cf. <f59c8256-716b-9305-2a4f-d4fe49f666ff@web.de>


* ks/prepare-commit-msg-sample (2017-07-12) 4 commits
  (merged to 'next' on 2017-07-18 at 48d9650a30)
 + hook: add a simple first example
 + hook: add sign-off using "interpret-trailers"
 + hook: name the positional variables
 + hook: cleanup script

 Remove an example that is now obsolete from a sample hook,
 and improve an old example in it that added a sign-off manually
 to use the interpret-trailers command.

 Will cook in 'next'.


* jc/allow-lazy-cas (2017-07-06) 1 commit
 - push: disable lazy --force-with-lease by default

 Because "git push --force-with-lease[=<ref>]" that relies on the
 stability of remote-tracking branches is unsafe when something
 fetches into the repository behind user's back, it is now disabled
 by default.  A new configuration variable can be used to enable it
 by users who know what they are doing.  This would pave the way to
 possibly turn `--force` into `--force-with-lease`.

 Undecided.
 Independent from disabling the feature by default, this stirred up
 a discussion to replace the DWIM heuristics with a better one, which
 deserves to be its own topic.
 cf. <alpine.DEB.2.21.1.1707131435220.4193@virtualbox>


* bc/object-id (2017-07-17) 12 commits
  (merged to 'next' on 2017-07-18 at fd161056e4)
 + sha1_name: convert uses of 40 to GIT_SHA1_HEXSZ
 + sha1_name: convert GET_SHA1* flags to GET_OID*
 + sha1_name: convert get_sha1* to get_oid*
 + Convert remaining callers of get_sha1 to get_oid.
 + builtin/unpack-file: convert to struct object_id
 + bisect: convert bisect_checkout to struct object_id
 + builtin/update_ref: convert to struct object_id
 + sequencer: convert to struct object_id
 + remote: convert struct push_cas to struct object_id
 + submodule: convert submodule config lookup to use object_id
 + builtin/merge-tree: convert remaining caller of get_sha1 to object_id
 + builtin/fsck: convert remaining caller of get_sha1 to object_id
 (this branch is used by bw/submodule-config-cleanup; uses sb/object-id.)

 Conversion from uchar[20] to struct object_id continues.

 Will cook in 'next'.


* jk/reflog-walk (2017-07-09) 9 commits
  (merged to 'next' on 2017-07-09 at 7449e964c6)
 + reflog-walk: apply --since/--until to reflog dates
 + reflog-walk: stop using fake parents
 + rev-list: check reflog_info before showing usage
 + get_revision_1(): replace do-while with an early return
 + log: do not free parents when walking reflog
 + log: clarify comment about reflog cycles
 + revision: disallow reflog walking with revs->limited
 + t1414: document some reflog-walk oddities
 + Merge branch 'jk/reflog-walk-maint' into jk/reflog-walk

 Numerous bugs in walking of reflogs via "log -g" and friends have
 been fixed.

 Will cook in 'next'.


* sb/hashmap-cleanup (2017-07-05) 10 commits
  (merged to 'next' on 2017-07-12 at ce31d06165)
 + t/helper/test-hashmap: use custom data instead of duplicate cmp functions
 + name-hash.c: drop hashmap_cmp_fn cast
 + submodule-config.c: drop hashmap_cmp_fn cast
 + remote.c: drop hashmap_cmp_fn cast
 + patch-ids.c: drop hashmap_cmp_fn cast
 + convert/sub-process: drop cast to hashmap_cmp_fn
 + config.c: drop hashmap_cmp_fn cast
 + builtin/describe: drop hashmap_cmp_fn cast
 + builtin/difftool.c: drop hashmap_cmp_fn cast
 + attr.c: drop hashmap_cmp_fn cast

 Many uses of comparision callback function the hashmap API uses
 cast the callback function type when registering it to
 hashmap_init(), which defeats the compile time type checking when
 the callback interface changes (e.g. gaining more parameters).
 The callback implementations have been updated to take "void *"
 pointers and cast them to the type they expect instead.

 Will cook in 'next'.


* ex/deprecate-empty-pathspec-as-match-all (2017-06-23) 2 commits
  (merged to 'next' on 2017-06-26 at d026281517)
 + pathspec: die on empty strings as pathspec
 + t0027: do not use an empty string as a pathspec element

 The final step to make an empty string as a pathspec element
 illegal.  We started this by first deprecating and warning a
 pathspec that has such an element in 2.11 (Nov 2016).

 Hopefully we can merge this down to the 'master' by the end of the
 year?  A deprecation warning period that is about 1 year does not
 sound too bad.

 Will cook in 'next'.


* mh/packed-ref-store (2017-07-27) 31 commits
  (merged to 'next' on 2017-07-27 at 857dcb8cba)
 + packed_ref_store: handle a packed-refs file that is a symlink
  (merged to 'next' on 2017-07-05 at 6c68c603cc)
 + read_packed_refs(): die if `packed-refs` contains bogus data
 + t3210: add some tests of bogus packed-refs file contents
 + repack_without_refs(): don't lock or unlock the packed refs
 + commit_packed_refs(): remove call to `packed_refs_unlock()`
 + clear_packed_ref_cache(): don't protest if the lock is held
 + packed_refs_unlock(), packed_refs_is_locked(): new functions
 + packed_refs_lock(): report errors via a `struct strbuf *err`
 + packed_refs_lock(): function renamed from lock_packed_refs()
 + commit_packed_refs(): use a staging file separate from the lockfile
 + commit_packed_refs(): report errors rather than dying
 + packed_ref_store: make class into a subclass of `ref_store`
 + packed-backend: new module for handling packed references
 + packed_read_raw_ref(): new function, replacing `resolve_packed_ref()`
 + packed_ref_store: support iteration
 + packed_peel_ref(): new function, extracted from `files_peel_ref()`
 + repack_without_refs(): take a `packed_ref_store *` parameter
 + get_packed_ref(): take a `packed_ref_store *` parameter
 + rollback_packed_refs(): take a `packed_ref_store *` parameter
 + commit_packed_refs(): take a `packed_ref_store *` parameter
 + lock_packed_refs(): take a `packed_ref_store *` parameter
 + add_packed_ref(): take a `packed_ref_store *` parameter
 + get_packed_refs(): take a `packed_ref_store *` parameter
 + get_packed_ref_cache(): take a `packed_ref_store *` parameter
 + validate_packed_ref_cache(): take a `packed_ref_store *` parameter
 + clear_packed_ref_cache(): take a `packed_ref_store *` parameter
 + packed_ref_store: move `packed_refs_lock` member here
 + packed_ref_store: move `packed_refs_path` here
 + packed_ref_store: new struct
 + add_packed_ref(): teach function to overwrite existing refs
 + t1408: add a test of stale packed refs covered by loose refs

 The "ref-store" code reorganization continues.

 Will cook in 'next'.


* sd/branch-copy (2017-06-18) 3 commits
  (merged to 'next' on 2017-07-18 at 5e3b9357ea)
 + branch: add a --copy (-c) option to go with --move (-m)
 + branch: add test for -m renaming multiple config sections
 + config: create a function to format section headers

 "git branch" learned "-c/-C" to create and switch to a new branch
 by copying an existing one.

 Will cook in 'next'.

 I personally do not think "branch --copy master backup" while on
 "master" that switches to "backup" is a good UI, and I *will* say
 "I told you so" when users complain after we merge this down to
 'master'.


* ls/filter-process-delayed (2017-06-30) 7 commits
  (merged to 'next' on 2017-07-05 at a35e644082)
 + convert: add "status=delayed" to filter process protocol
 + convert: refactor capabilities negotiation
 + convert: move multiple file filter error handling to separate function
 + convert: put the flags field before the flag itself for consistent style
 + t0021: write "OUT <size>" only on success
 + t0021: make debug log file name configurable
 + t0021: keep filter log files on comparison
 (this branch is used by jt/subprocess-handshake.)

 The filter-process interface learned to allow a process with long
 latency give a "delayed" response.

 Will cook in 'next'.


* sb/diff-color-move (2017-06-30) 26 commits
  (merged to 'next' on 2017-07-06 at 758ed40e4f)
 + diff: document the new --color-moved setting
 + diff.c: add dimming to moved line detection
 + diff.c: color moved lines differently, plain mode
 + diff.c: color moved lines differently
 + diff.c: buffer all output if asked to
 + diff.c: emit_diff_symbol learns about DIFF_SYMBOL_SUMMARY
 + diff.c: emit_diff_symbol learns about DIFF_SYMBOL_STAT_SEP
 + diff.c: convert word diffing to use emit_diff_symbol
 + diff.c: convert show_stats to use emit_diff_symbol
 + diff.c: convert emit_binary_diff_body to use emit_diff_symbol
 + submodule.c: migrate diff output to use emit_diff_symbol
 + diff.c: emit_diff_symbol learns DIFF_SYMBOL_REWRITE_DIFF
 + diff.c: emit_diff_symbol learns about DIFF_SYMBOL_BINARY_FILES
 + diff.c: emit_diff_symbol learns DIFF_SYMBOL_HEADER
 + diff.c: emit_diff_symbol learns DIFF_SYMBOL_FILEPAIR_{PLUS, MINUS}
 + diff.c: emit_diff_symbol learns DIFF_SYMBOL_CONTEXT_INCOMPLETE
 + diff.c: emit_diff_symbol learns DIFF_SYMBOL_WORDS[_PORCELAIN]
 + diff.c: migrate emit_line_checked to use emit_diff_symbol
 + diff.c: emit_diff_symbol learns DIFF_SYMBOL_NO_LF_EOF
 + diff.c: emit_diff_symbol learns DIFF_SYMBOL_CONTEXT_FRAGINFO
 + diff.c: emit_diff_symbol learns DIFF_SYMBOL_CONTEXT_MARKER
 + diff.c: introduce emit_diff_symbol
 + diff.c: factor out diff_flush_patch_all_file_pairs
 + diff.c: move line ending check into emit_hunk_header
 + diff.c: readability fix
 + Merge branch 'sb/hashmap-customize-comparison' into sb/diff-color-move

 "git diff" has been taught to optionally paint new lines that are
 the same as deleted lines elsewhere differently from genuinely new
 lines.

 Will cook in 'next'.

--------------------------------------------------
[Discarded]

* mh/packed-ref-store-prep-extra (2017-06-18) 1 commit
 . prefix_ref_iterator_advance(): relax the check of trim length

 Split out of mh/packed-ref-store-prep.


* nd/prune-in-worktree (2017-04-24) 12 commits
 . rev-list: expose and document --single-worktree
 . revision.c: --reflog add HEAD reflog from all worktrees
 . files-backend: make reflog iterator go through per-worktree reflog
 . revision.c: --all adds HEAD from all worktrees
 . refs: remove dead for_each_*_submodule()
 . revision.c: use refs_for_each*() instead of for_each_*_submodule()
 . refs: add refs_head_ref()
 . refs: move submodule slash stripping code to get_submodule_ref_store
 . refs.c: refactor get_submodule_ref_store(), share common free block
 . revision.c: --indexed-objects add objects from all worktrees
 . revision.c: refactor add_index_objects_to_pending()
 . revision.h: new flag in struct rev_info wrt. worktree-related refs

 "git gc" and friends when multiple worktrees are used off of a
 single repository did not consider the index and per-worktree refs
 of other worktrees as the root for reachability traversal, making
 objects that are in use only in other worktrees to be subject to
 garbage collection.

^ permalink raw reply	[relevance 6%]

* What's cooking in git.git (Jul 2017, #09; Mon, 31)
@ 2017-07-31 22:30  7% Junio C Hamano
  0 siblings, 0 replies; 25+ results
From: Junio C Hamano @ 2017-07-31 22:30 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.  The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.

Even though -rc2 was scheduled for today, I'll wait for a few days
so that we can tag with updated l10n; there isn't much change since
the first release candidate.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[Graduated to "master"]

* js/blame-lib (2017-07-24) 1 commit
  (merged to 'next' on 2017-07-26 at db0d081012)
 + blame: fix memory corruption scrambling revision name in error message

 A hotfix to a topic already in 'master'.

--------------------------------------------------
[New Topics]

* as/diff-options-grammofix (2017-07-31) 1 commit
 - diff-options doc: grammar fix

 A grammofix.

--------------------------------------------------
[Stalled]

* mg/status-in-progress-info (2017-05-10) 2 commits
 - status --short --inprogress: spell it as --in-progress
 - status: show in-progress info for short status

 "git status" learns an option to report various operations
 (e.g. "merging") that the user is in the middle of.

 cf. <xmqqmvakcdqw.fsf@gitster.mtv.corp.google.com>


* nd/worktree-move (2017-04-20) 6 commits
 - worktree remove: new command
 - worktree move: refuse to move worktrees with submodules
 - worktree move: accept destination as directory
 - worktree move: new command
 - worktree.c: add update_worktree_location()
 - worktree.c: add validate_worktree()

 "git worktree" learned move and remove subcommands.

 Expecting a reroll.
 cf. <20170420101024.7593-1-pclouds@gmail.com>
 cf. <20170421145916.mknekgqzhxffu7di@sigill.intra.peff.net>
 cf. <d0e81b1e-5869-299e-f462-4d43dc997bd1@ramsayjones.plus.com>


* sg/clone-refspec-from-command-line-config (2017-06-16) 2 commits
 - Documentation/clone: document ignored configuration variables
 - clone: respect additional configured fetch refspecs during initial fetch
 (this branch is used by sg/remote-no-string-refspecs.)

 "git clone -c var=val" is a way to set configuration variables in
 the resulting repository, but it is more useful to also make these
 variables take effect while the initial clone is happening,
 e.g. these configuration variables could be fetch refspecs.

 Waiting for a response.
 cf. <20170617112228.vugswym4o4owf6wj@sigill.intra.peff.net>
 cf. <xmqqmv8zhdap.fsf@gitster.mtv.corp.google.com>


* js/rebase-i-final (2017-07-27) 10 commits
 - rebase -i: rearrange fixup/squash lines using the rebase--helper
 - t3415: test fixup with wrapped oneline
 - rebase -i: skip unnecessary picks using the rebase--helper
 - rebase -i: check for missing commits in the rebase--helper
 - t3404: relax rebase.missingCommitsCheck tests
 - rebase -i: also expand/collapse the SHA-1s via the rebase--helper
 - rebase -i: do not invent onelines when expanding/collapsing SHA-1s
 - rebase -i: remove useless indentation
 - rebase -i: generate the script via rebase--helper
 - t3415: verify that an empty instructionFormat is handled as before

 The final batch to "git rebase -i" updates to move more code from
 the shell script to C.

 Expecting a reroll.


* bp/fsmonitor (2017-06-12) 6 commits
 - fsmonitor: add a sample query-fsmonitor hook script for Watchman
 - fsmonitor: add documentation for the fsmonitor extension.
 - fsmonitor: add test cases for fsmonitor extension
 - fsmonitor: teach git to optionally utilize a file system monitor to speed up detecting new or changed files.
 - dir: make lookup_untracked() available outside of dir.c
 - bswap: add 64 bit endianness helper get_be64

 We learned to talk to watchman to speed up "git status".

 Expecting a reroll.
 cf. <bade1166-e646-b05a-f65b-adb8da8ba0a7@gmail.com>

--------------------------------------------------
[Cooking]

* ah/doc-wserrorhighlight (2017-07-25) 1 commit
  (merged to 'next' on 2017-07-27 at cd1bb28d95)
 + doc: add missing values "none" and "default" for diff.wsErrorHighlight

 Doc update.

 Will cook in 'next'.


* dc/fmt-merge-msg-microcleanup (2017-07-25) 1 commit
  (merged to 'next' on 2017-07-27 at 6df06eb788)
 + fmt-merge-msg: fix coding style

 Code cleanup.

 Will cook in 'next'.


* js/git-gui-msgfmt-on-windows (2017-07-25) 7 commits
 - Merge branch 'js/msgfmt-on-windows' of ../git-gui into js/git-gui-msgfmt-on-windows
 - git-gui (MinGW): make use of MSys2's msgfmt
 - Merge remote-tracking branch 'philoakley/dup-gui'
 - git gui: allow for a long recentrepo list
 - git gui: de-dup selected repo from recentrepo history
 - git gui: cope with duplicates in _get_recentrepo
 - git-gui: remove duplicate entries from .gitconfig's gui.recentrepo

 Because recent Git for Windows do come with a real msgfmt, the
 build procedure for git-gui has been updated to use it instead of a
 hand-rolled substitute.


* jt/subprocess-handshake (2017-07-26) 3 commits
 - sub-process: refactor handshake to common function
 - Documentation: migrate sub-process docs to header
 - Merge branch 'ls/filter-process-delayed' into jt/subprocess-handshake
 (this branch uses ls/filter-process-delayed.)

 Code cleanup.

 Will merge to and cook in 'next'.


* lg/merge-signoff (2017-07-25) 1 commit
 - merge: add a --signoff flag

 "git merge" learned a "--signoff" option to add the Signed-off-by:
 trailer with the committer's name.


* pb/trailers-from-command-line (2017-07-25) 4 commits
 - SQUASH???
 - interpret-trailers: add options for actions
 - trailers: introduce struct new_trailer_item
 - trailers: export action enums and corresponding lookup functions

 "git interpret-trailers" learned to take the trailer specifications
 from the command line that overrides the configured values.

 Expecting a reroll for compilation fix.


* sb/submodule-recursive-checkout-detach-head (2017-07-28) 2 commits
 - Documentation/checkout: clarify submodule HEADs to be detached
 - recursive submodules: detach HEAD from new state

 "git checkout --recursive" may overwrite and rewind the history of
 the branch that happens to be checked out in submodule
 repositories, which might not be desirable.  Detach the HEAD but
 still allow the recursive checkout to succeed in such a case.

 Undecided.
 This needs justification in a larger picture; it is unclear why
 this is better than rejecting recursive checkout, for example.


* ti/external-sha1dc (2017-07-25) 1 commit
  (merged to 'next' on 2017-07-27 at d1ce394fe2)
 + hash: allow building with the external sha1dc library

 Platforms that ship with a separate sha1 with collision detection
 library can link to it instead of using the copy we ship as part of
 our source tree.

 Waiting for review to conclude
 cf. <CACBZZX7M=H8tNkZXpHBvv0rbY58EJk4dkoUzGKMftWoKUqF8sA@mail.gmail.com>


* bw/submodule-config-cleanup (2017-07-26) 17 commits
 - submodule: remove gitmodules_config
 - unpack-trees: improve loading of .gitmodules
 - submodule-config: lazy-load a repository's .gitmodules file
 - submodule-config: move submodule-config functions to submodule-config.c
 - submodule-config: remove support for overlaying repository config
 - diff: stop allowing diff to have submodules configured in .git/config
 - submodule: remove submodule_config callback routine
 - unpack-trees: don't rely on overlayed config
 - submodule: don't rely on overlayed config when setting diffopts
 - fetch: don't overlay config with submodule-config
 - submodule--helper: don't overlay config in update-clone
 - submodule--helper: don't overlay config in remote_submodule_branch
 - add, reset: ensure submodules can be added or reset
 - submodule: don't use submodule_from_name
 - t7411: check configuration parsing errors
 - Merge branch 'bc/object-id' into bw/submodule-config-cleanup
 - Merge branch 'bw/grep-recurse-submodules' into bw/submodule-config-cleanup
 (this branch uses bc/object-id, bw/grep-recurse-submodules and sb/object-id.)

 Code clean-up to avoid mixing values read from the .gitmodules file
 and values read from the .git/config file.


* jb/t8008-cleanup (2017-07-26) 1 commit
 - t8008: rely on rev-parse'd HEAD instead of sha1 value

 Code clean-up.

 Will merge to and cook in 'next'.


* rg/rerere-train-overwrite (2017-07-26) 1 commit
 - contrib/rerere-train: optionally overwrite existing resolutions

 The "rerere-train" script (in contrib/) learned the "--overwrite"
 option to allow overwriting existing recorded resolutions.

 Will merge to and cook in 'next'.


* dl/credential-cache-socket-in-xdg-cache (2017-07-27) 1 commit
 - credential-cache: interpret an ECONNRESET as an EOF

 A recently added test for the "credential-cache" helper revealed
 that EOF detection done around the time the connection to the cache
 daemon is torn down were flaky.  This was fixed by reacting to
 ECONNRESET and behaving as if we got an EOF.

 Will merge to and cook in 'next'.


* eb/contacts-reported-by (2017-07-27) 1 commit
 - git-contacts: also recognise "Reported-by:"

 "git contacts" (in contrib/) now lists the address on the
 "Reported-by:" trailer to its output, in addition to those on
 S-o-b: and other trailers, to make it easier to notify (and thank)
 the original bug reporter.

 Will merge to and cook in 'next'.


* js/run-process-parallel-api-fix (2017-07-21) 1 commit
  (merged to 'next' on 2017-07-27 at 4b54b69172)
 + run_processes_parallel: change confusing task_cb convention

 API fix.

 Will cook in 'next'.


* cc/ref-is-hidden-microcleanup (2017-07-24) 1 commit
  (merged to 'next' on 2017-07-27 at 37af544e1c)
 + refs: use skip_prefix() in ref_is_hidden()

 Code cleanup.

 Will cook in 'next'.


* bw/push-options-recursively-to-submodules (2017-07-20) 1 commit
  (merged to 'next' on 2017-07-27 at 26b3af2544)
 + submodule--helper: teach push-check to handle HEAD

 "git push --recurse-submodules $there HEAD:$target" was not
 propagated down to the submodules, but now it is.

 Will cook in 'next'.


* jc/http-sslkey-and-ssl-cert-are-paths (2017-07-20) 1 commit
  (merged to 'next' on 2017-07-20 at 5489304b99)
 + http.c: http.sslcert and http.sslkey are both pathnames

 The http.{sslkey,sslCert} configuration variables are to be
 interpreted as a pathname that honors "~[username]/" prefix, but
 weren't, which has been fixed.

 Will cook in 'next'.


* jt/fsck-code-cleanup (2017-07-26) 3 commits
  (merged to 'next' on 2017-07-26 at 7a17e279da)
 + fsck: cleanup unused variable
  (merged to 'next' on 2017-07-20 at f7045a8c47)
 + object: remove "used" field from struct object
 + fsck: remove redundant parse_tree() invocation

 Code clean-up.

 Will cook in 'next'.


* rs/pack-objects-pbase-cleanup (2017-07-20) 1 commit
  (merged to 'next' on 2017-07-20 at a6b618559b)
 + pack-objects: remove unnecessary NULL check

 Code clean-up.

 Will cook in 'next'.


* st/lib-gpg-kill-stray-agent (2017-07-20) 1 commit
  (merged to 'next' on 2017-07-20 at 8ea68c483f)
 + t: lib-gpg: flush gpg agent on startup

 Some versions of GnuPG fails to kill gpg-agent it auto-spawned
 and such a left-over agent can interfere with a test.  Work it
 around by attempting to kill one before starting a new test.

 Will cook in 'next'.


* jk/c99 (2017-07-18) 2 commits
  (merged to 'next' on 2017-07-18 at 1cfc30f7c1)
 + clean.c: use designated initializer
 + strbuf: use designated initializers in STRBUF_INIT

 Start using selected c99 constructs in small, stable and
 essentialpart of the system to catch people who care about
 older compilers that do not grok them.

 Will cook in 'next'.


* jk/check-ref-format-oor-fix (2017-07-14) 1 commit
 - check-ref-format: require a repository for --branch

 Objected...
 cf. <20170717172709.GL93855@aiede.mtv.corp.google.com>


* bw/grep-recurse-submodules (2017-07-18) 10 commits
 - grep: recurse in-process using 'struct repository'
 - submodule: merge repo_read_gitmodules and gitmodules_config
 - submodule: check for unmerged .gitmodules outside of config parsing
 - submodule: check for unstaged .gitmodules outside of config parsing
 - submodule: remove fetch.recursesubmodules from submodule-config parsing
 - submodule: remove submodule.fetchjobs from submodule-config parsing
 - config: add config_from_gitmodules
 - cache.h: add GITMODULES_FILE macro
 - repository: have the_repository use the_index
 - repo_read_index: don't discard the index
 (this branch is used by bw/submodule-config-cleanup.)


* bw/object-id (2017-07-17) 3 commits
  (merged to 'next' on 2017-07-18 at 90d27c0e7c)
 + receive-pack: don't access hash of NULL object_id pointer
 + notes: don't access hash of NULL object_id pointer
 + tree-diff: don't access hash of NULL object_id pointer

 Conversion from uchar[20] to struct object_id continues.

 Will cook in 'next'.


* ks/commit-abort-on-empty-message-fix (2017-07-17) 1 commit
  (merged to 'next' on 2017-07-27 at e81ad4c1dc)
 + commit: check for empty message before the check for untouched template

 "git commit" when seeing an totally empty message said "you did not
 edit the message", which is clearly wrong.  The message has been
 corrected.

 Will cook in 'next'.


* rs/bswap-ubsan-fix (2017-07-17) 2 commits
  (merged to 'next' on 2017-07-20 at ce6bad07b0)
 + bswap: convert get_be16, get_be32 and put_be32 to inline functions
 + bswap: convert to unsigned before shifting in get_be32

 Code clean-up.

 Will cook in 'next'.


* rs/move-array (2017-07-17) 4 commits
  (merged to 'next' on 2017-07-20 at f3086cd20e)
 + ls-files: don't try to prune an empty index
 + apply: use COPY_ARRAY and MOVE_ARRAY in update_image()
 + use MOVE_ARRAY
 + add MOVE_ARRAY

 Code clean-up.

 Will cook in 'next'.


* rs/stat-data-unaligned-reads-fix (2017-07-17) 1 commit
  (merged to 'next' on 2017-07-20 at e7d3782823)
 + dir: support platforms that require aligned reads

 Code clean-up.

 Will cook in 'next'.


* wd/rebase-conflict-guide (2017-07-17) 1 commit
  (merged to 'next' on 2017-07-20 at c78e758b23)
 + rebase: make resolve message clearer for inexperienced users

 The advice message given when "git rebase" stops for conflicting
 changes has been improved.

 Will cook in 'next'.


* hb/gitweb-project-list (2017-07-18) 1 commit
  (merged to 'next' on 2017-07-27 at c25d65ca25)
 + gitweb: skip unreadable subdirectories

 When a directory is not readable, "gitweb" fails to build the
 project list.  Work this around by skipping such a directory.

 Will cook in 'next'.

 It might end up hiding a problem under the rug and a better
 solution might be to loudly complain to the administrator pointing
 out the problematic directory, but this will at least make it
 "work".


* jk/ref-filter-colors (2017-07-13) 15 commits
  (merged to 'next' on 2017-07-18 at 75d4eb7ecf)
 + ref-filter: consult want_color() before emitting colors
 + pretty: respect color settings for %C placeholders
 + rev-list: pass diffopt->use_colors through to pretty-print
 + for-each-ref: load config earlier
 + color: check color.ui in git_default_config()
 + ref-filter: pass ref_format struct to atom parsers
 + ref-filter: factor out the parsing of sorting atoms
 + ref-filter: make parse_ref_filter_atom a private function
 + ref-filter: provide a function for parsing sort options
 + ref-filter: move need_color_reset_at_eol into ref_format
 + ref-filter: abstract ref format into its own struct
 + ref-filter: simplify automatic color reset
 + t: use test_decode_color rather than literal ANSI codes
 + docs/for-each-ref: update pointer to color syntax
 + check return value of verify_ref_format()

 "%C(color name)" in the pretty print format always produced ANSI
 color escape codes, which was an early design mistake.  They now
 honor the configuration (e.g. "color.ui = never") and also tty-ness
 of the output medium.

 Will cook in 'next'.


* sb/object-id (2017-07-13) 2 commits
  (merged to 'next' on 2017-07-18 at e4df0ba3b1)
 + tag: convert gpg_verify_tag to use struct object_id
 + commit: convert lookup_commit_graft to struct object_id
 (this branch is used by bc/object-id and bw/submodule-config-cleanup.)

 Conversion from uchar[20] to struct object_id continues.

 Will cook in 'next'.


* rs/sha1-file-micro-optim (2017-07-09) 2 commits
 - SQUASH???
 - sha1_file: add slash once in for_each_file_in_obj_subdir()

 Code cleanup.

 Perhaps drop.
 cf. <f59c8256-716b-9305-2a4f-d4fe49f666ff@web.de>


* ks/prepare-commit-msg-sample (2017-07-12) 4 commits
  (merged to 'next' on 2017-07-18 at 48d9650a30)
 + hook: add a simple first example
 + hook: add sign-off using "interpret-trailers"
 + hook: name the positional variables
 + hook: cleanup script

 Remove an example that is now obsolete from a sample hook,
 and improve an old example in it that added a sign-off manually
 to use the interpret-trailers command.

 Will cook in 'next'.


* jc/allow-lazy-cas (2017-07-06) 1 commit
 - push: disable lazy --force-with-lease by default

 Because "git push --force-with-lease[=<ref>]" that relies on the
 stability of remote-tracking branches is unsafe when something
 fetches into the repository behind user's back, it is now disabled
 by default.  A new configuration variable can be used to enable it
 by users who know what they are doing.  This would pave the way to
 possibly turn `--force` into `--force-with-lease`.

 Undecided.
 Independent from disabling the feature by default, this stirred up
 a discussion to replace the DWIM heuristics with a better one, which
 deserves to be its own topic.
 cf. <alpine.DEB.2.21.1.1707131435220.4193@virtualbox>


* bc/object-id (2017-07-17) 12 commits
  (merged to 'next' on 2017-07-18 at fd161056e4)
 + sha1_name: convert uses of 40 to GIT_SHA1_HEXSZ
 + sha1_name: convert GET_SHA1* flags to GET_OID*
 + sha1_name: convert get_sha1* to get_oid*
 + Convert remaining callers of get_sha1 to get_oid.
 + builtin/unpack-file: convert to struct object_id
 + bisect: convert bisect_checkout to struct object_id
 + builtin/update_ref: convert to struct object_id
 + sequencer: convert to struct object_id
 + remote: convert struct push_cas to struct object_id
 + submodule: convert submodule config lookup to use object_id
 + builtin/merge-tree: convert remaining caller of get_sha1 to object_id
 + builtin/fsck: convert remaining caller of get_sha1 to object_id
 (this branch is used by bw/submodule-config-cleanup; uses sb/object-id.)

 Conversion from uchar[20] to struct object_id continues.

 Will cook in 'next'.


* jk/reflog-walk (2017-07-09) 9 commits
  (merged to 'next' on 2017-07-09 at 7449e964c6)
 + reflog-walk: apply --since/--until to reflog dates
 + reflog-walk: stop using fake parents
 + rev-list: check reflog_info before showing usage
 + get_revision_1(): replace do-while with an early return
 + log: do not free parents when walking reflog
 + log: clarify comment about reflog cycles
 + revision: disallow reflog walking with revs->limited
 + t1414: document some reflog-walk oddities
 + Merge branch 'jk/reflog-walk-maint' into jk/reflog-walk

 Numerous bugs in walking of reflogs via "log -g" and friends have
 been fixed.

 Will cook in 'next'.


* sb/hashmap-cleanup (2017-07-05) 10 commits
  (merged to 'next' on 2017-07-12 at ce31d06165)
 + t/helper/test-hashmap: use custom data instead of duplicate cmp functions
 + name-hash.c: drop hashmap_cmp_fn cast
 + submodule-config.c: drop hashmap_cmp_fn cast
 + remote.c: drop hashmap_cmp_fn cast
 + patch-ids.c: drop hashmap_cmp_fn cast
 + convert/sub-process: drop cast to hashmap_cmp_fn
 + config.c: drop hashmap_cmp_fn cast
 + builtin/describe: drop hashmap_cmp_fn cast
 + builtin/difftool.c: drop hashmap_cmp_fn cast
 + attr.c: drop hashmap_cmp_fn cast

 Many uses of comparision callback function the hashmap API uses
 cast the callback function type when registering it to
 hashmap_init(), which defeats the compile time type checking when
 the callback interface changes (e.g. gaining more parameters).
 The callback implementations have been updated to take "void *"
 pointers and cast them to the type they expect instead.

 Will cook in 'next'.


* ex/deprecate-empty-pathspec-as-match-all (2017-06-23) 2 commits
  (merged to 'next' on 2017-06-26 at d026281517)
 + pathspec: die on empty strings as pathspec
 + t0027: do not use an empty string as a pathspec element

 The final step to make an empty string as a pathspec element
 illegal.  We started this by first deprecating and warning a
 pathspec that has such an element in 2.11 (Nov 2016).

 Hopefully we can merge this down to the 'master' by the end of the
 year?  A deprecation warning period that is about 1 year does not
 sound too bad.

 Will cook in 'next'.


* mh/packed-ref-store (2017-07-27) 31 commits
  (merged to 'next' on 2017-07-27 at 857dcb8cba)
 + packed_ref_store: handle a packed-refs file that is a symlink
  (merged to 'next' on 2017-07-05 at 6c68c603cc)
 + read_packed_refs(): die if `packed-refs` contains bogus data
 + t3210: add some tests of bogus packed-refs file contents
 + repack_without_refs(): don't lock or unlock the packed refs
 + commit_packed_refs(): remove call to `packed_refs_unlock()`
 + clear_packed_ref_cache(): don't protest if the lock is held
 + packed_refs_unlock(), packed_refs_is_locked(): new functions
 + packed_refs_lock(): report errors via a `struct strbuf *err`
 + packed_refs_lock(): function renamed from lock_packed_refs()
 + commit_packed_refs(): use a staging file separate from the lockfile
 + commit_packed_refs(): report errors rather than dying
 + packed_ref_store: make class into a subclass of `ref_store`
 + packed-backend: new module for handling packed references
 + packed_read_raw_ref(): new function, replacing `resolve_packed_ref()`
 + packed_ref_store: support iteration
 + packed_peel_ref(): new function, extracted from `files_peel_ref()`
 + repack_without_refs(): take a `packed_ref_store *` parameter
 + get_packed_ref(): take a `packed_ref_store *` parameter
 + rollback_packed_refs(): take a `packed_ref_store *` parameter
 + commit_packed_refs(): take a `packed_ref_store *` parameter
 + lock_packed_refs(): take a `packed_ref_store *` parameter
 + add_packed_ref(): take a `packed_ref_store *` parameter
 + get_packed_refs(): take a `packed_ref_store *` parameter
 + get_packed_ref_cache(): take a `packed_ref_store *` parameter
 + validate_packed_ref_cache(): take a `packed_ref_store *` parameter
 + clear_packed_ref_cache(): take a `packed_ref_store *` parameter
 + packed_ref_store: move `packed_refs_lock` member here
 + packed_ref_store: move `packed_refs_path` here
 + packed_ref_store: new struct
 + add_packed_ref(): teach function to overwrite existing refs
 + t1408: add a test of stale packed refs covered by loose refs

 The "ref-store" code reorganization continues.

 Will cook in 'next'.


* sd/branch-copy (2017-06-18) 3 commits
  (merged to 'next' on 2017-07-18 at 5e3b9357ea)
 + branch: add a --copy (-c) option to go with --move (-m)
 + branch: add test for -m renaming multiple config sections
 + config: create a function to format section headers

 "git branch" learned "-c/-C" to create and switch to a new branch
 by copying an existing one.

 Will cook in 'next'.

 I personally do not think "branch --copy master backup" while on
 "master" that switches to "backup" is a good UI, and I *will* say
 "I told you so" when users complain after we merge this down to
 'master'.


* ls/filter-process-delayed (2017-06-30) 7 commits
  (merged to 'next' on 2017-07-05 at a35e644082)
 + convert: add "status=delayed" to filter process protocol
 + convert: refactor capabilities negotiation
 + convert: move multiple file filter error handling to separate function
 + convert: put the flags field before the flag itself for consistent style
 + t0021: write "OUT <size>" only on success
 + t0021: make debug log file name configurable
 + t0021: keep filter log files on comparison
 (this branch is used by jt/subprocess-handshake.)

 The filter-process interface learned to allow a process with long
 latency give a "delayed" response.

 Will cook in 'next'.


* sb/diff-color-move (2017-06-30) 26 commits
  (merged to 'next' on 2017-07-06 at 758ed40e4f)
 + diff: document the new --color-moved setting
 + diff.c: add dimming to moved line detection
 + diff.c: color moved lines differently, plain mode
 + diff.c: color moved lines differently
 + diff.c: buffer all output if asked to
 + diff.c: emit_diff_symbol learns about DIFF_SYMBOL_SUMMARY
 + diff.c: emit_diff_symbol learns about DIFF_SYMBOL_STAT_SEP
 + diff.c: convert word diffing to use emit_diff_symbol
 + diff.c: convert show_stats to use emit_diff_symbol
 + diff.c: convert emit_binary_diff_body to use emit_diff_symbol
 + submodule.c: migrate diff output to use emit_diff_symbol
 + diff.c: emit_diff_symbol learns DIFF_SYMBOL_REWRITE_DIFF
 + diff.c: emit_diff_symbol learns about DIFF_SYMBOL_BINARY_FILES
 + diff.c: emit_diff_symbol learns DIFF_SYMBOL_HEADER
 + diff.c: emit_diff_symbol learns DIFF_SYMBOL_FILEPAIR_{PLUS, MINUS}
 + diff.c: emit_diff_symbol learns DIFF_SYMBOL_CONTEXT_INCOMPLETE
 + diff.c: emit_diff_symbol learns DIFF_SYMBOL_WORDS[_PORCELAIN]
 + diff.c: migrate emit_line_checked to use emit_diff_symbol
 + diff.c: emit_diff_symbol learns DIFF_SYMBOL_NO_LF_EOF
 + diff.c: emit_diff_symbol learns DIFF_SYMBOL_CONTEXT_FRAGINFO
 + diff.c: emit_diff_symbol learns DIFF_SYMBOL_CONTEXT_MARKER
 + diff.c: introduce emit_diff_symbol
 + diff.c: factor out diff_flush_patch_all_file_pairs
 + diff.c: move line ending check into emit_hunk_header
 + diff.c: readability fix
 + Merge branch 'sb/hashmap-customize-comparison' into sb/diff-color-move

 "git diff" has been taught to optionally paint new lines that are
 the same as deleted lines elsewhere differently from genuinely new
 lines.

 Will cook in 'next'.

--------------------------------------------------
[Discarded]

* mh/packed-ref-store-prep-extra (2017-06-18) 1 commit
 . prefix_ref_iterator_advance(): relax the check of trim length

 Split out of mh/packed-ref-store-prep.


* nd/prune-in-worktree (2017-04-24) 12 commits
 . rev-list: expose and document --single-worktree
 . revision.c: --reflog add HEAD reflog from all worktrees
 . files-backend: make reflog iterator go through per-worktree reflog
 . revision.c: --all adds HEAD from all worktrees
 . refs: remove dead for_each_*_submodule()
 . revision.c: use refs_for_each*() instead of for_each_*_submodule()
 . refs: add refs_head_ref()
 . refs: move submodule slash stripping code to get_submodule_ref_store
 . refs.c: refactor get_submodule_ref_store(), share common free block
 . revision.c: --indexed-objects add objects from all worktrees
 . revision.c: refactor add_index_objects_to_pending()
 . revision.h: new flag in struct rev_info wrt. worktree-related refs

 "git gc" and friends when multiple worktrees are used off of a
 single repository did not consider the index and per-worktree refs
 of other worktrees as the root for reachability traversal, making
 objects that are in use only in other worktrees to be subject to
 garbage collection.

^ permalink raw reply	[relevance 7%]

* What's cooking in git.git (Jul 2017, #08; Thu, 27)
@ 2017-07-27 22:42  7% Junio C Hamano
  0 siblings, 0 replies; 25+ results
From: Junio C Hamano @ 2017-07-27 22:42 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.  The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[New Topics]

* ah/doc-wserrorhighlight (2017-07-25) 1 commit
  (merged to 'next' on 2017-07-27 at cd1bb28d95)
 + doc: add missing values "none" and "default" for diff.wsErrorHighlight

 Doc update.

 Will cook in 'next'.


* dc/fmt-merge-msg-microcleanup (2017-07-25) 1 commit
  (merged to 'next' on 2017-07-27 at 6df06eb788)
 + fmt-merge-msg: fix coding style

 Code cleanup.

 Will cook in 'next'.


* js/git-gui-msgfmt-on-windows (2017-07-25) 7 commits
 - Merge branch 'js/msgfmt-on-windows' of ../git-gui into js/git-gui-msgfmt-on-windows
 - git-gui (MinGW): make use of MSys2's msgfmt
 - Merge remote-tracking branch 'philoakley/dup-gui'
 - git gui: allow for a long recentrepo list
 - git gui: de-dup selected repo from recentrepo history
 - git gui: cope with duplicates in _get_recentrepo
 - git-gui: remove duplicate entries from .gitconfig's gui.recentrepo

 Because recent Git for Windows do come with a real msgfmt, the
 build procedure for git-gui has been updated to use it instead of a
 hand-rolled substitute.


* jt/subprocess-handshake (2017-07-26) 3 commits
 - sub-process: refactor handshake to common function
 - Documentation: migrate sub-process docs to header
 - Merge branch 'ls/filter-process-delayed' into jt/subprocess-handshake
 (this branch uses ls/filter-process-delayed.)

 Code cleanup.

 Will merge to and cook in 'next'.


* lg/merge-signoff (2017-07-25) 1 commit
 - merge: add a --signoff flag

 "git merge" learned a "--signoff" option to add the Signed-off-by:
 trailer with the committer's name.


* pb/trailers-from-command-line (2017-07-25) 4 commits
 - SQUASH???
 - interpret-trailers: add options for actions
 - trailers: introduce struct new_trailer_item
 - trailers: export action enums and corresponding lookup functions

 "git interpret-trailers" learned to take the trailer specifications
 from the command line that overrides the configured values.

 Expecting a reroll for compilation fix.


* sb/submodule-recursive-checkout-detach-head (2017-07-25) 1 commit
 - recursive submodules: detach HEAD from new state

 "git checkout --recursive" may overwrite and rewind the history of
 the branch that happens to be checked out in submodule
 repositories, which might not be desirable.  Detach the HEAD but
 still allow the recursive checkout to succeed in such a case.

 Undecided.
 This needs justification in a larger picture; it is unclear why
 this is better than rejecting recursive checkout, for example.


* ti/external-sha1dc (2017-07-25) 1 commit
  (merged to 'next' on 2017-07-27 at d1ce394fe2)
 + hash: allow building with the external sha1dc library

 Platforms that ship with a separate sha1 with collision detection
 library can link to it instead of using the copy we ship as part of
 our source tree.

 Will cook in 'next'.


* bw/submodule-config-cleanup (2017-07-26) 17 commits
 - submodule: remove gitmodules_config
 - unpack-trees: improve loading of .gitmodules
 - submodule-config: lazy-load a repository's .gitmodules file
 - submodule-config: move submodule-config functions to submodule-config.c
 - submodule-config: remove support for overlaying repository config
 - diff: stop allowing diff to have submodules configured in .git/config
 - submodule: remove submodule_config callback routine
 - unpack-trees: don't rely on overlayed config
 - submodule: don't rely on overlayed config when setting diffopts
 - fetch: don't overlay config with submodule-config
 - submodule--helper: don't overlay config in update-clone
 - submodule--helper: don't overlay config in remote_submodule_branch
 - add, reset: ensure submodules can be added or reset
 - submodule: don't use submodule_from_name
 - t7411: check configuration parsing errors
 - Merge branch 'bc/object-id' into bw/submodule-config-cleanup
 - Merge branch 'bw/grep-recurse-submodules' into bw/submodule-config-cleanup
 (this branch uses bc/object-id, bw/grep-recurse-submodules and sb/object-id.)

 Code clean-up to avoid mixing values read from the .gitmodules file
 and values read from the .git/config file.


* jb/t8008-cleanup (2017-07-26) 1 commit
 - t8008: rely on rev-parse'd HEAD instead of sha1 value

 Code clean-up.

 Will merge to and cook in 'next'.


* rg/rerere-train-overwrite (2017-07-26) 1 commit
 - contrib/rerere-train: optionally overwrite existing resolutions

 The "rerere-train" script (in contrib/) learned the "--overwrite"
 option to allow overwriting existing recorded resolutions.

 Will merge to and cook in 'next'.


* dl/credential-cache-socket-in-xdg-cache (2017-07-27) 1 commit
 - credential-cache: interpret an ECONNRESET as an EOF

 A recently added test for the "credential-cache" helper revealed
 that EOF detection done around the time the connection to the cache
 daemon is torn down were flaky.  This was fixed by reacting to
 ECONNRESET and behaving as if we got an EOF.

 Will merge to and cook in 'next'.


* eb/contacts-reported-by (2017-07-27) 1 commit
 - git-contacts: also recognise "Reported-by:"

 "git contacts" (in contrib/) now lists the address on the
 "Reported-by:" trailer to its output, in addition to those on
 S-o-b: and other trailers, to make it easier to notify (and thank)
 the original bug reporter.

 Will merge to and cook in 'next'.

--------------------------------------------------
[Stalled]

* mg/status-in-progress-info (2017-05-10) 2 commits
 - status --short --inprogress: spell it as --in-progress
 - status: show in-progress info for short status

 "git status" learns an option to report various operations
 (e.g. "merging") that the user is in the middle of.

 cf. <xmqqmvakcdqw.fsf@gitster.mtv.corp.google.com>


* nd/worktree-move (2017-04-20) 6 commits
 - worktree remove: new command
 - worktree move: refuse to move worktrees with submodules
 - worktree move: accept destination as directory
 - worktree move: new command
 - worktree.c: add update_worktree_location()
 - worktree.c: add validate_worktree()

 "git worktree" learned move and remove subcommands.

 Expecting a reroll.
 cf. <20170420101024.7593-1-pclouds@gmail.com>
 cf. <20170421145916.mknekgqzhxffu7di@sigill.intra.peff.net>
 cf. <d0e81b1e-5869-299e-f462-4d43dc997bd1@ramsayjones.plus.com>


* sg/clone-refspec-from-command-line-config (2017-06-16) 2 commits
 - Documentation/clone: document ignored configuration variables
 - clone: respect additional configured fetch refspecs during initial fetch
 (this branch is used by sg/remote-no-string-refspecs.)

 "git clone -c var=val" is a way to set configuration variables in
 the resulting repository, but it is more useful to also make these
 variables take effect while the initial clone is happening,
 e.g. these configuration variables could be fetch refspecs.

 Waiting for a response.
 cf. <20170617112228.vugswym4o4owf6wj@sigill.intra.peff.net>
 cf. <xmqqmv8zhdap.fsf@gitster.mtv.corp.google.com>


* js/rebase-i-final (2017-07-27) 10 commits
 - rebase -i: rearrange fixup/squash lines using the rebase--helper
 - t3415: test fixup with wrapped oneline
 - rebase -i: skip unnecessary picks using the rebase--helper
 - rebase -i: check for missing commits in the rebase--helper
 - t3404: relax rebase.missingCommitsCheck tests
 - rebase -i: also expand/collapse the SHA-1s via the rebase--helper
 - rebase -i: do not invent onelines when expanding/collapsing SHA-1s
 - rebase -i: remove useless indentation
 - rebase -i: generate the script via rebase--helper
 - t3415: verify that an empty instructionFormat is handled as before

 The final batch to "git rebase -i" updates to move more code from
 the shell script to C.

 Expecting a reroll.


* bp/fsmonitor (2017-06-12) 6 commits
 - fsmonitor: add a sample query-fsmonitor hook script for Watchman
 - fsmonitor: add documentation for the fsmonitor extension.
 - fsmonitor: add test cases for fsmonitor extension
 - fsmonitor: teach git to optionally utilize a file system monitor to speed up detecting new or changed files.
 - dir: make lookup_untracked() available outside of dir.c
 - bswap: add 64 bit endianness helper get_be64

 We learned to talk to watchman to speed up "git status".

 Expecting a reroll.
 cf. <bade1166-e646-b05a-f65b-adb8da8ba0a7@gmail.com>

--------------------------------------------------
[Cooking]

* js/run-process-parallel-api-fix (2017-07-21) 1 commit
  (merged to 'next' on 2017-07-27 at 4b54b69172)
 + run_processes_parallel: change confusing task_cb convention

 API fix.

 Will cook in 'next'.


* cc/ref-is-hidden-microcleanup (2017-07-24) 1 commit
  (merged to 'next' on 2017-07-27 at 37af544e1c)
 + refs: use skip_prefix() in ref_is_hidden()

 Code cleanup.

 Will cook in 'next'.


* js/blame-lib (2017-07-24) 1 commit
  (merged to 'next' on 2017-07-26 at db0d081012)
 + blame: fix memory corruption scrambling revision name in error message

 A hotfix to a topic already in 'master'.

 Will merge to 'master'.


* bw/push-options-recursively-to-submodules (2017-07-20) 1 commit
  (merged to 'next' on 2017-07-27 at 26b3af2544)
 + submodule--helper: teach push-check to handle HEAD

 "git push --recurse-submodules $there HEAD:$target" was not
 propagated down to the submodules, but now it is.

 Will cook in 'next'.


* jc/http-sslkey-and-ssl-cert-are-paths (2017-07-20) 1 commit
  (merged to 'next' on 2017-07-20 at 5489304b99)
 + http.c: http.sslcert and http.sslkey are both pathnames

 The http.{sslkey,sslCert} configuration variables are to be
 interpreted as a pathname that honors "~[username]/" prefix, but
 weren't, which has been fixed.

 Will cook in 'next'.


* jt/fsck-code-cleanup (2017-07-26) 3 commits
  (merged to 'next' on 2017-07-26 at 7a17e279da)
 + fsck: cleanup unused variable
  (merged to 'next' on 2017-07-20 at f7045a8c47)
 + object: remove "used" field from struct object
 + fsck: remove redundant parse_tree() invocation

 Code clean-up.

 Will cook in 'next'.


* rs/pack-objects-pbase-cleanup (2017-07-20) 1 commit
  (merged to 'next' on 2017-07-20 at a6b618559b)
 + pack-objects: remove unnecessary NULL check

 Code clean-up.

 Will cook in 'next'.


* st/lib-gpg-kill-stray-agent (2017-07-20) 1 commit
  (merged to 'next' on 2017-07-20 at 8ea68c483f)
 + t: lib-gpg: flush gpg agent on startup

 Some versions of GnuPG fails to kill gpg-agent it auto-spawned
 and such a left-over agent can interfere with a test.  Work it
 around by attempting to kill one before starting a new test.

 Will cook in 'next'.


* jk/c99 (2017-07-18) 2 commits
  (merged to 'next' on 2017-07-18 at 1cfc30f7c1)
 + clean.c: use designated initializer
 + strbuf: use designated initializers in STRBUF_INIT

 Start using selected c99 constructs in small, stable and
 essentialpart of the system to catch people who care about
 older compilers that do not grok them.

 Will cook in 'next'.


* jk/check-ref-format-oor-fix (2017-07-14) 1 commit
 - check-ref-format: require a repository for --branch

 Objected...
 cf. <20170717172709.GL93855@aiede.mtv.corp.google.com>


* bw/grep-recurse-submodules (2017-07-18) 10 commits
 - grep: recurse in-process using 'struct repository'
 - submodule: merge repo_read_gitmodules and gitmodules_config
 - submodule: check for unmerged .gitmodules outside of config parsing
 - submodule: check for unstaged .gitmodules outside of config parsing
 - submodule: remove fetch.recursesubmodules from submodule-config parsing
 - submodule: remove submodule.fetchjobs from submodule-config parsing
 - config: add config_from_gitmodules
 - cache.h: add GITMODULES_FILE macro
 - repository: have the_repository use the_index
 - repo_read_index: don't discard the index
 (this branch is used by bw/submodule-config-cleanup.)


* bw/object-id (2017-07-17) 3 commits
  (merged to 'next' on 2017-07-18 at 90d27c0e7c)
 + receive-pack: don't access hash of NULL object_id pointer
 + notes: don't access hash of NULL object_id pointer
 + tree-diff: don't access hash of NULL object_id pointer

 Conversion from uchar[20] to struct object_id continues.

 Will cook in 'next'.


* ks/commit-abort-on-empty-message-fix (2017-07-17) 1 commit
  (merged to 'next' on 2017-07-27 at e81ad4c1dc)
 + commit: check for empty message before the check for untouched template

 "git commit" when seeing an totally empty message said "you did not
 edit the message", which is clearly wrong.  The message has been
 corrected.

 Will cook in 'next'.


* rs/bswap-ubsan-fix (2017-07-17) 2 commits
  (merged to 'next' on 2017-07-20 at ce6bad07b0)
 + bswap: convert get_be16, get_be32 and put_be32 to inline functions
 + bswap: convert to unsigned before shifting in get_be32

 Code clean-up.

 Will cook in 'next'.


* rs/move-array (2017-07-17) 4 commits
  (merged to 'next' on 2017-07-20 at f3086cd20e)
 + ls-files: don't try to prune an empty index
 + apply: use COPY_ARRAY and MOVE_ARRAY in update_image()
 + use MOVE_ARRAY
 + add MOVE_ARRAY

 Code clean-up.

 Will cook in 'next'.


* rs/stat-data-unaligned-reads-fix (2017-07-17) 1 commit
  (merged to 'next' on 2017-07-20 at e7d3782823)
 + dir: support platforms that require aligned reads

 Code clean-up.

 Will cook in 'next'.


* wd/rebase-conflict-guide (2017-07-17) 1 commit
  (merged to 'next' on 2017-07-20 at c78e758b23)
 + rebase: make resolve message clearer for inexperienced users

 The advice message given when "git rebase" stops for conflicting
 changes has been improved.

 Will cook in 'next'.


* hb/gitweb-project-list (2017-07-18) 1 commit
  (merged to 'next' on 2017-07-27 at c25d65ca25)
 + gitweb: skip unreadable subdirectories

 When a directory is not readable, "gitweb" fails to build the
 project list.  Work this around by skipping such a directory.

 Will cook in 'next'.

 It might end up hiding a problem under the rug and a better
 solution might be to loudly complain to the administrator pointing
 out the problematic directory, but this will at least make it
 "work".


* jk/ref-filter-colors (2017-07-13) 15 commits
  (merged to 'next' on 2017-07-18 at 75d4eb7ecf)
 + ref-filter: consult want_color() before emitting colors
 + pretty: respect color settings for %C placeholders
 + rev-list: pass diffopt->use_colors through to pretty-print
 + for-each-ref: load config earlier
 + color: check color.ui in git_default_config()
 + ref-filter: pass ref_format struct to atom parsers
 + ref-filter: factor out the parsing of sorting atoms
 + ref-filter: make parse_ref_filter_atom a private function
 + ref-filter: provide a function for parsing sort options
 + ref-filter: move need_color_reset_at_eol into ref_format
 + ref-filter: abstract ref format into its own struct
 + ref-filter: simplify automatic color reset
 + t: use test_decode_color rather than literal ANSI codes
 + docs/for-each-ref: update pointer to color syntax
 + check return value of verify_ref_format()

 "%C(color name)" in the pretty print format always produced ANSI
 color escape codes, which was an early design mistake.  They now
 honor the configuration (e.g. "color.ui = never") and also tty-ness
 of the output medium.

 Will cook in 'next'.


* sb/object-id (2017-07-13) 2 commits
  (merged to 'next' on 2017-07-18 at e4df0ba3b1)
 + tag: convert gpg_verify_tag to use struct object_id
 + commit: convert lookup_commit_graft to struct object_id
 (this branch is used by bc/object-id and bw/submodule-config-cleanup.)

 Conversion from uchar[20] to struct object_id continues.

 Will cook in 'next'.


* rs/sha1-file-micro-optim (2017-07-09) 2 commits
 - SQUASH???
 - sha1_file: add slash once in for_each_file_in_obj_subdir()

 Code cleanup.

 Perhaps drop.
 cf. <f59c8256-716b-9305-2a4f-d4fe49f666ff@web.de>


* ks/prepare-commit-msg-sample (2017-07-12) 4 commits
  (merged to 'next' on 2017-07-18 at 48d9650a30)
 + hook: add a simple first example
 + hook: add sign-off using "interpret-trailers"
 + hook: name the positional variables
 + hook: cleanup script

 Remove an example that is now obsolete from a sample hook,
 and improve an old example in it that added a sign-off manually
 to use the interpret-trailers command.

 Will cook in 'next'.


* jc/allow-lazy-cas (2017-07-06) 1 commit
 - push: disable lazy --force-with-lease by default

 Because "git push --force-with-lease[=<ref>]" that relies on the
 stability of remote-tracking branches is unsafe when something
 fetches into the repository behind user's back, it is now disabled
 by default.  A new configuration variable can be used to enable it
 by users who know what they are doing.  This would pave the way to
 possibly turn `--force` into `--force-with-lease`.

 Undecided.
 Independent from disabling the feature by default, this stirred up
 a discussion to replace the DWIM heuristics with a better one, which
 deserves to be its own topic.
 cf. <alpine.DEB.2.21.1.1707131435220.4193@virtualbox>


* bc/object-id (2017-07-17) 12 commits
  (merged to 'next' on 2017-07-18 at fd161056e4)
 + sha1_name: convert uses of 40 to GIT_SHA1_HEXSZ
 + sha1_name: convert GET_SHA1* flags to GET_OID*
 + sha1_name: convert get_sha1* to get_oid*
 + Convert remaining callers of get_sha1 to get_oid.
 + builtin/unpack-file: convert to struct object_id
 + bisect: convert bisect_checkout to struct object_id
 + builtin/update_ref: convert to struct object_id
 + sequencer: convert to struct object_id
 + remote: convert struct push_cas to struct object_id
 + submodule: convert submodule config lookup to use object_id
 + builtin/merge-tree: convert remaining caller of get_sha1 to object_id
 + builtin/fsck: convert remaining caller of get_sha1 to object_id
 (this branch is used by bw/submodule-config-cleanup; uses sb/object-id.)

 Conversion from uchar[20] to struct object_id continues.

 Will cook in 'next'.


* jk/reflog-walk (2017-07-09) 9 commits
  (merged to 'next' on 2017-07-09 at 7449e964c6)
 + reflog-walk: apply --since/--until to reflog dates
 + reflog-walk: stop using fake parents
 + rev-list: check reflog_info before showing usage
 + get_revision_1(): replace do-while with an early return
 + log: do not free parents when walking reflog
 + log: clarify comment about reflog cycles
 + revision: disallow reflog walking with revs->limited
 + t1414: document some reflog-walk oddities
 + Merge branch 'jk/reflog-walk-maint' into jk/reflog-walk

 Numerous bugs in walking of reflogs via "log -g" and friends have
 been fixed.

 Will cook in 'next'.


* sb/hashmap-cleanup (2017-07-05) 10 commits
  (merged to 'next' on 2017-07-12 at ce31d06165)
 + t/helper/test-hashmap: use custom data instead of duplicate cmp functions
 + name-hash.c: drop hashmap_cmp_fn cast
 + submodule-config.c: drop hashmap_cmp_fn cast
 + remote.c: drop hashmap_cmp_fn cast
 + patch-ids.c: drop hashmap_cmp_fn cast
 + convert/sub-process: drop cast to hashmap_cmp_fn
 + config.c: drop hashmap_cmp_fn cast
 + builtin/describe: drop hashmap_cmp_fn cast
 + builtin/difftool.c: drop hashmap_cmp_fn cast
 + attr.c: drop hashmap_cmp_fn cast

 Many uses of comparision callback function the hashmap API uses
 cast the callback function type when registering it to
 hashmap_init(), which defeats the compile time type checking when
 the callback interface changes (e.g. gaining more parameters).
 The callback implementations have been updated to take "void *"
 pointers and cast them to the type they expect instead.

 Will cook in 'next'.


* ex/deprecate-empty-pathspec-as-match-all (2017-06-23) 2 commits
  (merged to 'next' on 2017-06-26 at d026281517)
 + pathspec: die on empty strings as pathspec
 + t0027: do not use an empty string as a pathspec element

 The final step to make an empty string as a pathspec element
 illegal.  We started this by first deprecating and warning a
 pathspec that has such an element in 2.11 (Nov 2016).

 Hopefully we can merge this down to the 'master' by the end of the
 year?  A deprecation warning period that is about 1 year does not
 sound too bad.

 Will cook in 'next'.


* mh/packed-ref-store (2017-07-27) 31 commits
  (merged to 'next' on 2017-07-27 at 857dcb8cba)
 + packed_ref_store: handle a packed-refs file that is a symlink
  (merged to 'next' on 2017-07-05 at 6c68c603cc)
 + read_packed_refs(): die if `packed-refs` contains bogus data
 + t3210: add some tests of bogus packed-refs file contents
 + repack_without_refs(): don't lock or unlock the packed refs
 + commit_packed_refs(): remove call to `packed_refs_unlock()`
 + clear_packed_ref_cache(): don't protest if the lock is held
 + packed_refs_unlock(), packed_refs_is_locked(): new functions
 + packed_refs_lock(): report errors via a `struct strbuf *err`
 + packed_refs_lock(): function renamed from lock_packed_refs()
 + commit_packed_refs(): use a staging file separate from the lockfile
 + commit_packed_refs(): report errors rather than dying
 + packed_ref_store: make class into a subclass of `ref_store`
 + packed-backend: new module for handling packed references
 + packed_read_raw_ref(): new function, replacing `resolve_packed_ref()`
 + packed_ref_store: support iteration
 + packed_peel_ref(): new function, extracted from `files_peel_ref()`
 + repack_without_refs(): take a `packed_ref_store *` parameter
 + get_packed_ref(): take a `packed_ref_store *` parameter
 + rollback_packed_refs(): take a `packed_ref_store *` parameter
 + commit_packed_refs(): take a `packed_ref_store *` parameter
 + lock_packed_refs(): take a `packed_ref_store *` parameter
 + add_packed_ref(): take a `packed_ref_store *` parameter
 + get_packed_refs(): take a `packed_ref_store *` parameter
 + get_packed_ref_cache(): take a `packed_ref_store *` parameter
 + validate_packed_ref_cache(): take a `packed_ref_store *` parameter
 + clear_packed_ref_cache(): take a `packed_ref_store *` parameter
 + packed_ref_store: move `packed_refs_lock` member here
 + packed_ref_store: move `packed_refs_path` here
 + packed_ref_store: new struct
 + add_packed_ref(): teach function to overwrite existing refs
 + t1408: add a test of stale packed refs covered by loose refs

 The "ref-store" code reorganization continues.

 Will cook in 'next'.


* sd/branch-copy (2017-06-18) 3 commits
  (merged to 'next' on 2017-07-18 at 5e3b9357ea)
 + branch: add a --copy (-c) option to go with --move (-m)
 + branch: add test for -m renaming multiple config sections
 + config: create a function to format section headers

 "git branch" learned "-c/-C" to create and switch to a new branch
 by copying an existing one.

 Will cook in 'next'.

 I personally do not think "branch --copy master backup" while on
 "master" that switches to "backup" is a good UI, and I *will* say
 "I told you so" when users complain after we merge this down to
 'master'.


* ls/filter-process-delayed (2017-06-30) 7 commits
  (merged to 'next' on 2017-07-05 at a35e644082)
 + convert: add "status=delayed" to filter process protocol
 + convert: refactor capabilities negotiation
 + convert: move multiple file filter error handling to separate function
 + convert: put the flags field before the flag itself for consistent style
 + t0021: write "OUT <size>" only on success
 + t0021: make debug log file name configurable
 + t0021: keep filter log files on comparison
 (this branch is used by jt/subprocess-handshake.)

 The filter-process interface learned to allow a process with long
 latency give a "delayed" response.

 Will cook in 'next'.


* sb/diff-color-move (2017-06-30) 26 commits
  (merged to 'next' on 2017-07-06 at 758ed40e4f)
 + diff: document the new --color-moved setting
 + diff.c: add dimming to moved line detection
 + diff.c: color moved lines differently, plain mode
 + diff.c: color moved lines differently
 + diff.c: buffer all output if asked to
 + diff.c: emit_diff_symbol learns about DIFF_SYMBOL_SUMMARY
 + diff.c: emit_diff_symbol learns about DIFF_SYMBOL_STAT_SEP
 + diff.c: convert word diffing to use emit_diff_symbol
 + diff.c: convert show_stats to use emit_diff_symbol
 + diff.c: convert emit_binary_diff_body to use emit_diff_symbol
 + submodule.c: migrate diff output to use emit_diff_symbol
 + diff.c: emit_diff_symbol learns DIFF_SYMBOL_REWRITE_DIFF
 + diff.c: emit_diff_symbol learns about DIFF_SYMBOL_BINARY_FILES
 + diff.c: emit_diff_symbol learns DIFF_SYMBOL_HEADER
 + diff.c: emit_diff_symbol learns DIFF_SYMBOL_FILEPAIR_{PLUS, MINUS}
 + diff.c: emit_diff_symbol learns DIFF_SYMBOL_CONTEXT_INCOMPLETE
 + diff.c: emit_diff_symbol learns DIFF_SYMBOL_WORDS[_PORCELAIN]
 + diff.c: migrate emit_line_checked to use emit_diff_symbol
 + diff.c: emit_diff_symbol learns DIFF_SYMBOL_NO_LF_EOF
 + diff.c: emit_diff_symbol learns DIFF_SYMBOL_CONTEXT_FRAGINFO
 + diff.c: emit_diff_symbol learns DIFF_SYMBOL_CONTEXT_MARKER
 + diff.c: introduce emit_diff_symbol
 + diff.c: factor out diff_flush_patch_all_file_pairs
 + diff.c: move line ending check into emit_hunk_header
 + diff.c: readability fix
 + Merge branch 'sb/hashmap-customize-comparison' into sb/diff-color-move

 "git diff" has been taught to optionally paint new lines that are
 the same as deleted lines elsewhere differently from genuinely new
 lines.

 Will cook in 'next'.

--------------------------------------------------
[Discarded]

* mh/packed-ref-store-prep-extra (2017-06-18) 1 commit
 . prefix_ref_iterator_advance(): relax the check of trim length

 Split out of mh/packed-ref-store-prep.


* nd/prune-in-worktree (2017-04-24) 12 commits
 . rev-list: expose and document --single-worktree
 . revision.c: --reflog add HEAD reflog from all worktrees
 . files-backend: make reflog iterator go through per-worktree reflog
 . revision.c: --all adds HEAD from all worktrees
 . refs: remove dead for_each_*_submodule()
 . revision.c: use refs_for_each*() instead of for_each_*_submodule()
 . refs: add refs_head_ref()
 . refs: move submodule slash stripping code to get_submodule_ref_store
 . refs.c: refactor get_submodule_ref_store(), share common free block
 . revision.c: --indexed-objects add objects from all worktrees
 . revision.c: refactor add_index_objects_to_pending()
 . revision.h: new flag in struct rev_info wrt. worktree-related refs

 "git gc" and friends when multiple worktrees are used off of a
 single repository did not consider the index and per-worktree refs
 of other worktrees as the root for reachability traversal, making
 objects that are in use only in other worktrees to be subject to
 garbage collection.

^ permalink raw reply	[relevance 7%]

* What's cooking in git.git (Jun 2017, #03; Mon, 5)
@ 2017-06-05  3:59  4% Junio C Hamano
  0 siblings, 0 replies; 25+ results
From: Junio C Hamano @ 2017-06-05  3:59 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.  The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.

With many fixes accumulated since v2.13.0, the first maintenance
release v2.13.1 has been tagged.  Thanks for all the help.  I'll be
mostly offline in the later part of this week, so please expect slow
response.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[Graduated to "master"]

* ab/c-translators-comment-style (2017-05-31) 1 commit
  (merged to 'next' on 2017-06-01 at df7fb9199a)
 + C style: use standard style for "TRANSLATORS" comments

 Update the C style recommendation for notes for translators, as
 recent versions of gettext tools can work with our style of
 multi-line comments.


* ab/sha1dc-maint (2017-05-22) 1 commit
  (merged to 'next' on 2017-05-30 at 9eb40bf912)
 + sha1dc: update from upstream
 (this branch is used by ab/sha1dc.)

 The "collision detecting" SHA-1 implementation shipped with 2.13
 was quite broken on some big-endian platforms and/or platforms that
 do not like unaligned fetches.  Update to the upstream code which
 has already fixed these issues.


* ab/t3070-test-dedup (2017-05-29) 1 commit
  (merged to 'next' on 2017-05-30 at 71eadec33b)
 + wildmatch test: remove redundant duplicate test

 Test cleanup.


* ad/pull-remote-doc (2017-06-02) 1 commit
  (merged to 'next' on 2017-06-02 at 32915e88db)
 + docs: fix formatting and grammar

 Docfix.


* ah/doc-filter-branch-export-env (2017-05-29) 1 commit
  (merged to 'next' on 2017-05-30 at a62168bf77)
 + doc: filter-branch does not require re-export of vars

 Docfix.


* ah/doc-rev-parse-short-default (2017-06-01) 1 commit
  (merged to 'next' on 2017-06-01 at f64fcc2a26)
 + doc: rewrite description for rev-parse --short

 Doc update.


* jh/close-index-before-stat (2017-04-28) 1 commit
  (merged to 'next' on 2017-05-16 at 0c0372eb02)
 + read-cache: close index.lock in do_write_index

 Originally merged to 'next' on 2017-04-30

 The timestamp of the index file is now taken after the file is
 closed, to help Windows, on which a stale timestamp is reported by
 fstat() on a file that is opened for writing and data was written
 but not yet closed.


* jk/connect-symref-info-leak-fix (2017-05-26) 1 commit
  (merged to 'next' on 2017-05-30 at d8b75d2dd9)
 + connect.c: fix leak in parse_one_symref_info()

 Leakfix.


* jk/drop-free-refspecs (2017-06-01) 1 commit
  (merged to 'next' on 2017-06-01 at 8f455319fc)
 + remote: drop free_refspecs() function

 Code clean-up.


* jk/unbreak-am-h (2017-05-30) 1 commit
  (merged to 'next' on 2017-06-01 at ee2233d409)
 + am: handle "-h" argument earlier
 (this branch is used by jk/consistent-h.)

 "git am -h" triggered a BUG().


* jk/url-insteadof-config (2017-06-01) 1 commit
  (merged to 'next' on 2017-06-01 at e7ea6032c2)
 + docs/config: mention protocol implications of url.insteadOf

 The interaction of "url.*.insteadOf" and custom URL scheme's
 whitelisting is now documented better.


* js/blame-lib (2017-05-25) 29 commits
  (merged to 'next' on 2017-05-30 at b4678b36a7)
 + blame: move entry prepend to libgit
 + blame: move scoreboard setup to libgit
 + blame: move scoreboard-related methods to libgit
 + blame: move fake-commit-related methods to libgit
 + blame: move origin-related methods to libgit
 + blame: move core structures to header
 + blame: create entry prepend function
 + blame: create scoreboard setup function
 + blame: create scoreboard init function
 + blame: rework methods that determine 'final' commit
 + blame: wrap blame_sort and compare_blame_final
 + blame: move progress updates to a scoreboard callback
 + blame: make sanity_check use a callback in scoreboard
 + blame: move no_whole_file_rename flag to scoreboard
 + blame: move xdl_opts flags to scoreboard
 + blame: move show_root flag to scoreboard
 + blame: move reverse flag to scoreboard
 + blame: move contents_from to scoreboard
 + blame: move copy/move thresholds to scoreboard
 + blame: move stat counters to scoreboard
 + blame: rename nth_line function
 + blame: rename ent_score function
 + blame: rename coalesce function
 + blame: rename origin-related functions
 + blame: rename scoreboard structure to blame_scoreboard
 + blame: rename origin structure to blame_origin
 + blame: remove unused parameters
 + blame: move textconv_object with related functions
 + blame: remove unneeded dependency on blob.h

 The internal logic used in "git blame" has been libified to make it
 easier to use by cgit.


* mb/diff-default-to-indent-heuristics (2017-05-09) 4 commits
  (merged to 'next' on 2017-05-29 at 7645575e21)
 + add--interactive: drop diff.indentHeuristic handling
 + diff: enable indent heuristic by default
 + diff: have the diff-* builtins configure diff before initializing revisions
 + diff: make the indent heuristic part of diff's basic configuration

 Make the "indent" heuristics the default in "diff" and diff.indentHeuristics
 configuration variable an escape hatch for those who do no want it.
 Looks like there may be follow-on work possible, but the topic
 itself is in good order.
 cf. <20170509033258.q7auj5p5lxs4tggd@sigill.intra.peff.net>


* mh/packed-ref-store-prep (2017-05-24) 26 commits
  (merged to 'next' on 2017-05-29 at e4f5e06b4c)
 + cache_ref_iterator_begin(): avoid priming unneeded directories
 + ref-filter: limit traversal to prefix
 + create_ref_entry(): remove `check_name` option
 + refs_ref_iterator_begin(): handle `GIT_REF_PARANOIA`
 + read_packed_refs(): report unexpected fopen() failures
 + read_packed_refs(): do more of the work of reading packed refs
 + get_packed_ref_cache(): assume "packed-refs" won't change while locked
 + should_pack_ref(): new function, extracted from `files_pack_refs()`
 + ref_update_reject_duplicates(): add a sanity check
 + ref_update_reject_duplicates(): use `size_t` rather than `int`
 + ref_update_reject_duplicates(): expose function to whole refs module
 + ref_transaction_prepare(): new optional step for reference updates
 + ref_transaction_commit(): check for valid `transaction->state`
 + files_transaction_cleanup(): new helper function
 + files_ref_store: put the packed files lock directly in this struct
 + files-backend: move `lock` member to `files_ref_store`
 + lockfile: add a new method, is_lock_file_locked()
 + ref_store: take a `msg` parameter when deleting references
 + refs: use `size_t` indexes when iterating over ref transaction updates
 + refs_ref_iterator_begin(): don't check prefixes redundantly
 + prefix_ref_iterator: don't trim too much
 + files-backend: use `die("BUG: ...")`, not `die("internal error: ...")`
 + ref_iterator_begin_fn(): fix docstring
 + refs.h: clarify docstring for the ref_transaction_update()-related fns
 + t3600: clean up permissions test properly
 + Merge branch 'bc/object-id'

 The implementation of "ref" API around the "packed refs" have been
 cleaned up, in preparation for further changes.


* rf/completion-config-commit (2017-05-30) 1 commit
  (merged to 'next' on 2017-06-01 at cea32e0486)
 + completion: add completions for git config commit
 (this branch is used by rf/completion.)

 Completion update.


* sd/t3200-typofix (2017-05-29) 1 commit
  (merged to 'next' on 2017-05-30 at 784e5e73f8)
 + branch test: fix invalid config key access

 Test fix.


* tb/pull-ff-rebase-autostash (2017-06-01) 1 commit
  (merged to 'next' on 2017-06-01 at b5e676d57e)
 + pull: ff --rebase --autostash works in dirty repo

 "git pull --rebase --autostash" didn't auto-stash when the local history
 fast-forwards to the upstream.

--------------------------------------------------
[New Topics]

* bw/object-id (2017-06-05) 33 commits
 - diff: rename diff_fill_sha1_info to diff_fill_oid_info
 - diffcore-rename: use is_empty_blob_oid
 - tree-diff: convert path_appendnew to object_id
 - tree-diff: convert diff_tree_paths to struct object_id
 - tree-diff: convert try_to_follow_renames to struct object_id
 - builtin/diff-tree: cleanup references to sha1
 - diff-tree: convert diff_tree_sha1 to struct object_id
 - notes-merge: convert write_note_to_worktree to struct object_id
 - notes-merge: convert verify_notes_filepair to struct object_id
 - notes-merge: convert find_notes_merge_pair_ps to struct object_id
 - notes-merge: convert merge_from_diffs to struct object_id
 - notes-merge: convert notes_merge* to struct object_id
 - tree-diff: convert diff_root_tree_sha1 to struct object_id
 - combine-diff: convert find_paths_* to struct object_id
 - combine-diff: convert diff_tree_combined to struct object_id
 - diff: convert diff_flush_patch_id to struct object_id
 - patch-ids: convert to struct object_id
 - diff: finish conversion for prepare_temp_file to struct object_id
 - diff: convert reuse_worktree_file to struct object_id
 - diff: convert fill_filespec to struct object_id
 - diff: convert diff_change to struct object_id
 - diff: convert run_diff_files to struct object_id
 - diff: convert diff_addremove to struct object_id
 - diff: convert diff_index_show_file to struct object_id
 - diff: convert get_stat_data to struct object_id
 - grep: convert to struct object_id
 - notes: convert some accessor functions to struct object_id
 - builtin/notes: convert to struct object_id
 - notes: convert format_display_notes to struct object_id
 - notes: make get_note return pointer to struct object_id
 - notes: convert for_each_note to struct object_id
 - notes: convert internal parts to struct object_id
 - notes: convert internal structures to struct object_id

 Conversion from uchar[20] to struct object_id continues.

 Will merge to 'next'.


* rs/strbuf-addftime-zZ (2017-06-04) 1 commit
 - strbuf: let strbuf_addftime handle %z and %Z itself

 As there is no portable way to pass timezone information to
 strftime, some output format from "git log" and friends are
 impossible to produce.  Teach our own strbuf_addftime to replace %z
 and %Z with caller-supplied values to help working around this.

 Will merge to 'next'.


* sb/submodule-rm-absorb (2017-06-04) 1 commit
 - Documentation/git-rm: correct submodule description

 Doc update to a recently graduated topic.

 Will merge to 'next'.


* sg/revision-parser-skip-prefix (2017-06-04) 3 commits
 - revision.c: use skip_prefix() in handle_revision_pseudo_opt()
 - revision.c: use skip_prefix() in handle_revision_opt()
 - revision.c: stricter parsing of '--no-{min,max}-parents'

 Code clean-up.

 Will merge to 'next'.


* ab/perf-remove-index-lock (2017-06-05) 1 commit
 - perf: work around the tested repo having an index.lock

 When an existing repository is used for t/perf testing, we first
 create bit-for-bit copy of it, which may grab a transient state of
 the repository and freeze it into the repository used for testing,
 which then may cause Git operations to fail.  Single out "the index
 being locked" case and forcibly drop the lock from the copy.

 Will merge to 'next'.


* ab/wip-fsmonitor (2017-06-04) 7 commits
 - perf: add a performance test for core.fsmonitor
 - fsmonitor: add a sample query-fsmonitor hook script for Watchman
 - fsmonitor: add documentation for the fsmonitor extension
 - fsmonitor: add test cases for fsmonitor extension
 - fsmonitor: teach git to optionally utilize a file system monitor to speed up detecting new or changed files.
 - dir: make lookup_untracked() available outside of dir.c
 - bswap: add 64 bit endianness helper get_be64

--------------------------------------------------
[Stalled]

* mg/status-in-progress-info (2017-05-10) 2 commits
 - status --short --inprogress: spell it as --in-progress
 - status: show in-progress info for short status

 "git status" learns an option to report various operations
 (e.g. "merging") that the user is in the middle of.

 cf. <xmqqmvakcdqw.fsf@gitster.mtv.corp.google.com>


* mg/name-rev-debug (2017-03-31) 2 commits
 - describe: pass --debug down to name-rev
 - name-rev: provide debug output

 "git describe --debug --contains" did not add any meaningful
 information, even though without "--contains" it did.

 Will discard for now.
 cf. <c85bc2a1-56d8-8a02-6089-2b8cb3d39e99@grubix.eu>


* nd/worktree-move (2017-04-20) 6 commits
 - worktree remove: new command
 - worktree move: refuse to move worktrees with submodules
 - worktree move: accept destination as directory
 - worktree move: new command
 - worktree.c: add update_worktree_location()
 - worktree.c: add validate_worktree()

 "git worktree" learned move and remove subcommands.

 Expecting a reroll.
 cf. <20170420101024.7593-1-pclouds@gmail.com>
 cf. <20170421145916.mknekgqzhxffu7di@sigill.intra.peff.net>
 cf. <d0e81b1e-5869-299e-f462-4d43dc997bd1@ramsayjones.plus.com>


* sk/dash-is-previous (2017-03-01) 5 commits
 . revert.c: delegate handling of "-" shorthand to setup_revisions
 . sha1_name.c: teach get_sha1_1 "-" shorthand for "@{-1}"
 . revision.c: args starting with "-" might be a revision
 . revision.c: swap if/else blocks
 . revision.c: do not update argv with unknown option

 A dash "-" can be written to mean "the branch that was previously
 checked out" in more places.

 Ejected, as it seems that making -.. to mean @{-1}..HEAD etc. are
 going too far.

--------------------------------------------------
[Cooking]

* jc/diff-tree-stale-comment (2017-06-02) 1 commit
  (merged to 'next' on 2017-06-04 at bffae281d2)
 + diff-tree: update stale in-code comments

 Comment fix.

 Will merge to 'master'.


* jc/noent-notdir (2017-05-30) 2 commits
  (merged to 'next' on 2017-06-04 at 7cb4efbc3c)
 + treewide: use is_missing_file_error() where ENOENT and ENOTDIR are checked
 + compat-util: is_missing_file_error()

 Our code often opens a path to an optional file, to work on its
 contents when we can successfully open it.  We can ignore a failure
 to open if such an optional file does not exist, but we do want to
 report a failure in opening for other reasons (e.g. we got an I/O
 error, or the file is there, but we lack the permission to open).

 The exact errors we need to ignore are ENOENT (obviously) and
 ENOTDIR (less obvious).  Instead of repeating comparison of errno
 with these two constants, introduce a helper function to do so.

 Will merge to 'master'.


* rf/completion (2017-06-02) 6 commits
  (merged to 'next' on 2017-06-04 at dde1e34703)
 + completion: add git config credentialCache.ignoreSIGHUP
 + completion: add git config credential completions
 + completion: add git config advice completions
 + completion: add git config am.threeWay completion
 + completion: add git config core completions
 + completion: add git config gc completions

 Completion updates.

 Will merge to 'master'.


* ls/filter-process-delayed (2017-06-01) 5 commits
 - convert: add "status=delayed" to filter process protocol
 - convert: move multiple file filter error handling to separate function
 - t0021: write "OUT" only on success
 - t0021: make debug log file name configurable
 - t0021: keep filter log files on comparison

 The filter-process interface learned to allow a process with long
 latency give a "delayed" response.

 Needs review.


* jk/consistent-h (2017-06-05) 8 commits
 - t0012: test "-h" with builtins
 - git: add hidden --list-builtins option
 - version: convert to parse-options
 - diff- and log- family: handle "git cmd -h" early
 - submodule--helper: show usage for "-h"
 - remote-{ext,fd}: print usage message on invalid arguments
 - upload-archive: handle "-h" option early
 - credential: handle invalid arguments earlier

 "git $cmd -h" for builtin commands calls the implementation of the
 command (i.e. cmd_$cmd() function) without doing any repository
 set-up, and the commands that expect RUN_SETUP is done by the Git
 potty needs to be prepared to show the help text without barfing.

 Will merge to 'next'.


* pw/rebase-i-regression-fix-tests (2017-06-01) 1 commit
 - rebase -i: add test for reflog message

 Just the first one of three? new tests that follows up a regression
 fix.

 Expecting a portable update.


* sb/submodule-blanket-recursive (2017-06-01) 9 commits
  (merged to 'next' on 2017-06-04 at 418bb03032)
 + builtin/fetch.c: respect 'submodule.recurse' option
 + builtin/push.c: respect 'submodule.recurse' option
 + builtin/grep.c: respect 'submodule.recurse' option
 + Introduce 'submodule.recurse' option for worktree manipulators
 + submodule loading: separate code path for .gitmodules and config overlay
 + reset/checkout/read-tree: unify config callback for submodule recursion
 + submodule test invocation: only pass additional arguments
 + submodule recursing: do not write a config variable twice
 + Merge branch 'ab/grep-preparatory-cleanup' into sb/submodule-blanket-recursive

 Many commands learned to pay attention to submodule.recurse
 configuration.

 Will merge to 'master'.

 It is not known if a simple "yes/no" is sufficient in the longer
 term, and what should happen when --recurse-submodules option starts
 taking "recurse into them how?" parameter, though.


* ab/pcre-v2 (2017-06-02) 8 commits
 - grep: add support for PCRE v2
 - grep: un-break building with PCRE >= 8.32 without --enable-jit
 - grep: un-break building with PCRE < 8.20
 - grep: un-break building with PCRE < 8.32
 - grep: add support for the PCRE v1 JIT API
 - log: add -P as a synonym for --perl-regexp
 - grep: skip pthreads overhead when using one thread
 - grep: don't redundantly compile throwaway patterns under threading

 Update "perl-compatible regular expression" support to enable JIT
 and also allow linking with the newer PCRE v2 library.

 Will merge to 'next'.


* jk/pathspec-magic-disambiguation (2017-05-29) 6 commits
 - verify_filename(): flip order of checks
 - verify_filename(): treat ":(magic)" as a pathspec
 - check_filename(): handle ":^" path magic
 - check_filename(): use skip_prefix
 - check_filename(): refactor ":/" handling
 - t4208: add check for ":/" without matching file

 The convention for a command line is to follow "git cmdname
 --options" with revisions followed by an optional "--"
 disambiguator and then finally pathspecs.  When "--" is not there,
 we make sure early ones are all interpretable as revs (and do not
 look like paths) and later ones are the other way around.  A
 pathspec with "magic" (e.g. ":/p/a/t/h" that matches p/a/t/h from
 the top-level of the working tree, no matter what subdirectory you
 are working from) are conservatively judged as "not a path", which
 required disambiguation more often.  The command line parser
 learned to say "it's a pathspec" a bit more often when the syntax
 looks like so.

 Will merge to 'next'.


* ab/sha1dc (2017-05-22) 2 commits
 - sha1collisiondetection: automatically enable when submodule is populated
 - sha1dc: optionally use sha1collisiondetection as a submodule

 The "collission-detecting" implementation of SHA-1 hash we borrowed
 from is replaced by directly binding the upstream project as our
 submodule.

 Will keep in 'pu' for a few CI cycles.
 Impact to the various build and release infrastructure of using
 submodule is not yet fully known, but this lets us dip our toes.


* bp/fsmonitor (2017-06-04) 7 commits
 - perf: add a performance test for core.fsmonitor
 - fsmonitor: add a sample query-fsmonitor hook script for Watchman
 - fsmonitor: add documentation for the fsmonitor extension
 - fsmonitor: add test cases for fsmonitor extension
 - fsmonitor: teach git to optionally utilize a file system monitor to speed up detecting new or changed files.
 - dir: make lookup_untracked() available outside of dir.c
 - bswap: add 64 bit endianness helper get_be64

 We learned to talk to watchman to speed up "git status".

 Waiting for discussion to settle.
 cf. <20170601155105.28356-1-benpeart@microsoft.com>


* sb/diff-color-move (2017-06-01) 17 commits
 - diff.c: color moved lines differently
 - diff: buffer all output if asked to
 - diff.c: emit_line includes whitespace highlighting
 - diff.c: convert diff_summary to use emit_line_*
 - diff.c: convert diff_flush to use emit_line_*
 - diff.c: convert word diffing to use emit_line_*
 - diff.c: convert show_stats to use emit_line_*
 - diff.c: convert emit_binary_diff_body to use emit_line_*
 - submodule.c: convert show_submodule_summary to use emit_line_fmt
 - diff.c: convert emit_rewrite_lines to use emit_line_*
 - diff.c: convert emit_rewrite_diff to use emit_line_*
 - diff.c: convert builtin_diff to use emit_line_*
 - diff.c: convert fn_out_consume to use emit_line
 - diff: introduce more flexible emit function
 - diff.c: factor out diff_flush_patch_all_file_pairs
 - diff: move line ending check into emit_hunk_header
 - diff: readability fix

 "git diff" has been taught to optionally paint new lines that are
 the same as deleted lines elsewhere differently from genuinely new
 lines.

 Are we happy with these changes?


* xz/send-email-batch-size (2017-05-23) 1 commit
 - send-email: --batch-size to work around some SMTP server limit

 "git send-email" learned to overcome some SMTP server limitation
 that does not allow many pieces of e-mails to be sent over a single
 session.

 Waiting for response.
 cf. <CACBZZX5GYV50rjg9X602JHqFPaoofH9TwDf_-r_MDu8-rmNV6Q@mail.gmail.com>


* sg/clone-refspec-from-command-line-config (2017-06-01) 2 commits
 - Documentation/clone: document ignored configuration variables
 - clone: respect additional configured fetch refspecs during initial fetch

 "git clone -c var=val" is a way to set configuration variables in
 the resulting repository, but it is more useful to also make these
 variables take effect while the initial clone is happening,
 e.g. these configuration variables could be fetch refspecs.

 Are we happy with these two?


* nd/fopen-errors (2017-06-02) 13 commits
  (merged to 'next' on 2017-06-04 at 7a755e73bb)
 + mingw_fopen: report ENOENT for invalid file names
 + mingw: verify that paths are not mistaken for remote nicknames
 + log: fix memory leak in open_next_file()
 + rerere.c: move error_errno() closer to the source system call
 + print errno when reporting a system call error
 + wrapper.c: make warn_on_inaccessible() static
 + wrapper.c: add and use fopen_or_warn()
 + wrapper.c: add and use warn_on_fopen_errors()
 + config.mak.uname: set FREAD_READS_DIRECTORIES for Darwin, too
 + config.mak.uname: set FREAD_READS_DIRECTORIES for Linux and FreeBSD
 + clone: use xfopen() instead of fopen()
 + use xfopen() in more places
 + git_fopen: fix a sparse 'not declared' warning

 We often try to open a file for reading whose existence is
 optional, and silently ignore errors from open/fopen; report such
 errors if they are not due to missing files.

 Will merge to 'master'.


* js/rebase-i-final (2017-05-02) 10 commits
 - rebase -i: rearrange fixup/squash lines using the rebase--helper
 - t3415: test fixup with wrapped oneline
 - rebase -i: skip unnecessary picks using the rebase--helper
 - rebase -i: check for missing commits in the rebase--helper
 - t3404: relax rebase.missingCommitsCheck tests
 - rebase -i: also expand/collapse the SHA-1s via the rebase--helper
 - rebase -i: do not invent onelines when expanding/collapsing SHA-1s
 - rebase -i: remove useless indentation
 - rebase -i: generate the script via rebase--helper
 - t3415: verify that an empty instructionFormat is handled as before

 The final batch to "git rebase -i" updates to move more code from
 the shell script to C.

 Expecting a reroll.
 This is at its v4.
 cf. <cover.1493414945.git.johannes.schindelin@gmx.de>


* nd/prune-in-worktree (2017-04-24) 12 commits
 - rev-list: expose and document --single-worktree
 - revision.c: --reflog add HEAD reflog from all worktrees
 - files-backend: make reflog iterator go through per-worktree reflog
 - revision.c: --all adds HEAD from all worktrees
 - refs: remove dead for_each_*_submodule()
 - revision.c: use refs_for_each*() instead of for_each_*_submodule()
 - refs: add refs_head_ref()
 - refs: move submodule slash stripping code to get_submodule_ref_store
 - refs.c: refactor get_submodule_ref_store(), share common free block
 - revision.c: --indexed-objects add objects from all worktrees
 - revision.c: refactor add_index_objects_to_pending()
 - revision.h: new flag in struct rev_info wrt. worktree-related refs

 "git gc" and friends when multiple worktrees are used off of a
 single repository did not consider the index and per-worktree refs
 of other worktrees as the root for reachability traversal, making
 objects that are in use only in other worktrees to be subject to
 garbage collection.

 Expecting a reroll.
 Has been waiting for nd/worktree-kill-parse-ref to settle.
 cf. <CACsJy8ADCVBiLoPg_Tz0L6CMdh_eFmK4RYzfQ-PmUgBK7w9e=A@mail.gmail.com>

^ permalink raw reply	[relevance 4%]

* What's cooking in git.git (Jun 2017, #02; Fri, 2)
@ 2017-06-02  6:38  3% Junio C Hamano
  0 siblings, 0 replies; 25+ results
From: Junio C Hamano @ 2017-06-02  6:38 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.  The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.

As much I hate to send a new issue of "What's cooking" report in
quick successions, quite a lot has happened on the 'master' front to
prepare topics that wants to eventually go to 'maint'.  I am aiming
to tag v2.13.1 very early next week, as I expect to be offline in
the latter half of the week.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[Graduated to "master"]

* ab/grep-preparatory-cleanup (2017-05-26) 31 commits
  (merged to 'next' on 2017-05-29 at f2cfa89d3e)
 + grep: assert that threading is enabled when calling grep_{lock,unlock}
 + grep: given --threads with NO_PTHREADS=YesPlease, warn
 + pack-objects: fix buggy warning about threads
 + pack-objects & index-pack: add test for --threads warning
 + test-lib: add a PTHREADS prerequisite
 + grep: move is_fixed() earlier to avoid forward declaration
 + grep: change internal *pcre* variable & function names to be *pcre1*
 + grep: change the internal PCRE macro names to be PCRE1
 + grep: factor test for \0 in grep patterns into a function
 + grep: remove redundant regflags assignments
 + grep: catch a missing enum in switch statement
 + perf: add a comparison test of log --grep regex engines with -F
 + perf: add a comparison test of log --grep regex engines
 + perf: add a comparison test of grep regex engines with -F
 + perf: add a comparison test of grep regex engines
 + perf: emit progress output when unpacking & building
 + perf: add a GIT_PERF_MAKE_COMMAND for when *_MAKE_OPTS won't do
 + grep: add tests to fix blind spots with \0 patterns
 + grep: prepare for testing binary regexes containing rx metacharacters
 + grep: add a test helper function for less verbose -f \0 tests
 + grep: add tests for grep pattern types being passed to submodules
 + grep: amend submodule recursion test for regex engine testing
 + grep: add tests for --threads=N and grep.threads
 + grep: change non-ASCII -i test to stop using --debug
 + grep: add a test for backreferences in PCRE patterns
 + grep: add a test asserting that --perl-regexp dies when !PCRE
 + log: make --regexp-ignore-case work with --perl-regexp
 + log: add exhaustive tests for pattern style options & config
 + test-lib: rename the LIBPCRE prerequisite to PCRE
 + grep & rev-list doc: stop promising libpcre for --perl-regexp
 + Makefile & configure: reword inaccurate comment about PCRE
 (this branch is used by ab/pcre-v2 and sb/submodule-blanket-recursive.)

 The internal implementation of "git grep" has seen some clean-up.


* ab/ref-filter-no-contains (2017-05-23) 1 commit
  (merged to 'next' on 2017-05-29 at 5d39fd2961)
 + tag: duplicate mention of --contains should mention --no-contains

 Doc update to a recent topic.


* ah/doc-interpret-trailers-ifexists (2017-05-23) 1 commit
  (merged to 'next' on 2017-05-29 at cb353c1d21)
 + Documentation: fix reference to ifExists for interpret-trailers

 Documentation fix.


* ah/doc-pretty-format-fix (2017-05-23) 1 commit
  (merged to 'next' on 2017-05-29 at 6e3e8fd80d)
 + Documentation: fix formatting typo in pretty-formats.txt

 Documentation fix.


* dk/send-email-avoid-net-smtp-ssl-when-able (2017-06-01) 1 commit
  (merged to 'next' on 2017-06-01 at 3ff3ddfac7)
 + send-email: Net::SMTP::starttls was introduced in v2.34

 A hotfix to a topic in 'master'.


* jk/diff-blob (2017-05-24) 15 commits
  (merged to 'next' on 2017-05-29 at 5ecc979cc7)
 + diff: use blob path for blob/file diffs
 + diff: use pending "path" if it is available
 + diff: use the word "path" instead of "name" for blobs
 + diff: pass whole pending entry in blobinfo
 + handle_revision_arg: record paths for pending objects
 + handle_revision_arg: record modes for "a..b" endpoints
 + t4063: add tests of direct blob diffs
 + get_sha1_with_context: dynamically allocate oc->path
 + get_sha1_with_context: always initialize oc->symlink_path
 + sha1_name: consistently refer to object_context as "oc"
 + handle_revision_arg: add handle_dotdot() helper
 + handle_revision_arg: hoist ".." check out of range parsing
 + handle_revision_arg: stop using "dotdot" as a generic pointer
 + handle_revision_arg: simplify commit reference lookups
 + handle_revision_arg: reset "dotdot" consistently

 The result from "git diff" that compares two blobs, e.g. "git diff
 $commit1:$path $commit2:$path", used to be shown with the full
 object name as given on the command line, but it is more natural to
 use the $path in the output and use it to look up .gitattributes.


* js/bs-is-a-dir-sep-on-windows (2017-05-26) 2 commits
  (merged to 'next' on 2017-05-26 at 450b39f726)
 + Windows: do not treat a path with backslashes as a remote's nick name
 + mingw.h: permit arguments with side effects for is_dir_sep

 "foo\bar\baz" in "git fetch foo\bar\baz", even though there is no
 slashes in it, cannot be a nickname for a remote on Windows, as
 that is likely to be a pathname on a local filesystem.


* jt/send-email-validate-hook (2017-06-02) 1 commit
  (merged to 'next' on 2017-06-02 at 32055bc433)
 + send-email: check for repo before invoking hook

 A hotfix for a topic already in 'master'.


* rs/mingw-path-lookup-simplify (2017-05-23) 1 commit
  (merged to 'next' on 2017-05-29 at 4365139a7f)
 + mingw: simplify PATH handling

 Code simplification.


* sb/t5531-update-desc (2017-05-23) 1 commit
  (merged to 'next' on 2017-05-29 at 67a91db3cf)
 + t5531: fix test description

 The description strings for a few tests have been updated.


* sl/clean-d-ignored-fix (2017-05-24) 6 commits
  (merged to 'next' on 2017-05-29 at 837c255ae8)
 + clean: teach clean -d to preserve ignored paths
 + dir: expose cmp_name() and check_contains()
 + dir: hide untracked contents of untracked dirs
 + dir: recurse into untracked dirs for ignored files
 + t7061: status --ignored should search untracked dirs
 + t7300: clean -d should skip dirs with ignored files

 "git clean -d" used to clean directories that has ignored files,
 even though the command should not lose ignored ones without "-x".
 "git status --ignored"  did not list ignored and untracked files
 without "-uall".  These have been corrected.

--------------------------------------------------
[New Topics]

* ad/pull-remote-doc (2017-06-02) 1 commit
  (merged to 'next' on 2017-06-02 at 32915e88db)
 + docs: fix formatting and grammar

 Docfix.

 Will merge to 'master'.


* jc/diff-tree-stale-comment (2017-06-02) 1 commit
 - diff-tree: update stale in-code comments

 Comment fix.

 Will merge to 'next'.


* jc/noent-notdir (2017-05-30) 2 commits
 - treewide: use is_missing_file_error() where ENOENT and ENOTDIR are checked
 - compat-util: is_missing_file_error()

 Our code often opens a path to an optional file, to work on its
 contents when we can successfully open it.  We can ignore a failure
 to open if such an optional file does not exist, but we do want to
 report a failure in opening for other reasons (e.g. we got an I/O
 error, or the file is there, but we lack the permission to open).

 The exact errors we need to ignore are ENOENT (obviously) and
 ENOTDIR (less obvious).  Instead of repeating comparison of errno
 with these two constants, introduce a helper function to do so.

 Will merge to 'next'.


* rf/completion (2017-06-02) 6 commits
 - completion: add git config credentialCache.ignoreSIGHUP
 - completion: add git config credential completions
 - completion: add git config advice completions
 - completion: add git config am.threeWay completion
 - completion: add git config core completions
 - completion: add git config gc completions
 (this branch uses rf/completion-config-commit.)

 Completion updates.

 Will merge to 'next'.

--------------------------------------------------
[Stalled]

* mg/status-in-progress-info (2017-05-10) 2 commits
 - status --short --inprogress: spell it as --in-progress
 - status: show in-progress info for short status

 "git status" learns an option to report various operations
 (e.g. "merging") that the user is in the middle of.

 cf. <xmqqmvakcdqw.fsf@gitster.mtv.corp.google.com>


* mg/name-rev-debug (2017-03-31) 2 commits
 - describe: pass --debug down to name-rev
 - name-rev: provide debug output

 "git describe --debug --contains" did not add any meaningful
 information, even though without "--contains" it did.

 Will discard for now.
 cf. <c85bc2a1-56d8-8a02-6089-2b8cb3d39e99@grubix.eu>


* nd/worktree-move (2017-04-20) 6 commits
 - worktree remove: new command
 - worktree move: refuse to move worktrees with submodules
 - worktree move: accept destination as directory
 - worktree move: new command
 - worktree.c: add update_worktree_location()
 - worktree.c: add validate_worktree()

 "git worktree" learned move and remove subcommands.

 Expecting a reroll.
 cf. <20170420101024.7593-1-pclouds@gmail.com>
 cf. <20170421145916.mknekgqzhxffu7di@sigill.intra.peff.net>
 cf. <d0e81b1e-5869-299e-f462-4d43dc997bd1@ramsayjones.plus.com>


* sk/dash-is-previous (2017-03-01) 5 commits
 . revert.c: delegate handling of "-" shorthand to setup_revisions
 . sha1_name.c: teach get_sha1_1 "-" shorthand for "@{-1}"
 . revision.c: args starting with "-" might be a revision
 . revision.c: swap if/else blocks
 . revision.c: do not update argv with unknown option

 A dash "-" can be written to mean "the branch that was previously
 checked out" in more places.

 Ejected, as it seems that making -.. to mean @{-1}..HEAD etc. are
 going too far.

--------------------------------------------------
[Cooking]

* ls/filter-process-delayed (2017-06-01) 5 commits
 - convert: add "status=delayed" to filter process protocol
 - convert: move multiple file filter error handling to separate function
 - t0021: write "OUT" only on success
 - t0021: make debug log file name configurable
 - t0021: keep filter log files on comparison

 The filter-process interface learned to allow a process with long
 latency give a "delayed" response.

 Needs review.


* ah/doc-rev-parse-short-default (2017-06-01) 1 commit
  (merged to 'next' on 2017-06-01 at f64fcc2a26)
 + doc: rewrite description for rev-parse --short

 Doc update.

 Will merge to 'master'.


* rf/completion-config-commit (2017-05-30) 1 commit
  (merged to 'next' on 2017-06-01 at cea32e0486)
 + completion: add completions for git config commit
 (this branch is used by rf/completion.)

 Completion update.

 Will merge to 'master'.


* ab/c-translators-comment-style (2017-05-31) 1 commit
  (merged to 'next' on 2017-06-01 at df7fb9199a)
 + C style: use standard style for "TRANSLATORS" comments

 Update the C style recommendation for notes for translators, as
 recent versions of gettext tools can work with our style of
 multi-line comments.

 Will merge to 'master'.


* jc/diff-log-help (2017-06-01) 1 commit
 - diff- and log- family: handle "git cmd -h" early
 (this branch is used by jc/wip-check-help-option.)

 The continuation of jk/consistent-h topic; the plumbing commands in
 the diff- and log- family were calling into the revision machinery
 without repository set-up upon "git $cmd -h", which is fixed.

 Will squeeze into jk/consistent-h topic.


* jk/consistent-h (2017-05-30) 7 commits
 - t0012: test "-h" with builtins
 - git: add hidden --list-builtins option
 - version: convert to parse-options
 - submodule--helper: show usage for "-h"
 - remote-{ext,fd}: print usage message on invalid arguments
 - upload-archive: handle "-h" option early
 - credential: handle invalid arguments earlier
 (this branch uses jk/unbreak-am-h.)

 "git $cmd -h" for builtin commands calls the implementation of the
 command (i.e. cmd_$cmd() function) without doing any repository
 set-up, and the commands that expect RUN_SETUP is done by the Git
 potty needs to be prepared to show the help text without barfing.


* jk/drop-free-refspecs (2017-06-01) 1 commit
  (merged to 'next' on 2017-06-01 at 8f455319fc)
 + remote: drop free_refspecs() function

 Code clean-up.

 Will merge to 'master'.


* jk/unbreak-am-h (2017-05-30) 1 commit
  (merged to 'next' on 2017-06-01 at ee2233d409)
 + am: handle "-h" argument earlier
 (this branch is used by jk/consistent-h.)

 "git am -h" triggered a BUG().

 Will merge to 'master'.


* jk/url-insteadof-config (2017-06-01) 1 commit
  (merged to 'next' on 2017-06-01 at e7ea6032c2)
 + docs/config: mention protocol implications of url.insteadOf

 The interaction of "url.*.insteadOf" and custom URL scheme's
 whitelisting is now documented better.

 Will merge to 'master'.


* pw/rebase-i-regression-fix-tests (2017-06-01) 1 commit
 - rebase -i: add test for reflog message

 Just the first one of three? new tests that follows up a regression
 fix.

 Expecting a portable update.


* sb/submodule-blanket-recursive (2017-06-01) 9 commits
 - builtin/fetch.c: respect 'submodule.recurse' option
 - builtin/push.c: respect 'submodule.recurse' option
 - builtin/grep.c: respect 'submodule.recurse' option
 - Introduce 'submodule.recurse' option for worktree manipulators
 - submodule loading: separate code path for .gitmodules and config overlay
 - reset/checkout/read-tree: unify config callback for submodule recursion
 - submodule test invocation: only pass additional arguments
 - submodule recursing: do not write a config variable twice
 - Merge branch 'ab/grep-preparatory-cleanup' into sb/submodule-blanket-recursive

 Many commands learned to pay attention to submodule.recurse
 configuration.

 Will merge to 'next'.

 It is not known if a simple "yes/no" is sufficient in the longer
 term, and what should happen when --recurse-submodules option starts
 taking "recurse into them how?" parameter, though.


* tb/pull-ff-rebase-autostash (2017-06-01) 1 commit
  (merged to 'next' on 2017-06-01 at b5e676d57e)
 + pull: ff --rebase --autostash works in dirty repo

 "git pull --rebase --autostash" didn't auto-stash when the local history
 fast-forwards to the upstream.

 Will merge to 'master'.


* ab/pcre-v2 (2017-06-02) 8 commits
 - grep: add support for PCRE v2
 - grep: un-break building with PCRE >= 8.32 without --enable-jit
 - grep: un-break building with PCRE < 8.20
 - grep: un-break building with PCRE < 8.32
 - grep: add support for the PCRE v1 JIT API
 - log: add -P as a synonym for --perl-regexp
 - grep: skip pthreads overhead when using one thread
 - grep: don't redundantly compile throwaway patterns under threading

 Update "perl-compatible regular expression" support to enable JIT
 and also allow linking with the newer PCRE v2 library.

 Will merge to 'next'.


* ab/sha1dc-maint (2017-05-22) 1 commit
  (merged to 'next' on 2017-05-30 at 9eb40bf912)
 + sha1dc: update from upstream
 (this branch is used by ab/sha1dc.)

 The "collision detecting" SHA-1 implementation shipped with 2.13
 was quite broken on some big-endian platforms and/or platforms that
 do not like unaligned fetches.  Update to the upstream code which
 has already fixed these issues.

 Will merge to 'master'.


* ab/t3070-test-dedup (2017-05-29) 1 commit
  (merged to 'next' on 2017-05-30 at 71eadec33b)
 + wildmatch test: remove redundant duplicate test

 Test cleanup.

 Will merge to 'master'.


* ah/doc-filter-branch-export-env (2017-05-29) 1 commit
  (merged to 'next' on 2017-05-30 at a62168bf77)
 + doc: filter-branch does not require re-export of vars

 Docfix.

 Will merge to 'master'.


* jk/connect-symref-info-leak-fix (2017-05-26) 1 commit
  (merged to 'next' on 2017-05-30 at d8b75d2dd9)
 + connect.c: fix leak in parse_one_symref_info()

 Leakfix.

 Will merge to 'master'.


* jk/pathspec-magic-disambiguation (2017-05-29) 6 commits
 - verify_filename(): flip order of checks
 - verify_filename(): treat ":(magic)" as a pathspec
 - check_filename(): handle ":^" path magic
 - check_filename(): use skip_prefix
 - check_filename(): refactor ":/" handling
 - t4208: add check for ":/" without matching file

 The convention for a command line is to follow "git cmdname
 --options" with revisions followed by an optional "--"
 disambiguator and then finally pathspecs.  When "--" is not there,
 we make sure early ones are all interpretable as revs (and do not
 look like paths) and later ones are the other way around.  A
 pathspec with "magic" (e.g. ":/p/a/t/h" that matches p/a/t/h from
 the top-level of the working tree, no matter what subdirectory you
 are working from) are conservatively judged as "not a path", which
 required disambiguation more often.  The command line parser
 learned to say "it's a pathspec" a bit more often when the syntax
 looks like so.


* sd/t3200-typofix (2017-05-29) 1 commit
  (merged to 'next' on 2017-05-30 at 784e5e73f8)
 + branch test: fix invalid config key access

 Test fix.

 Will merge to 'master'.


* mh/packed-ref-store-prep (2017-05-24) 26 commits
  (merged to 'next' on 2017-05-29 at e4f5e06b4c)
 + cache_ref_iterator_begin(): avoid priming unneeded directories
 + ref-filter: limit traversal to prefix
 + create_ref_entry(): remove `check_name` option
 + refs_ref_iterator_begin(): handle `GIT_REF_PARANOIA`
 + read_packed_refs(): report unexpected fopen() failures
 + read_packed_refs(): do more of the work of reading packed refs
 + get_packed_ref_cache(): assume "packed-refs" won't change while locked
 + should_pack_ref(): new function, extracted from `files_pack_refs()`
 + ref_update_reject_duplicates(): add a sanity check
 + ref_update_reject_duplicates(): use `size_t` rather than `int`
 + ref_update_reject_duplicates(): expose function to whole refs module
 + ref_transaction_prepare(): new optional step for reference updates
 + ref_transaction_commit(): check for valid `transaction->state`
 + files_transaction_cleanup(): new helper function
 + files_ref_store: put the packed files lock directly in this struct
 + files-backend: move `lock` member to `files_ref_store`
 + lockfile: add a new method, is_lock_file_locked()
 + ref_store: take a `msg` parameter when deleting references
 + refs: use `size_t` indexes when iterating over ref transaction updates
 + refs_ref_iterator_begin(): don't check prefixes redundantly
 + prefix_ref_iterator: don't trim too much
 + files-backend: use `die("BUG: ...")`, not `die("internal error: ...")`
 + ref_iterator_begin_fn(): fix docstring
 + refs.h: clarify docstring for the ref_transaction_update()-related fns
 + t3600: clean up permissions test properly
 + Merge branch 'bc/object-id'

 The implementation of "ref" API around the "packed refs" have been
 cleaned up, in preparation for further changes.

 Will merge to 'master'.


* ab/sha1dc (2017-05-22) 2 commits
 - sha1collisiondetection: automatically enable when submodule is populated
 - sha1dc: optionally use sha1collisiondetection as a submodule
 (this branch uses ab/sha1dc-maint.)

 The "collission-detecting" implementation of SHA-1 hash we borrowed
 from is replaced by directly binding the upstream project as our
 submodule.

 Will keep in 'pu' for a few CI cycles.
 Impact to the various build and release infrastructure of using
 submodule is not yet fully known, but this lets us dip our toes.


* bp/fsmonitor (2017-06-02) 6 commits
 - fsmonitor: add a sample query-fsmonitor hook script for Watchman
 - fsmonitor: add documentation for the fsmonitor extension
 - fsmonitor: add test cases for fsmonitor extension
 - fsmonitor: teach git to optionally utilize a file system monitor to speed up detecting new or changed files.
 - dir: make lookup_untracked() available outside of dir.c
 - bswap: add 64 bit endianness helper get_be64

 We learned to talk to watchman to speed up "git status".

 Waiting for discussion to settle.
 cf. <20170601155105.28356-1-benpeart@microsoft.com>


* sb/diff-color-move (2017-06-01) 17 commits
 - diff.c: color moved lines differently
 - diff: buffer all output if asked to
 - diff.c: emit_line includes whitespace highlighting
 - diff.c: convert diff_summary to use emit_line_*
 - diff.c: convert diff_flush to use emit_line_*
 - diff.c: convert word diffing to use emit_line_*
 - diff.c: convert show_stats to use emit_line_*
 - diff.c: convert emit_binary_diff_body to use emit_line_*
 - submodule.c: convert show_submodule_summary to use emit_line_fmt
 - diff.c: convert emit_rewrite_lines to use emit_line_*
 - diff.c: convert emit_rewrite_diff to use emit_line_*
 - diff.c: convert builtin_diff to use emit_line_*
 - diff.c: convert fn_out_consume to use emit_line
 - diff: introduce more flexible emit function
 - diff.c: factor out diff_flush_patch_all_file_pairs
 - diff: move line ending check into emit_hunk_header
 - diff: readability fix

 "git diff" has been taught to optionally paint new lines that are
 the same as deleted lines elsewhere differently from genuinely new
 lines.


* xz/send-email-batch-size (2017-05-23) 1 commit
 - send-email: --batch-size to work around some SMTP server limit

 "git send-email" learned to overcome some SMTP server limitation
 that does not allow many pieces of e-mails to be sent over a single
 session.

 Waiting for response.
 cf. <CACBZZX5GYV50rjg9X602JHqFPaoofH9TwDf_-r_MDu8-rmNV6Q@mail.gmail.com>


* js/blame-lib (2017-05-25) 29 commits
  (merged to 'next' on 2017-05-30 at b4678b36a7)
 + blame: move entry prepend to libgit
 + blame: move scoreboard setup to libgit
 + blame: move scoreboard-related methods to libgit
 + blame: move fake-commit-related methods to libgit
 + blame: move origin-related methods to libgit
 + blame: move core structures to header
 + blame: create entry prepend function
 + blame: create scoreboard setup function
 + blame: create scoreboard init function
 + blame: rework methods that determine 'final' commit
 + blame: wrap blame_sort and compare_blame_final
 + blame: move progress updates to a scoreboard callback
 + blame: make sanity_check use a callback in scoreboard
 + blame: move no_whole_file_rename flag to scoreboard
 + blame: move xdl_opts flags to scoreboard
 + blame: move show_root flag to scoreboard
 + blame: move reverse flag to scoreboard
 + blame: move contents_from to scoreboard
 + blame: move copy/move thresholds to scoreboard
 + blame: move stat counters to scoreboard
 + blame: rename nth_line function
 + blame: rename ent_score function
 + blame: rename coalesce function
 + blame: rename origin-related functions
 + blame: rename scoreboard structure to blame_scoreboard
 + blame: rename origin structure to blame_origin
 + blame: remove unused parameters
 + blame: move textconv_object with related functions
 + blame: remove unneeded dependency on blob.h

 The internal logic used in "git blame" has been libified to make it
 easier to use by cgit.

 Will merge to 'master'.


* sg/clone-refspec-from-command-line-config (2017-06-01) 2 commits
 - Documentation/clone: document ignored configuration variables
 - clone: respect additional configured fetch refspecs during initial fetch

 "git clone -c var=val" is a way to set configuration variables in
 the resulting repository, but it is more useful to also make these
 variables take effect while the initial clone is happening,
 e.g. these configuration variables could be fetch refspecs.

 Are we happy with these two?


* jh/close-index-before-stat (2017-04-28) 1 commit
  (merged to 'next' on 2017-05-16 at 0c0372eb02)
 + read-cache: close index.lock in do_write_index

 Originally merged to 'next' on 2017-04-30

 The timestamp of the index file is now taken after the file is
 closed, to help Windows, on which a stale timestamp is reported by
 fstat() on a file that is opened for writing and data was written
 but not yet closed.

 Will merge to 'master'.


* mb/diff-default-to-indent-heuristics (2017-05-09) 4 commits
  (merged to 'next' on 2017-05-29 at 7645575e21)
 + add--interactive: drop diff.indentHeuristic handling
 + diff: enable indent heuristic by default
 + diff: have the diff-* builtins configure diff before initializing revisions
 + diff: make the indent heuristic part of diff's basic configuration

 Make the "indent" heuristics the default in "diff" and diff.indentHeuristics
 configuration variable an escape hatch for those who do no want it.

 Will merge to 'master'.
 Looks like there may be follow-on work possible, but the topic
 itself is in good order.
 cf. <20170509033258.q7auj5p5lxs4tggd@sigill.intra.peff.net>


* nd/fopen-errors (2017-06-02) 13 commits
 - mingw_fopen: report ENOENT for invalid file names
 - mingw: verify that paths are not mistaken for remote nicknames
 - log: fix memory leak in open_next_file()
 - rerere.c: move error_errno() closer to the source system call
 - print errno when reporting a system call error
 - wrapper.c: make warn_on_inaccessible() static
 - wrapper.c: add and use fopen_or_warn()
 - wrapper.c: add and use warn_on_fopen_errors()
 - config.mak.uname: set FREAD_READS_DIRECTORIES for Darwin, too
 - config.mak.uname: set FREAD_READS_DIRECTORIES for Linux and FreeBSD
 - clone: use xfopen() instead of fopen()
 - use xfopen() in more places
 - git_fopen: fix a sparse 'not declared' warning

 We often try to open a file for reading whose existence is
 optional, and silently ignore errors from open/fopen; report such
 errors if they are not due to missing files.

 Will merge to 'next'.


* js/rebase-i-final (2017-05-02) 10 commits
 - rebase -i: rearrange fixup/squash lines using the rebase--helper
 - t3415: test fixup with wrapped oneline
 - rebase -i: skip unnecessary picks using the rebase--helper
 - rebase -i: check for missing commits in the rebase--helper
 - t3404: relax rebase.missingCommitsCheck tests
 - rebase -i: also expand/collapse the SHA-1s via the rebase--helper
 - rebase -i: do not invent onelines when expanding/collapsing SHA-1s
 - rebase -i: remove useless indentation
 - rebase -i: generate the script via rebase--helper
 - t3415: verify that an empty instructionFormat is handled as before

 The final batch to "git rebase -i" updates to move more code from
 the shell script to C.

 Undecided; expecting a reroll.
 This is at its v4.
 cf. <cover.1493414945.git.johannes.schindelin@gmx.de>


* nd/prune-in-worktree (2017-04-24) 12 commits
 - rev-list: expose and document --single-worktree
 - revision.c: --reflog add HEAD reflog from all worktrees
 - files-backend: make reflog iterator go through per-worktree reflog
 - revision.c: --all adds HEAD from all worktrees
 - refs: remove dead for_each_*_submodule()
 - revision.c: use refs_for_each*() instead of for_each_*_submodule()
 - refs: add refs_head_ref()
 - refs: move submodule slash stripping code to get_submodule_ref_store
 - refs.c: refactor get_submodule_ref_store(), share common free block
 - revision.c: --indexed-objects add objects from all worktrees
 - revision.c: refactor add_index_objects_to_pending()
 - revision.h: new flag in struct rev_info wrt. worktree-related refs

 "git gc" and friends when multiple worktrees are used off of a
 single repository did not consider the index and per-worktree refs
 of other worktrees as the root for reachability traversal, making
 objects that are in use only in other worktrees to be subject to
 garbage collection.

 Expecting a reroll.
 Has been waiting for nd/worktree-kill-parse-ref to settle.
 cf. <CACsJy8ADCVBiLoPg_Tz0L6CMdh_eFmK4RYzfQ-PmUgBK7w9e=A@mail.gmail.com>

^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (Jun 2017, #01; Thu, 1)
@ 2017-06-01  7:44  3% Junio C Hamano
  0 siblings, 0 replies; 25+ results
From: Junio C Hamano @ 2017-06-01  7:44 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.  The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.

A bit more topics are now in 'master'.  We have some more fixes that
should be merged down soonish.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[Graduated to "master"]

* dk/send-email-avoid-net-smtp-ssl-when-able (2017-05-20) 1 commit
  (merged to 'next' on 2017-05-23 at fc59b8a1d4)
 + send-email: Net::SMTP::SSL is obsolete, use only when necessary

 "git send-email" now uses Net::SMTP::SSL, which is obsolete, only
 when needed.  Recent versions of Net::SMTP can do TLS natively.

 This is somewhat broken; a fix will be merged to 'master' shortly.


* ab/conditional-config-with-symlinks (2017-05-17) 1 commit
  (merged to 'next' on 2017-05-23 at 6162222c2e)
 + config: match both symlink & realpath versions in IncludeIf.gitdir:*

 The recently introduced "[includeIf "gitdir:$dir"] path=..."
 mechansim has further been taught to take symlinks into account.
 The directory "$dir" specified in "gitdir:$dir" may be a symlink to
 a real location, not something that $(getcwd) may return.  In such
 a case, a realpath of "$dir" is compared with the real path of the
 current repository to determine if the contents from the named path
 should be included.


* ab/perf-wildmatch (2017-05-12) 2 commits
  (merged to 'next' on 2017-05-23 at 0adb7dac31)
 + perf: add test showing exponential growth in path globbing
 + perf: add function to setup a fresh test repo

 Add perf-test for wildmatch.


* bp/sub-process-convert-filter (2017-05-15) 11 commits
  (merged to 'next' on 2017-05-23 at 89f5420a82)
 + convert: update subprocess_read_status() to not die on EOF
 + sub-process: move sub-process functions into separate files
 + convert: rename reusable sub-process functions
 + convert: update generic functions to only use generic data structures
 + convert: separate generic structures and variables from the filter specific ones
 + convert: split start_multi_file_filter() into two separate functions
 + pkt-line: annotate packet_writel with LAST_ARG_MUST_BE_NULL
 + convert: move packet_write_line() into pkt-line as packet_writel()
 + pkt-line: add packet_read_line_gently()
 + pkt-line: fix packet_read_line() to handle len < 0 errors
 + convert: remove erroneous tests for errno == EPIPE

 Code from "conversion using external process" codepath has been
 extracted to a separate sub-process.[ch] module.


* bw/forking-and-threading (2017-05-15) 14 commits
  (merged to 'next' on 2017-05-23 at 79a6a59851)
 + usage.c: drop set_error_handle()
 + run-command: restrict PATH search to executable files
 + run-command: expose is_executable function
 + run-command: block signals between fork and execve
 + run-command: add note about forking and threading
 + run-command: handle dup2 and close errors in child
 + run-command: eliminate calls to error handling functions in child
 + run-command: don't die in child when duping /dev/null
 + run-command: prepare child environment before forking
 + string-list: add string_list_remove function
 + run-command: use the async-signal-safe execv instead of execvp
 + run-command: prepare command before forking
 + t0061: run_command executes scripts without a #! line
 + t5550: use write_script to generate post-update hook

 The "run-command" API implementation has been made more robust
 against dead-locking in a threaded environment.


* bw/pathspec-sans-the-index (2017-05-12) 6 commits
  (merged to 'next' on 2017-05-23 at 45c8ef3115)
 + pathspec: convert find_pathspecs_matching_against_index to take an index
 + pathspec: remove PATHSPEC_STRIP_SUBMODULE_SLASH_CHEAP
 + ls-files: prevent prune_cache from overeagerly pruning submodules
 + pathspec: remove PATHSPEC_STRIP_SUBMODULE_SLASH_EXPENSIVE flag
 + submodule: add die_in_unpopulated_submodule function
 + pathspec: provide a more descriptive die message

 Simplify parse_pathspec() codepath and stop it from looking at the
 default in-core index.


* dt/unpack-save-untracked-cache-extension (2017-05-20) 1 commit
  (merged to 'next' on 2017-05-23 at 3196d093d6)
 + unpack-trees: preserve index extensions

 When "git checkout", "git merge", etc. manipulates the in-core
 index, various pieces of information in the index extensions are
 discarded from the original state, as it is usually not the case
 that they are kept up-to-date and in-sync with the operation on the
 main index.  The untracked cache extension is copied across these
 operations now, which would speed up "git status" (as long as the
 cache is properly invalidated).


* jc/name-rev-lw-tag (2017-03-29) 2 commits
  (merged to 'next' on 2017-05-23 at 3f88b6d73c)
 + name-rev: favor describing with tags and use committer date to tiebreak
 + name-rev: refactor logic to see if a new candidate is a better name
 (this branch is used by mg/name-rev-debug.)

 "git describe --contains" penalized light-weight tags so much that
 they were almost never considered.  Instead, give them about the
 same chance to be considered as an annotated tag that is the same
 age as the underlying commit would.


* jc/skip-test-in-the-middle (2017-05-18) 2 commits
  (merged to 'next' on 2017-05-23 at 6c962b353b)
 + t5545: enhance test coverage when no http server is installed
 + test: allow skipping the remainder

 A recent update to t5545-push-options.sh started skipping all the
 tests in the script when a web server testing is disabled or
 unavailable, not just the ones that require a web server.  Non HTTP
 tests have been salvaged to always run in this script.


* jh/memihash-opt (2017-05-16) 5 commits
  (merged to 'next' on 2017-05-23 at 2f0293e8b8)
 + p0004: don't error out if test repo is too small
 + p0004: don't abort if multi-threaded is too slow
 + p0004: use test_perf
 + p0004: avoid using pipes
 + p0004: simplify calls of test-lazy-init-name-hash

 perf-test update.


* js/larger-timestamps (2017-05-20) 1 commit
  (merged to 'next' on 2017-05-23 at 16f7c9e677)
 + name-rev: change a "long" variable to timestamp_t

 A follow-up hotfix for a topic already in 'master'.


* jt/fetch-allow-tip-sha1-implicitly (2017-05-16) 1 commit
  (merged to 'next' on 2017-05-23 at 690ed987df)
 + fetch-pack: always allow fetching of literal SHA1s

 There is no good reason why "git fetch $there $sha1" should fail
 when the $sha1 names an object at the tip of an advertised ref,
 even when the other side hasn't enabled allowTipSHA1InWant.


* jt/send-email-validate-hook (2017-05-16) 1 commit
  (merged to 'next' on 2017-05-23 at 89848cb9ac)
 + send-email: support validate hook

 "git send-email" learned to run sendemail-validate hook to inspect
 and reject a message before sending it out.

--------------------------------------------------
[New Topics]

* dk/send-email-avoid-net-smtp-ssl-when-able (2017-06-01) 1 commit
  (merged to 'next' on 2017-06-01 at 3ff3ddfac7)
 + send-email: Net::SMTP::starttls was introduced in v2.34

 A hotfix to a topic in 'master'.

 Will merge to 'master'.


* ah/doc-rev-parse-short-default (2017-06-01) 1 commit
  (merged to 'next' on 2017-06-01 at f64fcc2a26)
 + doc: rewrite description for rev-parse --short

 Doc update.

 Will merge to 'master'.


* rf/completion-config-commit (2017-05-30) 1 commit
  (merged to 'next' on 2017-06-01 at cea32e0486)
 + completion: add completions for git config commit

 Completion update.

 Will merge to 'master'.


* ab/c-translators-comment-style (2017-05-31) 1 commit
  (merged to 'next' on 2017-06-01 at df7fb9199a)
 + C style: use standard style for "TRANSLATORS" comments

 Update the C style recommendation for notes for translators, as
 recent versions of gettext tools can work with our style of
 multi-line comments.

 Will merge to 'master'.


* jc/diff-log-help (2017-06-01) 1 commit
 - diff- and log- family: handle "git cmd -h" early
 (this branch is used by jc/wip-check-help-option.)

 The continuation of jk/consistent-h topic; the plumbing commands in
 the diff- and log- family were calling into the revision machinery
 without repository set-up upon "git $cmd -h", which is fixed.

 Will squeeze into jk/consistent-h topic.


* jk/consistent-h (2017-05-30) 7 commits
 - t0012: test "-h" with builtins
 - git: add hidden --list-builtins option
 - version: convert to parse-options
 - submodule--helper: show usage for "-h"
 - remote-{ext,fd}: print usage message on invalid arguments
 - upload-archive: handle "-h" option early
 - credential: handle invalid arguments earlier
 (this branch uses jk/unbreak-am-h.)

 "git $cmd -h" for builtin commands calls the implementation of the
 command (i.e. cmd_$cmd() function) without doing any repository
 set-up, and the commands that expect RUN_SETUP is done by the Git
 potty needs to be prepared to show the help text without barfing.


* jk/drop-free-refspecs (2017-06-01) 1 commit
  (merged to 'next' on 2017-06-01 at 8f455319fc)
 + remote: drop free_refspecs() function

 Code clean-up.

 Will merge to 'master'.


* jk/unbreak-am-h (2017-05-30) 1 commit
  (merged to 'next' on 2017-06-01 at ee2233d409)
 + am: handle "-h" argument earlier
 (this branch is used by jk/consistent-h.)

 "git am -h" triggered a BUG().

 Will merge to 'master'.


* jk/url-insteadof-config (2017-06-01) 1 commit
  (merged to 'next' on 2017-06-01 at e7ea6032c2)
 + docs/config: mention protocol implications of url.insteadOf

 The interaction of "url.*.insteadOf" and custom URL scheme's
 whitelisting is now documented better.

 Will merge to 'master'.


* pw/rebase-i-regression-fix (2017-06-01) 1 commit
 - rebase -i: add test for reflog message

 Just the first one of three? new tests that follows up a regression
 fix.

 Expecting a portable update.


* sb/submodule-blanket-recursive (2017-06-01) 9 commits
 - builtin/fetch.c: respect 'submodule.recurse' option
 - builtin/push.c: respect 'submodule.recurse' option
 - builtin/grep.c: respect 'submodule.recurse' option
 - Introduce 'submodule.recurse' option for worktree manipulators
 - submodule loading: separate code path for .gitmodules and config overlay
 - reset/checkout/read-tree: unify config callback for submodule recursion
 - submodule test invocation: only pass additional arguments
 - submodule recursing: do not write a config variable twice
 - Merge branch 'ab/grep-preparatory-cleanup' into sb/submodule-blanket-recursive
 (this branch uses ab/grep-preparatory-cleanup; is tangled with ab/pcre-v2.)

 Many commands learned to pay attention to submodule.recurse
 configuration.

 Will merge to 'next'.

 It is not known if a simple "yes/no" is sufficient in the longer
 term, and what should happen when --recurse-submodules option starts
 taking "recurse into them how?" parameter, though.


* tb/pull-ff-rebase-autostash (2017-06-01) 1 commit
  (merged to 'next' on 2017-06-01 at b5e676d57e)
 + pull: ff --rebase --autostash works in dirty repo

 "git pull --rebase --autostash" didn't auto-stash when the local history
 fast-forwards to the upstream.

 Will merge to 'master'.

--------------------------------------------------
[Stalled]

* mg/status-in-progress-info (2017-05-10) 2 commits
 - status --short --inprogress: spell it as --in-progress
 - status: show in-progress info for short status

 "git status" learns an option to report various operations
 (e.g. "merging") that the user is in the middle of.

 cf. <xmqqmvakcdqw.fsf@gitster.mtv.corp.google.com>


* mg/name-rev-debug (2017-03-31) 2 commits
 - describe: pass --debug down to name-rev
 - name-rev: provide debug output

 "git describe --debug --contains" did not add any meaningful
 information, even though without "--contains" it did.

 Will discard for now.
 cf. <c85bc2a1-56d8-8a02-6089-2b8cb3d39e99@grubix.eu>


* nd/worktree-move (2017-04-20) 6 commits
 - worktree remove: new command
 - worktree move: refuse to move worktrees with submodules
 - worktree move: accept destination as directory
 - worktree move: new command
 - worktree.c: add update_worktree_location()
 - worktree.c: add validate_worktree()

 "git worktree" learned move and remove subcommands.

 Expecting a reroll.
 cf. <20170420101024.7593-1-pclouds@gmail.com>
 cf. <20170421145916.mknekgqzhxffu7di@sigill.intra.peff.net>
 cf. <d0e81b1e-5869-299e-f462-4d43dc997bd1@ramsayjones.plus.com>


* ls/filter-process-delayed (2017-03-06) 1 commit
 - convert: add "status=delayed" to filter process protocol

 Expecting a reroll.
 cf. <04ECEBE5-CAC8-4344-B07A-6B7A7C795C94@gmail.com>


* sk/dash-is-previous (2017-03-01) 5 commits
 . revert.c: delegate handling of "-" shorthand to setup_revisions
 . sha1_name.c: teach get_sha1_1 "-" shorthand for "@{-1}"
 . revision.c: args starting with "-" might be a revision
 . revision.c: swap if/else blocks
 . revision.c: do not update argv with unknown option

 A dash "-" can be written to mean "the branch that was previously
 checked out" in more places.

 Ejected, as it seems that making -.. to mean @{-1}..HEAD etc. are
 going too far.

--------------------------------------------------
[Cooking]

* ab/pcre-v2 (2017-05-26) 7 commits
 - grep: add support for PCRE v2
 - grep: un-break building with PCRE < 8.20
 - grep: un-break building with PCRE < 8.32
 - grep: add support for the PCRE v1 JIT API
 - log: add -P as a synonym for --perl-regexp
 - grep: skip pthreads overhead when using one thread
 - grep: don't redundantly compile throwaway patterns under threading
 (this branch uses ab/grep-preparatory-cleanup; is tangled with sb/submodule-blanket-recursive.)

 Update "perl-compatible regular expression" support to enable JIT
 and also allow linking with the newer PCRE v2 library.

 Waiting for a fix-up.
 cf. <CACBZZX6YFKTLKxep2oW0_HrX+kNJ2PX5G4UCboB+4yosmLqr5g@mail.gmail.com>


* ab/ref-filter-no-contains (2017-05-23) 1 commit
  (merged to 'next' on 2017-05-29 at 5d39fd2961)
 + tag: duplicate mention of --contains should mention --no-contains

 Doc update to a recent topic.

 Will merge to 'master'.


* rs/mingw-path-lookup-simplify (2017-05-23) 1 commit
  (merged to 'next' on 2017-05-29 at 4365139a7f)
 + mingw: simplify PATH handling

 Code simplification.

 Will merge to 'master'.


* ab/sha1dc-maint (2017-05-22) 1 commit
  (merged to 'next' on 2017-05-30 at 9eb40bf912)
 + sha1dc: update from upstream
 (this branch is used by ab/sha1dc.)

 The "collision detecting" SHA-1 implementation shipped with 2.13
 was quite broken on some big-endian platforms and/or platforms that
 do not like unaligned fetches.  Update to the upstream code which
 has already fixed these issues.

 Will merge to 'master'.


* ab/t3070-test-dedup (2017-05-29) 1 commit
  (merged to 'next' on 2017-05-30 at 71eadec33b)
 + wildmatch test: remove redundant duplicate test

 Test cleanup.

 Will merge to 'master'.


* ah/doc-filter-branch-export-env (2017-05-29) 1 commit
  (merged to 'next' on 2017-05-30 at a62168bf77)
 + doc: filter-branch does not require re-export of vars

 Docfix.

 Will merge to 'master'.


* jk/connect-symref-info-leak-fix (2017-05-26) 1 commit
  (merged to 'next' on 2017-05-30 at d8b75d2dd9)
 + connect.c: fix leak in parse_one_symref_info()

 Leakfix.

 Will merge to 'master'.


* jk/pathspec-magic-disambiguation (2017-05-29) 6 commits
 - verify_filename(): flip order of checks
 - verify_filename(): treat ":(magic)" as a pathspec
 - check_filename(): handle ":^" path magic
 - check_filename(): use skip_prefix
 - check_filename(): refactor ":/" handling
 - t4208: add check for ":/" without matching file

 The convention for a command line is to follow "git cmdname
 --options" with revisions followed by an optional "--"
 disambiguator and then finally pathspecs.  When "--" is not there,
 we make sure early ones are all interpretable as revs (and do not
 look like paths) and later ones are the other way around.  A
 pathspec with "magic" (e.g. ":/p/a/t/h" that matches p/a/t/h from
 the top-level of the working tree, no matter what subdirectory you
 are working from) are conservatively judged as "not a path", which
 required disambiguation more often.  The command line parser
 learned to say "it's a pathspec" a bit more often when the syntax
 looks like so.


* sd/t3200-typofix (2017-05-29) 1 commit
  (merged to 'next' on 2017-05-30 at 784e5e73f8)
 + branch test: fix invalid config key access

 Test fix.

 Will merge to 'master'.


* ah/doc-interpret-trailers-ifexists (2017-05-23) 1 commit
  (merged to 'next' on 2017-05-29 at cb353c1d21)
 + Documentation: fix reference to ifExists for interpret-trailers

 Documentation fix.

 Will merge to 'master'.


* ah/doc-pretty-format-fix (2017-05-23) 1 commit
  (merged to 'next' on 2017-05-29 at 6e3e8fd80d)
 + Documentation: fix formatting typo in pretty-formats.txt

 Documentation fix.

 Will merge to 'master'.


* sb/t5531-update-desc (2017-05-23) 1 commit
  (merged to 'next' on 2017-05-29 at 67a91db3cf)
 + t5531: fix test description

 The description strings for a few tests have been updated.

 Will merge to 'master'.


* mh/packed-ref-store-prep (2017-05-24) 26 commits
  (merged to 'next' on 2017-05-29 at e4f5e06b4c)
 + cache_ref_iterator_begin(): avoid priming unneeded directories
 + ref-filter: limit traversal to prefix
 + create_ref_entry(): remove `check_name` option
 + refs_ref_iterator_begin(): handle `GIT_REF_PARANOIA`
 + read_packed_refs(): report unexpected fopen() failures
 + read_packed_refs(): do more of the work of reading packed refs
 + get_packed_ref_cache(): assume "packed-refs" won't change while locked
 + should_pack_ref(): new function, extracted from `files_pack_refs()`
 + ref_update_reject_duplicates(): add a sanity check
 + ref_update_reject_duplicates(): use `size_t` rather than `int`
 + ref_update_reject_duplicates(): expose function to whole refs module
 + ref_transaction_prepare(): new optional step for reference updates
 + ref_transaction_commit(): check for valid `transaction->state`
 + files_transaction_cleanup(): new helper function
 + files_ref_store: put the packed files lock directly in this struct
 + files-backend: move `lock` member to `files_ref_store`
 + lockfile: add a new method, is_lock_file_locked()
 + ref_store: take a `msg` parameter when deleting references
 + refs: use `size_t` indexes when iterating over ref transaction updates
 + refs_ref_iterator_begin(): don't check prefixes redundantly
 + prefix_ref_iterator: don't trim too much
 + files-backend: use `die("BUG: ...")`, not `die("internal error: ...")`
 + ref_iterator_begin_fn(): fix docstring
 + refs.h: clarify docstring for the ref_transaction_update()-related fns
 + t3600: clean up permissions test properly
 + Merge branch 'bc/object-id'

 The implementation of "ref" API around the "packed refs" have been
 cleaned up, in preparation for further changes.

 Will merge to 'master'.


* sl/clean-d-ignored-fix (2017-05-24) 6 commits
  (merged to 'next' on 2017-05-29 at 837c255ae8)
 + clean: teach clean -d to preserve ignored paths
 + dir: expose cmp_name() and check_contains()
 + dir: hide untracked contents of untracked dirs
 + dir: recurse into untracked dirs for ignored files
 + t7061: status --ignored should search untracked dirs
 + t7300: clean -d should skip dirs with ignored files

 "git clean -d" used to clean directories that has ignored files,
 even though the command should not lose ignored ones without "-x".
 "git status --ignored"  did not list ignored and untracked files
 without "-uall".  These have been corrected.

 Will merge to 'master'.


* ab/sha1dc (2017-05-22) 2 commits
 - sha1collisiondetection: automatically enable when submodule is populated
 - sha1dc: optionally use sha1collisiondetection as a submodule
 (this branch uses ab/sha1dc-maint.)

 The "collission-detecting" implementation of SHA-1 hash we borrowed
 from is replaced by directly binding the upstream project as our
 submodule.

 Will keep in 'pu' for a few CI cycles.
 Impact to the various build and release infrastructure of using
 submodule is not yet fully known, but this lets us dip our toes.


* bp/fsmonitor (2017-05-26) 6 commits
 - fsmonitor: add a sample query-fsmonitor hook script for Watchman
 - fsmonitor: add documentation for the fsmonitor extension.
 - fsmonitor: add test cases for fsmonitor extension
 - fsmonitor: teach git to optionally utilize a file system monitor to speed up detecting new or changed files.
 - dir: make lookup_untracked() available outside of dir.c
 - bswap: add 64 bit endianness helper get_be64


* jk/diff-blob (2017-05-24) 15 commits
  (merged to 'next' on 2017-05-29 at 5ecc979cc7)
 + diff: use blob path for blob/file diffs
 + diff: use pending "path" if it is available
 + diff: use the word "path" instead of "name" for blobs
 + diff: pass whole pending entry in blobinfo
 + handle_revision_arg: record paths for pending objects
 + handle_revision_arg: record modes for "a..b" endpoints
 + t4063: add tests of direct blob diffs
 + get_sha1_with_context: dynamically allocate oc->path
 + get_sha1_with_context: always initialize oc->symlink_path
 + sha1_name: consistently refer to object_context as "oc"
 + handle_revision_arg: add handle_dotdot() helper
 + handle_revision_arg: hoist ".." check out of range parsing
 + handle_revision_arg: stop using "dotdot" as a generic pointer
 + handle_revision_arg: simplify commit reference lookups
 + handle_revision_arg: reset "dotdot" consistently

 The result from "git diff" that compares two blobs, e.g. "git diff
 $commit1:$path $commit2:$path", used to be shown with the full
 object name as given on the command line, but it is more natural to
 use the $path in the output and use it to look up .gitattributes.

 Will merge to 'master'.


* js/bs-is-a-dir-sep-on-windows (2017-05-26) 2 commits
  (merged to 'next' on 2017-05-26 at 450b39f726)
 + Windows: do not treat a path with backslashes as a remote's nick name
 + mingw.h: permit arguments with side effects for is_dir_sep

 "foo\bar\baz" in "git fetch foo\bar\baz", even though there is no
 slashes in it, cannot be a nickname for a remote on Windows, as
 that is likely to be a pathname on a local filesystem.

 Will merge to 'master'.


* sb/diff-color-move (2017-06-01) 17 commits
 - diff.c: color moved lines differently
 - diff: buffer all output if asked to
 - diff.c: emit_line includes whitespace highlighting
 - diff.c: convert diff_summary to use emit_line_*
 - diff.c: convert diff_flush to use emit_line_*
 - diff.c: convert word diffing to use emit_line_*
 - diff.c: convert show_stats to use emit_line_*
 - diff.c: convert emit_binary_diff_body to use emit_line_*
 - submodule.c: convert show_submodule_summary to use emit_line_fmt
 - diff.c: convert emit_rewrite_lines to use emit_line_*
 - diff.c: convert emit_rewrite_diff to use emit_line_*
 - diff.c: convert builtin_diff to use emit_line_*
 - diff.c: convert fn_out_consume to use emit_line
 - diff: introduce more flexible emit function
 - diff.c: factor out diff_flush_patch_all_file_pairs
 - diff: move line ending check into emit_hunk_header
 - diff: readability fix

 "git diff" has been taught to optionally paint new lines that are
 the same as deleted lines elsewhere differently from genuinely new
 lines.


* xz/send-email-batch-size (2017-05-23) 1 commit
 - send-email: --batch-size to work around some SMTP server limit

 "git send-email" learned to overcome some SMTP server limitation
 that does not allow many pieces of e-mails to be sent over a single
 session.

 Waiting for response.
 cf. <CACBZZX5GYV50rjg9X602JHqFPaoofH9TwDf_-r_MDu8-rmNV6Q@mail.gmail.com>


* js/blame-lib (2017-05-25) 29 commits
  (merged to 'next' on 2017-05-30 at b4678b36a7)
 + blame: move entry prepend to libgit
 + blame: move scoreboard setup to libgit
 + blame: move scoreboard-related methods to libgit
 + blame: move fake-commit-related methods to libgit
 + blame: move origin-related methods to libgit
 + blame: move core structures to header
 + blame: create entry prepend function
 + blame: create scoreboard setup function
 + blame: create scoreboard init function
 + blame: rework methods that determine 'final' commit
 + blame: wrap blame_sort and compare_blame_final
 + blame: move progress updates to a scoreboard callback
 + blame: make sanity_check use a callback in scoreboard
 + blame: move no_whole_file_rename flag to scoreboard
 + blame: move xdl_opts flags to scoreboard
 + blame: move show_root flag to scoreboard
 + blame: move reverse flag to scoreboard
 + blame: move contents_from to scoreboard
 + blame: move copy/move thresholds to scoreboard
 + blame: move stat counters to scoreboard
 + blame: rename nth_line function
 + blame: rename ent_score function
 + blame: rename coalesce function
 + blame: rename origin-related functions
 + blame: rename scoreboard structure to blame_scoreboard
 + blame: rename origin structure to blame_origin
 + blame: remove unused parameters
 + blame: move textconv_object with related functions
 + blame: remove unneeded dependency on blob.h

 The internal logic used in "git blame" has been libified to make it
 easier to use by cgit.

 Will merge to 'master'.


* ab/grep-preparatory-cleanup (2017-05-26) 31 commits
  (merged to 'next' on 2017-05-29 at f2cfa89d3e)
 + grep: assert that threading is enabled when calling grep_{lock,unlock}
 + grep: given --threads with NO_PTHREADS=YesPlease, warn
 + pack-objects: fix buggy warning about threads
 + pack-objects & index-pack: add test for --threads warning
 + test-lib: add a PTHREADS prerequisite
 + grep: move is_fixed() earlier to avoid forward declaration
 + grep: change internal *pcre* variable & function names to be *pcre1*
 + grep: change the internal PCRE macro names to be PCRE1
 + grep: factor test for \0 in grep patterns into a function
 + grep: remove redundant regflags assignments
 + grep: catch a missing enum in switch statement
 + perf: add a comparison test of log --grep regex engines with -F
 + perf: add a comparison test of log --grep regex engines
 + perf: add a comparison test of grep regex engines with -F
 + perf: add a comparison test of grep regex engines
 + perf: emit progress output when unpacking & building
 + perf: add a GIT_PERF_MAKE_COMMAND for when *_MAKE_OPTS won't do
 + grep: add tests to fix blind spots with \0 patterns
 + grep: prepare for testing binary regexes containing rx metacharacters
 + grep: add a test helper function for less verbose -f \0 tests
 + grep: add tests for grep pattern types being passed to submodules
 + grep: amend submodule recursion test for regex engine testing
 + grep: add tests for --threads=N and grep.threads
 + grep: change non-ASCII -i test to stop using --debug
 + grep: add a test for backreferences in PCRE patterns
 + grep: add a test asserting that --perl-regexp dies when !PCRE
 + log: make --regexp-ignore-case work with --perl-regexp
 + log: add exhaustive tests for pattern style options & config
 + test-lib: rename the LIBPCRE prerequisite to PCRE
 + grep & rev-list doc: stop promising libpcre for --perl-regexp
 + Makefile & configure: reword inaccurate comment about PCRE
 (this branch is used by ab/pcre-v2 and sb/submodule-blanket-recursive.)

 The internal implementation of "git grep" has seen some clean-up.

 Will merge to 'master'.


* sg/clone-refspec-from-command-line-config (2017-06-01) 2 commits
 - Documentation/clone: document ignored configuration variables
 - clone: respect additional configured fetch refspecs during initial fetch

 "git clone -c var=val" is a way to set configuration variables in
 the resulting repository, but it is more useful to also make these
 variables take effect while the initial clone is happening,
 e.g. these configuration variables could be fetch refspecs.

 Are we happy with these two?


* jh/close-index-before-stat (2017-04-28) 1 commit
  (merged to 'next' on 2017-05-16 at 0c0372eb02)
 + read-cache: close index.lock in do_write_index

 Originally merged to 'next' on 2017-04-30

 The timestamp of the index file is now taken after the file is
 closed, to help Windows, on which a stale timestamp is reported by
 fstat() on a file that is opened for writing and data was written
 but not yet closed.

 Will cook in 'next'.


* mb/diff-default-to-indent-heuristics (2017-05-09) 4 commits
  (merged to 'next' on 2017-05-29 at 7645575e21)
 + add--interactive: drop diff.indentHeuristic handling
 + diff: enable indent heuristic by default
 + diff: have the diff-* builtins configure diff before initializing revisions
 + diff: make the indent heuristic part of diff's basic configuration

 Make the "indent" heuristics the default in "diff" and diff.indentHeuristics
 configuration variable an escape hatch for those who do no want it.

 Will merge to 'master'.
 Looks like there may be follow-on work possible, but the topic
 itself is in good order.
 cf. <20170509033258.q7auj5p5lxs4tggd@sigill.intra.peff.net>


* nd/fopen-errors (2017-05-30) 14 commits
 - mingw_fopen: report ENOENT for invalid file names
 - SQUASH??? use test_i18ngrep and add it at the end
 - mingw: verify that paths are not mistaken for remote nicknames
 - log: fix memory leak in open_next_file()
 - rerere.c: move error_errno() closer to the source system call
 - print errno when reporting a system call error
 - wrapper.c: make warn_on_inaccessible() static
 - wrapper.c: add and use fopen_or_warn()
 - wrapper.c: add and use warn_on_fopen_errors()
 - config.mak.uname: set FREAD_READS_DIRECTORIES for Darwin, too
 - config.mak.uname: set FREAD_READS_DIRECTORIES for Linux and FreeBSD
 - clone: use xfopen() instead of fopen()
 - use xfopen() in more places
 - git_fopen: fix a sparse 'not declared' warning

 We often try to open a file for reading whose existence is
 optional, and silently ignore errors from open/fopen; report such
 errors if they are not due to missing files.

 Waiting for an Ack to the SQUASH fix or a reroll of the tip commits.


* js/rebase-i-final (2017-05-02) 10 commits
 - rebase -i: rearrange fixup/squash lines using the rebase--helper
 - t3415: test fixup with wrapped oneline
 - rebase -i: skip unnecessary picks using the rebase--helper
 - rebase -i: check for missing commits in the rebase--helper
 - t3404: relax rebase.missingCommitsCheck tests
 - rebase -i: also expand/collapse the SHA-1s via the rebase--helper
 - rebase -i: do not invent onelines when expanding/collapsing SHA-1s
 - rebase -i: remove useless indentation
 - rebase -i: generate the script via rebase--helper
 - t3415: verify that an empty instructionFormat is handled as before

 The final batch to "git rebase -i" updates to move more code from
 the shell script to C.

 Undecided; expecting a reroll.
 This is at its v4.
 cf. <cover.1493414945.git.johannes.schindelin@gmx.de>


* nd/prune-in-worktree (2017-04-24) 12 commits
 - rev-list: expose and document --single-worktree
 - revision.c: --reflog add HEAD reflog from all worktrees
 - files-backend: make reflog iterator go through per-worktree reflog
 - revision.c: --all adds HEAD from all worktrees
 - refs: remove dead for_each_*_submodule()
 - revision.c: use refs_for_each*() instead of for_each_*_submodule()
 - refs: add refs_head_ref()
 - refs: move submodule slash stripping code to get_submodule_ref_store
 - refs.c: refactor get_submodule_ref_store(), share common free block
 - revision.c: --indexed-objects add objects from all worktrees
 - revision.c: refactor add_index_objects_to_pending()
 - revision.h: new flag in struct rev_info wrt. worktree-related refs

 "git gc" and friends when multiple worktrees are used off of a
 single repository did not consider the index and per-worktree refs
 of other worktrees as the root for reachability traversal, making
 objects that are in use only in other worktrees to be subject to
 garbage collection.

 Expecting a reroll.
 Has been waiting for nd/worktree-kill-parse-ref to settle.
 cf. <CACsJy8ADCVBiLoPg_Tz0L6CMdh_eFmK4RYzfQ-PmUgBK7w9e=A@mail.gmail.com>

^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (May 2017, #08; Mon, 29)
@ 2017-05-29  6:23  4% Junio C Hamano
  0 siblings, 0 replies; 25+ results
From: Junio C Hamano @ 2017-05-29  6:23 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.  The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.

A bit more topics are now in 'master'.  One unfortunate thing is
that the SHA1 breakage in 2.13 for big-endian platforms were lost in
the noise with excitement felt by some subset of contributors with
the possible use of submodules.  The first step in the series is
neutral to the excitement, and should be fast-tracked down to
'maint' soonish.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[Graduated to "master"]

* bc/object-id (2017-05-08) 53 commits
  (merged to 'next' on 2017-05-20 at e7372733fb)
 + object: convert parse_object* to take struct object_id
 + tree: convert parse_tree_indirect to struct object_id
 + sequencer: convert do_recursive_merge to struct object_id
 + diff-lib: convert do_diff_cache to struct object_id
 + builtin/ls-tree: convert to struct object_id
 + merge: convert checkout_fast_forward to struct object_id
 + sequencer: convert fast_forward_to to struct object_id
 + builtin/ls-files: convert overlay_tree_on_cache to object_id
 + builtin/read-tree: convert to struct object_id
 + sha1_name: convert internals of peel_onion to object_id
 + upload-pack: convert remaining parse_object callers to object_id
 + revision: convert remaining parse_object callers to object_id
 + revision: rename add_pending_sha1 to add_pending_oid
 + http-push: convert process_ls_object and descendants to object_id
 + refs/files-backend: convert many internals to struct object_id
 + refs: convert struct ref_update to use struct object_id
 + ref-filter: convert some static functions to struct object_id
 + Convert struct ref_array_item to struct object_id
 + Convert the verify_pack callback to struct object_id
 + Convert lookup_tag to struct object_id
 + log-tree: convert to struct object_id
 + Convert lookup_tree to struct object_id
 + builtin/reflog: convert tree_is_complete to take struct object_id
 + tree: convert read_tree_1 to use struct object_id internally
 + Convert lookup_blob to struct object_id
 + Convert remaining callers of lookup_blob to object_id
 + builtin/unpack-objects: convert to struct object_id
 + pack: convert struct pack_idx_entry to struct object_id
 + Convert lookup_commit* to struct object_id
 + Convert remaining callers of lookup_commit_reference* to object_id
 + builtin/tag: convert to struct object_id
 + sequencer: convert some functions to struct object_id
 + shallow: convert shallow registration functions to object_id
 + revision: convert prepare_show_merge to struct object_id
 + notes-utils: convert internals to struct object_id
 + http-push: convert some static functions to struct object_id
 + tag: convert parse_tag_buffer to struct object_id
 + builtin/verify-commit: convert to struct object_id
 + reflog_expire: convert to struct object_id
 + parse-options-cb: convert to struct object_id
 + notes-cache: convert to struct object_id
 + submodule: convert merge_submodule to use struct object_id
 + fast-import: convert to struct object_id
 + fast-import: convert internal structs to struct object_id
 + builtin/rev-parse: convert to struct object_id
 + builtin/blame: convert static function to struct object_id
 + branch: convert to struct object_id
 + bundle: convert to struct object_id
 + builtin/prune: convert to struct object_id
 + builtin/name-rev: convert to struct object_id
 + Convert struct cache_tree to use struct object_id
 + Clean up outstanding object_id transforms.
 + fetch-pack: convert to struct object_id
 (this branch is used by mh/packed-ref-store-prep.)

 Conversion from uchar[20] to struct object_id continues.


* bm/interpret-trailers-cut-line-is-eom (2017-05-18) 1 commit
  (merged to 'next' on 2017-05-23 at 3e5ff08517)
 + interpret-trailers: honor the cut line

 "git interpret-trailers", when used as GIT_EDITOR for "git commit
 -v", looked for and appended to a trailer block at the very end,
 i.e. at the end of the "diff" output.  The command has been
 corrected to pay attention to the cut-mark line "commit -v" adds to
 the buffer---the real trailer block should appear just before it.


* bw/dir-c-stops-relying-on-the-index (2017-05-06) 14 commits
  (merged to 'next' on 2017-05-20 at 1f1b764ec8)
 + dir: convert fill_directory to take an index
 + dir: convert read_directory to take an index
 + dir: convert read_directory_recursive to take an index
 + dir: convert open_cached_dir to take an index
 + dir: convert is_excluded to take an index
 + dir: convert prep_exclude to take an index
 + dir: convert add_excludes to take an index
 + dir: convert is_excluded_from_list to take an index
 + dir: convert last_exclude_matching_from_list to take an index
 + dir: convert dir_add* to take an index
 + dir: convert get_dtype to take index
 + dir: convert directory_exists_in_index to take index
 + dir: convert read_skip_worktree_file_from_index to take an index
 + dir: stop using the index compatibility macros

 API update.


* ja/do-not-ask-needless-questions (2017-05-12) 3 commits
  (merged to 'next' on 2017-05-23 at 6b373cd892)
 + git-filter-branch: be more direct in an error message
 + read-tree -m: make error message for merging 0 trees less smart aleck
 + usability: don't ask questions if no reply is required

 Git sometimes gives an advice in a rhetorical question that does
 not require an answer, which can confuse new users and non native
 speakers.  Attempt to rephrase them.


* jc/read-tree-empty-with-m (2017-05-10) 1 commit
  (merged to 'next' on 2017-05-20 at 7e86815364)
 + read-tree: "read-tree -m --empty" does not make sense

 "git read-tree -m" (no tree-ish) gave a nonsense suggestion "use
 --empty if you want to clear the index".  With "-m", such a request
 will still fail anyway, as you'd need to name at least one tree-ish
 to be merged.


* jc/repack-threads (2017-04-27) 1 commit
  (merged to 'next' on 2017-05-20 at c1fd54a2a4)
 + repack: accept --threads=<n> and pass it down to pack-objects

 "git repack" learned to accept the --threads=<n> option and pass it
 to pack-objects.


* jk/alternate-ref-optim (2017-05-18) 1 commit
  (merged to 'next' on 2017-05-23 at 4b4b3ac463)
 + t5400: avoid concurrent writes into a trace file

 A test allowed both "git push" and "git receive-pack" on the other
 end write their traces into the same file.  This is OK on platforms
 that allows atomically appending to a file opened with O_APPEND,
 but on other platforms led to a mangled output, causing
 intermittent test failures.  This has been fixed by disabling
 traces from "receive-pack" in the test.


* jk/bug-to-abort (2017-05-22) 4 commits
  (merged to 'next' on 2017-05-22 at 20371eebb6)
 + usage: add NORETURN to BUG() function definitions
  (merged to 'next' on 2017-05-20 at db65acc882)
 + config: complain about --local outside of a git repo
 + setup_git_env: convert die("BUG") to BUG()
 + usage.c: add BUG() function

 Introduce the BUG() macro to improve die("BUG: ...").


* jk/diff-submodule-diff-inline (2017-05-08) 1 commit
  (merged to 'next' on 2017-05-20 at da7eb2626a)
 + diff: recurse into nested submodules for inline diff

 "git diff --submodule=diff" now recurses into nested submodules.


* jk/disable-pack-reuse-when-broken (2017-05-09) 2 commits
  (merged to 'next' on 2017-05-20 at 684e921273)
 + t5310: fix "; do" style
 + pack-objects: disable pack reuse for object-selection options

 "pack-objects" can stream a slice of an existing packfile out when
 the pack bitmap can tell that the reachable objects are all needed
 in the output, without inspecting individual objects.  This
 strategy however would not work well when "--local" and other
 options are in use, and need to be disabled.


* jk/doc-config-include (2017-05-12) 4 commits
  (merged to 'next' on 2017-05-23 at 4f60843265)
 + docs/config: consistify include.path examples
 + docs/config: avoid the term "expand" for includes
 + docs/config: give a relative includeIf example
 + docs/config: clarify include/includeIf relationship

 Clarify documentation for include.path and includeIf.<condition>.path
 configuration variables.


* jk/ignore-broken-tags-when-ignoring-missing-links (2017-05-20) 1 commit
  (merged to 'next' on 2017-05-23 at 977491e52a)
 + revision.c: ignore broken tags with ignore_missing_links

 Tag objects, which are not reachable from any ref, that point at
 missing objects were mishandled by "git gc" and friends (they
 should silently be ignored instead)


* jk/update-links-in-docs (2017-05-15) 1 commit
  (merged to 'next' on 2017-05-23 at 5b2df9fdbe)
 + doc: use https links to Wikipedia to avoid http redirects

 A few http:// links that are redirected to https:// in the
 documentation have been updated to https:// links.


* js/eol-on-ourselves (2017-05-10) 6 commits
  (merged to 'next' on 2017-05-20 at 8023c277d2)
 + t4051: mark supporting files as requiring LF-only line endings
 + Fix the remaining tests that failed with core.autocrlf=true
 + t3901: move supporting files into t/t3901/
 + completion: mark bash script as LF-only
 + git-new-workdir: mark script as LF-only
 + Fix build with core.autocrlf=true

 Make sure our tests would pass when the sources are checked out
 with "platform native" line ending convention by default on
 Windows.  Some "text" files out tests use and the test scripts
 themselves that are meant to be run with /bin/sh, ought to be
 checked out with eol=LF even on Windows.


* js/plug-leaks (2017-05-09) 26 commits
  (merged to 'next' on 2017-05-20 at fb136ea2dc)
 + checkout: fix memory leak
 + submodule_uses_worktrees(): plug memory leak
 + show_worktree(): plug memory leak
 + name-rev: avoid leaking memory in the `deref` case
 + remote: plug memory leak in match_explicit()
 + add_reflog_for_walk: avoid memory leak
 + shallow: avoid memory leak
 + line-log: avoid memory leak
 + receive-pack: plug memory leak in update()
 + fast-export: avoid leaking memory in handle_tag()
 + mktree: plug memory leaks reported by Coverity
 + pack-redundant: plug memory leak
 + setup_discovered_git_dir(): plug memory leak
 + setup_bare_git_dir(): help static analysis
 + split_commit_in_progress(): simplify & fix memory leak
 + checkout: fix memory leak
 + cat-file: fix memory leak
 + mailinfo & mailsplit: check for EOF while parsing
 + status: close file descriptor after reading git-rebase-todo
 + difftool: address a couple of resource/memory leaks
 + get_mail_commit_oid(): avoid resource leak
 + git_config_rename_section_in_file(): avoid resource leak
 + add_commit_patch_id(): avoid allocating memory unnecessarily
 + winansi: avoid buffer overrun
 + winansi: avoid use of uninitialized value
 + mingw: avoid memory leak when splitting PATH

 Fix memory leaks pointed out by Coverity (and people).


* km/log-showsignature-doc (2017-05-20) 1 commit
  (merged to 'next' on 2017-05-23 at f43ea11956)
 + config.txt: add an entry for log.showSignature

 Doc update.


* kn/ref-filter-branch-list (2017-05-20) 1 commit
  (merged to 'next' on 2017-05-23 at e0cc721af0)
 + ref-filter: resolve HEAD when parsing %(HEAD) atom

 "git for-each-ref --format=..." with %(HEAD) in the format used to
 resolve the HEAD symref as many times as it had processed refs,
 which was wasteful, and "git branch" shared the same problem.


* nd/split-index-unshare (2017-05-08) 2 commits
  (merged to 'next' on 2017-05-20 at 9048cdc2ce)
 + p3400: add perf tests for rebasing many changes
 + split-index: add and use unshare_split_index()

 Plug some leaks and updates internal API used to implement the
 split index feature to make it easier to avoid such a leak in the
 future.


* pw/rebase-i-regression-fix (2017-05-20) 3 commits
  (merged to 'next' on 2017-05-23 at 14676d0013)
 + rebase -i: add missing newline to end of message
 + rebase -i: silence stash apply
 + rebase -i: fix reflog message

 Regression fix to topic recently merged to 'master'.


* sb/checkout-recurse-submodules (2017-05-04) 3 commits
  (merged to 'next' on 2017-05-20 at f972b2069f)
 + submodule: properly recurse for read-tree and checkout
 + submodule: avoid auto-discovery in new working tree manipulator code
 + submodule_move_head: reuse child_process structure for futher commands

 "git checkout --recurse-submodules" did not quite work with a
 submodule that itself has submodules.


* sb/reset-recurse-submodules (2017-04-23) 4 commits
  (merged to 'next' on 2017-05-20 at 8adafdf1be)
 + builtin/reset: add --recurse-submodules switch
 + submodule.c: submodule_move_head works with broken submodules
 + submodule.c: uninitialized submodules are ignored in recursive commands
 + entry.c: submodule recursing: respect force flag correctly
 (this branch is used by sb/submodule-blanket-recursive.)

 "git reset" learned "--recurse-submodules" option.


* tg/stash-push-fixup (2017-05-17) 1 commit
  (merged to 'next' on 2017-05-23 at 338eb650f2)
 + completion: add git stash push

 The shell completion script (in contrib/) learned "git stash" has
 a new "push" subcommand.

--------------------------------------------------
[New Topics]

* ab/pcre-v2 (2017-05-26) 7 commits
 - grep: add support for PCRE v2
 - grep: un-break building with PCRE < 8.20
 - grep: un-break building with PCRE < 8.32
 - grep: add support for the PCRE v1 JIT API
 - log: add -P as a synonym for --perl-regexp
 - grep: skip pthreads overhead when using one thread
 - grep: don't redundantly compile throwaway patterns under threading
 (this branch uses ab/grep-preparatory-cleanup.)

 Update "perl-compatible regular expression" support to enable JIT
 and also allow linking with the newer PCRE v2 library.

 Will merge to 'next'.


* ab/ref-filter-no-contains (2017-05-23) 1 commit
  (merged to 'next' on 2017-05-29 at 5d39fd2961)
 + tag: duplicate mention of --contains should mention --no-contains

 Doc update to a recent topic.

 Will merge to 'master'.


* rs/mingw-path-lookup-simplify (2017-05-23) 1 commit
  (merged to 'next' on 2017-05-29 at 4365139a7f)
 + mingw: simplify PATH handling

 Code simplification.

 Will merge to 'master'.


* ab/sha1dc-maint (2017-05-22) 1 commit
 - sha1dc: update from upstream
 (this branch is used by ab/sha1dc.)

 The "collision detecting" SHA-1 implementation shipped with 2.13
 was quite broken on some big-endian platforms and/or platforms that
 do not like unaligned fetches.  Update to the upstream code which
 has already fixed these issues.

 Will merge to 'next'.


* ab/t3070-test-dedup (2017-05-29) 1 commit
 - wildmatch test: remove redundant duplicate test

 Test cleanup.

 Will merge to 'next'.


* ah/doc-filter-branch-export-env (2017-05-29) 1 commit
 - doc: filter-branch does not require re-export of vars

 Docfix.

 Will merge to 'next'.


* jk/connect-symref-info-leak-fix (2017-05-26) 1 commit
 - connect.c: fix leak in parse_one_symref_info()

 Leakfix.

 Will merge to 'next'.


* jk/pathspec-magic-disambiguation (2017-05-29) 6 commits
 - verify_filename(): flip order of checks
 - verify_filename(): treat ":(magic)" as a pathspec
 - check_filename(): handle ":^" path magic
 - check_filename(): use skip_prefix
 - check_filename(): refactor ":/" handling
 - t4208: add check for ":/" without matching file

 The convention for a command line is to follow "git cmdname
 --options" with revisions followed by an optional "--"
 disambiguator and then finally pathspecs.  When "--" is not there,
 we make sure early ones are all interpretable as revs (and do not
 look like paths) and later ones are the other way around.  A
 pathspec with "magic" (e.g. ":/p/a/t/h" that matches p/a/t/h from
 the top-level of the working tree, no matter what subdirectory you
 are working from) are conservatively judged as "not a path", which
 required disambiguation more often.  The command line parser
 learned to say "it's a pathspec" a bit more often when the syntax
 looks like so.


* sd/t3200-typofix (2017-05-29) 1 commit
 - branch test: fix invalid config key access

 Test fix.

 Will merge to 'next'.

--------------------------------------------------
[Stalled]

* mg/status-in-progress-info (2017-05-10) 2 commits
 - status --short --inprogress: spell it as --in-progress
 - status: show in-progress info for short status

 "git status" learns an option to report various operations
 (e.g. "merging") that the user is in the middle of.

 cf. <xmqqmvakcdqw.fsf@gitster.mtv.corp.google.com>


* mg/name-rev-debug (2017-03-31) 2 commits
 - describe: pass --debug down to name-rev
 - name-rev: provide debug output
 (this branch uses jc/name-rev-lw-tag.)

 "git describe --debug --contains" did not add any meaningful
 information, even though without "--contains" it did.

 Will discard for now.
 cf. <c85bc2a1-56d8-8a02-6089-2b8cb3d39e99@grubix.eu>


* nd/worktree-move (2017-04-20) 6 commits
 - worktree remove: new command
 - worktree move: refuse to move worktrees with submodules
 - worktree move: accept destination as directory
 - worktree move: new command
 - worktree.c: add update_worktree_location()
 - worktree.c: add validate_worktree()

 "git worktree" learned move and remove subcommands.

 Expecting a reroll.
 cf. <20170420101024.7593-1-pclouds@gmail.com>
 cf. <20170421145916.mknekgqzhxffu7di@sigill.intra.peff.net>
 cf. <d0e81b1e-5869-299e-f462-4d43dc997bd1@ramsayjones.plus.com>


* ls/filter-process-delayed (2017-03-06) 1 commit
 - convert: add "status=delayed" to filter process protocol

 Expecting a reroll.
 cf. <04ECEBE5-CAC8-4344-B07A-6B7A7C795C94@gmail.com>


* sk/dash-is-previous (2017-03-01) 5 commits
 - revert.c: delegate handling of "-" shorthand to setup_revisions
 - sha1_name.c: teach get_sha1_1 "-" shorthand for "@{-1}"
 - revision.c: args starting with "-" might be a revision
 - revision.c: swap if/else blocks
 - revision.c: do not update argv with unknown option

 A dash "-" can be written to mean "the branch that was previously
 checked out" in more places.

 Needs review.
 cf. <1488007487-12965-1-git-send-email-kannan.siddharth12@gmail.com>

--------------------------------------------------
[Cooking]

* ah/doc-interpret-trailers-ifexists (2017-05-23) 1 commit
  (merged to 'next' on 2017-05-29 at cb353c1d21)
 + Documentation: fix reference to ifExists for interpret-trailers

 Documentation fix.

 Will merge to 'master'.


* ah/doc-pretty-format-fix (2017-05-23) 1 commit
  (merged to 'next' on 2017-05-29 at 6e3e8fd80d)
 + Documentation: fix formatting typo in pretty-formats.txt

 Documentation fix.

 Will merge to 'master'.


* sb/t5531-update-desc (2017-05-23) 1 commit
  (merged to 'next' on 2017-05-29 at 67a91db3cf)
 + t5531: fix test description

 The description strings for a few tests have been updated.

 Will merge to 'master'.


* ab/conditional-config-with-symlinks (2017-05-17) 1 commit
  (merged to 'next' on 2017-05-23 at 6162222c2e)
 + config: match both symlink & realpath versions in IncludeIf.gitdir:*

 The recently introduced "[includeIf "gitdir:$dir"] path=..."
 mechansim has further been taught to take symlinks into account.
 The directory "$dir" specified in "gitdir:$dir" may be a symlink to
 a real location, not something that $(getcwd) may return.  In such
 a case, a realpath of "$dir" is compared with the real path of the
 current repository to determine if the contents from the named path
 should be included.

 Will merge to 'master'.


* jc/skip-test-in-the-middle (2017-05-18) 2 commits
  (merged to 'next' on 2017-05-23 at 6c962b353b)
 + t5545: enhance test coverage when no http server is installed
 + test: allow skipping the remainder

 A recent update to t5545-push-options.sh started skipping all the
 tests in the script when a web server testing is disabled or
 unavailable, not just the ones that require a web server.  Non HTTP
 tests have been salvaged to always run in this script.

 Will merge to 'master'.


* mh/packed-ref-store-prep (2017-05-24) 26 commits
  (merged to 'next' on 2017-05-29 at e4f5e06b4c)
 + cache_ref_iterator_begin(): avoid priming unneeded directories
 + ref-filter: limit traversal to prefix
 + create_ref_entry(): remove `check_name` option
 + refs_ref_iterator_begin(): handle `GIT_REF_PARANOIA`
 + read_packed_refs(): report unexpected fopen() failures
 + read_packed_refs(): do more of the work of reading packed refs
 + get_packed_ref_cache(): assume "packed-refs" won't change while locked
 + should_pack_ref(): new function, extracted from `files_pack_refs()`
 + ref_update_reject_duplicates(): add a sanity check
 + ref_update_reject_duplicates(): use `size_t` rather than `int`
 + ref_update_reject_duplicates(): expose function to whole refs module
 + ref_transaction_prepare(): new optional step for reference updates
 + ref_transaction_commit(): check for valid `transaction->state`
 + files_transaction_cleanup(): new helper function
 + files_ref_store: put the packed files lock directly in this struct
 + files-backend: move `lock` member to `files_ref_store`
 + lockfile: add a new method, is_lock_file_locked()
 + ref_store: take a `msg` parameter when deleting references
 + refs: use `size_t` indexes when iterating over ref transaction updates
 + refs_ref_iterator_begin(): don't check prefixes redundantly
 + prefix_ref_iterator: don't trim too much
 + files-backend: use `die("BUG: ...")`, not `die("internal error: ...")`
 + ref_iterator_begin_fn(): fix docstring
 + refs.h: clarify docstring for the ref_transaction_update()-related fns
 + t3600: clean up permissions test properly
 + Merge branch 'bc/object-id'

 The implementation of "ref" API around the "packed refs" have been
 cleaned up, in preparation for further changes.

 Will merge to 'master'.


* sl/clean-d-ignored-fix (2017-05-24) 6 commits
  (merged to 'next' on 2017-05-29 at 837c255ae8)
 + clean: teach clean -d to preserve ignored paths
 + dir: expose cmp_name() and check_contains()
 + dir: hide untracked contents of untracked dirs
 + dir: recurse into untracked dirs for ignored files
 + t7061: status --ignored should search untracked dirs
 + t7300: clean -d should skip dirs with ignored files

 "git clean -d" used to clean directories that has ignored files,
 even though the command should not lose ignored ones without "-x".
 This has been corrected.

 Will merge to 'master'.


* ab/sha1dc (2017-05-22) 2 commits
 - sha1collisiondetection: automatically enable when submodule is populated
 - sha1dc: optionally use sha1collisiondetection as a submodule
 (this branch uses ab/sha1dc-maint.)

 The "collission-detecting" implementation of SHA-1 hash we borrowed
 from is replaced by directly binding the upstream project as our
 submodule.

 Will keep in 'pu' for a few CI cycles.
 Impact to the various build and release infrastructure of using
 submodule is not yet fully known, but this lets us dip our toes.


* bp/fsmonitor (2017-05-26) 6 commits
 - fsmonitor: add a sample query-fsmonitor hook script for Watchman
 - fsmonitor: add documentation for the fsmonitor extension.
 - fsmonitor: add test cases for fsmonitor extension
 - fsmonitor: teach git to optionally utilize a file system monitor to speed up detecting new or changed files.
 - dir: make lookup_untracked() available outside of dir.c
 - bswap: add 64 bit endianness helper get_be64


* dk/send-email-avoid-net-smtp-ssl-when-able (2017-05-20) 1 commit
  (merged to 'next' on 2017-05-23 at fc59b8a1d4)
 + send-email: Net::SMTP::SSL is obsolete, use only when necessary

 "git send-email" now uses Net::SMTP::SSL, which is obsolete, only
 when needed.  Recent versions of Net::SMTP can do TLS natively.

 Will merge to 'master'.


* jc/name-rev-lw-tag (2017-03-29) 2 commits
  (merged to 'next' on 2017-05-23 at 3f88b6d73c)
 + name-rev: favor describing with tags and use committer date to tiebreak
 + name-rev: refactor logic to see if a new candidate is a better name
 (this branch is used by mg/name-rev-debug.)

 "git describe --contains" penalized light-weight tags so much that
 they were almost never considered.  Instead, give them about the
 same chance to be considered as an annotated tag that is the same
 age as the underlying commit would.

 Will merge to 'master'.


* jk/diff-blob (2017-05-24) 15 commits
  (merged to 'next' on 2017-05-29 at 5ecc979cc7)
 + diff: use blob path for blob/file diffs
 + diff: use pending "path" if it is available
 + diff: use the word "path" instead of "name" for blobs
 + diff: pass whole pending entry in blobinfo
 + handle_revision_arg: record paths for pending objects
 + handle_revision_arg: record modes for "a..b" endpoints
 + t4063: add tests of direct blob diffs
 + get_sha1_with_context: dynamically allocate oc->path
 + get_sha1_with_context: always initialize oc->symlink_path
 + sha1_name: consistently refer to object_context as "oc"
 + handle_revision_arg: add handle_dotdot() helper
 + handle_revision_arg: hoist ".." check out of range parsing
 + handle_revision_arg: stop using "dotdot" as a generic pointer
 + handle_revision_arg: simplify commit reference lookups
 + handle_revision_arg: reset "dotdot" consistently

 The result from "git diff" that compares two blobs, e.g. "git diff
 $commit1:$path $commit2:$path", used to be shown with the full
 object name as given on the command line, but it is more natural to
 use the $path in the output and use it to look up .gitattributes.

 Will merge to 'master'.


* js/bs-is-a-dir-sep-on-windows (2017-05-26) 2 commits
  (merged to 'next' on 2017-05-26 at 450b39f726)
 + Windows: do not treat a path with backslashes as a remote's nick name
 + mingw.h: permit arguments with side effects for is_dir_sep

 "foo\bar\baz" in "git fetch foo\bar\baz", even though there is no
 slashes in it, cannot be a nickname for a remote on Windows, as
 that is likely to be a pathname on a local filesystem.

 Will merge to 'master'.


* js/larger-timestamps (2017-05-20) 1 commit
  (merged to 'next' on 2017-05-23 at 16f7c9e677)
 + name-rev: change a "long" variable to timestamp_t

 A follow-up hotfix for a topic already in 'master'.

 Will merge to 'master'.


* sb/diff-color-move (2017-05-25) 17 commits
 - diff.c: color moved lines differently
 - diff: buffer all output if asked to
 - diff.c: emit_line includes whitespace highlighting
 - diff.c: convert diff_summary to use emit_line_*
 - diff.c: convert diff_flush to use emit_line_*
 - diff.c: convert word diffing to use emit_line_*
 - diff.c: convert show_stats to use emit_line_*
 - diff.c: convert emit_binary_diff_body to use emit_line_*
 - submodule.c: convert show_submodule_summary to use emit_line_fmt
 - diff.c: convert emit_rewrite_lines to use emit_line_*
 - diff.c: convert emit_rewrite_diff to use emit_line_*
 - diff.c: convert builtin_diff to use emit_line_*
 - diff.c: convert fn_out_consume to use emit_line
 - diff: introduce more flexible emit function
 - diff.c: factor out diff_flush_patch_all_file_pairs
 - diff: move line ending check into emit_hunk_header
 - diff: readability fix

 "git diff" has been taught to optionally paint new lines that are
 the same as deleted lines elsewhere differently from genuinely new
 lines.


* xz/send-email-batch-size (2017-05-23) 1 commit
 - send-email: --batch-size to work around some SMTP server limit

 "git send-email" learned to overcome some SMTP server limitation
 that does not allow many pieces of e-mails to be sent over a single
 session.

 Waiting for response.
 cf. <CACBZZX5GYV50rjg9X602JHqFPaoofH9TwDf_-r_MDu8-rmNV6Q@mail.gmail.com>


* jh/memihash-opt (2017-05-16) 5 commits
  (merged to 'next' on 2017-05-23 at 2f0293e8b8)
 + p0004: don't error out if test repo is too small
 + p0004: don't abort if multi-threaded is too slow
 + p0004: use test_perf
 + p0004: avoid using pipes
 + p0004: simplify calls of test-lazy-init-name-hash

 perf-test update.

 Will merge to 'master'.


* js/blame-lib (2017-05-25) 29 commits
 - blame: move entry prepend to libgit
 - blame: move scoreboard setup to libgit
 - blame: move scoreboard-related methods to libgit
 - blame: move fake-commit-related methods to libgit
 - blame: move origin-related methods to libgit
 - blame: move core structures to header
 - blame: create entry prepend function
 - blame: create scoreboard setup function
 - blame: create scoreboard init function
 - blame: rework methods that determine 'final' commit
 - blame: wrap blame_sort and compare_blame_final
 - blame: move progress updates to a scoreboard callback
 - blame: make sanity_check use a callback in scoreboard
 - blame: move no_whole_file_rename flag to scoreboard
 - blame: move xdl_opts flags to scoreboard
 - blame: move show_root flag to scoreboard
 - blame: move reverse flag to scoreboard
 - blame: move contents_from to scoreboard
 - blame: move copy/move thresholds to scoreboard
 - blame: move stat counters to scoreboard
 - blame: rename nth_line function
 - blame: rename ent_score function
 - blame: rename coalesce function
 - blame: rename origin-related functions
 - blame: rename scoreboard structure to blame_scoreboard
 - blame: rename origin structure to blame_origin
 - blame: remove unused parameters
 - blame: move textconv_object with related functions
 - blame: remove unneeded dependency on blob.h

 The internal logic used in "git blame" has been libified to make it
 easier to use by cgit.

 Will merge to 'next'.


* jt/send-email-validate-hook (2017-05-16) 1 commit
  (merged to 'next' on 2017-05-23 at 89848cb9ac)
 + send-email: support validate hook

 "git send-email" learned to run sendemail-validate hook to inspect
 and reject a message before sending it out.

 Will merge to 'master'.


* bw/pathspec-sans-the-index (2017-05-12) 6 commits
  (merged to 'next' on 2017-05-23 at 45c8ef3115)
 + pathspec: convert find_pathspecs_matching_against_index to take an index
 + pathspec: remove PATHSPEC_STRIP_SUBMODULE_SLASH_CHEAP
 + ls-files: prevent prune_cache from overeagerly pruning submodules
 + pathspec: remove PATHSPEC_STRIP_SUBMODULE_SLASH_EXPENSIVE flag
 + submodule: add die_in_unpopulated_submodule function
 + pathspec: provide a more descriptive die message

 Simplify parse_pathspec() codepath and stop it from looking at the
 default in-core index.

 Will merge to 'master'.


* jt/fetch-allow-tip-sha1-implicitly (2017-05-16) 1 commit
  (merged to 'next' on 2017-05-23 at 690ed987df)
 + fetch-pack: always allow fetching of literal SHA1s

 There is no good reason why "git fetch $there $sha1" should fail
 when the $sha1 names an object at the tip of an advertised ref,
 even when the other side hasn't enabled allowTipSHA1InWant.

 Will merge to 'master'.


* ab/perf-wildmatch (2017-05-12) 2 commits
  (merged to 'next' on 2017-05-23 at 0adb7dac31)
 + perf: add test showing exponential growth in path globbing
 + perf: add function to setup a fresh test repo

 Add perf-test for wildmatch.

 Will merge to 'master'.


* ab/grep-preparatory-cleanup (2017-05-26) 31 commits
  (merged to 'next' on 2017-05-29 at f2cfa89d3e)
 + grep: assert that threading is enabled when calling grep_{lock,unlock}
 + grep: given --threads with NO_PTHREADS=YesPlease, warn
 + pack-objects: fix buggy warning about threads
 + pack-objects & index-pack: add test for --threads warning
 + test-lib: add a PTHREADS prerequisite
 + grep: move is_fixed() earlier to avoid forward declaration
 + grep: change internal *pcre* variable & function names to be *pcre1*
 + grep: change the internal PCRE macro names to be PCRE1
 + grep: factor test for \0 in grep patterns into a function
 + grep: remove redundant regflags assignments
 + grep: catch a missing enum in switch statement
 + perf: add a comparison test of log --grep regex engines with -F
 + perf: add a comparison test of log --grep regex engines
 + perf: add a comparison test of grep regex engines with -F
 + perf: add a comparison test of grep regex engines
 + perf: emit progress output when unpacking & building
 + perf: add a GIT_PERF_MAKE_COMMAND for when *_MAKE_OPTS won't do
 + grep: add tests to fix blind spots with \0 patterns
 + grep: prepare for testing binary regexes containing rx metacharacters
 + grep: add a test helper function for less verbose -f \0 tests
 + grep: add tests for grep pattern types being passed to submodules
 + grep: amend submodule recursion test for regex engine testing
 + grep: add tests for --threads=N and grep.threads
 + grep: change non-ASCII -i test to stop using --debug
 + grep: add a test for backreferences in PCRE patterns
 + grep: add a test asserting that --perl-regexp dies when !PCRE
 + log: make --regexp-ignore-case work with --perl-regexp
 + log: add exhaustive tests for pattern style options & config
 + test-lib: rename the LIBPCRE prerequisite to PCRE
 + grep & rev-list doc: stop promising libpcre for --perl-regexp
 + Makefile & configure: reword inaccurate comment about PCRE
 (this branch is used by ab/pcre-v2.)

 The internal implementation of "git grep" has seen some clean-up.

 Will merge to 'master'.


* dt/unpack-save-untracked-cache-extension (2017-05-20) 1 commit
  (merged to 'next' on 2017-05-23 at 3196d093d6)
 + unpack-trees: preserve index extensions

 When "git checkout", "git merge", etc. manipulates the in-core
 index, various pieces of information in the index extensions are
 discarded from the original state, as it is usually not the case
 that they are kept up-to-date and in-sync with the operation on the
 main index.  The untracked cache extension is copied across these
 operations now, which would speed up "git status" (as long as the
 cache is properly invalidated).

 Will merge to 'master'.


* sg/clone-refspec-from-command-line-config (2017-05-16) 4 commits
 - clone: use free_refspec() to free refspec list
 - remote: drop free_refspecs() function
 - Documentation/clone: document ignored configuration variables
 - clone: respect additional configured fetch refspecs during initial fetch

 "git clone -c var=val" is a way to set configuration variables in
 the resulting repository, but it is more useful to also make these
 variables take effect while the initial clone is happening,
 e.g. these configuration variables could be fetch refspecs.

 Waiting for response.
 cf. <xmqqa864kops.fsf@gitster.mtv.corp.google.com>


* jh/close-index-before-stat (2017-04-28) 1 commit
  (merged to 'next' on 2017-05-16 at 0c0372eb02)
 + read-cache: close index.lock in do_write_index

 Originally merged to 'next' on 2017-04-30

 The timestamp of the index file is now taken after the file is
 closed, to help Windows, on which a stale timestamp is reported by
 fstat() on a file that is opened for writing and data was written
 but not yet closed.

 Will cook in 'next'.


* mb/diff-default-to-indent-heuristics (2017-05-09) 4 commits
  (merged to 'next' on 2017-05-29 at 7645575e21)
 + add--interactive: drop diff.indentHeuristic handling
 + diff: enable indent heuristic by default
 + diff: have the diff-* builtins configure diff before initializing revisions
 + diff: make the indent heuristic part of diff's basic configuration

 Make the "indent" heuristics the default in "diff" and diff.indentHeuristics
 configuration variable an escape hatch for those who do no want it.

 Will merge to 'master'.
 Looks like there may be follow-on work possible, but the topic
 itself is in good order.
 cf. <20170509033258.q7auj5p5lxs4tggd@sigill.intra.peff.net>


* nd/fopen-errors (2017-05-26) 13 commits
 - is_missing_file_error(): work around EINVAL on Windows
 - wrapper: factor out is_missing_file_error()
 - log: fix memory leak in open_next_file()
 - rerere.c: move error_errno() closer to the source system call
 - print errno when reporting a system call error
 - wrapper.c: make warn_on_inaccessible() static
 - wrapper.c: add and use fopen_or_warn()
 - wrapper.c: add and use warn_on_fopen_errors()
 - config.mak.uname: set FREAD_READS_DIRECTORIES for Darwin, too
 - config.mak.uname: set FREAD_READS_DIRECTORIES for Linux and FreeBSD
 - clone: use xfopen() instead of fopen()
 - use xfopen() in more places
 - git_fopen: fix a sparse 'not declared' warning

 We often try to open a file for reading whose existence is
 optional, and silently ignore errors from open/fopen; report such
 errors if they are not due to missing files.

 Waiting for comments on the two changes at the tip from Windows folks.


* js/rebase-i-final (2017-05-02) 10 commits
 - rebase -i: rearrange fixup/squash lines using the rebase--helper
 - t3415: test fixup with wrapped oneline
 - rebase -i: skip unnecessary picks using the rebase--helper
 - rebase -i: check for missing commits in the rebase--helper
 - t3404: relax rebase.missingCommitsCheck tests
 - rebase -i: also expand/collapse the SHA-1s via the rebase--helper
 - rebase -i: do not invent onelines when expanding/collapsing SHA-1s
 - rebase -i: remove useless indentation
 - rebase -i: generate the script via rebase--helper
 - t3415: verify that an empty instructionFormat is handled as before

 The final batch to "git rebase -i" updates to move more code from
 the shell script to C.

 Undecided; expecting a reroll.
 This is at its v4.
 cf. <cover.1493414945.git.johannes.schindelin@gmx.de>


* bw/forking-and-threading (2017-05-15) 14 commits
  (merged to 'next' on 2017-05-23 at 79a6a59851)
 + usage.c: drop set_error_handle()
 + run-command: restrict PATH search to executable files
 + run-command: expose is_executable function
 + run-command: block signals between fork and execve
 + run-command: add note about forking and threading
 + run-command: handle dup2 and close errors in child
 + run-command: eliminate calls to error handling functions in child
 + run-command: don't die in child when duping /dev/null
 + run-command: prepare child environment before forking
 + string-list: add string_list_remove function
 + run-command: use the async-signal-safe execv instead of execvp
 + run-command: prepare command before forking
 + t0061: run_command executes scripts without a #! line
 + t5550: use write_script to generate post-update hook

 The "run-command" API implementation has been made more robust
 against dead-locking in a threaded environment.

 Will merge to 'master'.


* bp/sub-process-convert-filter (2017-05-15) 11 commits
  (merged to 'next' on 2017-05-23 at 89f5420a82)
 + convert: update subprocess_read_status() to not die on EOF
 + sub-process: move sub-process functions into separate files
 + convert: rename reusable sub-process functions
 + convert: update generic functions to only use generic data structures
 + convert: separate generic structures and variables from the filter specific ones
 + convert: split start_multi_file_filter() into two separate functions
 + pkt-line: annotate packet_writel with LAST_ARG_MUST_BE_NULL
 + convert: move packet_write_line() into pkt-line as packet_writel()
 + pkt-line: add packet_read_line_gently()
 + pkt-line: fix packet_read_line() to handle len < 0 errors
 + convert: remove erroneous tests for errno == EPIPE

 Code from "conversion using external process" codepath has been
 extracted to a separate sub-process.[ch] module.

 Will merge to 'master'.


* nd/prune-in-worktree (2017-04-24) 12 commits
 - rev-list: expose and document --single-worktree
 - revision.c: --reflog add HEAD reflog from all worktrees
 - files-backend: make reflog iterator go through per-worktree reflog
 - revision.c: --all adds HEAD from all worktrees
 - refs: remove dead for_each_*_submodule()
 - revision.c: use refs_for_each*() instead of for_each_*_submodule()
 - refs: add refs_head_ref()
 - refs: move submodule slash stripping code to get_submodule_ref_store
 - refs.c: refactor get_submodule_ref_store(), share common free block
 - revision.c: --indexed-objects add objects from all worktrees
 - revision.c: refactor add_index_objects_to_pending()
 - revision.h: new flag in struct rev_info wrt. worktree-related refs

 "git gc" and friends when multiple worktrees are used off of a
 single repository did not consider the index and per-worktree refs
 of other worktrees as the root for reachability traversal, making
 objects that are in use only in other worktrees to be subject to
 garbage collection.

 Expecting a reroll.
 Has been waiting for nd/worktree-kill-parse-ref to settle.
 cf. <CACsJy8ADCVBiLoPg_Tz0L6CMdh_eFmK4RYzfQ-PmUgBK7w9e=A@mail.gmail.com>

--------------------------------------------------
[Discard]

* ab/compat-regex-update (2017-05-12) 3 commits
 . DONTMERGE compat/regex: make it compile with -Werror=int-to-pointer-cast
 . compat/regex: update the gawk regex engine from upstream
 . compat/regex: add a README with a maintenance guide

 Update compat/regex we borrowed from gawk.  It seems that some
 customizations we made to the older one were dropped by mistake.

 Will discard.
 cf. <CACBZZX4UUwzRQmyH8joYaqHnuVTjVtGBHp+iZKcnAnwoM_ZJhg@mail.gmail.com>


* jk/no-looking-at-dotgit-outside-repo (2017-05-15) 1 commit
 . config: complain about --local outside of a git repo

 Will discard.
 Superseded by jk/bug-to-abort.


* js/retire-old-remote-spec (2017-05-12) 11 commits
 . PREVIEW: remove support for .git/remotes/ and .git/branches/
 . PREVIEW: t0060: stop testing support for .git/remotes/ and .git/branches/
 . PREVIEW: t5515: remove .git/remotes/ and .git/branches/ tests
 . PREVIEW: remote: remove support for migrating ancient remotes
 . PREVIEW: t5516: stop testing .git/branches/ functionality
 . PREVIEW: t5510: convert .git/remotes/ test to use a regular remote
 . Revert "Revert "Don't create the $GIT_DIR/branches directory on init""
 . remote: warn loud and clear when .git/remotes/ is *still* used
 . remote: warn loud and clear when .git/branches/ is *still* used
 . Documentation: really deprecate .git/remotes/ and .git/branches/
 . git-parse-remote: fix highly misleading man page

 Stop reading from .git/remotes/ and .git/branches/, two old ways
 that we have been supporting to configure short-hands for fetching
 from remote repositories.

 Will discard.
 The procedure of removing an old and unused feature is correctly
 followed by this series, but it is far from clear that the feature
 this attempts to remove is unused or useless.


* jc/checkout-working-tree-only (2017-04-27) 1 commit
 . checkout: add --working-tree-only option

 "git checkout <tree-ish> <pathspec>" learned a variant that does
 not update the index when doing its thing.

 Will discard.
 This was more of "the world could have been like this" illustration
 rather than a "let's make this change" proposal.


* sb/submodule-blanket-recursive (2017-05-23) 6 commits
 . builtin/push.c: respect 'submodule.recurse' option
 . builtin/grep.c: respect 'submodule.recurse' option
 . builtin/fetch.c: respect 'submodule.recurse' option
 . Introduce submodule.recurse option for worktree manipulators
 . submodule test invocation: only pass additional arguments
 . submodule.c: add has_submodules to check if we have any submodules

 A new configuration variable "submodule.recurse" can be set to true
 to force various commands run at the top-level superproject to
 behave as if they were invoked with the "--recurse-submodules"
 option.

 Retracted for now.
 cf. <CAGZ79kZexcwh=E6_ks83=pJh=ZvKnLvJ54eLsn+HURsTZOpvqg@mail.gmail.com>


* df/dir-iter-remove-subtree (2017-05-29) 5 commits
 . remove_subtree(): reimplement using iterators
 . dir_iterator: rewrite state machine model
 . dir_iterator: refactor dir_iterator_advance
 . remove_subtree(): test removing nested directories
 . dir_iterator: add tests for dir_iterator API

 Update the dir-iterator API and use it to reimplement
 remove_subtree().

 GSoC microproject.
 Ejected as it conflicts with other topics in flight in a
 non-trivial way.



^ permalink raw reply	[relevance 4%]

* What's cooking in git.git (May 2017, #07; Tue, 23)
@ 2017-05-23  8:08  4% Junio C Hamano
  0 siblings, 0 replies; 25+ results
From: Junio C Hamano @ 2017-05-23  8:08 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.  The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.

The 'maint' branch is now for the v2.13.x maintenance track.  A
handful of fixes in 'master' will soon be merged to it to prepare
for v2.13.1 in a week or so.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[Graduated to "master"]

* ab/doc-replace-gmane-links (2017-05-09) 2 commits
  (merged to 'next' on 2017-05-20 at 2c4f96560c)
 + doc: replace more gmane links
 + doc: replace a couple of broken gmane links

 The Web interface to gmane news archive is long gone, even though
 the articles are still accessible via NTTP.  Replace the links with
 ones to public-inbox.org.  Because their message identification is
 based on the actual message-id, it is likely that it will be easier
 to migrate away from it if/when necessary.


* ab/fix-poison-tests (2017-05-11) 3 commits
  (merged to 'next' on 2017-05-20 at 5b13ba86bd)
 + travis-ci: add job to run tests with GETTEXT_POISON
 + travis-ci: setup "prove cache" in "script" step
 + tests: fix tests broken under GETTEXT_POISON=YesPlease

 Update tests to pass under GETTEXT_POISON (a mechanism to ensure
 that output strings that should not be translated are not
 translated by mistake), and tell TravisCI to run them.


* ah/log-decorate-default-to-auto (2017-05-15) 1 commit
  (merged to 'next' on 2017-05-20 at 209614479c)
 + builtin/log: honor log.decorate

 Setting "log.decorate=false" in the configuration file did not take
 effect in v2.13, which has been corrected.


* bw/submodule-with-bs-path (2017-05-01) 1 commit
  (merged to 'next' on 2017-05-20 at b740f784cb)
 + t7400: add !CYGWIN prerequisite to 'add with \\ in path'

 A hotfix to a topic that is already in v2.13.


* jt/push-options-doc (2017-05-10) 2 commits
  (merged to 'next' on 2017-05-20 at ca7f344111)
 + receive-pack: verify push options in cert
 + docs: correct receive.advertisePushOptions default

 The receive-pack program now makes sure that the push certificate
 records the same set of push options used for pushing.


* ls/travis-relays-for-windows-ci (2017-05-04) 2 commits
  (merged to 'next' on 2017-05-20 at 47f34b78e2)
 + travis-ci: retry if Git for Windows CI returns HTTP error 502 or 503
 + travis-ci: handle Git for Windows CI status "failed" explicitly

 Will merge to 'master'.


* rs/checkout-am-fix-unborn (2017-05-08) 2 commits
  (merged to 'next' on 2017-05-20 at d4f1ee3ed7)
 + am: check return value of resolve_refdup before using hash
 + checkout: check return value of resolve_refdup before using hash

 A few codepaths in "checkout" and "am" working on an unborn branch
 tried to access an uninitialized piece of memory.


* tb/dedup-crlf-tests (2017-05-10) 1 commit
  (merged to 'next' on 2017-05-20 at 0a7ffff154)
 + t0027: tests are not expensive; remove t0025

 Will merge to 'master'.

--------------------------------------------------
[New Topics]

* ah/doc-interpret-trailers-ifexists (2017-05-23) 1 commit
 - Documentation: fix reference to ifExists for interpret-trailers

 Documentation fix.

 Will merge to 'next'.


* ah/doc-pretty-format-fix (2017-05-23) 1 commit
 - Documentation: fix formatting typo in pretty-formats.txt

 Documentation fix.

 Will merge to 'next'.


* sb/submodule-blanket-recursive (2017-05-23) 6 commits
 . builtin/push.c: respect 'submodule.recurse' option
 . builtin/grep.c: respect 'submodule.recurse' option
 . builtin/fetch.c: respect 'submodule.recurse' option
 . Introduce submodule.recurse option for worktree manipulators
 . submodule test invocation: only pass additional arguments
 . submodule.c: add has_submodules to check if we have any submodules
 (this branch uses sb/reset-recurse-submodules.)

 A new configuration variable "submodule.recurse" can be set to true
 to force various commands run at the top-level superproject to
 behave as if they were invoked with the "--recurse-submodules"
 option.

 Seems to break t7814 when merged to 'pu'.


* sb/t5531-update-desc (2017-05-23) 1 commit
 - t5531: fix test description

 The description strings for a few tests have been updated.

 Will merge to 'next'.

--------------------------------------------------
[Stalled]

* mg/status-in-progress-info (2017-05-10) 2 commits
 - status --short --inprogress: spell it as --in-progress
 - status: show in-progress info for short status

 "git status" learns an option to report various operations
 (e.g. "merging") that the user is in the middle of.

 cf. <xmqqmvakcdqw.fsf@gitster.mtv.corp.google.com>


* mg/name-rev-debug (2017-03-31) 2 commits
 - describe: pass --debug down to name-rev
 - name-rev: provide debug output
 (this branch uses jc/name-rev-lw-tag.)

 "git describe --debug --contains" did not add any meaningful
 information, even though without "--contains" it did.


* nd/worktree-move (2017-04-20) 6 commits
 - worktree remove: new command
 - worktree move: refuse to move worktrees with submodules
 - worktree move: accept destination as directory
 - worktree move: new command
 - worktree.c: add update_worktree_location()
 - worktree.c: add validate_worktree()

 "git worktree" learned move and remove subcommands.

 Expecting a reroll.
 cf. <20170420101024.7593-1-pclouds@gmail.com>
 cf. <20170421145916.mknekgqzhxffu7di@sigill.intra.peff.net>
 cf. <d0e81b1e-5869-299e-f462-4d43dc997bd1@ramsayjones.plus.com>


* df/dir-iter-remove-subtree (2017-04-19) 5 commits
 - remove_subtree(): reimplement using iterators
 - dir_iterator: rewrite state machine model
 - dir_iterator: refactor dir_iterator_advance
 - remove_subtree(): test removing nested directories
 - dir_iterator: add tests for dir_iterator API

 Update the dir-iterator API and use it to reimplement
 remove_subtree().

 A reroll exists that is based on the updated 'master', but I ran
 out of time trying to get it to work with other topics in flight
 in 'pu'.
 GSoC microproject.


* ls/filter-process-delayed (2017-03-06) 1 commit
 - convert: add "status=delayed" to filter process protocol

 Expecting a reroll.
 cf. <04ECEBE5-CAC8-4344-B07A-6B7A7C795C94@gmail.com>


* sk/dash-is-previous (2017-03-01) 5 commits
 - revert.c: delegate handling of "-" shorthand to setup_revisions
 - sha1_name.c: teach get_sha1_1 "-" shorthand for "@{-1}"
 - revision.c: args starting with "-" might be a revision
 - revision.c: swap if/else blocks
 - revision.c: do not update argv with unknown option

 A dash "-" can be written to mean "the branch that was previously
 checked out" in more places.

 Needs review.
 cf. <1488007487-12965-1-git-send-email-kannan.siddharth12@gmail.com>

--------------------------------------------------
[Cooking]

* ab/conditional-config-with-symlinks (2017-05-17) 1 commit
  (merged to 'next' on 2017-05-23 at 6162222c2e)
 + config: match both symlink & realpath versions in IncludeIf.gitdir:*

 The recently introduced "[includeIf "gitdir:$dir"] path=..."
 mechansim has further been taught to take symlinks into account.
 The directory "$dir" specified in "gitdir:$dir" may be a symlink to
 a real location, not something that $(getcwd) may return.  In such
 a case, a realpath of "$dir" is compared with the real path of the
 current repository to determine if the contents from the named path
 should be included.

 Will merge to 'master'.


* bm/interpret-trailers-cut-line-is-eom (2017-05-18) 1 commit
  (merged to 'next' on 2017-05-23 at 3e5ff08517)
 + interpret-trailers: honor the cut line

 "git interpret-trailers", when used as GIT_EDITOR for "git commit
 -v", looked for and appended to a trailer block at the very end,
 i.e. at the end of the "diff" output.  The command has been
 corrected to pay attention to the cut-mark line "commit -v" adds to
 the buffer---the real trailer block should appear just before it.

 Will merge to 'master'.


* jc/skip-test-in-the-middle (2017-05-18) 2 commits
  (merged to 'next' on 2017-05-23 at 6c962b353b)
 + t5545: enhance test coverage when no http server is installed
 + test: allow skipping the remainder

 A recent update to t5545-push-options.sh started skipping all the
 tests in the script when a web server testing is disabled or
 unavailable, not just the ones that require a web server.  Non HTTP
 tests have been salvaged to always run in this script.

 Will merge to 'master'.


* jk/alternate-ref-optim (2017-05-18) 1 commit
  (merged to 'next' on 2017-05-23 at 4b4b3ac463)
 + t5400: avoid concurrent writes into a trace file

 A test allowed both "git push" and "git receive-pack" on the other
 end write their traces into the same file.  This is OK on platforms
 that allows atomically appending to a file opened with O_APPEND,
 but on other platforms led to a mangled output, causing
 intermittent test failures.  This has been fixed by disabling
 traces from "receive-pack" in the test.

 Will merge to 'master'.


* mh/packed-ref-store-prep (2017-05-23) 26 commits
 - cache_ref_iterator_begin(): avoid priming unneeded directories
 - ref-filter: limit traversal to prefix
 - create_ref_entry(): remove `check_name` option
 - refs_ref_iterator_begin(): handle `GIT_REF_PARANOIA`
 - read_packed_refs(): report unexpected fopen() failures
 - read_packed_refs(): do more of the work of reading packed refs
 - get_packed_ref_cache(): assume "packed-refs" won't change while locked
 - should_pack_ref(): new function, extracted from `files_pack_refs()`
 - ref_update_reject_duplicates(): add a sanity check
 - ref_update_reject_duplicates(): use `size_t` rather than `int`
 - ref_update_reject_duplicates(): expose function to whole refs module
 - ref_transaction_prepare(): new optional step for reference updates
 - ref_transaction_commit(): check for valid `transaction->state`
 - files_transaction_cleanup(): new helper function
 - files_ref_store: put the packed files lock directly in this struct
 - files-backend: move `lock` member to `files_ref_store`
 - lockfile: add a new method, is_lock_file_locked()
 - ref_store: take a `msg` parameter when deleting references
 - refs: use `size_t` indexes when iterating over ref transaction updates
 - refs_ref_iterator_begin(): don't check prefixes redundantly
 - prefix_ref_iterator: don't trim too much
 - files-backend: use `die("BUG: ...")`, not `die("internal error: ...")`
 - ref_iterator_begin_fn(): fix docstring
 - refs.h: clarify docstring for the ref_transaction_update()-related fns
 - t3600: clean up permissions test properly
 - Merge branch 'bc/object-id'
 (this branch uses bc/object-id.)

 The implementation of "ref" API around the "packed refs" have been
 cleaned up, in preparation for further changes.

 Will merge to 'next'.


* sl/clean-d-ignored-fix (2017-05-22) 7 commits
 - SQUASH????
 - clean: teach clean -d to skip dirs containing ignored files
 - dir: expose cmp_name() and check_contains()
 - dir: hide untracked contents of untracked dirs
 - dir: recurse into untracked dirs for ignored files
 - t7061: status --ignored should search untracked dirs
 - t7300: clean -d should skip dirs with ignored files

 "git clean -d" used to clean directories that has ignored files,
 even though the command should not lose ignored ones without "-x".
 This has been corrected.

 Expecting a reroll.
 cf. <xmqq1srgko52.fsf@gitster.mtv.corp.google.com>


* tg/stash-push-fixup (2017-05-17) 1 commit
  (merged to 'next' on 2017-05-23 at 338eb650f2)
 + completion: add git stash push

 The shell completion script (in contrib/) learned "git stash" has
 a new "push" subcommand.

 Will merge to 'master'.


* ab/sha1dc (2017-05-22) 3 commits
 - sha1collisiondetection: automatically enable when submodule is populated
 - sha1dc: optionally use sha1collisiondetection as a submodule
 - sha1dc: update from upstream

 The "collission-detecting" implementation of SHA-1 hash we borrowed
 from is replaced by directly binding the upstream project as our
 submodule.

 Will keep in 'pu' for a few CI cycles.
 Impact to the various build and release infrastructure of using
 submodule is not yet fully known, but this lets us dip our toes.


* bp/fsmonitor (2017-05-21) 10 commits
 - SQUASH???
 - SQUASH???
 - SQUASH???
 - fsmonitor: add a sample query-fsmonitor hook script for Watchman
 - fsmonitor: add documentation for the fsmonitor extension.
 - fsmonitor: add test cases for fsmonitor extension
 - SQUASH???
 - fsmonitor: teach git to optionally utilize a file system monitor to speed up detecting new or changed files.
 - dir: make lookup_untracked() available outside of dir.c
 - bswap: add 64 bit endianness helper get_be64

 Expecting a reroll.


* dk/send-email-avoid-net-smtp-ssl-when-able (2017-05-20) 1 commit
  (merged to 'next' on 2017-05-23 at fc59b8a1d4)
 + send-email: Net::SMTP::SSL is obsolete, use only when necessary

 "git send-email" now uses Net::SMTP::SSL, which is obsolete, only
 when needed.  Recent versions of Net::SMTP can do TLS natively.

 Will merge to 'master'.


* jc/name-rev-lw-tag (2017-03-29) 2 commits
  (merged to 'next' on 2017-05-23 at 3f88b6d73c)
 + name-rev: favor describing with tags and use committer date to tiebreak
 + name-rev: refactor logic to see if a new candidate is a better name
 (this branch is used by mg/name-rev-debug.)

 "git describe --contains" penalized light-weight tags so much that
 they were almost never considered.  Instead, give them about the
 same chance to be considered as an annotated tag that is the same
 age as the underlying commit would.

 Will merge to 'master'.


* jk/diff-blob (2017-05-20) 15 commits
 - diff: use blob path for blob/file diffs
 - diff: use pending "path" if it is available
 - diff: use the word "path" instead of "name" for blobs
 - diff: pass whole pending entry in blobinfo
 - handle_revision_arg: record paths for pending objects
 - handle_revision_arg: record modes for "a..b" endpoints
 - t4063: add tests of direct blob diffs
 - get_sha1_with_context: dynamically allocate oc->path
 - get_sha1_with_context: always initialize oc->symlink_path
 - sha1_name: consistently refer to object_context as "oc"
 - handle_revision_arg: add handle_dotdot() helper
 - handle_revision_arg: hoist ".." check out of range parsing
 - handle_revision_arg: stop using "dotdot" as a generic pointer
 - handle_revision_arg: simplify commit reference lookups
 - handle_revision_arg: reset "dotdot" consistently

 The result from "git diff" that compares two blobs, e.g. "git diff
 $commit1:$path $commit2:$path", used to be shown with the full
 object name as given on the command line, but it is more natural to
 use the $path in the output and use it to look up .gitattributes.

 Needs review.


* jk/ignore-broken-tags-when-ignoring-missing-links (2017-05-20) 1 commit
  (merged to 'next' on 2017-05-23 at 977491e52a)
 + revision.c: ignore broken tags with ignore_missing_links

 Tag objects, which are not reachable from any ref, that point at
 missing objects were mishandled by "git gc" and friends (they
 should silently be ignored instead)

 Will merge to 'master'.


* js/bs-is-a-dir-sep-on-windows (2017-05-20) 2 commits
  (merged to 'next' on 2017-05-23 at e27040ceb0)
 + Windows: do not treat a path with backslashes as a remote's nick name
 + mingw.h: permit arguments with side effects for is_dir_sep

 "foo\bar\baz" in "git fetch foo\bar\baz", even though there is no
 slashes in it, cannot be a nickname for a remote on Windows, as
 that is likely to be a pathname on a local filesystem.

 Will merge to 'master'.


* js/larger-timestamps (2017-05-20) 1 commit
  (merged to 'next' on 2017-05-23 at 16f7c9e677)
 + name-rev: change a "long" variable to timestamp_t

 A follow-up hotfix for a topic already in 'master'.

 Will merge to 'master'.


* km/log-showsignature-doc (2017-05-20) 1 commit
  (merged to 'next' on 2017-05-23 at f43ea11956)
 + config.txt: add an entry for log.showSignature

 Will merge to 'master'.


* kn/ref-filter-branch-list (2017-05-20) 1 commit
  (merged to 'next' on 2017-05-23 at e0cc721af0)
 + ref-filter: resolve HEAD when parsing %(HEAD) atom

 "git for-each-ref --format=..." with %(HEAD) in the format used to
 resolve the HEAD symref as many times as it had processed refs,
 which was wasteful, and "git branch" shared the same problem.

 Will merge to 'master'.


* pw/rebase-i-regression-fix (2017-05-20) 3 commits
  (merged to 'next' on 2017-05-23 at 14676d0013)
 + rebase -i: add missing newline to end of message
 + rebase -i: silence stash apply
 + rebase -i: fix reflog message

 Regression fix to topic recently merged to 'master'.

 Will merge to 'master'.


* sb/diff-color-move (2017-05-23) 17 commits
 . diff.c: color moved lines differently
 . diff: buffer all output if asked to
 . diff.c: emit_line includes whitespace highlighting
 . diff.c: convert diff_summary to use emit_line_*
 . diff.c: convert diff_flush to use emit_line_*
 . diff.c: convert word diffing to use emit_line_*
 . diff.c: convert show_stats to use emit_line_*
 . diff.c: convert emit_binary_diff_body to use emit_line_*
 . submodule.c: convert show_submodule_summary to use emit_line_fmt
 . diff.c: convert emit_rewrite_lines to use emit_line_*
 . diff.c: convert emit_rewrite_diff to use emit_line_*
 . diff.c: convert builtin_diff to use emit_line_*
 . diff.c: convert fn_out_consume to use emit_line
 . diff: introduce more flexible emit function
 . diff.c: factor out diff_flush_patch_all_file_pairs
 . diff: move line ending check into emit_hunk_header
 . diff: readability fix

 "git diff" has been taught to optionally paint new lines that are
 the same as deleted lines elsewhere differently from genuinely new
 lines.

 Seems to break t4060 when merged to 'next'.


* xz/send-email-batch-size (2017-05-23) 1 commit
 - send-email: --batch-size to work around some SMTP server limit

 "git send-email" learned to overcome some SMTP server limitation
 that does not allow many pieces of e-mails to be sent over a single
 session.

 Waiting for response.
 cf. <CACBZZX5GYV50rjg9X602JHqFPaoofH9TwDf_-r_MDu8-rmNV6Q@mail.gmail.com>


* jh/memihash-opt (2017-05-16) 5 commits
  (merged to 'next' on 2017-05-23 at 2f0293e8b8)
 + p0004: don't error out if test repo is too small
 + p0004: don't abort if multi-threaded is too slow
 + p0004: use test_perf
 + p0004: avoid using pipes
 + p0004: simplify calls of test-lazy-init-name-hash

 perf-test update.

 Will merge to 'master'.


* jk/bug-to-abort (2017-05-22) 4 commits
  (merged to 'next' on 2017-05-22 at 20371eebb6)
 + usage: add NORETURN to BUG() function definitions
  (merged to 'next' on 2017-05-20 at db65acc882)
 + config: complain about --local outside of a git repo
 + setup_git_env: convert die("BUG") to BUG()
 + usage.c: add BUG() function

 Introduce the BUG() macro to improve die("BUG: ...").

 Will merge to 'master'.


* jk/update-links-in-docs (2017-05-15) 1 commit
  (merged to 'next' on 2017-05-23 at 5b2df9fdbe)
 + doc: use https links to Wikipedia to avoid http redirects

 A few http:// links that are redirected to https:// in the
 documentation have been updated to https:// links.

 Will merge to 'master'.


* js/blame-lib (2017-05-15) 22 commits
 - blame: create entry prepend function in libgit
 - blame: create scoreboard setup function in libgit
 - blame: create scoreboard init function in libgit
 - blame: move scoreboard-related methods to libgit
 - blame: move fake-commit-related methods to libgit
 - blame: move origin-related methods to libgit
 - blame: rework methods that determine 'final' commit
 - blame: wrap blame_sort and compare_blame_final
 - blame: move progess updates to a scoreboard callback
 - blame: make sanity_check use a callback in scoreboard
 - blame: move no_whole_file_rename flag to scoreboard
 - blame: move xdl_opts flags to scoreboard
 - blame: move show_root flag to scoreboard
 - blame: move reverse flag to scoreboard
 - blame: move contents_from to scoreboard
 - blame: move copy/move thresholds to scoreboard
 - blame: move stat counters to scoreboard
 - blame: move scoreboard structure to header
 - blame: move origin and entry structures to header
 - blame: remove unused parameters
 - blame: move textconv_object with related functions
 - blame: remove unneeded dependency on blob.h

 The internal logic used in "git blame" has been libified to make it
 easier to use by cgit.

 RFC, and is hard to review due to renaming of symbols and moving of
 lines across files are intermixed but I think the overall direction
 is a good one.

 Expecting a rerolled non-RFC series.
 cf. <20170514031513.9042-1-whydoubt@gmail.com>


* jt/send-email-validate-hook (2017-05-16) 1 commit
  (merged to 'next' on 2017-05-23 at 89848cb9ac)
 + send-email: support validate hook

 "git send-email" learned to run sendemail-validate hook to inspect
 and reject a message before sending it out.

 Will merge to 'master'.


* bw/pathspec-sans-the-index (2017-05-12) 6 commits
  (merged to 'next' on 2017-05-23 at 45c8ef3115)
 + pathspec: convert find_pathspecs_matching_against_index to take an index
 + pathspec: remove PATHSPEC_STRIP_SUBMODULE_SLASH_CHEAP
 + ls-files: prevent prune_cache from overeagerly pruning submodules
 + pathspec: remove PATHSPEC_STRIP_SUBMODULE_SLASH_EXPENSIVE flag
 + submodule: add die_in_unpopulated_submodule function
 + pathspec: provide a more descriptive die message

 Simplify parse_pathspec() codepath and stop it from looking at the
 default in-core index.

 Will merge to 'master'.


* jt/fetch-allow-tip-sha1-implicitly (2017-05-16) 1 commit
  (merged to 'next' on 2017-05-23 at 690ed987df)
 + fetch-pack: always allow fetching of literal SHA1s

 There is no good reason why "git fetch $there $sha1" should fail
 when the $sha1 names an object at the tip of an advertised ref,
 even when the other side hasn't enabled allowTipSHA1InWant.

 Will merge to 'master'.


* jc/read-tree-empty-with-m (2017-05-10) 1 commit
  (merged to 'next' on 2017-05-20 at 7e86815364)
 + read-tree: "read-tree -m --empty" does not make sense

 "git read-tree -m" (no tree-ish) gave a nonsense suggestion "use
 --empty if you want to clear the index".  With "-m", such a request
 will still fail anyway, as you'd need to name at least one tree-ish
 to be merged.

 Will merge to 'master'.


* ab/perf-wildmatch (2017-05-12) 2 commits
  (merged to 'next' on 2017-05-23 at 0adb7dac31)
 + perf: add test showing exponential growth in path globbing
 + perf: add function to setup a fresh test repo

 Add perf-test for wildmatch.

 Will merge to 'master'.


* jk/doc-config-include (2017-05-12) 4 commits
  (merged to 'next' on 2017-05-23 at 4f60843265)
 + docs/config: consistify include.path examples
 + docs/config: avoid the term "expand" for includes
 + docs/config: give a relative includeIf example
 + docs/config: clarify include/includeIf relationship

 Clarify documentation for include.path and includeIf.<condition>.path
 configuration variables.

 Will merge to 'master'.


* ab/grep-preparatory-cleanup (2017-05-21) 30 commits
 - grep: assert that threading is enabled when calling grep_{lock,unlock}
 - grep: given --threads with NO_PTHREADS=YesPlease, warn
 - pack-objects: fix buggy warning about threads
 - pack-objects & index-pack: add test for --threads warning
 - test-lib: add a PTHREADS prerequisite
 - grep: move is_fixed() earlier to avoid forward declaration
 - grep: change internal *pcre* variable & function names to be *pcre1*
 - grep: change the internal PCRE macro names to be PCRE1
 - grep: factor test for \0 in grep patterns into a function
 - grep: remove redundant regflags assignments
 - grep: catch a missing enum in switch statement
 - perf: add a comparison test of log --grep regex engines
 - perf: add a comparison test of grep regex engines with -F
 - perf: add a comparison test of grep regex engines
 - perf: emit progress output when unpacking & building
 - perf: add a GIT_PERF_MAKE_COMMAND for when *_MAKE_OPTS won't do
 - grep: add tests to fix blind spots with \0 patterns
 - grep: prepare for testing binary regexes containing rx metacharacters
 - grep: add a test helper function for less verbose -f \0 tests
 - grep: add tests for grep pattern types being passed to submodules
 - grep: amend submodule recursion test for regex engine testing
 - grep: add tests for --threads=N and grep.threads
 - grep: change non-ASCII -i test to stop using --debug
 - grep: add a test for backreferences in PCRE patterns
 - grep: add a test asserting that --perl-regexp dies when !PCRE
 - log: make --regexp-ignore-case work with --perl-regexp
 - log: add exhaustive tests for pattern style options & config
 - test-lib: rename the LIBPCRE prerequisite to PCRE
 - grep & rev-list doc: stop promising libpcre for --perl-regexp
 - Makefile & configure: reword inaccurate comment about PCRE

 The internal implementation of "git grep" has seen some clean-up.

 Will merge to 'next'.


* dt/unpack-save-untracked-cache-extension (2017-05-20) 1 commit
  (merged to 'next' on 2017-05-23 at 3196d093d6)
 + unpack-trees: preserve index extensions

 When "git checkout", "git merge", etc. manipulates the in-core
 index, various pieces of information in the index extensions are
 discarded from the original state, as it is usually not the case
 that they are kept up-to-date and in-sync with the operation on the
 main index.  The untracked cache extension is copied across these
 operations now, which would speed up "git status" (as long as the
 cache is properly invalidated).

 Will merge to 'master'.


* sg/clone-refspec-from-command-line-config (2017-05-16) 4 commits
 - clone: use free_refspec() to free refspec list
 - remote: drop free_refspecs() function
 - Documentation/clone: document ignored configuration variables
 - clone: respect additional configured fetch refspecs during initial fetch

 "git clone -c var=val" is a way to set configuration variables in
 the resulting repository, but it is more useful to also make these
 variables take effect while the initial clone is happening,
 e.g. these configuration variables could be fetch refspecs.

 Waiting for response.
 cf. <xmqqa864kops.fsf@gitster.mtv.corp.google.com>


* sb/checkout-recurse-submodules (2017-05-04) 3 commits
  (merged to 'next' on 2017-05-20 at f972b2069f)
 + submodule: properly recurse for read-tree and checkout
 + submodule: avoid auto-discovery in new working tree manipulator code
 + submodule_move_head: reuse child_process structure for futher commands

 "git checkout --recurse-submodules" did not quite work with a
 submodule that itself has submodules.

 Will merge to 'master'.


* ja/do-not-ask-needless-questions (2017-05-12) 3 commits
  (merged to 'next' on 2017-05-23 at 6b373cd892)
 + git-filter-branch: be more direct in an error message
 + read-tree -m: make error message for merging 0 trees less smart aleck
 + usability: don't ask questions if no reply is required

 Git sometimes gives an advice in a rhetorical question that does
 not require an answer, which can confuse new users and non native
 speakers.  Attempt to rephrase them.

 Will merge to 'master'.


* bw/dir-c-stops-relying-on-the-index (2017-05-06) 14 commits
  (merged to 'next' on 2017-05-20 at 1f1b764ec8)
 + dir: convert fill_directory to take an index
 + dir: convert read_directory to take an index
 + dir: convert read_directory_recursive to take an index
 + dir: convert open_cached_dir to take an index
 + dir: convert is_excluded to take an index
 + dir: convert prep_exclude to take an index
 + dir: convert add_excludes to take an index
 + dir: convert is_excluded_from_list to take an index
 + dir: convert last_exclude_matching_from_list to take an index
 + dir: convert dir_add* to take an index
 + dir: convert get_dtype to take index
 + dir: convert directory_exists_in_index to take index
 + dir: convert read_skip_worktree_file_from_index to take an index
 + dir: stop using the index compatibility macros

 API update.

 Will merge to 'master'.


* jk/diff-submodule-diff-inline (2017-05-08) 1 commit
  (merged to 'next' on 2017-05-20 at da7eb2626a)
 + diff: recurse into nested submodules for inline diff

 "git diff --submodule=diff" now recurses into nested submodules.

 Will merge to 'master'.


* jk/disable-pack-reuse-when-broken (2017-05-09) 2 commits
  (merged to 'next' on 2017-05-20 at 684e921273)
 + t5310: fix "; do" style
 + pack-objects: disable pack reuse for object-selection options

 "pack-objects" can stream a slice of an existing packfile out when
 the pack bitmap can tell that the reachable objects are all needed
 in the output, without inspecting individual objects.  This
 strategy however would not work well when "--local" and other
 options are in use, and need to be disabled.

 Will merge to 'master'.


* js/eol-on-ourselves (2017-05-10) 6 commits
  (merged to 'next' on 2017-05-20 at 8023c277d2)
 + t4051: mark supporting files as requiring LF-only line endings
 + Fix the remaining tests that failed with core.autocrlf=true
 + t3901: move supporting files into t/t3901/
 + completion: mark bash script as LF-only
 + git-new-workdir: mark script as LF-only
 + Fix build with core.autocrlf=true

 Make sure our tests would pass when the sources are checked out
 with "platform native" line ending convention by default on
 Windows.  Some "text" files out tests use and the test scripts
 themselves that are meant to be run with /bin/sh, ought to be
 checked out with eol=LF even on Windows.

 Will merge to 'master'.


* nd/split-index-unshare (2017-05-08) 2 commits
  (merged to 'next' on 2017-05-20 at 9048cdc2ce)
 + p3400: add perf tests for rebasing many changes
 + split-index: add and use unshare_split_index()

 Plug some leaks and updates internal API used to implement the
 split index feature to make it easier to avoid such a leak in the
 future.

 Will merge to 'master'.


* js/plug-leaks (2017-05-09) 26 commits
  (merged to 'next' on 2017-05-20 at fb136ea2dc)
 + checkout: fix memory leak
 + submodule_uses_worktrees(): plug memory leak
 + show_worktree(): plug memory leak
 + name-rev: avoid leaking memory in the `deref` case
 + remote: plug memory leak in match_explicit()
 + add_reflog_for_walk: avoid memory leak
 + shallow: avoid memory leak
 + line-log: avoid memory leak
 + receive-pack: plug memory leak in update()
 + fast-export: avoid leaking memory in handle_tag()
 + mktree: plug memory leaks reported by Coverity
 + pack-redundant: plug memory leak
 + setup_discovered_git_dir(): plug memory leak
 + setup_bare_git_dir(): help static analysis
 + split_commit_in_progress(): simplify & fix memory leak
 + checkout: fix memory leak
 + cat-file: fix memory leak
 + mailinfo & mailsplit: check for EOF while parsing
 + status: close file descriptor after reading git-rebase-todo
 + difftool: address a couple of resource/memory leaks
 + get_mail_commit_oid(): avoid resource leak
 + git_config_rename_section_in_file(): avoid resource leak
 + add_commit_patch_id(): avoid allocating memory unnecessarily
 + winansi: avoid buffer overrun
 + winansi: avoid use of uninitialized value
 + mingw: avoid memory leak when splitting PATH

 Fix memory leaks pointed out by Coverity (and people).

 Will merge to 'master'.


* jh/close-index-before-stat (2017-04-28) 1 commit
  (merged to 'next' on 2017-05-16 at 0c0372eb02)
 + read-cache: close index.lock in do_write_index

 Originally merged to 'next' on 2017-04-30

 The timestamp of the index file is now taken after the file is
 closed, to help Windows, on which a stale timestamp is reported by
 fstat() on a file that is opened for writing and data was written
 but not yet closed.

 Will cook in 'next'.


* mb/diff-default-to-indent-heuristics (2017-05-09) 4 commits
 - add--interactive: drop diff.indentHeuristic handling
 - diff: enable indent heuristic by default
 - diff: have the diff-* builtins configure diff before initializing revisions
 - diff: make the indent heuristic part of diff's basic configuration

 Make the "indent" heuristics the default in "diff" and diff.indentHeuristics
 configuration variable an escape hatch for those who do no want it.

 Will merge to 'next'.
 Looks like there may be follow-on work possible, but the topic
 itself is in good order.
 cf. <20170509033258.q7auj5p5lxs4tggd@sigill.intra.peff.net>


* jc/repack-threads (2017-04-27) 1 commit
  (merged to 'next' on 2017-05-20 at c1fd54a2a4)
 + repack: accept --threads=<n> and pass it down to pack-objects

 "git repack" learned to accept the --threads=<n> option and pass it
 to pack-objects.

 Will merge to 'master'.


* nd/fopen-errors (2017-05-09) 23 commits
 - t1308: add a test case on open a config directory
 - config.c: handle error on failing to fopen()
 - xdiff-interface.c: report errno on failure to stat() or fopen()
 - wt-status.c: report error on failure to fopen()
 - server-info: report error on failure to fopen()
 - sequencer.c: report error on failure to fopen()
 - rerere.c: report correct errno
 - rerere.c: report error on failure to fopen()
 - remote.c: report error on failure to fopen()
 - commit.c: report error on failure to fopen() the graft file
 - log: fix memory leak in open_next_file()
 - log: report errno on failure to fopen() a file
 - blame: report error on open if graft_file is a directory
 - bisect: report on fopen() error
 - ident.c: use fopen_or_warn()
 - attr.c: use fopen_or_warn()
 - wrapper.c: add fopen_or_warn()
 - wrapper.c: add warn_on_fopen_errors()
 - config.mak.uname: set FREAD_READS_DIRECTORIES for Darwin, too
 - config.mak.uname: set FREAD_READS_DIRECTORIES for Linux and FreeBSD
 - clone: use xfopen() instead of fopen()
 - Use xfopen() in more places
 - git_fopen: fix a sparse 'not declared' warning

 We often try to open a file for reading whose existence is
 optional, and silently ignore errors from open/fopen; report such
 errors if they are not due to missing files.

 Will merge to 'next'.
 Looks like this is now in a good shape.
 cf. <20170503101706.9223-1-pclouds@gmail.com>


* bc/object-id (2017-05-08) 53 commits
  (merged to 'next' on 2017-05-20 at e7372733fb)
 + object: convert parse_object* to take struct object_id
 + tree: convert parse_tree_indirect to struct object_id
 + sequencer: convert do_recursive_merge to struct object_id
 + diff-lib: convert do_diff_cache to struct object_id
 + builtin/ls-tree: convert to struct object_id
 + merge: convert checkout_fast_forward to struct object_id
 + sequencer: convert fast_forward_to to struct object_id
 + builtin/ls-files: convert overlay_tree_on_cache to object_id
 + builtin/read-tree: convert to struct object_id
 + sha1_name: convert internals of peel_onion to object_id
 + upload-pack: convert remaining parse_object callers to object_id
 + revision: convert remaining parse_object callers to object_id
 + revision: rename add_pending_sha1 to add_pending_oid
 + http-push: convert process_ls_object and descendants to object_id
 + refs/files-backend: convert many internals to struct object_id
 + refs: convert struct ref_update to use struct object_id
 + ref-filter: convert some static functions to struct object_id
 + Convert struct ref_array_item to struct object_id
 + Convert the verify_pack callback to struct object_id
 + Convert lookup_tag to struct object_id
 + log-tree: convert to struct object_id
 + Convert lookup_tree to struct object_id
 + builtin/reflog: convert tree_is_complete to take struct object_id
 + tree: convert read_tree_1 to use struct object_id internally
 + Convert lookup_blob to struct object_id
 + Convert remaining callers of lookup_blob to object_id
 + builtin/unpack-objects: convert to struct object_id
 + pack: convert struct pack_idx_entry to struct object_id
 + Convert lookup_commit* to struct object_id
 + Convert remaining callers of lookup_commit_reference* to object_id
 + builtin/tag: convert to struct object_id
 + sequencer: convert some functions to struct object_id
 + shallow: convert shallow registration functions to object_id
 + revision: convert prepare_show_merge to struct object_id
 + notes-utils: convert internals to struct object_id
 + http-push: convert some static functions to struct object_id
 + tag: convert parse_tag_buffer to struct object_id
 + builtin/verify-commit: convert to struct object_id
 + reflog_expire: convert to struct object_id
 + parse-options-cb: convert to struct object_id
 + notes-cache: convert to struct object_id
 + submodule: convert merge_submodule to use struct object_id
 + fast-import: convert to struct object_id
 + fast-import: convert internal structs to struct object_id
 + builtin/rev-parse: convert to struct object_id
 + builtin/blame: convert static function to struct object_id
 + branch: convert to struct object_id
 + bundle: convert to struct object_id
 + builtin/prune: convert to struct object_id
 + builtin/name-rev: convert to struct object_id
 + Convert struct cache_tree to use struct object_id
 + Clean up outstanding object_id transforms.
 + fetch-pack: convert to struct object_id
 (this branch is used by mh/packed-ref-store-prep.)

 Conversion from uchar[20] to struct object_id continues.

 Will merge to 'master'.


* js/rebase-i-final (2017-05-02) 10 commits
 - rebase -i: rearrange fixup/squash lines using the rebase--helper
 - t3415: test fixup with wrapped oneline
 - rebase -i: skip unnecessary picks using the rebase--helper
 - rebase -i: check for missing commits in the rebase--helper
 - t3404: relax rebase.missingCommitsCheck tests
 - rebase -i: also expand/collapse the SHA-1s via the rebase--helper
 - rebase -i: do not invent onelines when expanding/collapsing SHA-1s
 - rebase -i: remove useless indentation
 - rebase -i: generate the script via rebase--helper
 - t3415: verify that an empty instructionFormat is handled as before

 The final batch to "git rebase -i" updates to move more code from
 the shell script to C.

 Needs review.


* bw/forking-and-threading (2017-05-15) 14 commits
  (merged to 'next' on 2017-05-23 at 79a6a59851)
 + usage.c: drop set_error_handle()
 + run-command: restrict PATH search to executable files
 + run-command: expose is_executable function
 + run-command: block signals between fork and execve
 + run-command: add note about forking and threading
 + run-command: handle dup2 and close errors in child
 + run-command: eliminate calls to error handling functions in child
 + run-command: don't die in child when duping /dev/null
 + run-command: prepare child environment before forking
 + string-list: add string_list_remove function
 + run-command: use the async-signal-safe execv instead of execvp
 + run-command: prepare command before forking
 + t0061: run_command executes scripts without a #! line
 + t5550: use write_script to generate post-update hook

 The "run-command" API implementation has been made more robust
 against dead-locking in a threaded environment.

 Will merge to 'master'.


* sb/reset-recurse-submodules (2017-04-23) 4 commits
  (merged to 'next' on 2017-05-20 at 8adafdf1be)
 + builtin/reset: add --recurse-submodules switch
 + submodule.c: submodule_move_head works with broken submodules
 + submodule.c: uninitialized submodules are ignored in recursive commands
 + entry.c: submodule recursing: respect force flag correctly
 (this branch is used by sb/submodule-blanket-recursive.)

 "git reset" learned "--recurse-submodules" option.

 Will merge to 'master'.


* bp/sub-process-convert-filter (2017-05-15) 11 commits
  (merged to 'next' on 2017-05-23 at 89f5420a82)
 + convert: update subprocess_read_status() to not die on EOF
 + sub-process: move sub-process functions into separate files
 + convert: rename reusable sub-process functions
 + convert: update generic functions to only use generic data structures
 + convert: separate generic structures and variables from the filter specific ones
 + convert: split start_multi_file_filter() into two separate functions
 + pkt-line: annotate packet_writel with LAST_ARG_MUST_BE_NULL
 + convert: move packet_write_line() into pkt-line as packet_writel()
 + pkt-line: add packet_read_line_gently()
 + pkt-line: fix packet_read_line() to handle len < 0 errors
 + convert: remove erroneous tests for errno == EPIPE

 Code from "conversion using external process" codepath has been
 extracted to a separate sub-process.[ch] module.

 Will merge to 'master'.


* nd/prune-in-worktree (2017-04-24) 12 commits
 - rev-list: expose and document --single-worktree
 - revision.c: --reflog add HEAD reflog from all worktrees
 - files-backend: make reflog iterator go through per-worktree reflog
 - revision.c: --all adds HEAD from all worktrees
 - refs: remove dead for_each_*_submodule()
 - revision.c: use refs_for_each*() instead of for_each_*_submodule()
 - refs: add refs_head_ref()
 - refs: move submodule slash stripping code to get_submodule_ref_store
 - refs.c: refactor get_submodule_ref_store(), share common free block
 - revision.c: --indexed-objects add objects from all worktrees
 - revision.c: refactor add_index_objects_to_pending()
 - revision.h: new flag in struct rev_info wrt. worktree-related refs

 "git gc" and friends when multiple worktrees are used off of a
 single repository did not consider the index and per-worktree refs
 of other worktrees as the root for reachability traversal, making
 objects that are in use only in other worktrees to be subject to
 garbage collection.

 Expecting a reroll.
 Has been waiting for nd/worktree-kill-parse-ref to settle.
 cf. <CACsJy8ADCVBiLoPg_Tz0L6CMdh_eFmK4RYzfQ-PmUgBK7w9e=A@mail.gmail.com>

--------------------------------------------------
[Discard]

* ab/compat-regex-update (2017-05-12) 3 commits
 . DONTMERGE compat/regex: make it compile with -Werror=int-to-pointer-cast
 . compat/regex: update the gawk regex engine from upstream
 . compat/regex: add a README with a maintenance guide

 Update compat/regex we borrowed from gawk.  It seems that some
 customizations we made to the older one were dropped by mistake.

 Will discard.
 cf. <CACBZZX4UUwzRQmyH8joYaqHnuVTjVtGBHp+iZKcnAnwoM_ZJhg@mail.gmail.com>


* jk/no-looking-at-dotgit-outside-repo (2017-05-15) 1 commit
 . config: complain about --local outside of a git repo

 Will discard.
 Superseded by jk/bug-to-abort.


* js/retire-old-remote-spec (2017-05-12) 11 commits
 . PREVIEW: remove support for .git/remotes/ and .git/branches/
 . PREVIEW: t0060: stop testing support for .git/remotes/ and .git/branches/
 . PREVIEW: t5515: remove .git/remotes/ and .git/branches/ tests
 . PREVIEW: remote: remove support for migrating ancient remotes
 . PREVIEW: t5516: stop testing .git/branches/ functionality
 . PREVIEW: t5510: convert .git/remotes/ test to use a regular remote
 . Revert "Revert "Don't create the $GIT_DIR/branches directory on init""
 . remote: warn loud and clear when .git/remotes/ is *still* used
 . remote: warn loud and clear when .git/branches/ is *still* used
 . Documentation: really deprecate .git/remotes/ and .git/branches/
 . git-parse-remote: fix highly misleading man page

 Stop reading from .git/remotes/ and .git/branches/, two old ways
 that we have been supporting to configure short-hands for fetching
 from remote repositories.

 Will discard.
 The procedure of removing an old and unused feature is correctly
 followed by this series, but it is far from clear that the feature
 this attempts to remove is unused or useless.


* jc/checkout-working-tree-only (2017-04-27) 1 commit
 . checkout: add --working-tree-only option

 "git checkout <tree-ish> <pathspec>" learned a variant that does
 not update the index when doing its thing.

 Will discard.
 This was more of "the world could have been like this" illustration
 rather than a "let's make this change" proposal.

^ permalink raw reply	[relevance 4%]

* Re: [PATCH] diff.c: Fix whitespace issues due to a mismerge(?)
  2017-05-09  2:06  0% ` Junio C Hamano
@ 2017-05-09  2:38  3%   ` Junio C Hamano
  0 siblings, 0 replies; 25+ results
From: Junio C Hamano @ 2017-05-09  2:38 UTC (permalink / raw)
  To: Stefan Beller; +Cc: git

Junio C Hamano <gitster@pobox.com> writes:

> Thanks for spotting.  
>
> I do not think you have to worry about any bug in Git-the-program
> with this merge.  If you try to reproduce the merge yourself (which
> by the way is easy to do, with "M=4af9a7d344 && git checkout $M^ &&
> git merge $M^2"), you'll see that quite a lot of changes made to
> "builtin/apply.c" had to be hand-ported to the corresponding lines
> that are now in "apply.c" at the top-level, because in the meantime
> 13b5af22 ("apply: move libified code from builtin/apply.c to
> apply.{c,h}", 2016-04-22) moved things around while the merged side
> branch has been cooking.  
>
> It is very likely that manual killing and yanking in Emacs
> introduced the screw-up.

I did your patch manually by hand and saw that a few hunks are still
left whitespace-broken by your patch, so I committed this one
instead.  Thanks.

-- >8 --
From: Junio C Hamano <gitster@pobox.com>
Date: Mon, 8 May 2017 19:30:24 -0700
Subject: [PATCH] apply.c: fix whitespace-only mismerge

4af9a7d3 ("Merge branch 'bc/object-id'", 2016-09-19) involved
merging a lot of changes made to builtin/apply.c on the side branch
manually to apply.c as an intervening commit 13b5af22 ("apply: move
libified code from builtin/apply.c to apply.{c,h}", 2016-04-22)
moved a lot of the lines changed on the side branch to a different
file apply.c at the top-level, requiring manual patching of it.
Apparently, the maintainer screwed up and made the code indent in a
funny way while doing so.

Reported-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
 apply.c | 338 ++++++++++++++++++++++++++++++++--------------------------------
 1 file changed, 169 insertions(+), 169 deletions(-)

diff --git a/apply.c b/apply.c
index 0e2caeab9c..acebd1cb49 100644
--- a/apply.c
+++ b/apply.c
@@ -4091,181 +4091,181 @@ static int build_fake_ancestor(struct apply_state *state, struct patch *list)
 	res = write_locked_index(&result, &lock, COMMIT_LOCK);
 	discard_index(&result);
 
-	 if (res)
-		 return error(_("could not write temporary index to %s"),
-			      state->fake_ancestor);
+	if (res)
+		return error(_("could not write temporary index to %s"),
+			     state->fake_ancestor);
 
-	 return 0;
- }
+	return 0;
+}
 
- static void stat_patch_list(struct apply_state *state, struct patch *patch)
- {
-	 int files, adds, dels;
+static void stat_patch_list(struct apply_state *state, struct patch *patch)
+{
+	int files, adds, dels;
 
-	 for (files = adds = dels = 0 ; patch ; patch = patch->next) {
-		 files++;
-		 adds += patch->lines_added;
-		 dels += patch->lines_deleted;
-		 show_stats(state, patch);
-	 }
+	for (files = adds = dels = 0 ; patch ; patch = patch->next) {
+		files++;
+		adds += patch->lines_added;
+		dels += patch->lines_deleted;
+		show_stats(state, patch);
+	}
 
-	 print_stat_summary(stdout, files, adds, dels);
- }
+	print_stat_summary(stdout, files, adds, dels);
+}
 
- static void numstat_patch_list(struct apply_state *state,
-				struct patch *patch)
- {
-	 for ( ; patch; patch = patch->next) {
-		 const char *name;
-		 name = patch->new_name ? patch->new_name : patch->old_name;
-		 if (patch->is_binary)
-			 printf("-\t-\t");
-		 else
-			 printf("%d\t%d\t", patch->lines_added, patch->lines_deleted);
-		 write_name_quoted(name, stdout, state->line_termination);
-	 }
- }
-
- static void show_file_mode_name(const char *newdelete, unsigned int mode, const char *name)
- {
-	 if (mode)
-		 printf(" %s mode %06o %s\n", newdelete, mode, name);
-	 else
-		 printf(" %s %s\n", newdelete, name);
- }
-
- static void show_mode_change(struct patch *p, int show_name)
- {
-	 if (p->old_mode && p->new_mode && p->old_mode != p->new_mode) {
-		 if (show_name)
-			 printf(" mode change %06o => %06o %s\n",
-				p->old_mode, p->new_mode, p->new_name);
-		 else
-			 printf(" mode change %06o => %06o\n",
-				p->old_mode, p->new_mode);
-	 }
- }
-
- static void show_rename_copy(struct patch *p)
- {
-	 const char *renamecopy = p->is_rename ? "rename" : "copy";
-	 const char *old, *new;
-
-	 /* Find common prefix */
-	 old = p->old_name;
-	 new = p->new_name;
-	 while (1) {
-		 const char *slash_old, *slash_new;
-		 slash_old = strchr(old, '/');
-		 slash_new = strchr(new, '/');
-		 if (!slash_old ||
-		     !slash_new ||
-		     slash_old - old != slash_new - new ||
-		     memcmp(old, new, slash_new - new))
-			 break;
-		 old = slash_old + 1;
-		 new = slash_new + 1;
-	 }
-	 /* p->old_name thru old is the common prefix, and old and new
-	  * through the end of names are renames
-	  */
-	 if (old != p->old_name)
-		 printf(" %s %.*s{%s => %s} (%d%%)\n", renamecopy,
-			(int)(old - p->old_name), p->old_name,
-			old, new, p->score);
-	 else
-		 printf(" %s %s => %s (%d%%)\n", renamecopy,
-			p->old_name, p->new_name, p->score);
-	 show_mode_change(p, 0);
- }
-
- static void summary_patch_list(struct patch *patch)
- {
-	 struct patch *p;
-
-	 for (p = patch; p; p = p->next) {
-		 if (p->is_new)
-			 show_file_mode_name("create", p->new_mode, p->new_name);
-		 else if (p->is_delete)
-			 show_file_mode_name("delete", p->old_mode, p->old_name);
-		 else {
-			 if (p->is_rename || p->is_copy)
-				 show_rename_copy(p);
-			 else {
-				 if (p->score) {
-					 printf(" rewrite %s (%d%%)\n",
-						p->new_name, p->score);
-					 show_mode_change(p, 0);
-				 }
-				 else
-					 show_mode_change(p, 1);
-			 }
-		 }
-	 }
- }
-
- static void patch_stats(struct apply_state *state, struct patch *patch)
- {
-	 int lines = patch->lines_added + patch->lines_deleted;
-
-	 if (lines > state->max_change)
-		 state->max_change = lines;
-	 if (patch->old_name) {
-		 int len = quote_c_style(patch->old_name, NULL, NULL, 0);
-		 if (!len)
-			 len = strlen(patch->old_name);
-		 if (len > state->max_len)
-			 state->max_len = len;
-	 }
-	 if (patch->new_name) {
-		 int len = quote_c_style(patch->new_name, NULL, NULL, 0);
-		 if (!len)
-			 len = strlen(patch->new_name);
-		 if (len > state->max_len)
-			 state->max_len = len;
-	 }
- }
-
- static int remove_file(struct apply_state *state, struct patch *patch, int rmdir_empty)
- {
-	 if (state->update_index) {
-		 if (remove_file_from_cache(patch->old_name) < 0)
-			 return error(_("unable to remove %s from index"), patch->old_name);
-	 }
-	 if (!state->cached) {
-		 if (!remove_or_warn(patch->old_mode, patch->old_name) && rmdir_empty) {
-			 remove_path(patch->old_name);
-		 }
-	 }
-	 return 0;
- }
-
- static int add_index_file(struct apply_state *state,
-			   const char *path,
-			   unsigned mode,
-			   void *buf,
-			   unsigned long size)
- {
-	 struct stat st;
-	 struct cache_entry *ce;
-	 int namelen = strlen(path);
-	 unsigned ce_size = cache_entry_size(namelen);
-
-	 if (!state->update_index)
-		 return 0;
-
-	 ce = xcalloc(1, ce_size);
-	 memcpy(ce->name, path, namelen);
-	 ce->ce_mode = create_ce_mode(mode);
-	 ce->ce_flags = create_ce_flags(0);
-	 ce->ce_namelen = namelen;
-	 if (S_ISGITLINK(mode)) {
-		 const char *s;
-
-		 if (!skip_prefix(buf, "Subproject commit ", &s) ||
-		     get_oid_hex(s, &ce->oid)) {
+static void numstat_patch_list(struct apply_state *state,
+			       struct patch *patch)
+{
+	for ( ; patch; patch = patch->next) {
+		const char *name;
+		name = patch->new_name ? patch->new_name : patch->old_name;
+		if (patch->is_binary)
+			printf("-\t-\t");
+		else
+			printf("%d\t%d\t", patch->lines_added, patch->lines_deleted);
+		write_name_quoted(name, stdout, state->line_termination);
+	}
+}
+
+static void show_file_mode_name(const char *newdelete, unsigned int mode, const char *name)
+{
+	if (mode)
+		printf(" %s mode %06o %s\n", newdelete, mode, name);
+	else
+		printf(" %s %s\n", newdelete, name);
+}
+
+static void show_mode_change(struct patch *p, int show_name)
+{
+	if (p->old_mode && p->new_mode && p->old_mode != p->new_mode) {
+		if (show_name)
+			printf(" mode change %06o => %06o %s\n",
+			       p->old_mode, p->new_mode, p->new_name);
+		else
+			printf(" mode change %06o => %06o\n",
+			       p->old_mode, p->new_mode);
+	}
+}
+
+static void show_rename_copy(struct patch *p)
+{
+	const char *renamecopy = p->is_rename ? "rename" : "copy";
+	const char *old, *new;
+
+	/* Find common prefix */
+	old = p->old_name;
+	new = p->new_name;
+	while (1) {
+		const char *slash_old, *slash_new;
+		slash_old = strchr(old, '/');
+		slash_new = strchr(new, '/');
+		if (!slash_old ||
+		    !slash_new ||
+		    slash_old - old != slash_new - new ||
+		    memcmp(old, new, slash_new - new))
+			break;
+		old = slash_old + 1;
+		new = slash_new + 1;
+	}
+	/* p->old_name thru old is the common prefix, and old and new
+	 * through the end of names are renames
+	 */
+	if (old != p->old_name)
+		printf(" %s %.*s{%s => %s} (%d%%)\n", renamecopy,
+		       (int)(old - p->old_name), p->old_name,
+		       old, new, p->score);
+	else
+		printf(" %s %s => %s (%d%%)\n", renamecopy,
+		       p->old_name, p->new_name, p->score);
+	show_mode_change(p, 0);
+}
+
+static void summary_patch_list(struct patch *patch)
+{
+	struct patch *p;
+
+	for (p = patch; p; p = p->next) {
+		if (p->is_new)
+			show_file_mode_name("create", p->new_mode, p->new_name);
+		else if (p->is_delete)
+			show_file_mode_name("delete", p->old_mode, p->old_name);
+		else {
+			if (p->is_rename || p->is_copy)
+				show_rename_copy(p);
+			else {
+				if (p->score) {
+					printf(" rewrite %s (%d%%)\n",
+					       p->new_name, p->score);
+					show_mode_change(p, 0);
+				}
+				else
+					show_mode_change(p, 1);
+			}
+		}
+	}
+}
+
+static void patch_stats(struct apply_state *state, struct patch *patch)
+{
+	int lines = patch->lines_added + patch->lines_deleted;
+
+	if (lines > state->max_change)
+		state->max_change = lines;
+	if (patch->old_name) {
+		int len = quote_c_style(patch->old_name, NULL, NULL, 0);
+		if (!len)
+			len = strlen(patch->old_name);
+		if (len > state->max_len)
+			state->max_len = len;
+	}
+	if (patch->new_name) {
+		int len = quote_c_style(patch->new_name, NULL, NULL, 0);
+		if (!len)
+			len = strlen(patch->new_name);
+		if (len > state->max_len)
+			state->max_len = len;
+	}
+}
+
+static int remove_file(struct apply_state *state, struct patch *patch, int rmdir_empty)
+{
+	if (state->update_index) {
+		if (remove_file_from_cache(patch->old_name) < 0)
+			return error(_("unable to remove %s from index"), patch->old_name);
+	}
+	if (!state->cached) {
+		if (!remove_or_warn(patch->old_mode, patch->old_name) && rmdir_empty) {
+			remove_path(patch->old_name);
+		}
+	}
+	return 0;
+}
+
+static int add_index_file(struct apply_state *state,
+			  const char *path,
+			  unsigned mode,
+			  void *buf,
+			  unsigned long size)
+{
+	struct stat st;
+	struct cache_entry *ce;
+	int namelen = strlen(path);
+	unsigned ce_size = cache_entry_size(namelen);
+
+	if (!state->update_index)
+		return 0;
+
+	ce = xcalloc(1, ce_size);
+	memcpy(ce->name, path, namelen);
+	ce->ce_mode = create_ce_mode(mode);
+	ce->ce_flags = create_ce_flags(0);
+	ce->ce_namelen = namelen;
+	if (S_ISGITLINK(mode)) {
+		const char *s;
+
+		if (!skip_prefix(buf, "Subproject commit ", &s) ||
+		    get_oid_hex(s, &ce->oid)) {
 			free(ce);
-			return error(_("corrupt patch for submodule %s"), path);
+		       return error(_("corrupt patch for submodule %s"), path);
 		}
 	} else {
 		if (!state->cached) {
-- 
2.13.0-rc2-265-gd6850fbf8f


^ permalink raw reply related	[relevance 3%]

* Re: [PATCH] diff.c: Fix whitespace issues due to a mismerge(?)
  2017-05-08 18:43  4% [PATCH] diff.c: Fix whitespace issues due to a mismerge(?) Stefan Beller
@ 2017-05-09  2:06  0% ` Junio C Hamano
  2017-05-09  2:38  3%   ` Junio C Hamano
  0 siblings, 1 reply; 25+ results
From: Junio C Hamano @ 2017-05-09  2:06 UTC (permalink / raw)
  To: Stefan Beller; +Cc: git

Stefan Beller <sbeller@google.com> writes:

> It looks like all these lines were introduced by one of the conflict chunks
> in 4af9a7d344 (Merge branch 'bc/object-id', 2016-09-19). Viewing that
> commit in gitk, the indentation seems fine, i.e. there is just one
> whitespace in front of the lines, as you would expect from a formatted
> patch.
>
> Signed-off-by: Stefan Beller <sbeller@google.com>
> ---
>
>  Junio, 
>  I do not think it is worth to apply this patch on its own,
>  but maybe it is worth to investigate your setup? (Assuming it is
>  git that did the merge, we may have a bug in whitespacing and
>  merge conflicts.)

Thanks for spotting.  

I do not think you have to worry about any bug in Git-the-program
with this merge.  If you try to reproduce the merge yourself (which
by the way is easy to do, with "M=4af9a7d344 && git checkout $M^ &&
git merge $M^2"), you'll see that quite a lot of changes made to
"builtin/apply.c" had to be hand-ported to the corresponding lines
that are now in "apply.c" at the top-level, because in the meantime
13b5af22 ("apply: move libified code from builtin/apply.c to
apply.{c,h}", 2016-04-22) moved things around while the merged side
branch has been cooking.  

It is very likely that manual killing and yanking in Emacs
introduced the screw-up.

^ permalink raw reply	[relevance 0%]

* [PATCH] diff.c: Fix whitespace issues due to a mismerge(?)
@ 2017-05-08 18:43  4% Stefan Beller
  2017-05-09  2:06  0% ` Junio C Hamano
  0 siblings, 1 reply; 25+ results
From: Stefan Beller @ 2017-05-08 18:43 UTC (permalink / raw)
  To: gitster; +Cc: git, Stefan Beller

Re-indent lines, as they were off by one.
When a line was not indented (as you would expect from function defintions)
we had a stray whitespace preceding the line.
Indented lines have a stray white space after the indentation by tabs,
before the actual text, i.e.

<TAB><WS>if (...)
<TAB><TAB><WS>...

It looks like all these lines were introduced by one of the conflict chunks
in 4af9a7d344 (Merge branch 'bc/object-id', 2016-09-19). Viewing that
commit in gitk, the indentation seems fine, i.e. there is just one
whitespace in front of the lines, as you would expect from a formatted
patch.

Signed-off-by: Stefan Beller <sbeller@google.com>
---

 Junio, 
 I do not think it is worth to apply this patch on its own,
 but maybe it is worth to investigate your setup? (Assuming it is
 git that did the merge, we may have a bug in whitespacing and
 merge conflicts.)
 
 Thanks,
 Stefan

 apply.c | 310 ++++++++++++++++++++++++++++++++--------------------------------
 1 file changed, 155 insertions(+), 155 deletions(-)

diff --git a/apply.c b/apply.c
index e6dbab26ad..be340991d7 100644
--- a/apply.c
+++ b/apply.c
@@ -4098,172 +4098,172 @@ static int build_fake_ancestor(struct apply_state *state, struct patch *list)
 	 return 0;
  }
 
- static void stat_patch_list(struct apply_state *state, struct patch *patch)
- {
-	 int files, adds, dels;
-
-	 for (files = adds = dels = 0 ; patch ; patch = patch->next) {
-		 files++;
-		 adds += patch->lines_added;
-		 dels += patch->lines_deleted;
-		 show_stats(state, patch);
-	 }
-
-	 print_stat_summary(stdout, files, adds, dels);
- }
+static void stat_patch_list(struct apply_state *state, struct patch *patch)
+{
+	int files, adds, dels;
 
- static void numstat_patch_list(struct apply_state *state,
+	for (files = adds = dels = 0 ; patch ; patch = patch->next) {
+		files++;
+		adds += patch->lines_added;
+		dels += patch->lines_deleted;
+		show_stats(state, patch);
+	}
+
+	print_stat_summary(stdout, files, adds, dels);
+}
+
+static void numstat_patch_list(struct apply_state *state,
 				struct patch *patch)
- {
-	 for ( ; patch; patch = patch->next) {
-		 const char *name;
-		 name = patch->new_name ? patch->new_name : patch->old_name;
-		 if (patch->is_binary)
-			 printf("-\t-\t");
-		 else
-			 printf("%d\t%d\t", patch->lines_added, patch->lines_deleted);
-		 write_name_quoted(name, stdout, state->line_termination);
-	 }
- }
+{
+	for ( ; patch; patch = patch->next) {
+		const char *name;
+		name = patch->new_name ? patch->new_name : patch->old_name;
+		if (patch->is_binary)
+			printf("-\t-\t");
+		else
+			printf("%d\t%d\t", patch->lines_added, patch->lines_deleted);
+		write_name_quoted(name, stdout, state->line_termination);
+	}
+}
 
- static void show_file_mode_name(const char *newdelete, unsigned int mode, const char *name)
- {
-	 if (mode)
-		 printf(" %s mode %06o %s\n", newdelete, mode, name);
+static void show_file_mode_name(const char *newdelete, unsigned int mode, const char *name)
+{
+	if (mode)
+		printf(" %s mode %06o %s\n", newdelete, mode, name);
 	 else
-		 printf(" %s %s\n", newdelete, name);
- }
+		printf(" %s %s\n", newdelete, name);
+}
 
- static void show_mode_change(struct patch *p, int show_name)
- {
-	 if (p->old_mode && p->new_mode && p->old_mode != p->new_mode) {
-		 if (show_name)
-			 printf(" mode change %06o => %06o %s\n",
+static void show_mode_change(struct patch *p, int show_name)
+{
+	if (p->old_mode && p->new_mode && p->old_mode != p->new_mode) {
+		if (show_name)
+			printf(" mode change %06o => %06o %s\n",
 				p->old_mode, p->new_mode, p->new_name);
-		 else
-			 printf(" mode change %06o => %06o\n",
-				p->old_mode, p->new_mode);
-	 }
- }
+		else
+			printf(" mode change %06o => %06o\n",
+			       p->old_mode, p->new_mode);
+	}
+}
 
- static void show_rename_copy(struct patch *p)
- {
-	 const char *renamecopy = p->is_rename ? "rename" : "copy";
-	 const char *old, *new;
-
-	 /* Find common prefix */
-	 old = p->old_name;
-	 new = p->new_name;
-	 while (1) {
-		 const char *slash_old, *slash_new;
-		 slash_old = strchr(old, '/');
-		 slash_new = strchr(new, '/');
-		 if (!slash_old ||
-		     !slash_new ||
-		     slash_old - old != slash_new - new ||
-		     memcmp(old, new, slash_new - new))
-			 break;
-		 old = slash_old + 1;
-		 new = slash_new + 1;
-	 }
-	 /* p->old_name thru old is the common prefix, and old and new
-	  * through the end of names are renames
-	  */
-	 if (old != p->old_name)
-		 printf(" %s %.*s{%s => %s} (%d%%)\n", renamecopy,
-			(int)(old - p->old_name), p->old_name,
-			old, new, p->score);
-	 else
-		 printf(" %s %s => %s (%d%%)\n", renamecopy,
-			p->old_name, p->new_name, p->score);
-	 show_mode_change(p, 0);
- }
+static void show_rename_copy(struct patch *p)
+{
+	const char *renamecopy = p->is_rename ? "rename" : "copy";
+	const char *old, *new;
 
- static void summary_patch_list(struct patch *patch)
- {
-	 struct patch *p;
-
-	 for (p = patch; p; p = p->next) {
-		 if (p->is_new)
-			 show_file_mode_name("create", p->new_mode, p->new_name);
-		 else if (p->is_delete)
-			 show_file_mode_name("delete", p->old_mode, p->old_name);
-		 else {
-			 if (p->is_rename || p->is_copy)
-				 show_rename_copy(p);
-			 else {
-				 if (p->score) {
-					 printf(" rewrite %s (%d%%)\n",
-						p->new_name, p->score);
-					 show_mode_change(p, 0);
-				 }
-				 else
-					 show_mode_change(p, 1);
-			 }
-		 }
-	 }
- }
+	/* Find common prefix */
+	old = p->old_name;
+	new = p->new_name;
+	while (1) {
+		const char *slash_old, *slash_new;
+		slash_old = strchr(old, '/');
+		slash_new = strchr(new, '/');
+		if (!slash_old ||
+		    !slash_new ||
+		    slash_old - old != slash_new - new ||
+		    memcmp(old, new, slash_new - new))
+			break;
+		old = slash_old + 1;
+		new = slash_new + 1;
+	}
+	/* p->old_name thru old is the common prefix, and old and new
+	 * through the end of names are renames
+	 */
+	if (old != p->old_name)
+		printf(" %s %.*s{%s => %s} (%d%%)\n", renamecopy,
+		       (int)(old - p->old_name), p->old_name,
+		       old, new, p->score);
+	else
+		printf(" %s %s => %s (%d%%)\n", renamecopy,
+		       p->old_name, p->new_name, p->score);
+	show_mode_change(p, 0);
+}
 
- static void patch_stats(struct apply_state *state, struct patch *patch)
- {
-	 int lines = patch->lines_added + patch->lines_deleted;
-
-	 if (lines > state->max_change)
-		 state->max_change = lines;
-	 if (patch->old_name) {
-		 int len = quote_c_style(patch->old_name, NULL, NULL, 0);
-		 if (!len)
-			 len = strlen(patch->old_name);
-		 if (len > state->max_len)
-			 state->max_len = len;
-	 }
-	 if (patch->new_name) {
-		 int len = quote_c_style(patch->new_name, NULL, NULL, 0);
-		 if (!len)
-			 len = strlen(patch->new_name);
-		 if (len > state->max_len)
-			 state->max_len = len;
-	 }
- }
+static void summary_patch_list(struct patch *patch)
+{
+	struct patch *p;
 
- static int remove_file(struct apply_state *state, struct patch *patch, int rmdir_empty)
- {
-	 if (state->update_index) {
-		 if (remove_file_from_cache(patch->old_name) < 0)
-			 return error(_("unable to remove %s from index"), patch->old_name);
-	 }
-	 if (!state->cached) {
-		 if (!remove_or_warn(patch->old_mode, patch->old_name) && rmdir_empty) {
-			 remove_path(patch->old_name);
-		 }
-	 }
-	 return 0;
- }
+	for (p = patch; p; p = p->next) {
+		if (p->is_new)
+			show_file_mode_name("create", p->new_mode, p->new_name);
+		else if (p->is_delete)
+			show_file_mode_name("delete", p->old_mode, p->old_name);
+		else {
+			if (p->is_rename || p->is_copy)
+				show_rename_copy(p);
+			else {
+				if (p->score) {
+					printf(" rewrite %s (%d%%)\n",
+					       p->new_name, p->score);
+					show_mode_change(p, 0);
+				}
+				else
+					show_mode_change(p, 1);
+			}
+		}
+	}
+}
 
- static int add_index_file(struct apply_state *state,
-			   const char *path,
-			   unsigned mode,
-			   void *buf,
-			   unsigned long size)
- {
-	 struct stat st;
-	 struct cache_entry *ce;
-	 int namelen = strlen(path);
-	 unsigned ce_size = cache_entry_size(namelen);
-
-	 if (!state->update_index)
-		 return 0;
-
-	 ce = xcalloc(1, ce_size);
-	 memcpy(ce->name, path, namelen);
-	 ce->ce_mode = create_ce_mode(mode);
-	 ce->ce_flags = create_ce_flags(0);
-	 ce->ce_namelen = namelen;
-	 if (S_ISGITLINK(mode)) {
-		 const char *s;
-
-		 if (!skip_prefix(buf, "Subproject commit ", &s) ||
-		     get_oid_hex(s, &ce->oid)) {
+static void patch_stats(struct apply_state *state, struct patch *patch)
+{
+	int lines = patch->lines_added + patch->lines_deleted;
+
+	if (lines > state->max_change)
+		state->max_change = lines;
+	if (patch->old_name) {
+		int len = quote_c_style(patch->old_name, NULL, NULL, 0);
+		if (!len)
+			len = strlen(patch->old_name);
+		if (len > state->max_len)
+			state->max_len = len;
+	}
+	if (patch->new_name) {
+		int len = quote_c_style(patch->new_name, NULL, NULL, 0);
+		if (!len)
+			len = strlen(patch->new_name);
+		if (len > state->max_len)
+			state->max_len = len;
+	}
+}
+
+static int remove_file(struct apply_state *state, struct patch *patch, int rmdir_empty)
+{
+	if (state->update_index) {
+		if (remove_file_from_cache(patch->old_name) < 0)
+			return error(_("unable to remove %s from index"), patch->old_name);
+	}
+	if (!state->cached) {
+		if (!remove_or_warn(patch->old_mode, patch->old_name) && rmdir_empty) {
+			remove_path(patch->old_name);
+		}
+	}
+	return 0;
+}
+
+static int add_index_file(struct apply_state *state,
+			  const char *path,
+			  unsigned mode,
+			  void *buf,
+			  unsigned long size)
+{
+	struct stat st;
+	struct cache_entry *ce;
+	int namelen = strlen(path);
+	unsigned ce_size = cache_entry_size(namelen);
+
+	if (!state->update_index)
+		return 0;
+
+	ce = xcalloc(1, ce_size);
+	memcpy(ce->name, path, namelen);
+	ce->ce_mode = create_ce_mode(mode);
+	ce->ce_flags = create_ce_flags(0);
+	ce->ce_namelen = namelen;
+	if (S_ISGITLINK(mode)) {
+		const char *s;
+
+		if (!skip_prefix(buf, "Subproject commit ", &s) ||
+		    get_oid_hex(s, &ce->oid)) {
 			free(ce);
 			return error(_("corrupt patch for submodule %s"), path);
 		}
-- 
2.13.0.rc2.17.g46b64dc68a


^ permalink raw reply related	[relevance 4%]

Results 1-25 of 25 | reverse | options above
-- pct% links below jump to the message on this page, permalinks otherwise --
2017-05-08 18:43  4% [PATCH] diff.c: Fix whitespace issues due to a mismerge(?) Stefan Beller
2017-05-09  2:06  0% ` Junio C Hamano
2017-05-09  2:38  3%   ` Junio C Hamano
2017-05-23  8:08  4% What's cooking in git.git (May 2017, #07; Tue, 23) Junio C Hamano
2017-05-29  6:23  4% What's cooking in git.git (May 2017, #08; Mon, 29) Junio C Hamano
2017-06-01  7:44  3% What's cooking in git.git (Jun 2017, #01; Thu, 1) Junio C Hamano
2017-06-02  6:38  3% What's cooking in git.git (Jun 2017, #02; Fri, 2) Junio C Hamano
2017-06-05  3:59  4% What's cooking in git.git (Jun 2017, #03; Mon, 5) Junio C Hamano
2017-07-27 22:42  7% What's cooking in git.git (Jul 2017, #08; Thu, 27) Junio C Hamano
2017-07-31 22:30  7% What's cooking in git.git (Jul 2017, #09; Mon, 31) Junio C Hamano
2017-08-04 16:55  6% What's cooking in git.git (Aug 2017, #01; Fri, 4) Junio C Hamano
2017-08-12  0:54  5% What's cooking in git.git (Aug 2017, #02; Fri, 11) Junio C Hamano
2017-08-14 23:53  6% What's cooking in git.git (Aug 2017, #03; Mon, 14) Junio C Hamano
2017-08-18 21:26  4% What's cooking in git.git (Aug 2017, #04; Fri, 18) Junio C Hamano
2017-08-19 11:26  0% ` Torsten Bögershausen
2017-08-22 19:56  6% What's cooking in git.git (Aug 2017, #05; Tue, 22) Junio C Hamano
2017-08-23  1:00  0% ` Brandon Williams
2017-08-24 18:50  6% What's cooking in git.git (Aug 2017, #06; Thu, 24) Junio C Hamano
2017-08-27  6:38  6% What's cooking in git.git (Aug 2017, #07; Sat, 26) Junio C Hamano
2017-10-30  6:19  6% What's cooking in git.git (Oct 2017, #07; Mon, 30) Junio C Hamano
2017-11-01  5:43  6% What's cooking in git.git (Nov 2017, #01; Wed, 1) Junio C Hamano
2017-11-06  8:18  5% What's cooking in git.git (Nov 2017, #02; Mon, 6) Junio C Hamano
2017-11-08  5:50  6% What's cooking in git.git (Nov 2017, #03; Wed, 8) Junio C Hamano
2017-11-14  3:47  5% What's cooking in git.git (Nov 2017, #04; Tue, 14) Junio C Hamano
2017-11-17  6:12  5% What's cooking in git.git (Nov 2017, #05; Fri, 17) Junio C Hamano

Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).