To: git@vger.kernel.org
Bcc: lwn@lwn.net
-Subject: What's cooking in git.git (Sep 2014, #02; Tue, 9)
-X-master-at: 0c72b98f31bf6eabd75be565a08ffcf0d8e74b1f
-X-next-at: 90a3d47e489b9d2109b72bab5f08275f9af8a3ad
+Subject: What's cooking in git.git (Sep 2014, #03; Thu, 11)
+X-master-at: ce1d3a93a6405b8a0313491df3099919ed3d150f
+X-next-at: 9363127135f6ed0af0d141c3fc3ac63acc2d9010
-What's cooking in git.git (Sep 2014, #02; Tue, 9)
+What's cooking in git.git (Sep 2014, #03; Thu, 11)
--------------------------------------------------
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 second batch of topics have graduated to 'master'. There are
-too many topics waiting to be in 'next' but without comments and
-reviews on the list, which is somewhat disturbing.
+The third batch of topics have graduated to 'master'. There are too
+many topics waiting to be in 'next' but without comments and reviews
+on the list, which is somewhat disturbing.
You can find the changes described here in the integration branches
of the repositories listed at
--------------------------------------------------
[Graduated to "master"]
-* bc/imap-send-doc (2014-08-05) 1 commit
- (merged to 'next' on 2014-08-29 at 2ea514b)
- + imap-send doc: omit confusing "to use imap-send" modifier
-
-
-* jc/apply-ws-prefix (2014-08-07) 3 commits
- (merged to 'next' on 2014-08-29 at 67967d3)
- + apply: omit ws check for excluded paths
- + apply: hoist use_patch() helper for path exclusion up
- + apply: use the right attribute for paths in non-Git patches
+* br/http-init-fix (2014-08-21) 2 commits
+ (merged to 'next' on 2014-09-03 at 6d42f5e)
+ + http: style fixes for curl_multi_init error check
+ + http.c: die if curl_*_init fails
- Applying a patch not generated by Git in a subdirectory used to
- check the whitespace breakage using the attributes for incorrect
- paths. Also whitespace checks were performed even for paths
- excluded via "git apply --exclude=<path>" mechanism.
+ Code clean-up.
-* jc/config-mak-document-darwin-vs-macosx (2014-08-15) 1 commit
- (merged to 'next' on 2014-08-29 at 55e28af)
- + config.mak.uname: add hint on uname_R for MacOS X
- (this branch uses km/no-apple-common-crypto-on-darwin-8-and-below.)
+* br/imap-send-simplify-tunnel-child-process (2014-09-02) 3 commits
+ (merged to 'next' on 2014-09-04 at a182987)
+ + imap-send: simplify v_issue_imap_cmd() and get_cmd_result() using starts_with()
+ + imap-send.c: imap_folder -> imap_server_conf.folder
+ + git-imap-send: simplify tunnel construction
+ Code clean-up.
-* jc/not-mingw-cygwin (2014-07-21) 2 commits
- (merged to 'next' on 2014-08-29 at 0d00bb7)
- + test prerequisites: enumerate with commas
- + test prerequisites: eradicate NOT_FOO
- We have been using NOT_{MINGW,CYGWIN} test prerequisites long
- before Peff invented support for negated prerequisites e.g. !MINGW
- and we still add more uses of the former. Convert them to the
- latter to avoid confusion.
+* dt/cache-tree-repair (2014-09-03) 5 commits
+ (merged to 'next' on 2014-09-03 at 1c8ff65)
+ + cache-tree: do not try to use an invalidated subtree info to build a tree
+ (merged to 'next' on 2014-08-26 at 6faccdb)
+ + cache-tree: Write updated cache-tree after commit
+ + cache-tree: subdirectory tests
+ + test-dump-cache-tree: invalid trees are not errors
+ + cache-tree: create/update cache-tree on checkout
+ Add a few more places in "commit" and "checkout" that make sure
+ that the cache-tree is fully populated in the index.
-* jk/command-line-config-empty-string (2014-08-05) 1 commit
- (merged to 'next' on 2014-08-29 at 74f04af)
- + config: teach "git -c" to recognize an empty string
- "git -c section.var command" and "git -c section.var= command"
- should pass the configuration differently (the former should be
- a boolean true, the latter should be an empty string).
+* et/spell-poll-infinite-with-minus-one-only (2014-08-22) 1 commit
+ (merged to 'next' on 2014-09-03 at 5be5957)
+ + upload-pack: keep poll(2)'s timeout to -1
+ We used to pass -1000 to poll(2), expecting it to also mean "no
+ timeout", which should be spelled as -1.
-* jk/prompt-stash-could-be-packed (2014-08-25) 1 commit
- (merged to 'next' on 2014-08-29 at 526e3bd)
- + git-prompt: do not look for refs/stash in $GIT_DIR
- The prompt script checked $GIT_DIR/ref/stash file to see if there
- is a stash, which was a no-no.
+* jk/contrib-subtree-make-all (2014-08-18) 1 commit
+ (merged to 'next' on 2014-09-03 at 919d889)
+ + subtree: make "all" default target of Makefile
-* jk/stash-list-p (2014-08-07) 1 commit
- (merged to 'next' on 2014-08-29 at db94527)
- + stash: default listing to working-tree diff
+* jk/fast-import-fixes (2014-08-25) 2 commits
+ (merged to 'next' on 2014-09-04 at 74838e5)
+ + fast-import: fix buffer overflow in dump_tags
+ + fast-import: clean up pack_data pointer in end_packfile
- Teach "git stash list -p" to show the difference between the base
- commit version and the working tree version, which is in line with
- what "git show" gives.
+ With sufficiently long refnames, fast-import could have overflown
+ an on-stack buffer.
-* km/no-apple-common-crypto-on-darwin-8-and-below (2014-08-15) 1 commit
- (merged to 'next' on 2014-08-29 at 8abb416)
- + config.mak.uname: set NO_APPLE_COMMON_CRYPTO on older systems
- (this branch is used by jc/config-mak-document-darwin-vs-macosx.)
+* jk/make-simplify-dependencies (2014-08-26) 3 commits
+ (merged to 'next' on 2014-09-03 at 820a600)
+ + Makefile: drop CHECK_HEADER_DEPENDENCIES code
+ + Makefile: use `find` to determine static header dependencies
+ + i18n: treat "make pot" as an explicitly-invoked target
- Build automation for older versions of MacOS X.
+ Admit that keeping LIB_H up-to-date, only for those that do not use
+ the automatically generated dependencies, is a losing battle, and
+ make it conservative by making everything depend on anything.
-* la/init-doc (2014-08-08) 7 commits
- (merged to 'next' on 2014-08-29 at 2cf846b)
- + Documentation: git-init: flesh out example
- + Documentation: git-init: template directory: reword and cross-reference
- + Documentation: git-init: reword parenthetical statements
- + Documentation: git-init: --separate-git-dir: clarify
- + Documentation: git-init: template directory: reword
- + Documentation: git-init: list items facelift
- + Documentation: git-init: typographical fixes
+* jk/name-decoration-alloc (2014-08-27) 3 commits
+ (merged to 'next' on 2014-09-04 at 05f0d29)
+ + log-tree: use FLEX_ARRAY in name_decoration
+ + log-tree: make name_decoration hash static
+ + log-tree: make add_name_decoration a public function
+ The API to allocate the structure to keep track of commit
+ decoration was cumbersome to use, inviting lazy code to
+ overallocate memory.
-* lf/bundle-exclusion (2014-08-07) 1 commit
- (merged to 'next' on 2014-08-29 at d84b102)
- + bundle: fix exclusion of annotated tags
- "git bundle create" with date-range specification were meant to
- exclude tags outside the range, but it didn't.
+* jk/prune-top-level-refs-after-packing (2014-08-25) 1 commit
+ (merged to 'next' on 2014-09-04 at bfe3873)
+ + pack-refs: prune top-level refs like "refs/foo"
+ After "pack-refs --prune" packed refs at the top-level, it failed
+ to prune them.
-* mm/log-branch-desc-plug-leak (2014-08-07) 1 commit
- (merged to 'next' on 2014-08-29 at 3580add)
- + builtin/log.c: fix minor memory leak
+* jn/unpack-trees-checkout-m-carry-deletion (2014-08-25) 3 commits
+ (merged to 'next' on 2014-09-04 at e15803a)
+ + checkout -m: attempt merge when deletion of path was staged
+ + unpack-trees: use 'cuddled' style for if-else cascade
+ + unpack-trees: simplify 'all other failures' case
-* nd/strbuf-utf8-replace (2014-08-11) 1 commit
- (merged to 'next' on 2014-08-29 at 5d1ddf4)
- + utf8.c: fix strbuf_utf8_replace() consuming data beyond input string
+ "git checkout -m" did not switch to another branch while carrying
+ the local changes forward when a path was deleted from the index.
-* rs/clean-menu-item-defn (2014-08-18) 1 commit
- (merged to 'next' on 2014-08-29 at 88c1a9d)
- + clean: use f(void) instead of f() to declare a pointer to a function without arguments
+* mm/discourage-commit-a-to-finish-conflict-resolution (2014-08-28) 1 commit
+ (merged to 'next' on 2014-09-03 at e3f872f)
+ + merge, pull: stop advising 'commit -a' in case of conflict
-* rs/inline-compat-path-macros (2014-08-18) 1 commit
- (merged to 'next' on 2014-08-29 at 5705ad5)
- + turn path macros into inline function
+* nd/fetch-pass-quiet-to-gc-child-process (2014-08-18) 2 commits
+ (merged to 'next' on 2014-09-04 at 028cd42)
+ + fetch: silence git-gc if --quiet is given
+ + fetch: convert argv_gc_auto to struct argv_array
+ Progress output from "git gc --auto" was visible in "git fetch -q".
-* rs/refresh-beyond-symlink (2014-08-10) 1 commit
- (merged to 'next' on 2014-08-29 at 90a4a8b)
- + read-cache: check for leading symlinks when refreshing index
- "git add x" where x that used to be a directory has become a
- symbolic link to a directory misbehaved.
+* nd/large-blobs (2014-08-18) 5 commits
+ (merged to 'next' on 2014-09-04 at 16d7c62)
+ + diff: shortcut for diff'ing two binary SHA-1 objects
+ + diff --stat: mark any file larger than core.bigfilethreshold binary
+ + diff.c: allow to pass more flags to diff_populate_filespec
+ + sha1_file.c: do not die failing to malloc in unpack_compressed_entry
+ + wrapper.c: introduce gentle xmallocz that does not die()
+ Teach a few codepaths to punt (instead of dying) when large blobs
+ that would not fit in core are involved in the operation.
-* sb/blame-msg-i18n (2014-08-12) 1 commit
- (merged to 'next' on 2014-08-29 at 5b33466)
- + builtin/blame.c: add translation to warning about failed revision walk
+* nd/mv-code-cleaning (2014-09-03) 8 commits
+ (merged to 'next' on 2014-09-03 at 4315447)
+ + mv: no SP between function name and the first opening parenthese
+ + mv: combine two if(s)
+ + mv: unindent one level for directory move code
+ + mv: move index search code out
+ + mv: remove an "if" that's always true
+ + mv: split submodule move preparation code out
+ + mv: flatten error handling code block
+ + mv: mark strings for translations
-* sb/mailsplit-dead-code-removal (2014-08-13) 1 commit
- (merged to 'next' on 2014-08-29 at 4f9ca4f)
- + mailsplit.c: remove dead code
+ Code clean-up.
-* sb/plug-leaks (2014-08-10) 2 commits
- (merged to 'next' on 2014-08-29 at e42f0b8)
- + clone.c: don't leak memory in cmd_clone
- + remote.c: don't leak the base branch name in format_tracking_info
+* rs/child-process-init (2014-08-20) 4 commits
+ (merged to 'next' on 2014-09-03 at c17c06c)
+ + run-command: inline prepare_run_command_v_opt()
+ + run-command: call run_command_v_opt_cd_env() instead of duplicating it
+ + run-command: introduce child_process_init()
+ + run-command: introduce CHILD_PROCESS_INIT
+ Code clean-up.
-* sb/prepare-revision-walk-error-check (2014-08-12) 1 commit
- (merged to 'next' on 2014-08-29 at fb82508)
- + prepare_revision_walk(): check for return value in all places
+* rs/list-optim (2014-08-25) 2 commits
+ (merged to 'next' on 2014-09-04 at eecaf99)
+ + walker: avoid quadratic list insertion in mark_complete
+ + sha1_name: avoid quadratic list insertion in handle_one_ref
-* so/rebase-doc (2014-08-12) 1 commit
- (merged to 'next' on 2014-08-29 at 77cfce1)
- + Documentation/git-rebase.txt: -f forces a rebase that would otherwise be a no-op
+ Fix a couple of "accumulate into a sorted list" to "accumulate and
+ then sort the list".
- May need further updates to the description to explain what makes
- various modes of operation to decide that the request can become a
- "no-op".
+* rs/ref-transaction-1 (2014-09-03) 22 commits
+ (merged to 'next' on 2014-09-03 at 68e20b8)
+ + update-ref --stdin: pass transaction around explicitly
+ + update-ref --stdin: narrow scope of err strbuf
+ + refs.c: make delete_ref use a transaction
+ + refs.c: make prune_ref use a transaction to delete the ref
+ + refs.c: remove lock_ref_sha1
+ + refs.c: remove the update_ref_write function
+ + refs.c: remove the update_ref_lock function
+ + refs.c: make lock_ref_sha1 static
+ + walker.c: use ref transaction for ref updates
+ + fast-import.c: use a ref transaction when dumping tags
+ + receive-pack.c: use a reference transaction for updating the refs
+ + refs.c: change update_ref to use a transaction
+ + branch.c: use ref transaction for all ref updates
+ + fast-import.c: change update_branch to use ref transactions
+ + sequencer.c: use ref transactions for all ref updates
+ + commit.c: use ref transactions for updates
+ + replace.c: use the ref transaction functions for updates
+ + tag.c: use ref transactions when doing updates
+ + refs.c: add transaction.status and track OPEN/CLOSED
+ + refs.c: make ref_transaction_begin take an err argument
+ + refs.c: update ref_transaction_delete to check for error and return status
+ + refs.c: change ref_transaction_create to do error checking and return status
+ (this branch is used by rs/ref-transaction, rs/ref-transaction-multi, rs/ref-transaction-reflog and rs/ref-transaction-rename.)
-* sp/pack-protocol-doc-on-shallow (2014-08-28) 1 commit
- (merged to 'next' on 2014-08-29 at b1ae451)
- + Document LF appearing in shallow command during send-pack/receive-pack
+ The second batch of the transactional ref update series.
-* tb/pretty-format-cd-date-format (2014-08-21) 1 commit
- (merged to 'next' on 2014-08-29 at ab8ccd4)
- + pretty: note that %cd respects the --date= option
+* ta/config-set-1 (2014-08-07) 8 commits
+ (merged to 'next' on 2014-09-03 at 184b2ef)
+ + add tests for `git_config_get_string_const()`
+ + add a test for semantic errors in config files
+ + rewrite git_config() to use the config-set API
+ + config: add `git_die_config()` to the config-set API
+ + change `git_config()` return value to void
+ + add line number and file name info to `config_set`
+ + config.c: fix accuracy of line number in errors
+ + config.c: mark error and warnings strings for translation
+ (this branch is used by ta/config-set-2.)
- Documentation update.
+ Use the new caching config-set API in git_config() calls.
-* tf/imap-send-create (2014-08-25) 2 commits
- (merged to 'next' on 2014-08-29 at 8390945)
- + imap-send: create target mailbox if it is missing
- + imap-send: clarify CRAM-MD5 vs LOGIN documentation
+* ta/config-set-2 (2014-08-13) 15 commits
+ (merged to 'next' on 2014-09-03 at f2eff02)
+ + builtin/apply.c: replace `git_config()` with `git_config_get_string_const()`
+ + merge-recursive.c: replace `git_config()` with `git_config_get_int()`
+ + ll-merge.c: refactor `read_merge_config()` to use `git_config_string()`
+ + fast-import.c: replace `git_config()` with `git_config_get_*()` family
+ + branch.c: replace `git_config()` with `git_config_get_string()
+ + alias.c: replace `git_config()` with `git_config_get_string()`
+ + imap-send.c: replace `git_config()` with `git_config_get_*()` family
+ + pager.c: replace `git_config()` with `git_config_get_value()`
+ + builtin/gc.c: replace `git_config()` with `git_config_get_*()` family
+ + rerere.c: replace `git_config()` with `git_config_get_*()` family
+ + fetchpack.c: replace `git_config()` with `git_config_get_*()` family
+ + archive.c: replace `git_config()` with `git_config_get_bool()` family
+ + read-cache.c: replace `git_config()` with `git_config_get_*()` family
+ + http-backend.c: replace `git_config()` with `git_config_get_bool()` family
+ + daemon.c: replace `git_config()` with `git_config_get_bool()` family
+ (this branch uses ta/config-set-1.)
+ Update git_config() users with callback functions for a very narrow
+ scope with calls to config-set API that lets us query a single
+ variable.
--------------------------------------------------
[New Topics]
-* as/calloc-takes-nmemb-then-size (2014-09-03) 1 commit
- - calloc() and xcalloc() takes nmemb and then size
+* jc/hash-object (2014-09-11) 3 commits
+ - hash-object: add --literally option
+ - hash-object: pass 'write_object' as a flag
+ - hash-object: reduce file-scope statics
+ (this branch is used by jc/hash-object-fsck-tag.)
- Code clean-up.
+ "hash-object" learned a new "--literally" option to hash any random
+ garbage into a loose object, to allow us to create a test data for
+ mechanisms to catch corrupt objects.
- Will merge to 'next'.
+* jc/hash-object-fsck-tag (2014-09-11) 2 commits
+ - t1450: make sure fsck detects a malformed tagger line
+ - Merge branch 'js/fsck-tag-validation' into HEAD
+ (this branch uses jc/hash-object and js/fsck-tag-validation.)
+
+ Using "hash-object --literally", test one of the new breakages
+ js/fsck-tag-validation topic teaches "fsck" to catch is caught.
-* tb/complete-diff-ignore-blank-lines (2014-09-03) 1 commit
- - completion: Add --ignore-blank-lines for diff
+
+* jk/fsck-exit-code-fix (2014-09-10) 1 commit
+ - fsck: exit with non-zero status upon error from fsck_obj()
+
+ "git fsck" failed to report that it found corrupt objects via its
+ exit status in some cases.
Will merge to 'next'.
-* jc/parseopt-verify-short-name (2014-09-04) 1 commit
- - parse-options: detect attempt to add a duplicate short option name
+* js/fsck-tag-validation (2014-09-11) 6 commits
+ - Make sure that index-pack --strict checks tag objects
+ - Add regression tests for stricter tag fsck'ing
+ - fsck: check tag objects' headers
+ - Make sure fsck_commit_buffer() does not run out of the buffer
+ - fsck_object(): allow passing object data separately from the object itself
+ - Refactor type_from_string() to allow continuing after detecting an error
+ (this branch is used by jc/hash-object-fsck-tag.)
- Add checks for a common programming mistake to assign the same
- short option name to two separate options to help developers.
+ Teach "git fsck" to inspect the contents of annotated tag objects.
Will merge to 'next'.
+--------------------------------------------------
+[Stalled]
-* rs/more-uses-of-skip-prefix (2014-09-02) 2 commits
- - pack-write: simplify index_pack_lockfile using skip_prefix() and xstrfmt()
- - connect: simplify check_ref() using skip_prefix() and starts_with()
+* rs/ref-transaction-multi (2014-09-03) 7 commits
+ - ### rs/ref-transaction-multi
+ - refs.c: make the *_packed_refs functions static
+ - refs.c: make repack_without_refs static
+ - remote.c: use a transaction for deleting refs
+ - refs.c: write updates to packed refs when a transaction has more than one ref
+ - refs.c: move reflog updates into its own function
+ - ### rs/ref-transaction-rename
+ (this branch uses rs/ref-transaction, rs/ref-transaction-reflog and rs/ref-transaction-rename.)
- Code clean-up.
+ Follow-up on rs/ref-transaction series to use the packed-ref to
+ achieve atomicity when multiple refs are involved.
- Will merge to 'next'.
+ It appears that rs/ref-transaction series is being rerolled, so
+ these will be rerolled as well.
-* kb/perf-trace (2014-09-08) 1 commit
- - trace: correct trace_strbuf() parameter type for !HAVE_VARIADIC_MACROS
+* rs/ref-transaction-rename (2014-09-03) 6 commits
+ - refs.c: rollback the lockfile before we die() in repack_without_refs
+ - refs.c: update rename_ref to use a transaction
+ - refs.c: use packed refs when deleting refs during a transaction
+ - refs.c: return error instead of dying when locking fails during transaction
+ - refs.c: allow passing raw git_committer_info as email to _update_reflog
+ - ### rs/ref-transaction-reflog
+ (this branch is used by rs/ref-transaction-multi; uses rs/ref-transaction and rs/ref-transaction-reflog.)
- Compilation fix for some compilers.
+ Follow-up on rs/ref-transaction series to make renaming a ref
+ transactional (i.e. "delete old and create new" should not leave
+ an in-between state behind when it fails).
- Will merge to 'next'.
+ It appears that rs/ref-transaction series is being rerolled, so
+ these will be rerolled as well.
-* rs/export-strbuf-addchars (2014-09-08) 2 commits
- - strbuf: use strbuf_addchars() for adding a char multiple times
- - strbuf: export strbuf_addchars()
+* rs/ref-transaction-reflog (2014-09-03) 16 commits
+ - refs.c: allow deleting refs with a broken sha1
+ - refs.c: remove lock_any_ref_for_update
+ - refs.c: make unlock_ref/close_ref/commit_ref static
+ - refs.c: rename log_ref_setup to create_reflog
+ - reflog.c: use a reflog transaction when writing during expire
+ - refs.c: allow multiple reflog updates during a single transaction
+ - refs.c: only write reflog update if msg is non-NULL
+ - refs.c: add a flag to allow reflog updates to truncate the log
+ - refs.c: add a transaction function to append a reflog entry
+ - lockfile.c: make hold_lock_file_for_append preserve meaningful errno
+ - refs.c: add a function to append a reflog entry to a fd
+ - refs.c: add a new update_type field to ref_update
+ - refs.c: rename the transaction functions
+ - refs.c: make ref_transaction_delete a wrapper for ref_transaction_update
+ - refs.c: make ref_transaction_create a wrapper to ref_transaction_update
+ - ### rs/ref-transaction
+ (this branch is used by rs/ref-transaction-multi and rs/ref-transaction-rename; uses rs/ref-transaction.)
- Code clean-up.
+ Cover updates to reflog with the same transaction mechanism as used
+ for reflog manipulations.
- Will merge to 'next'.
+ It appears that rs/ref-transaction series is being rerolled, so
+ these will be rerolled as well.
+
+
+* rs/ref-transaction (2014-09-03) 13 commits
+ - refs.c: fix handling of badly named refs
+ - refs.c: make write_ref_sha1 static
+ - fetch.c: change s_update_ref to use a ref transaction
+ - refs.c: propagate any errno==ENOTDIR from _commit back to the callers
+ - refs.c: pass a skip list to name_conflict_fn
+ - refs.c: call lock_ref_sha1_basic directly from commit
+ - refs.c: move the check for valid refname to lock_ref_sha1_basic
+ - refs.c: pass NULL as *flags to read_ref_full
+ - refs.c: pass the ref log message to _create/delete/update instead of _commit
+ - refs.c: add an err argument to delete_ref_loose
+ - wrapper.c: add a new function unlink_or_msg
+ - wrapper.c: simplify warn_if_unremovable
+ - ### rs/ref-transaction-1
+ (this branch is used by rs/ref-transaction-multi, rs/ref-transaction-reflog and rs/ref-transaction-rename.)
+
+ Rerolled and was asked to wait. Seems to break "git remote rm".
---------------------------------------------------
-[Stalled]
* hv/submodule-config (2014-06-30) 4 commits
- do not die on error of parsing fetchrecursesubmodules option
--------------------------------------------------
[Cooking]
-* tr/remerge-diff (2014-09-08) 8 commits
- - log --remerge-diff: show what the conflict resolution changed
- - name-hash: allow dir hashing even when !ignore_case
- - merge-recursive: allow storing conflict hunks in index
+* as/calloc-takes-nmemb-then-size (2014-09-03) 1 commit
+ - calloc() and xcalloc() takes nmemb and then size
+
+ Code clean-up.
+
+ Will merge to 'next'.
+
+
+* tb/complete-diff-ignore-blank-lines (2014-09-03) 1 commit
+ - completion: Add --ignore-blank-lines for diff
+
+ Will merge to 'next'.
+
+
+* jc/parseopt-verify-short-name (2014-09-04) 1 commit
+ - parse-options: detect attempt to add a duplicate short option name
+
+ Add checks for a common programming mistake to assign the same
+ short option name to two separate options to help developers.
+
+ Will merge to 'next'.
+
+
+* rs/more-uses-of-skip-prefix (2014-09-02) 2 commits
+ - pack-write: simplify index_pack_lockfile using skip_prefix() and xstrfmt()
+ - connect: simplify check_ref() using skip_prefix() and starts_with()
+
+ Code clean-up.
+
+ Will merge to 'next'.
+
+
+* kb/perf-trace (2014-09-08) 1 commit
+ - trace: correct trace_strbuf() parameter type for !HAVE_VARIADIC_MACROS
+
+ Compilation fix for some compilers.
+
+ Will merge to 'next'.
+
+
+* rs/export-strbuf-addchars (2014-09-08) 2 commits
+ - strbuf: use strbuf_addchars() for adding a char multiple times
+ - strbuf: export strbuf_addchars()
+
+ Code clean-up.
+
+ Will merge to 'next'.
+
+
+* tr/remerge-diff (2014-09-08) 8 commits
+ - log --remerge-diff: show what the conflict resolution changed
+ - name-hash: allow dir hashing even when !ignore_case
+ - merge-recursive: allow storing conflict hunks in index
- merge_diff_mode: fold all merge diff variants into an enum
- combine-diff: do not pass revs->dense_combined_merges redundantly
- merge-recursive: -Xindex-only to leave worktree unchanged
Review comments sent.
-
-* mh/lockfile (2014-09-08) 33 commits
+* mh/lockfile (2014-09-11) 33 commits
- lockfile.c: store absolute path
- Extract a function commit_lock_file_to()
- trim_last_path_elm(): replace last_path_elm()
- api-lockfile: expand the documentation
- unable_to_lock_die(): rename function from unable_to_lock_index_die()
- Rerolled but not reviewed yet.
+ Rerolled and reviews starting.
* nd/multiple-work-trees (2014-09-03) 32 commits
rely on symbolic links and make sharing of objects and refs safer
by making the borrowee and borrowers aware of each other.
+ Re-reroll posted but haven't had a chance to pick it up yet.
+ The series already received a few comments.
+
* cc/interpret-trailers (2014-05-28) 11 commits
- Documentation: add documentation for 'git interpret-trailers'
Will merge to 'next'.
-* jk/contrib-subtree-make-all (2014-08-18) 1 commit
- (merged to 'next' on 2014-09-03 at 919d889)
- + subtree: make "all" default target of Makefile
-
- Will merge to 'master'.
-
-
* jk/fast-export-anonymize (2014-08-28) 2 commits
- docs/fast-export: explain --anonymize more completely
- teach fast-export an --anonymize option
Will merge to 'next'.
-* mm/discourage-commit-a-to-finish-conflict-resolution (2014-08-28) 1 commit
- (merged to 'next' on 2014-09-03 at e3f872f)
- + merge, pull: stop advising 'commit -a' in case of conflict
-
- Will merge to 'master'.
-
-
* ah/grammofix (2014-09-02) 1 commit
- grammofix in user-facing messages
We may want to undo the "a^" bit along the lines of $gmane/255445
-* et/spell-poll-infinite-with-minus-one-only (2014-08-22) 1 commit
- (merged to 'next' on 2014-09-03 at 5be5957)
- + upload-pack: keep poll(2)'s timeout to -1
-
- We used to pass -1000 to poll(2), expecting it to also mean "no
- timeout", which should be spelled as -1.
-
- Will merge to 'master'.
-
-
-* jk/make-simplify-dependencies (2014-08-26) 3 commits
- (merged to 'next' on 2014-09-03 at 820a600)
- + Makefile: drop CHECK_HEADER_DEPENDENCIES code
- + Makefile: use `find` to determine static header dependencies
- + i18n: treat "make pot" as an explicitly-invoked target
-
- Admit that keeping LIB_H up-to-date, only for those that do not use
- the automatically generated dependencies, is a losing battle, and
- make it conservative by making everything depend on anything.
-
- Will merge to 'master'.
-
-
-* jk/prune-top-level-refs-after-packing (2014-08-25) 1 commit
- (merged to 'next' on 2014-09-04 at bfe3873)
- + pack-refs: prune top-level refs like "refs/foo"
-
- After "pack-refs --prune" packed refs at the top-level, it failed
- to prune them.
-
- Will merge to 'master'.
-
-
-* jk/fast-import-fixes (2014-08-25) 2 commits
- (merged to 'next' on 2014-09-04 at 74838e5)
- + fast-import: fix buffer overflow in dump_tags
- + fast-import: clean up pack_data pointer in end_packfile
-
- With sufficiently long refnames, fast-import could have overflown
- an on-stack buffer.
-
- Will merge to 'master'.
-
-
-* nd/fetch-pass-quiet-to-gc-child-process (2014-08-18) 2 commits
- (merged to 'next' on 2014-09-04 at 028cd42)
- + fetch: silence git-gc if --quiet is given
- + fetch: convert argv_gc_auto to struct argv_array
-
- Progress output from "git gc --auto" was visible in "git fetch -q".
-
- Will merge to 'master'.
-
-
-* rs/list-optim (2014-08-25) 2 commits
- (merged to 'next' on 2014-09-04 at eecaf99)
- + walker: avoid quadratic list insertion in mark_complete
- + sha1_name: avoid quadratic list insertion in handle_one_ref
-
- Fix a couple of "accumulate into a sorted list" to "accumulate and
- then sort the list".
-
- Will merge to 'master'.
-
-
-* jk/name-decoration-alloc (2014-08-27) 3 commits
- (merged to 'next' on 2014-09-04 at 05f0d29)
- + log-tree: use FLEX_ARRAY in name_decoration
- + log-tree: make name_decoration hash static
- + log-tree: make add_name_decoration a public function
-
- The API to allocate the structure to keep track of commit
- decoration was cumbersome to use, inviting lazy code to
- overallocate memory.
-
- Will merge to 'master'.
-
-
-* br/http-init-fix (2014-08-21) 2 commits
- (merged to 'next' on 2014-09-03 at 6d42f5e)
- + http: style fixes for curl_multi_init error check
- + http.c: die if curl_*_init fails
-
- Code clean-up.
-
- Will merge to 'master'.
-
-
-* br/imap-send-simplify-tunnel-child-process (2014-09-02) 3 commits
- (merged to 'next' on 2014-09-04 at a182987)
- + imap-send: simplify v_issue_imap_cmd() and get_cmd_result() using starts_with()
- + imap-send.c: imap_folder -> imap_server_conf.folder
- + git-imap-send: simplify tunnel construction
-
- Code clean-up.
-
- Will merge to 'master'.
-
-
-* jn/unpack-trees-checkout-m-carry-deletion (2014-08-25) 3 commits
- (merged to 'next' on 2014-09-04 at e15803a)
- + checkout -m: attempt merge when deletion of path was staged
- + unpack-trees: use 'cuddled' style for if-else cascade
- + unpack-trees: simplify 'all other failures' case
-
- "git checkout -m" did not switch to another branch while carrying
- the local changes forward when a path was deleted from the index.
-
- Will merge to 'master'.
-
-
-* nd/large-blobs (2014-08-18) 5 commits
- (merged to 'next' on 2014-09-04 at 16d7c62)
- + diff: shortcut for diff'ing two binary SHA-1 objects
- + diff --stat: mark any file larger than core.bigfilethreshold binary
- + diff.c: allow to pass more flags to diff_populate_filespec
- + sha1_file.c: do not die failing to malloc in unpack_compressed_entry
- + wrapper.c: introduce gentle xmallocz that does not die()
-
- Teach a few codepaths to punt (instead of dying) when large blobs
- that would not fit in core are involved in the operation.
-
- Will merge to 'master'.
-
-
-* nd/mv-code-cleaning (2014-09-03) 8 commits
- (merged to 'next' on 2014-09-03 at 4315447)
- + mv: no SP between function name and the first opening parenthese
- + mv: combine two if(s)
- + mv: unindent one level for directory move code
- + mv: move index search code out
- + mv: remove an "if" that's always true
- + mv: split submodule move preparation code out
- + mv: flatten error handling code block
- + mv: mark strings for translations
-
- Code clean-up.
-
- Will merge to 'master'.
-
-
* sp/stream-clean-filter (2014-08-28) 6 commits
- convert: stream from fd to required clean filter to reduce used address space
- copy_fd(): do not close the input file descriptor
tips of branches at a public repository really point the commits
the pusher wanted to, without having to "trust" the server.
- Hopefully a final reroll. Comments & reviews?
-
-
-* rs/child-process-init (2014-08-20) 4 commits
- (merged to 'next' on 2014-09-03 at c17c06c)
- + run-command: inline prepare_run_command_v_opt()
- + run-command: call run_command_v_opt_cd_env() instead of duplicating it
- + run-command: introduce child_process_init()
- + run-command: introduce CHILD_PROCESS_INIT
-
- Code clean-up.
-
- Will merge to 'master'.
-
-
-* ta/config-set-1 (2014-08-07) 8 commits
- (merged to 'next' on 2014-09-03 at 184b2ef)
- + add tests for `git_config_get_string_const()`
- + add a test for semantic errors in config files
- + rewrite git_config() to use the config-set API
- + config: add `git_die_config()` to the config-set API
- + change `git_config()` return value to void
- + add line number and file name info to `config_set`
- + config.c: fix accuracy of line number in errors
- + config.c: mark error and warnings strings for translation
- (this branch is used by ta/config-set-2.)
-
- Use the new caching config-set API in git_config() calls.
-
- Will merge to 'master'.
-
-
-* ta/config-set-2 (2014-08-13) 15 commits
- (merged to 'next' on 2014-09-03 at f2eff02)
- + builtin/apply.c: replace `git_config()` with `git_config_get_string_const()`
- + merge-recursive.c: replace `git_config()` with `git_config_get_int()`
- + ll-merge.c: refactor `read_merge_config()` to use `git_config_string()`
- + fast-import.c: replace `git_config()` with `git_config_get_*()` family
- + branch.c: replace `git_config()` with `git_config_get_string()
- + alias.c: replace `git_config()` with `git_config_get_string()`
- + imap-send.c: replace `git_config()` with `git_config_get_*()` family
- + pager.c: replace `git_config()` with `git_config_get_value()`
- + builtin/gc.c: replace `git_config()` with `git_config_get_*()` family
- + rerere.c: replace `git_config()` with `git_config_get_*()` family
- + fetchpack.c: replace `git_config()` with `git_config_get_*()` family
- + archive.c: replace `git_config()` with `git_config_get_bool()` family
- + read-cache.c: replace `git_config()` with `git_config_get_*()` family
- + http-backend.c: replace `git_config()` with `git_config_get_bool()` family
- + daemon.c: replace `git_config()` with `git_config_get_bool()` family
- (this branch uses ta/config-set-1.)
-
- Update git_config() users with callback functions for a very narrow
- scope with calls to config-set API that lets us query a single
- variable.
-
- Will merge to 'master'.
-
-
-* rs/ref-transaction-multi (2014-09-03) 7 commits
- - ### rs/ref-transaction-multi
- - refs.c: make the *_packed_refs functions static
- - refs.c: make repack_without_refs static
- - remote.c: use a transaction for deleting refs
- - refs.c: write updates to packed refs when a transaction has more than one ref
- - refs.c: move reflog updates into its own function
- - ### rs/ref-transaction-rename
- (this branch uses rs/ref-transaction, rs/ref-transaction-1, rs/ref-transaction-reflog and rs/ref-transaction-rename.)
-
- Follow-up on rs/ref-transaction series to use the packed-ref to
- achieve atomicity when multiple refs are involved.
-
Comments & reviews?
-* rs/ref-transaction-rename (2014-09-03) 6 commits
- - refs.c: rollback the lockfile before we die() in repack_without_refs
- - refs.c: update rename_ref to use a transaction
- - refs.c: use packed refs when deleting refs during a transaction
- - refs.c: return error instead of dying when locking fails during transaction
- - refs.c: allow passing raw git_committer_info as email to _update_reflog
- - ### rs/ref-transaction-reflog
- (this branch is used by rs/ref-transaction-multi; uses rs/ref-transaction, rs/ref-transaction-1 and rs/ref-transaction-reflog.)
-
- Follow-up on rs/ref-transaction series to make renaming a ref
- transactional (i.e. "delete old and create new" should not leave
- an in-between state behind when it fails).
-
- Comments & reviews?
-
-
-* rs/ref-transaction-reflog (2014-09-03) 16 commits
- - refs.c: allow deleting refs with a broken sha1
- - refs.c: remove lock_any_ref_for_update
- - refs.c: make unlock_ref/close_ref/commit_ref static
- - refs.c: rename log_ref_setup to create_reflog
- - reflog.c: use a reflog transaction when writing during expire
- - refs.c: allow multiple reflog updates during a single transaction
- - refs.c: only write reflog update if msg is non-NULL
- - refs.c: add a flag to allow reflog updates to truncate the log
- - refs.c: add a transaction function to append a reflog entry
- - lockfile.c: make hold_lock_file_for_append preserve meaningful errno
- - refs.c: add a function to append a reflog entry to a fd
- - refs.c: add a new update_type field to ref_update
- - refs.c: rename the transaction functions
- - refs.c: make ref_transaction_delete a wrapper for ref_transaction_update
- - refs.c: make ref_transaction_create a wrapper to ref_transaction_update
- - ### rs/ref-transaction
- (this branch is used by rs/ref-transaction-multi and rs/ref-transaction-rename; uses rs/ref-transaction and rs/ref-transaction-1.)
-
- Cover updates to reflog with the same transaction mechanism as used
- for reflog manipulations.
-
- Comments & reviews?
- Otherwise will merge to 'next'.
-
-
-
-* rs/ref-transaction (2014-09-03) 13 commits
- - refs.c: fix handling of badly named refs
- - refs.c: make write_ref_sha1 static
- - fetch.c: change s_update_ref to use a ref transaction
- - refs.c: propagate any errno==ENOTDIR from _commit back to the callers
- - refs.c: pass a skip list to name_conflict_fn
- - refs.c: call lock_ref_sha1_basic directly from commit
- - refs.c: move the check for valid refname to lock_ref_sha1_basic
- - refs.c: pass NULL as *flags to read_ref_full
- - refs.c: pass the ref log message to _create/delete/update instead of _commit
- - refs.c: add an err argument to delete_ref_loose
- - wrapper.c: add a new function unlink_or_msg
- - wrapper.c: simplify warn_if_unremovable
- - ### rs/ref-transaction-1
- (this branch is used by rs/ref-transaction-multi, rs/ref-transaction-reflog and rs/ref-transaction-rename; uses rs/ref-transaction-1.)
-
- Comments & reviews?
- Otherwise will merge to 'next'.
-
-
-* rs/ref-transaction-1 (2014-09-03) 22 commits
- (merged to 'next' on 2014-09-03 at 68e20b8)
- + update-ref --stdin: pass transaction around explicitly
- + update-ref --stdin: narrow scope of err strbuf
- + refs.c: make delete_ref use a transaction
- + refs.c: make prune_ref use a transaction to delete the ref
- + refs.c: remove lock_ref_sha1
- + refs.c: remove the update_ref_write function
- + refs.c: remove the update_ref_lock function
- + refs.c: make lock_ref_sha1 static
- + walker.c: use ref transaction for ref updates
- + fast-import.c: use a ref transaction when dumping tags
- + receive-pack.c: use a reference transaction for updating the refs
- + refs.c: change update_ref to use a transaction
- + branch.c: use ref transaction for all ref updates
- + fast-import.c: change update_branch to use ref transactions
- + sequencer.c: use ref transactions for all ref updates
- + commit.c: use ref transactions for updates
- + replace.c: use the ref transaction functions for updates
- + tag.c: use ref transactions when doing updates
- + refs.c: add transaction.status and track OPEN/CLOSED
- + refs.c: make ref_transaction_begin take an err argument
- + refs.c: update ref_transaction_delete to check for error and return status
- + refs.c: change ref_transaction_create to do error checking and return status
- (this branch is used by rs/ref-transaction, rs/ref-transaction-multi, rs/ref-transaction-reflog and rs/ref-transaction-rename.)
-
- The second batch of the transactional ref update series.
-
- Will merge to 'master'.
-
-
-* dt/cache-tree-repair (2014-09-03) 5 commits
- (merged to 'next' on 2014-09-03 at 1c8ff65)
- + cache-tree: do not try to use an invalidated subtree info to build a tree
- (merged to 'next' on 2014-08-26 at 6faccdb)
- + cache-tree: Write updated cache-tree after commit
- + cache-tree: subdirectory tests
- + test-dump-cache-tree: invalid trees are not errors
- + cache-tree: create/update cache-tree on checkout
-
- Add a few more places in "commit" and "checkout" that make sure
- that the cache-tree is fully populated in the index.
-
- Will merge to 'master'.
-
-
* jc/test-lazy-prereq (2014-06-13) 1 commit
- tests: drop GIT_*_TIMING_TESTS environment variable support
Nobody seems to be jumping up & down requesting this last step.
Perhaps will drop.
-
-
---------------------------------------------------
-[Discarded]
-
-* tr/merge-recursive-index-only (2014-02-05) 3 commits
- - merge-recursive: -Xindex-only to leave worktree unchanged
- - merge-recursive: internal flag to avoid touching the worktree
- - merge-recursive: remove dead conditional in update_stages()
-
- Now part of tr/remerge-diff.