To: git@vger.kernel.org
Bcc: lwn@lwn.net
-Subject: What's cooking in git.git (Jan 2017, #05; Thu, 26)
-X-master-at: 4e59582ff70d299f5a88449891e78d15b4b3fabe
-X-next-at: 5f4715cea687c4077e2acd25706e1369a5cb338e
+Subject: What's cooking in git.git (Jan 2017, #06; Tue, 31)
+X-master-at: 8f60064c1f538f06e1c579cbd9840b86b10bcd3d
+X-next-at: d13081a61a6c1d42f310f616f74992dc2def6583
-What's cooking in git.git (Jan 2017, #05; Thu, 26)
+What's cooking in git.git (Jan 2017, #06; Tue, 31)
--------------------------------------------------
Here are the topics that have been cooking. 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.
+Two biggies from Dscho are now in 'master'. Another thanks goes to
+him for pointing out that I had a wrong version of isatty() fix
+earlier in 'maint' and 'master', which is now fixed by merging the
+updated one in both of these branches. Please give the tip of
+'maint' a quick look, as I want to tag and push out 2.11.1 later
+this week, probably at the same time as 2.12-rc0 goes out.
+
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"]
+
+* bw/push-submodule-only (2016-12-20) 3 commits
+ (merged to 'next' on 2017-01-23 at d6cd1c60ae)
+ + push: add option to push only submodules
+ + submodules: add RECURSE_SUBMODULES_ONLY value
+ + transport: reformat flag #defines to be more readable
+
+ "git submodule push" learned "--recurse-submodules=only option to
+ push submodules out without pushing the top-level superproject.
+
+
+* jk/clear-delta-base-cache-fix (2017-01-19) 1 commit
+ (merged to 'next' on 2017-01-23 at 5f4af2b0a5)
+ + clear_delta_base_cache(): don't modify hashmap while iterating
+
+ A crashing bug introduced in v2.11 timeframe has been found (it is
+ triggerable only in fast-import) and fixed.
+
+
+* jk/coding-guidelines-update (2017-01-17) 1 commit
+ (merged to 'next' on 2017-01-23 at 8c57afa288)
+ + CodingGuidelines: clarify multi-line brace style
+
+ Developer doc update.
+
+
+* jk/fsck-connectivity-check-fix (2017-01-26) 9 commits
+ (merged to 'next' on 2017-01-26 at dd03f7a17f)
+ + fsck: lazily load types under --connectivity-only
+ + fsck: move typename() printing to its own function
+ (merged to 'next' on 2017-01-25 at f3d7d93785)
+ + t1450: use "mv -f" within loose object directory
+ (merged to 'next' on 2017-01-23 at e8e9b76b84)
+ + fsck: check HAS_OBJ more consistently
+ + fsck: do not fallback "git fsck <bogus>" to "git fsck"
+ + fsck: tighten error-checks of "git fsck <head>"
+ + fsck: prepare dummy objects for --connectivity-check
+ + fsck: report trees as dangling
+ + t1450: clean up sub-objects in duplicate-entry test
+
+ "git fsck --connectivity-check" was not working at all.
+
+
+* jk/loose-object-fsck (2017-01-15) 6 commits
+ (merged to 'next' on 2017-01-23 at 4302ad090d)
+ + fsck: detect trailing garbage in all object types
+ + fsck: parse loose object paths directly
+ + sha1_file: add read_loose_object() function
+ + t1450: test fsck of packed objects
+ + sha1_file: fix error message for alternate objects
+ + t1450: refactor loose-object removal
+
+ "git fsck" inspects loose objects more carefully now.
+
+
+* jk/vreport-sanitize (2017-01-11) 2 commits
+ (merged to 'next' on 2017-01-18 at 4bbf370981)
+ + vreport: sanitize ASCII control chars
+ + Revert "vreportf: avoid intermediate buffer"
+
+ An error message with an ASCII control character like '\r' in it
+ can alter the message to hide its early part, which is problematic
+ when a remote side gives such an error message that the local side
+ will relay with a "remote: " prefix.
+
+
+* js/difftool-builtin (2017-01-25) 4 commits
+ (merged to 'next' on 2017-01-25 at 87d2a0976a)
+ + difftool: hack around -Wzero-length-format warning
+ (merged to 'next' on 2017-01-23 at 6f4810dbd9)
+ + difftool: retire the scripted version
+ + difftool: implement the functionality in the builtin
+ + difftool: add a skeleton for the upcoming builtin
+
+ Rewrite a scripted porcelain "git difftool" in C.
+
+
+* js/exec-path-coverity-workaround (2017-01-09) 2 commits
+ (merged to 'next' on 2017-01-23 at bf5dfbf860)
+ + git_exec_path: do not return the result of getenv()
+ + git_exec_path: avoid Coverity warning about unfree()d result
+
+ Code cleanup.
+ Split out of another topic.
+
+
+* js/mingw-isatty (2017-01-18) 1 commit
+ (merged to 'next' on 2017-01-23 at ae0f80e058)
+ + mingw: follow-up to "replace isatty() hack"
+
+ An update to a topic that is already in 'master'.
+
+
+* js/remote-rename-with-half-configured-remote (2017-01-19) 2 commits
+ (merged to 'next' on 2017-01-23 at a1b655dbac)
+ + remote rename: more carefully determine whether a remote is configured
+ + remote rename: demonstrate a bogus "remote exists" bug
+
+ With anticipatory tweaking for remotes defined in ~/.gitconfig
+ (e.g. "remote.origin.prune" set to true, even though there may or
+ may not actually be "origin" remote defined in a particular Git
+ repository), "git remote rename" and other commands misinterpreted
+ and behaved as if such a non-existing remote actually existed.
+
+
+* js/sequencer-i-countdown-3 (2017-01-17) 38 commits
+ (merged to 'next' on 2017-01-23 at 251dd15139)
+ + sequencer (rebase -i): write out the final message
+ + sequencer (rebase -i): write the progress into files
+ + sequencer (rebase -i): show the progress
+ + sequencer (rebase -i): suggest --edit-todo upon unknown command
+ + sequencer (rebase -i): show only failed cherry-picks' output
+ + sequencer (rebase -i): show only failed `git commit`'s output
+ + sequencer: use run_command() directly
+ + sequencer: update reading author-script
+ + sequencer (rebase -i): differentiate between comments and 'noop'
+ + sequencer (rebase -i): implement the 'drop' command
+ + sequencer (rebase -i): allow rescheduling commands
+ + sequencer (rebase -i): respect strategy/strategy_opts settings
+ + sequencer (rebase -i): respect the rebase.autostash setting
+ + sequencer (rebase -i): run the post-rewrite hook, if needed
+ + sequencer (rebase -i): record interrupted commits in rewritten, too
+ + sequencer (rebase -i): copy commit notes at end
+ + sequencer (rebase -i): set the reflog message consistently
+ + sequencer (rebase -i): refactor setting the reflog message
+ + sequencer (rebase -i): allow fast-forwarding for edit/reword
+ + sequencer (rebase -i): implement the 'reword' command
+ + sequencer (rebase -i): leave a patch upon error
+ + sequencer (rebase -i): update refs after a successful rebase
+ + sequencer (rebase -i): the todo can be empty when continuing
+ + sequencer (rebase -i): skip some revert/cherry-pick specific code path
+ + sequencer (rebase -i): remove CHERRY_PICK_HEAD when no longer needed
+ + sequencer (rebase -i): allow continuing with staged changes
+ + sequencer (rebase -i): write an author-script file
+ + sequencer (rebase -i): implement the short commands
+ + sequencer (rebase -i): add support for the 'fixup' and 'squash' commands
+ + sequencer (rebase -i): write the 'done' file
+ + sequencer (rebase -i): learn about the 'verbose' mode
+ + sequencer (rebase -i): implement the 'exec' command
+ + sequencer (rebase -i): implement the 'edit' command
+ + sequencer (rebase -i): implement the 'noop' command
+ + sequencer: support a new action: 'interactive rebase'
+ + sequencer: use a helper to find the commit message
+ + sequencer: move "else" keyword onto the same line as preceding brace
+ + sequencer: avoid unnecessary curly braces
+
+ The sequencer machinery has been further enhanced so that a later
+ set of patches can start using it to reimplement "rebase -i".
+ I think I've said everything that needs to be said on this topic.
+
+
+* ls/travis-p4-on-macos (2017-01-23) 1 commit
+ (merged to 'next' on 2017-01-23 at 2d51987faa)
+ + travis-ci: fix Perforce install on macOS
+
+ Update the definition of the MacOSX test environment used by
+ TravisCI.
+
+
+* rs/qsort-s (2017-01-23) 5 commits
+ (merged to 'next' on 2017-01-23 at 7e2813848b)
+ + ref-filter: use QSORT_S in ref_array_sort()
+ + string-list: use QSORT_S in string_list_sort()
+ + perf: add basic sort performance test
+ + add QSORT_S
+ + compat: add qsort_s()
+
+ A few codepaths had to rely on a global variable when sorting
+ elements of an array because sort(3) API does not allow extra data
+ to be passed to the comparison function. Use qsort_s() when
+ natively available, and a fallback implementation of it when not,
+ to eliminate the need, which is a prerequisite for making the
+ codepath reentrant.
+
+
+* sb/in-core-index-doc (2017-01-19) 4 commits
+ (merged to 'next' on 2017-01-23 at 30224463e8)
+ + documentation: retire unfinished documentation
+ + cache.h: document add_[file_]to_index
+ + cache.h: document remove_index_entry_at
+ + cache.h: document index_name_pos
+
+ Documentation and in-code comments updates.
+
+
+* sb/retire-convert-objects-from-contrib (2017-01-19) 1 commit
+ (merged to 'next' on 2017-01-23 at decc1e237d)
+ + contrib: remove git-convert-objects
+
+ Remove an ancient tool left in contrib/.
+
+
+* st/verify-tag (2017-01-18) 6 commits
+ (merged to 'next' on 2017-01-23 at 2810959427)
+ + t/t7004-tag: Add --format specifier tests
+ + t/t7030-verify-tag: Add --format specifier tests
+ + builtin/tag: add --format argument for tag -v
+ + builtin/verify-tag: add --format to verify-tag
+ + ref-filter: add function to print single ref_array_item
+ + gpg-interface, tag: add GPG_VERIFY_OMIT_STATUS flag
+
+ "git tag" and "git verify-tag" learned to put GPG verification
+ status in their "--format=<placeholders>" output format.
+
+
+* vp/show-ref-verify-head (2017-01-23) 6 commits
+ (merged to 'next' on 2017-01-23 at af6dd9d239)
+ + show-ref: remove a stale comment
+ + show-ref: remove dead `if (verify)' check
+ + show-ref: detect dangling refs under --verify as well
+ + show-ref: move --quiet handling into show_one()
+ + show-ref: allow -d to work with --verify
+ + show-ref: accept HEAD with --verify
+
+ "git show-ref HEAD" used with "--verify" because the user is not
+ interested in seeing refs/remotes/origin/HEAD, and used with
+ "--head" because the user does not want HEAD to be filtered out,
+ i.e. "git show-ref --head --verify HEAD", did not work as expected.
+
--------------------------------------------------
[New Topics]
-* js/mingw-hooks-with-exe-suffix (2017-01-26) 1 commit
- - mingw: allow hooks to be .exe files
+* cw/doc-sign-off (2017-01-27) 1 commit
+ - doc: clarify distinction between sign-off and pgp-signing
- Names of the various hook scripts must be spelled exactly, but on
- Windows, an .exe binary must be named with .exe suffix; notice
- $GIT_DIR/hooks/<hookname>.exe as a valid <hookname> hook.
+ Doc update.
Will merge to 'next'.
-* js/retire-relink (2017-01-25) 2 commits
- - relink: really remove the command
- - relink: retire the command
+* jk/delta-chain-limit (2017-01-27) 2 commits
+ - pack-objects: convert recursion to iteration in break_delta_chain()
+ - pack-objects: enforce --depth limit in reused deltas
- Cruft removal.
+ "git repack --depth=<n>" for a long time busted the specified depth
+ when reusing delta from existing packs. This has been corrected.
Will merge to 'next'.
-* js/status-pre-rebase-i (2017-01-26) 1 commit
- - status: be prepared for not-yet-started interactive rebase
+* js/re-running-failed-tests (2017-01-27) 1 commit
+ - t/Makefile: add a rule to re-run previously-failed tests
- After starting "git rebase -i", which first opens the user's editor
- to edit the series of patches to apply, but before saving the
- contents of that file, "git status" failed to show the current
- state (i.e. you are in an interactive rebase session, but you have
- applied no steps yet) correctly.
+ "make -C t failed" will now run only the tests that failed in the
+ previous run. This is usable only when prove is not use, and gives
+ a useless error message when run after "make clean".
Will merge to 'next'.
-* ps/urlmatch-wildcard (2017-01-26) 5 commits
- - SQUASH???
- - urlmatch: allow globbing for the URL host part
- - urlmatch: split host and port fields in `struct url_info`
- - urlmatch: enable normalization of URLs with globs
- - mailmap: add Patrick Steinhardt's work address
+* js/unzip-in-usr-bin-workaround (2017-01-27) 1 commit
+ - test-lib: on FreeBSD, look for unzip(1) in /usr/local/bin/
- The <url> part in "http.<url>.<variable>" configuration variable
- can now be spelled with '*' that serves as wildcard.
- E.g. "http.https://*.example.com.proxy" can be used to specify the
- proxy used for https://a.example.com, https://b.example.com, etc.,
- i.e. any host in the example.com domain.
+ Test tweak for FreeBSD where /usr/bin/unzip is unsuitable to run
+ our tests but /usr/local/bin/unzip is usable.
+ Will merge to 'next'.
-* rs/absolute-pathdup (2017-01-26) 2 commits
- - use absolute_pathdup()
- - abspath: add absolute_pathdup()
- Code cleanup.
+* gv/mingw-p4-mapuser (2017-01-30) 1 commit
+ - git-p4: fix git-p4.mapUser on Windows
+
+ "git p4" did not work well with multiple git-p4.mapUser entries on
+ Windows.
Will merge to 'next'.
-* sb/submodule-recursive-absorb (2017-01-26) 3 commits
- - submodule absorbing: fix worktree/gitdir pointers recursively for non-moves
- - cache.h: expose the dying procedure for reading gitlinks
- - setup: add gentle version of resolve_git_dir
+* hv/mingw-help-is-executable (2017-01-30) 1 commit
+ - help: improve is_executable() on Windows
- When a submodule "sub", which has another submodule "module" nested
- within it, is "absorbed" into the top-level superproject, the inner
- submodule "module" is left in a strange state.
+ "git help" enumerates executable files in $PATH; the implementation
+ of "is this file executable?" on Windows has been optimized.
Will merge to 'next'.
-* sb/submodule-update-initial-runs-custom-script (2017-01-26) 1 commit
- - submodule update: run custom update script for initial populating as well
+* cw/log-updates-for-all-refs-really (2017-01-31) 3 commits
+ - update-ref: add test cases for bare repository
+ - refs: add option core.logAllRefUpdates = always
+ - config: add markup to core.logAllRefUpdates doc
- The user can specify a custom update method that is run when
- "submodule update" updates an already checked out submodule. This
- was ignored when checking the submodule out for the first time and
- we instead always just checked out the commit that is bound to the
- path in the superproject's index.
+ The "core.logAllRefUpdates" that used to be boolean has been
+ enhanced to take 'always' as well, to record ref updates to refs
+ other than the ones that are expected to be updated (i.e. branches,
+ remote-tracking branches and notes).
Will merge to 'next'.
-* sf/putty-w-args (2017-01-26) 3 commits
- - connect: support GIT_SSH_VARIANT and ssh.variant
- - connect: rename tortoiseplink and putty variables
- - connect: handle putty/plink also in GIT_SSH_COMMAND
+* mm/merge-rename-delete-message (2017-01-30) 1 commit
+ - merge-recursive: make "CONFLICT (rename/delete)" message show both paths
- The command line options for ssh invocation needs to be tweaked for
- some implementations of SSH (e.g. PuTTY plink wants "-P <port>"
- while OpenSSH wants "-p <port>" to specify port to connect to), and
- the variant was guessed when GIT_SSH environment variable is used
- to specify it. Extend the guess to the command specified by the
- newer GIT_SSH_COMMAND and also core.sshcommand configuration
- variable, and give an escape hatch for users to deal with
- misdetected cases.
- Expecting a reroll of the last step.
+* mm/reset-facl-before-umask-test (2017-01-30) 1 commit
+ - t0001: don't let a default ACL interfere with the umask test
---------------------------------------------------
-[Stalled]
+ Test tweaks for those who have default ACL in their git source tree
+ that interfere with the umask test.
-* jc/diff-b-m (2015-02-23) 5 commits
- . WIPWIP
- . WIP: diff-b-m
- - diffcore-rename: allow easier debugging
- - diffcore-rename.c: add locate_rename_src()
- - diffcore-break: allow debugging
+ Will merge to 'next'.
- "git diff -B -M" produced incorrect patch when the postimage of a
- completely rewritten file is similar to the preimage of a removed
- file; such a resulting file must not be expressed as a rename from
- other place.
- The fix in this patch is broken, unfortunately.
+* rs/object-id (2017-01-30) 3 commits
+ - checkout: convert post_checkout_hook() to struct object_id
+ - use oidcpy() for copying hashes between instances of struct object_id
+ - use oid_to_hex_r() for converting struct object_id hashes to hex strings
- Will discard.
+ "uchar [40]" to "struct object_id" conversion continues.
+
+ Will merge to 'next'.
+
+
+* rs/swap (2017-01-30) 5 commits
+ - graph: use SWAP macro
+ - diff: use SWAP macro
+ - use SWAP macro
+ - apply: use SWAP macro
+ - add SWAP macro
+
+ Code clean-up.
+
+ Will merge to 'next'.
+
+
+* pl/complete-diff-submodule-diff (2017-01-30) 1 commit
+ - Completion: Add support for --submodule=diff
+
+ The command line completion (in contrib/) learned that
+ "git diff --submodule=" can take "diff" as a recently added option.
+
+ Will merge to 'next'.
+
+
+* rs/receive-pack-cleanup (2017-01-30) 1 commit
+ - receive-pack: call string_list_clear() unconditionally
+
+ Code clean-up.
+
+ Will merge to 'next'.
+
+
+* sb/submodule-add-force (2016-11-29) 1 commit
+ + submodule add: extend force flag to add existing repos
+ (this branch is used by sb/push-make-submodule-check-the-default.)
+
+ "git submodule add" used to be confused and refused to add a
+ locally created repository; users can now use "--force" option
+ to add them.
+
+ Will merge to 'next'.
--------------------------------------------------
-[Cooking]
+[Stalled]
+
+* ls/p4-path-encoding (2016-12-18) 1 commit
+ - git-p4: fix git-p4.pathEncoding for removed files
+
+ When "git p4" imports changelist that removes paths, it failed to
+ convert pathnames when the p4 used encoding different from the one
+ used on the Git side. This has been corrected.
+
+ Will be rerolled.
+ cf. <7E1C7387-4F37-423F-803D-3B5690B49D40@gmail.com>
+
* sh/grep-tree-obj-tweak-output (2017-01-20) 2 commits
- grep: use '/' delimiter for paths
Waiting for the review discussion to settle, followed by a reroll.
-* vp/show-ref-verify-head (2017-01-23) 6 commits
- (merged to 'next' on 2017-01-23 at af6dd9d239)
- + show-ref: remove a stale comment
- + show-ref: remove dead `if (verify)' check
- + show-ref: detect dangling refs under --verify as well
- + show-ref: move --quiet handling into show_one()
- + show-ref: allow -d to work with --verify
- + show-ref: accept HEAD with --verify
+* mh/ref-remove-empty-directory (2017-01-07) 23 commits
+ - files_transaction_commit(): clean up empty directories
+ - try_remove_empty_parents(): teach to remove parents of reflogs, too
+ - try_remove_empty_parents(): don't trash argument contents
+ - try_remove_empty_parents(): rename parameter "name" -> "refname"
+ - delete_ref_loose(): inline function
+ - delete_ref_loose(): derive loose reference path from lock
+ - log_ref_write_1(): inline function
+ - log_ref_setup(): manage the name of the reflog file internally
+ - log_ref_write_1(): don't depend on logfile argument
+ - log_ref_setup(): pass the open file descriptor back to the caller
+ - log_ref_setup(): improve robustness against races
+ - log_ref_setup(): separate code for create vs non-create
+ - log_ref_write(): inline function
+ - rename_tmp_log(): improve error reporting
+ - rename_tmp_log(): use raceproof_create_file()
+ - lock_ref_sha1_basic(): use raceproof_create_file()
+ - lock_ref_sha1_basic(): inline constant
+ - raceproof_create_file(): new function
+ - safe_create_leading_directories(): set errno on SCLD_EXISTS
+ - safe_create_leading_directories_const(): preserve errno
+ - t5505: use "for-each-ref" to test for the non-existence of references
+ - refname_is_safe(): correct docstring
+ - files_rename_ref(): tidy up whitespace
- "git show-ref HEAD" used with "--verify" because the user is not
- interested in seeing refs/remotes/origin/HEAD, and used with
- "--head" because the user does not want HEAD to be filtered out,
- i.e. "git show-ref --head --verify HEAD", did not work as expected.
+ Deletion of a branch "foo/bar" could remove .git/refs/heads/foo
+ once there no longer is any other branch whose name begins with
+ "foo/", but we didn't do so so far. Now we do.
- Will merge to 'master'.
+ Expecting a reroll.
+ cf. <5051c78e-51f9-becd-e1a6-9c0b781d6912@alum.mit.edu>
-* bc/use-asciidoctor-opt (2017-01-26) 9 commits
- - SQUASH???
- - Documentation: implement linkgit macro for Asciidoctor
- - Makefile: add a knob to enable the use of Asciidoctor
- - Documentation: move dblatex arguments into variable
- - Documentation: add XSLT to fix DocBook for Texinfo
- - Documentation: sort sources for gitman.texi
- - Documentation: remove unneeded argument in cat-texi.perl
- - Documentation: modernize cat-texi.perl
- - Documentation: fix warning in cat-texi.perl
+* jc/diff-b-m (2015-02-23) 5 commits
+ . WIPWIP
+ . WIP: diff-b-m
+ - diffcore-rename: allow easier debugging
+ - diffcore-rename.c: add locate_rename_src()
+ - diffcore-break: allow debugging
- Asciidoctor, an alternative reimplementation of AsciiDoc, still
- needs some changes to work with documents meant to be formatted
- with AsciiDoc. "make USE_ASCIIDOCTOR=YesPlease" to use it out of
- the box to document our pages is getting closer to reality.
+ "git diff -B -M" produced incorrect patch when the postimage of a
+ completely rewritten file is similar to the preimage of a removed
+ file; such a resulting file must not be expressed as a rename from
+ other place.
+ The fix in this patch is broken, unfortunately.
-* ls/travis-p4-on-macos (2017-01-23) 1 commit
- (merged to 'next' on 2017-01-23 at 2d51987faa)
- + travis-ci: fix Perforce install on macOS
+ Will discard.
- Update the definition of the MacOSX test environment used by
- TravisCI.
+--------------------------------------------------
+[Cooking]
- Will merge to 'master'.
+* js/mingw-hooks-with-exe-suffix (2017-01-30) 1 commit
+ - mingw: allow hooks to be .exe files
+ Names of the various hook scripts must be spelled exactly, but on
+ Windows, an .exe binary must be named with .exe suffix; notice
+ $GIT_DIR/hooks/<hookname>.exe as a valid <hookname> hook.
-* rs/qsort-s (2017-01-23) 5 commits
- (merged to 'next' on 2017-01-23 at 7e2813848b)
- + ref-filter: use QSORT_S in ref_array_sort()
- + string-list: use QSORT_S in string_list_sort()
- + perf: add basic sort performance test
- + add QSORT_S
- + compat: add qsort_s()
+ Will merge to 'next'.
- A few codepaths had to rely on a global variable when sorting
- elements of an array because sort(3) API does not allow extra data
- to be passed to the comparison function. Use qsort_s() when
- natively available, and a fallback implementation of it when not,
- to eliminate the need, which is a prerequisite for making the
- codepath reentrant.
- Will merge to 'master'.
+* js/retire-relink (2017-01-25) 2 commits
+ - relink: really remove the command
+ - relink: retire the command
+ Cruft removal.
-* jk/coding-guidelines-update (2017-01-17) 1 commit
- (merged to 'next' on 2017-01-23 at 8c57afa288)
- + CodingGuidelines: clarify multi-line brace style
+ Will merge to 'next'.
- Developer doc update.
+
+* js/status-pre-rebase-i (2017-01-26) 1 commit
+ (merged to 'next' on 2017-01-31 at 09e51b2e39)
+ + status: be prepared for not-yet-started interactive rebase
+
+ After starting "git rebase -i", which first opens the user's editor
+ to edit the series of patches to apply, but before saving the
+ contents of that file, "git status" failed to show the current
+ state (i.e. you are in an interactive rebase session, but you have
+ applied no steps yet) correctly.
Will merge to 'master'.
-* jk/fsck-connectivity-check-fix (2017-01-26) 9 commits
- (merged to 'next' on 2017-01-26 at dd03f7a17f)
- + fsck: lazily load types under --connectivity-only
- + fsck: move typename() printing to its own function
- (merged to 'next' on 2017-01-25 at f3d7d93785)
- + t1450: use "mv -f" within loose object directory
- (merged to 'next' on 2017-01-23 at e8e9b76b84)
- + fsck: check HAS_OBJ more consistently
- + fsck: do not fallback "git fsck <bogus>" to "git fsck"
- + fsck: tighten error-checks of "git fsck <head>"
- + fsck: prepare dummy objects for --connectivity-check
- + fsck: report trees as dangling
- + t1450: clean up sub-objects in duplicate-entry test
+* ps/urlmatch-wildcard (2017-01-31) 5 commits
+ . urlmatch: allow globbing for the URL host part
+ . urlmatch: include host in urlmatch ranking
+ . urlmatch: split host and port fields in `struct url_info`
+ . urlmatch: enable normalization of URLs with globs
+ . mailmap: add Patrick Steinhardt's work address
- "git fsck --connectivity-check" was not working at all.
+ The <url> part in "http.<url>.<variable>" configuration variable
+ can now be spelled with '*' that serves as wildcard.
+ E.g. "http.https://*.example.com.proxy" can be used to specify the
+ proxy used for https://a.example.com, https://b.example.com, etc.,
+ i.e. any host in the example.com domain.
- Will merge to 'master'.
+ With the update it still seems to fail the same t5551#31
+ cf. <cover.1485853153.git.ps@pks.im>
-* js/exec-path-coverity-workaround (2017-01-09) 2 commits
- (merged to 'next' on 2017-01-23 at bf5dfbf860)
- + git_exec_path: do not return the result of getenv()
- + git_exec_path: avoid Coverity warning about unfree()d result
+* rs/absolute-pathdup (2017-01-27) 2 commits
+ (merged to 'next' on 2017-01-31 at f751f64876)
+ + use absolute_pathdup()
+ + abspath: add absolute_pathdup()
Code cleanup.
Will merge to 'master'.
- Split out of another topic.
-* js/mingw-isatty (2017-01-18) 1 commit
- (merged to 'next' on 2017-01-23 at ae0f80e058)
- + mingw: follow-up to "replace isatty() hack"
+* sb/submodule-recursive-absorb (2017-01-26) 3 commits
+ (merged to 'next' on 2017-01-31 at 0a24cfd06b)
+ + submodule absorbing: fix worktree/gitdir pointers recursively for non-moves
+ + cache.h: expose the dying procedure for reading gitlinks
+ + setup: add gentle version of resolve_git_dir
- An update to a topic that is already in 'master'.
+ When a submodule "sub", which has another submodule "module" nested
+ within it, is "absorbed" into the top-level superproject, the inner
+ submodule "module" is left in a strange state.
Will merge to 'master'.
-* js/sequencer-i-countdown-3 (2017-01-17) 38 commits
- (merged to 'next' on 2017-01-23 at 251dd15139)
- + sequencer (rebase -i): write out the final message
- + sequencer (rebase -i): write the progress into files
- + sequencer (rebase -i): show the progress
- + sequencer (rebase -i): suggest --edit-todo upon unknown command
- + sequencer (rebase -i): show only failed cherry-picks' output
- + sequencer (rebase -i): show only failed `git commit`'s output
- + sequencer: use run_command() directly
- + sequencer: update reading author-script
- + sequencer (rebase -i): differentiate between comments and 'noop'
- + sequencer (rebase -i): implement the 'drop' command
- + sequencer (rebase -i): allow rescheduling commands
- + sequencer (rebase -i): respect strategy/strategy_opts settings
- + sequencer (rebase -i): respect the rebase.autostash setting
- + sequencer (rebase -i): run the post-rewrite hook, if needed
- + sequencer (rebase -i): record interrupted commits in rewritten, too
- + sequencer (rebase -i): copy commit notes at end
- + sequencer (rebase -i): set the reflog message consistently
- + sequencer (rebase -i): refactor setting the reflog message
- + sequencer (rebase -i): allow fast-forwarding for edit/reword
- + sequencer (rebase -i): implement the 'reword' command
- + sequencer (rebase -i): leave a patch upon error
- + sequencer (rebase -i): update refs after a successful rebase
- + sequencer (rebase -i): the todo can be empty when continuing
- + sequencer (rebase -i): skip some revert/cherry-pick specific code path
- + sequencer (rebase -i): remove CHERRY_PICK_HEAD when no longer needed
- + sequencer (rebase -i): allow continuing with staged changes
- + sequencer (rebase -i): write an author-script file
- + sequencer (rebase -i): implement the short commands
- + sequencer (rebase -i): add support for the 'fixup' and 'squash' commands
- + sequencer (rebase -i): write the 'done' file
- + sequencer (rebase -i): learn about the 'verbose' mode
- + sequencer (rebase -i): implement the 'exec' command
- + sequencer (rebase -i): implement the 'edit' command
- + sequencer (rebase -i): implement the 'noop' command
- + sequencer: support a new action: 'interactive rebase'
- + sequencer: use a helper to find the commit message
- + sequencer: move "else" keyword onto the same line as preceding brace
- + sequencer: avoid unnecessary curly braces
+* sb/submodule-update-initial-runs-custom-script (2017-01-26) 1 commit
+ (merged to 'next' on 2017-01-31 at d794f894c6)
+ + submodule update: run custom update script for initial populating as well
- The sequencer machinery has been further enhanced so that a later
- set of patches can start using it to reimplement "rebase -i".
+ The user can specify a custom update method that is run when
+ "submodule update" updates an already checked out submodule. This
+ was ignored when checking the submodule out for the first time and
+ we instead always just checked out the commit that is bound to the
+ path in the superproject's index.
Will merge to 'master'.
- I think I've said everything that needs to be said on this topic.
-* jk/clear-delta-base-cache-fix (2017-01-19) 1 commit
- (merged to 'next' on 2017-01-23 at 5f4af2b0a5)
- + clear_delta_base_cache(): don't modify hashmap while iterating
+* sf/putty-w-args (2017-01-26) 3 commits
+ - connect: support GIT_SSH_VARIANT and ssh.variant
+ - connect: rename tortoiseplink and putty variables
+ - connect: handle putty/plink also in GIT_SSH_COMMAND
- A crashing bug introduced in v2.11 timeframe has been found (it is
- triggerable only in fast-import) and fixed.
+ The command line options for ssh invocation needs to be tweaked for
+ some implementations of SSH (e.g. PuTTY plink wants "-P <port>"
+ while OpenSSH wants "-p <port>" to specify port to connect to), and
+ the variant was guessed when GIT_SSH environment variable is used
+ to specify it. Extend the guess to the command specified by the
+ newer GIT_SSH_COMMAND and also core.sshcommand configuration
+ variable, and give an escape hatch for users to deal with
+ misdetected cases.
- Will merge to 'master'.
+ Expecting a reroll of the last step to plug new memory leak.
+ cf. <xmqqpoj8z7su.fsf@gitster.mtv.corp.google.com>
+
+
+* bc/use-asciidoctor-opt (2017-01-31) 8 commits
+ - Documentation: implement linkgit macro for Asciidoctor
+ - Makefile: add a knob to enable the use of Asciidoctor
+ - Documentation: move dblatex arguments into variable
+ - Documentation: add XSLT to fix DocBook for Texinfo
+ - Documentation: sort sources for gitman.texi
+ - Documentation: remove unneeded argument in cat-texi.perl
+ - Documentation: modernize cat-texi.perl
+ - Documentation: fix warning in cat-texi.perl
+
+ Asciidoctor, an alternative reimplementation of AsciiDoc, still
+ needs some changes to work with documents meant to be formatted
+ with AsciiDoc. "make USE_ASCIIDOCTOR=YesPlease" to use it out of
+ the box to document our pages is getting closer to reality.
+
+ Will merge to 'next'.
* jk/describe-omit-some-refs (2017-01-23) 5 commits
naming output on, and also learned to take negative patterns to
name refs not to be used for naming via their "--exclude" option.
- Will merge to 'next'.
-
-
-* js/remote-rename-with-half-configured-remote (2017-01-19) 2 commits
- (merged to 'next' on 2017-01-23 at a1b655dbac)
- + remote rename: more carefully determine whether a remote is configured
- + remote rename: demonstrate a bogus "remote exists" bug
-
- With anticipatory tweaking for remotes defined in ~/.gitconfig
- (e.g. "remote.origin.prune" set to true, even though there may or
- may not actually be "origin" remote defined in a particular Git
- repository), "git remote rename" and other commands misinterpreted
- and behaved as if such a non-existing remote actually existed.
-
- Will merge to 'master'.
-
-
-* sb/in-core-index-doc (2017-01-19) 4 commits
- (merged to 'next' on 2017-01-23 at 30224463e8)
- + documentation: retire unfinished documentation
- + cache.h: document add_[file_]to_index
- + cache.h: document remove_index_entry_at
- + cache.h: document index_name_pos
-
- Documentation and in-code comments updates.
-
- Will merge to 'master'.
-
-
-* sb/retire-convert-objects-from-contrib (2017-01-19) 1 commit
- (merged to 'next' on 2017-01-23 at decc1e237d)
- + contrib: remove git-convert-objects
-
- Remove an ancient tool left in contrib/.
-
- Will merge to 'master'.
+ Will cook in 'next'.
-* ep/commit-static-buf-cleanup (2017-01-13) 2 commits
- - builtin/commit.c: switch to xstrfmt(), instead of snprintf()
- - builtin/commit.c: remove the PATH_MAX limitation via dynamic allocation
+* ep/commit-static-buf-cleanup (2017-01-31) 2 commits
+ (merged to 'next' on 2017-01-31 at 02d3c25219)
+ + builtin/commit.c: switch to strbuf, instead of snprintf()
+ + builtin/commit.c: remove the PATH_MAX limitation via dynamic allocation
Code clean-up.
- Expecting a reroll.
- The tip one would instead be done with strbuf.
- cf. <CA+EOSB=4-TKpi6mr-yVbwRsFrVzE=vo4Y9Qm3VMm7pn=UB1_hQ@mail.gmail.com>
-
-
-* jk/vreport-sanitize (2017-01-11) 2 commits
- (merged to 'next' on 2017-01-18 at 4bbf370981)
- + vreport: sanitize ASCII control chars
- + Revert "vreportf: avoid intermediate buffer"
-
- An error message with an ASCII control character like '\r' in it
- can alter the message to hide its early part, which is problematic
- when a remote side gives such an error message that the local side
- will relay with a "remote: " prefix.
-
Will merge to 'master'.
* sb/unpack-trees-super-prefix (2017-01-25) 4 commits
- - unpack-trees: support super-prefix option
- - t1001: modernize style
- - t1000: modernize style
- - read-tree: use OPT_BOOL instead of OPT_SET_INT
+ (merged to 'next' on 2017-01-31 at dabe6ca2b1)
+ + unpack-trees: support super-prefix option
+ + t1001: modernize style
+ + t1000: modernize style
+ + read-tree: use OPT_BOOL instead of OPT_SET_INT
"git read-tree" and its underlying unpack_trees() machinery learned
to report problematic paths prefixed with the --super-prefix option.
- Will merge to 'next'.
+ Will merge to 'master'.
* sb/submodule-doc (2017-01-12) 3 commits
Expecting a reroll.
-* jk/loose-object-fsck (2017-01-15) 6 commits
- (merged to 'next' on 2017-01-23 at 4302ad090d)
- + fsck: detect trailing garbage in all object types
- + fsck: parse loose object paths directly
- + sha1_file: add read_loose_object() function
- + t1450: test fsck of packed objects
- + sha1_file: fix error message for alternate objects
- + t1450: refactor loose-object removal
-
- "git fsck" inspects loose objects more carefully now.
-
- Will merge to 'master'.
-
-
* vn/xdiff-func-context (2017-01-15) 1 commit
- xdiff -W: relax end-of-file function detection
being discussed.
-* mh/ref-remove-empty-directory (2017-01-07) 23 commits
- - files_transaction_commit(): clean up empty directories
- - try_remove_empty_parents(): teach to remove parents of reflogs, too
- - try_remove_empty_parents(): don't trash argument contents
- - try_remove_empty_parents(): rename parameter "name" -> "refname"
- - delete_ref_loose(): inline function
- - delete_ref_loose(): derive loose reference path from lock
- - log_ref_write_1(): inline function
- - log_ref_setup(): manage the name of the reflog file internally
- - log_ref_write_1(): don't depend on logfile argument
- - log_ref_setup(): pass the open file descriptor back to the caller
- - log_ref_setup(): improve robustness against races
- - log_ref_setup(): separate code for create vs non-create
- - log_ref_write(): inline function
- - rename_tmp_log(): improve error reporting
- - rename_tmp_log(): use raceproof_create_file()
- - lock_ref_sha1_basic(): use raceproof_create_file()
- - lock_ref_sha1_basic(): inline constant
- - raceproof_create_file(): new function
- - safe_create_leading_directories(): set errno on SCLD_EXISTS
- - safe_create_leading_directories_const(): preserve errno
- - t5505: use "for-each-ref" to test for the non-existence of references
- - refname_is_safe(): correct docstring
- - files_rename_ref(): tidy up whitespace
-
- Deletion of a branch "foo/bar" could remove .git/refs/heads/foo
- once there no longer is any other branch whose name begins with
- "foo/", but we didn't do so so far. Now we do.
-
- Expecting a reroll.
- cf. <5051c78e-51f9-becd-e1a6-9c0b781d6912@alum.mit.edu>
-
-
* ls/filter-process-delayed (2017-01-08) 1 commit
. convert: add "status=delayed" to filter process protocol
Ejected, as does not build when merged to 'pu'.
-* nd/worktree-move (2017-01-09) 6 commits
+* nd/worktree-move (2017-01-27) 7 commits
+ - fixup! worktree move: new command
- worktree remove: new command
- worktree move: refuse to move worktrees with submodules
- worktree move: accept destination as directory
rather limiting. A mechanism to customize the set of colors has
been introduced.
- Will merge to 'next'.
+ Reported to break "add -p".
+ cf. <20170128040709.tqx4u45ktgpkbfm4@sigill.intra.peff.net>
* cc/split-index-config (2016-12-26) 21 commits
cf. <a1a44640-ff6c-2294-72ac-46322eff8505@ramsayjones.plus.com>
-* bw/push-submodule-only (2016-12-20) 3 commits
- (merged to 'next' on 2017-01-23 at d6cd1c60ae)
- + push: add option to push only submodules
- + submodules: add RECURSE_SUBMODULES_ONLY value
- + transport: reformat flag #defines to be more readable
-
- "git submodule push" learned "--recurse-submodules=only option to
- push submodules out without pushing the top-level superproject.
-
- Will merge to 'master'.
-
-
-* ls/p4-path-encoding (2016-12-18) 1 commit
- - git-p4: fix git-p4.pathEncoding for removed files
-
- When "git p4" imports changelist that removes paths, it failed to
- convert pathnames when the p4 used encoding different from the one
- used on the Git side. This has been corrected.
-
- Will be rerolled.
- cf. <7E1C7387-4F37-423F-803D-3B5690B49D40@gmail.com>
-
-
-* js/difftool-builtin (2017-01-25) 4 commits
- (merged to 'next' on 2017-01-25 at 87d2a0976a)
- + difftool: hack around -Wzero-length-format warning
- (merged to 'next' on 2017-01-23 at 6f4810dbd9)
- + difftool: retire the scripted version
- + difftool: implement the functionality in the builtin
- + difftool: add a skeleton for the upcoming builtin
-
- Rewrite a scripted porcelain "git difftool" in C.
-
- Will merge to 'master'.
-
-
-* sb/push-make-submodule-check-the-default (2017-01-26) 3 commits
+* sb/push-make-submodule-check-the-default (2017-01-26) 2 commits
(merged to 'next' on 2017-01-26 at 5f4715cea6)
+ Revert "push: change submodule default to check when submodules exist"
(merged to 'next' on 2016-12-12 at 1863e05af5)
+ push: change submodule default to check when submodules exist
- + submodule add: extend force flag to add existing repos
+ (this branch uses sb/submodule-add-force.)
Turn the default of "push.recurseSubmodules" to "check" when
submodules seem to be in use.
- I'll probably remove the tip-two commits and advance the bottom one
- separately.
+ Retracted.
-* kn/ref-filter-branch-list (2017-01-10) 21 commits
- - SQUASH???
+* kn/ref-filter-branch-list (2017-01-31) 20 commits
- branch: implement '--format' option
- branch: use ref-filter printing APIs
- branch, tag: use porcelain output
The code to list branches in "git branch" has been consolidated
with the more generic ref-filter API.
- I think this is almost ready. Will wait for a few days, squash
- fixes in if needed and merge to 'next'.
+ Will merge to 'next'.
* jk/no-looking-at-dotgit-outside-repo-final (2016-10-26) 1 commit
cf. <CAFZEwPM9RSTGN54dzaw9gO9iZmsYjJ_d1SjUD4EzSDDbmh-XuA@mail.gmail.com>
-* st/verify-tag (2017-01-18) 6 commits
- (merged to 'next' on 2017-01-23 at 2810959427)
- + t/t7004-tag: Add --format specifier tests
- + t/t7030-verify-tag: Add --format specifier tests
- + builtin/tag: add --format argument for tag -v
- + builtin/verify-tag: add --format to verify-tag
- + ref-filter: add function to print single ref_array_item
- + gpg-interface, tag: add GPG_VERIFY_OMIT_STATUS flag
-
- "git tag" and "git verify-tag" learned to put GPG verification
- status in their "--format=<placeholders>" output format.
-
- Will merge to 'master'.
-
-
* jc/merge-drop-old-syntax (2015-04-29) 1 commit
(merged to 'next' on 2016-12-05 at 041946dae0)
+ merge: drop 'git merge <message> HEAD <commit>' syntax