]> git.ipfire.org Git - thirdparty/git.git/commitdiff
What's cooking (2015/08 #04)
authorJunio C Hamano <gitster@pobox.com>
Tue, 25 Aug 2015 23:21:04 +0000 (16:21 -0700)
committerJunio C Hamano <gitster@pobox.com>
Tue, 25 Aug 2015 23:21:04 +0000 (16:21 -0700)
whats-cooking.txt

index cc877cdbf89d1cecacb1e730f437109ce09687d0..29030af3b9a08b9e435e8ad214d803c456b97a65 100644 (file)
@@ -1,20 +1,16 @@
 To: git@vger.kernel.org
 Bcc: lwn@lwn.net
-Subject: What's cooking in git.git (Aug 2015, #03; Mon, 17)
-X-master-at: 44e02239f41177b6a7567e86db2cd18f7949d941
-X-next-at: ab17608326e73d8e92eba73c51dac99aa92984ba
+Subject: What's cooking in git.git (Aug 2015, #04; Tue, 25)
+X-master-at: 33f2c4ff7b9ac02cd9010d504e847b912b35baf6
+X-next-at: f2c83a76d16e5fd4c4f2e37c6ad65b3ba13dc31e
 
-What's cooking in git.git (Aug 2015, #03; Mon, 17)
+What's cooking in git.git (Aug 2015, #04; Tue, 25)
 --------------------------------------------------
 
 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'.  Most
-notably, the rewritten "git am" is in.  Also "worktree add" is
-getting improved.
-
 You can find the changes described here in the integration branches
 of the repositories listed at
 
@@ -23,111 +19,415 @@ of the repositories listed at
 --------------------------------------------------
 [Graduated to "master"]
 
-* dt/untracked-sparse (2015-07-31) 1 commit
-  (merged to 'next' on 2015-08-12 at 234434d)
- + untracked-cache: support sparse checkout
- (this branch is used by dt/untracked-subdir.)
+* cb/open-noatime-clear-errno (2015-08-12) 1 commit
+  (merged to 'next' on 2015-08-17 at 6aa43a1)
+ + git_open_noatime: return with errno=0 on success
+
+ When trying to see that an object does not exist, a state errno
+ leaked from our "first try to open a packfile with O_NOATIME and
+ then if it fails retry without it" logic on a system that refuses
+ O_NOATIME.  This confused us and caused us to die, saying that the
+ packfile is unreadable, when we should have just reported that the
+ object does not exist in that packfile to the caller.
+
+
+* dt/notes-multiple (2015-08-11) 2 commits
+  (merged to 'next' on 2015-08-12 at 0052055)
+ + notes: handle multiple worktrees
+ + worktrees: add find_shared_symref
+
+ When linked worktree is used, simultaneous "notes merge" instances
+ for the same ref in refs/notes/* are prevented from stomping on
+ each other.
+
+
+* dt/refs-pseudo (2015-08-11) 6 commits
+  (merged to 'next' on 2015-08-12 at 7078eb6)
+ + pseudoref: check return values from read_ref()
+  (merged to 'next' on 2015-08-03 at 3eafd33)
+ + sequencer: replace write_cherry_pick_head with update_ref
+ + bisect: use update_ref
+ + pseudorefs: create and use pseudoref update and delete functions
+ + refs: add ref_type function
+ + refs: introduce pseudoref and per-worktree ref concepts
+
+ To prepare for allowing a different "ref" backend to be plugged in
+ to the system, update_ref()/delete_ref() have been taught about
+ ref-like things like MERGE_HEAD that are per-worktree (they will
+ always be written to the filesystem inside $GIT_DIR).
+
+
+* ee/clean-remove-dirs (2015-08-11) 1 commit
+  (merged to 'next' on 2015-08-12 at fc41b09)
+ + t7300-clean: require POSIXPERM for chmod 0 test
+
+ Test updates for Windows.
+
+
+* jc/finalize-temp-file (2015-08-10) 1 commit
+  (merged to 'next' on 2015-08-12 at 6fe62fe)
+ + sha1_file.c: rename move_temp_to_file() to finalize_object_file()
+
+ Long overdue micro clean-up.
+
+
+* jh/strbuf-read-use-read-in-full (2015-08-10) 1 commit
+  (merged to 'next' on 2015-08-12 at db16247)
+ + strbuf_read(): skip unnecessary strbuf_grow() at eof
 
- Allow untracked cache (experimental) to be used when sparse
checkout (experimental) is also in use.
+ strbuf_read() used to have one extra iteration (and an unnecessary
strbuf_grow() of 8kB), which was eliminated.
 
 
-* kd/pull-rebase-autostash (2015-07-22) 1 commit
-  (merged to 'next' on 2015-08-12 at de88e8e)
- + pull: allow dirty tree when rebase.autostash enabled
+* jk/git-path (2015-08-10) 16 commits
+  (merged to 'next' on 2015-08-12 at 7ebe864)
+ + memoize common git-path "constant" files
+ + get_repo_path: refactor path-allocation
+ + find_hook: keep our own static buffer
+ + refs.c: remove_empty_directories can take a strbuf
+ + refs.c: avoid git_path assignment in lock_ref_sha1_basic
+ + refs.c: avoid repeated git_path calls in rename_tmp_log
+ + refs.c: simplify strbufs in reflog setup and writing
+ + path.c: drop git_path_submodule
+ + refs.c: remove extra git_path calls from read_loose_refs
+ + remote.c: drop extraneous local variable from migrate_file
+ + prefer mkpathdup to mkpath in assignments
+ + prefer git_pathdup to git_path in some possibly-dangerous cases
+ + add_to_alternates_file: don't add duplicate entries
+ + t5700: modernize style
+ + cache.h: complete set of git_path_submodule helpers
+ + cache.h: clarify documentation for git_path, et al
+ (this branch is used by sb/submodule-helper.)
 
- "git pull --rebase" has been taught to pay attention to
- rebase.autostash configuration.
+ git_path() and mkpath() are handy helper functions but it is easy
+ to misuse, as the callers need to be careful to keep the number of
+ active results below 4.  Their uses have been reduced.
 
 
-* mh/get-remote-group-fix (2015-07-28) 4 commits
-  (merged to 'next' on 2015-08-12 at b77820e)
- + get_remote_group(): use skip_prefix()
- + get_remote_group(): eliminate superfluous call to strcspn()
- + get_remote_group(): rename local variable "space" to "wordlen"
- + get_remote_group(): handle remotes with single-character names
+* jk/guess-repo-name-regression-fix (2015-08-10) 2 commits
+  (merged to 'next' on 2015-08-12 at 4cba33c)
+ + clone: use computed length in guess_dir_name
+ + clone: add tests for output directory
+ (this branch is used by ps/guess-repo-name-at-root.)
 
- An off-by-one error made "git remote" to mishandle a remote with a
- single letter nickname.
+ "git clone $URL" in recent releases of Git contains a regression in
+ the code that invents a new repository name incorrectly based on
+ the $URL.  This has been corrected.
+
+
+* jk/long-error-messages (2015-08-11) 2 commits
+  (merged to 'next' on 2015-08-12 at 36303cd)
+ + vreportf: avoid intermediate buffer
+ + vreportf: report to arbitrary filehandles
+
+ The codepath to produce error messages had a hard-coded limit to
+ the size of the message, primarily to avoid memory allocation while
+ calling die().
+
+
+* jk/negative-hiderefs (2015-08-07) 2 commits
+  (merged to 'next' on 2015-08-12 at bdc478d)
+ + refs: support negative transfer.hideRefs
+ + docs/config.txt: reorder hideRefs config
+
+ A negative !ref entry in multi-value transfer.hideRefs
+ configuration can be used to say "don't hide this one".
 
 
-* ta/docfix-index-format-tech (2015-07-28) 1 commit
-  (merged to 'next' on 2015-08-12 at 662d88a)
- + typofix for index-format.txt
+* jk/test-with-x (2015-08-07) 2 commits
+  (merged to 'next' on 2015-08-12 at 06576a1)
+ + test-lib: disable trace when test is not verbose
+ + test-lib: turn off "-x" tracing during chain-lint check
+
+ Running tests with the "-x" option to make them verbose had some
+ unpleasant interactions with other features of the test suite.
+
+
+* mh/tempfile (2015-08-12) 16 commits
+  (merged to 'next' on 2015-08-12 at 80efcb7)
+ + credential-cache--daemon: use tempfile module
+ + credential-cache--daemon: delete socket from main()
+ + gc: use tempfile module to handle gc.pid file
+ + lock_repo_for_gc(): compute the path to "gc.pid" only once
+ + diff: use tempfile module
+ + setup_temporary_shallow(): use tempfile module
+ + write_shared_index(): use tempfile module
+ + register_tempfile(): new function to handle an existing temporary file
+ + tempfile: add several functions for creating temporary files
+ + prepare_tempfile_object(): new function, extracted from create_tempfile()
+ + tempfile: a new module for handling temporary files
+ + commit_lock_file(): use get_locked_file_path()
+ + lockfile: add accessor get_lock_file_path()
+ + lockfile: add accessors get_lock_file_fd() and get_lock_file_fp()
+ + create_bundle(): duplicate file descriptor to avoid closing it twice
+ + lockfile: move documentation to lockfile.h and lockfile.c
+
+ The "lockfile" API has been rebuilt on top of a new "tempfile" API.
+
+
+* mm/pull-upload-pack (2015-07-30) 1 commit
+  (merged to 'next' on 2015-08-12 at 14d2a52)
+ + pull.sh: quote $upload_pack when passing it to git-fetch
+
+ "git pull" in recent releases of Git has a regression in the code
+ that allows custom path to the --upload-pack=<program>.  This has
+ been corrected.
+
+ Note that this is irrelevant for 'master' with "git pull" rewritten
+ in C.
+
+
+* nd/dwim-wildcards-as-pathspecs (2015-08-11) 1 commit
+  (merged to 'next' on 2015-08-12 at bb73f4d)
+ + t2019: skip test requiring '*' in a file name non Windows
+
+ Test updates for Windows.
+
+
+* ps/guess-repo-name-at-root (2015-08-10) 3 commits
+  (merged to 'next' on 2015-08-12 at 088860f)
+ + clone: abort if no dir name could be guessed
+ + clone: do not use port number as dir name
+ + clone: do not include authentication data in guessed dir
+ (this branch uses jk/guess-repo-name-regression-fix.)
+
+ "git clone $URL", when cloning from a site whose sole purpose is to
+ host a single repository (hence, no path after <scheme>://<site>/),
+ tried to use the site name as the new repository name, but did not
+ remove username or password when <site> part was of the form
+ <user>@<pass>:<host>.  The code is taught to redact these.
+
+
+* ps/t1509-chroot-test-fixup (2015-08-05) 2 commits
+  (merged to 'next' on 2015-08-12 at 6d10ea5)
+ + tests: fix cleanup after tests in t1509-root-worktree
+ + tests: fix broken && chains in t1509-root-worktree
+
+ t1509 test that requires a dedicated VM environment had some
+ bitrot, which has been corrected.
+
+
+* pt/am-builtin-options (2015-08-12) 3 commits
+  (merged to 'next' on 2015-08-12 at e57f754)
+ + am: let --signoff override --no-signoff
+ + am: let command-line options override saved options
+ + test_terminal: redirect child process' stdin to a pty
+ (this branch is used by jc/am-state-fix.)
+
+ After "git am --opt1" stops, running "git am --opt2" pays attention
+ to "--opt2" only for the patch that caused the original invocation
+ to stop.
+
+
+* sb/check-return-from-read-ref (2015-08-03) 1 commit
+  (merged to 'next' on 2015-08-12 at 4a1c801)
+ + transport-helper: die on errors reading refs.
+
+
+* tb/complete-rebase-i-edit-todo (2015-08-05) 1 commit
+  (merged to 'next' on 2015-08-12 at 9606c21)
+ + completion: offer '--edit-todo' during interactive rebase
+
+ The command-line completion script (in contrib/) has been updated.
 
 --------------------------------------------------
 [New Topics]
 
-* db/push-sign-if-asked (2015-08-17) 7 commits
- - DONTMERGE: dropped bits to add config; needs tests
- - push: support signed pushes iff the server supports it
- - transport: remove git_transport_options.push_cert
- - gitremote-helpers.txt: document pushcert option
- - Documentation/git-send-pack.txt: document --signed
- - Documentation/git-send-pack.txt: wrap long synopsis line
- - Documentation/git-push.txt: document when --signed may fail
+* dt/untracked-sparse (2015-08-19) 1 commit
+  (merged to 'next' on 2015-08-25 at 2501a7e)
+ + t7063: use --force-untracked-cache to speed up a bit
+ (this branch is used by dt/untracked-subdir.)
 
- The client side codepaths in "git push" have been cleaned up
- and the user can request to perform an optional "signed push",
- i.e. sign only when the other end accepts signed push.
+ Test update.
 
Expecting a reroll.
Will merge to 'master'.
 
 
-* dk/gc-idx-wo-pack (2015-08-17) 3 commits
- - DONTMERGE: log message, grace-period and tests $gmane/276058
- - gc: remove stale .idx files without corresponding .pack file
- - prepare_packed_git(): refactor garbage reporting in pack directory
+* as/docfix-reflog-expire-unreachable (2015-08-21) 1 commit
+  (merged to 'next' on 2015-08-25 at eb75d55)
+ + Documentation/config: fix inconsistent label on gc.*.reflogExpireUnreachable
 
- Having a leftover .idx file without correspoinding .pack file in
- the repository hurts performance; "git gc" learned to prune them.
+ Will merge to 'master'.
 
- Expecting a reroll.
 
+* cc/trailers-corner-case-fix (2015-08-21) 1 commit
+  (merged to 'next' on 2015-08-25 at ac25d80)
+ + trailer: ignore first line of message
 
-* ep/http-configure-ssl-version (2015-08-17) 1 commit
- - http: add support for specifying the SSL version
+ "interpret-trailers" helper mistook a single-liner log message that
+ has a colon as the end of existing trailer.
 
- A new configuration variable http.sslVersion can be used to specify
- what specific version of SSL/TLS to use to make a connection.
+ Will merge to 'master'.
 
- Will merge to 'next'.
 
+* jc/am-state-fix (2015-08-25) 5 commits
+  (merged to 'next' on 2015-08-25 at 4efcd88)
+ + write_file(): drop caller-supplied LF from calls to create a one-liner file
+ + write_file_v(): do not leave incomplete line at the end
+ + write_file(): drop "fatal" parameter
+ + builtin/am: make sure state files are text
+ + builtin/am: introduce write_state_*() helper functions
 
-* jv/send-email-selective-smtp-auth (2015-08-17) 1 commit
- - send-email: provide whitelist of SMTP AUTH mechanisms
+ Recent reimplementation of "git am" changed the format of state
+ files kept in $GIT_DIR/rebase-apply/ without meaning to do so,
+ primarily because write_file() API was cumbersome to use and it was
+ easy to mistakenly make text files with incomplete lines.  Update
+ write_file() interface to make it harder to misuse.
 
- "git send-email" learned a new option --smtp-auth to limit the SMTP
- AUTH mechanisms to be used to a subset of what the system library
- supports.
+ Will merge to 'master'.
 
- Will merge to 'next'.
 
+* jc/calloc-pathspec (2015-08-20) 1 commit
+  (merged to 'next' on 2015-08-25 at 877490c)
+ + ps_matched: xcalloc() takes nmemb and then element size
 
-* po/po-readme (2015-08-17) 1 commit
- - po/README: Update directions for l10n contributors
+ Will merge to 'master'.
 
- Will merge to 'next'.
 
+* jc/log-p-cc (2015-08-25) 4 commits
+  (merged to 'next' on 2015-08-25 at 2d6a6d4)
+ + builtin/log.c: minor reformat
+ + log: show merge commit when --cc is given
+ + log: when --cc is given, default to -p unless told otherwise
+ + log: rename "tweak" helpers
 
-* pt/am-builtin-abort-fix (2015-08-17) 1 commit
- - am --abort: merge ORIG_HEAD tree into index
+ "git log --cc" did not show any patch, even though most of the time
+ the user meant "git log --cc -p -m" to see patch output for commits
+ with a single parent, and combined diff for merge commits.  The
+ command is taught to DWIM "--cc" (without "--raw" and other forms
+ of output specification) to "--cc -p -m".
 
- "git am" that has recently reimplemented in C had a performance
- regression in "git am --abort" that goes back to the version before
- an attempted (and failed) patch application.
+ Will merge to 'master'.
+
+
+* jk/fix-alias-pager-config-key-warnings (2015-08-24) 1 commit
+  (merged to 'next' on 2015-08-25 at 89eac5a)
+ + config: silence warnings for command names with invalid keys
+
+ Because the configuration system does not allow "alias.0foo" and
+ "pager.0foo" as the configuration key, the user cannot use '0foo'
+ as a custom command name anyway, but "git 0foo" tried to look these
+ keys up and emitted useless warnings before saying '0foo is not a
+ git command'.  These warning messages have been squelched.
+
+ Will merge to 'master'.
+
+
+* jk/rev-list-has-no-notes (2015-08-24) 1 commit
+  (merged to 'next' on 2015-08-25 at 73cb2ad)
+ + rev-list: make it obvious that we do not support notes
+
+ "git rev-list" does not take "--notes" option, but did not complain
+ when one is given.
+
+ Will merge to 'master'.
+
+
+* kn/for-each-tag (2015-08-25) 15 commits
+ - SQUASH??? a tag longer than 15 bytes break alignment but keeps SP before the message
+ - tag.c: implement '--merged' and '--no-merged' options
+ - tag.c: implement '--format' option
+ - tag.c: use 'ref-filter' APIs
+ - tag.c: use 'ref-filter' data structures
+ - ref-filter: add option to match literal pattern
+ - ref-filter: add support to sort by version
+ - ref-filter: support printing N lines from tag annotation
+ - ref-filter: add option to filter out tags, branches and remotes
+ - ref-filter: implement an `align` atom
+ - utf8: add function to align a string into given strbuf
+ - ref-filter: introduce ref_formatting_state and ref_formatting_stack
+ - ref-filter: move `struct atom_value` to ref-filter.c
+ - Merge 'jk/git-path' into kn/for-each-tag
+ - Merge 'kn/for-each-tag-branch' into kn/for-each-tag
+ (this branch uses kn/for-each-tag-branch.)
+
+ The "ref-filter" code was taught about many parts of what "tag -l"
+ does and then "tag -l" is reimplemented in terms of "ref-filter".
+
+ Almost there...
+
+
+* nd/fixup-linked-gitdir (2015-08-25) 1 commit
+ - setup: update the right file in multiple checkouts
+
+ The code in "multiple-worktree" support that attempted to recover
+ from an inconsistent state updated an incorrect file.
 
  Will merge to 'next'.
 
 
-* ss/fix-config-fd-leak (2015-08-14) 1 commit
- - config: close config file handle in case of error
+* nd/ita-cleanup (2015-08-25) 6 commits
+ - grep: make it clear i-t-a entries are ignored
+ - checkout(-index): do not checkout i-t-a entries
+ - apply: make sure check_preimage() does not leave empty file on error
+ - apply: fix adding new files on i-t-a entries
+ - Add and use convenient macro ce_intent_to_add()
+ - blame: remove obsolete comment
+
+ Paths that have been told the index about with "add -N" are not yet
+ in the index, but various commands behaved as if they already are.
+
+ Some commits need better explanation.
+
+ Waiting for a reroll.
+
+
+* sg/describe-contains (2015-08-25) 1 commit
+ - describe --contains: default to HEAD when no commit-ish is given
+
+ "git describe" without argument defaulted to describe the HEAD
+ commit, but "git describe --contains" didn't.  Arguably, in a
+ repository used for active development, such defaulting would not
+ be very useful as the tip of branch is typically not tagged, but it
+ is better to be consistent.
 
  Will merge to 'next'.
 
+
+* sg/help-group (2015-08-25) 1 commit
+  (merged to 'next' on 2015-08-25 at 907e5a8)
+ + generate-cmdlist: re-implement as shell script
+
+ We rewrote one of the build scripts in Perl but this reimplements
+ in Bourne shell.
+
+ Will merge to 'master'.
+
+
+* sg/t3020-typofix (2015-08-20) 1 commit
+  (merged to 'next' on 2015-08-25 at 051d6c0)
+ + t3020: fix typo in test description
+
+ Will merge to 'master'.
+
+
+* sg/wt-status-header-inclusion (2015-08-21) 1 commit
+  (merged to 'next' on 2015-08-25 at fa5b2b2)
+ + wt-status: move #include "pathspec.h" to the header
+
+ Will merge to 'master'.
+
 --------------------------------------------------
 [Stalled]
 
+* sb/remove-get-pathspec (2015-08-03) 1 commit
+ - builtin/mv: remove get_pathspec()
+
+ Will discard.
+ ($gmane/276104)
+
+
+* mk/submodule-gitdir-path (2015-08-05) 2 commits
+ - path: implement common_dir handling in git_path_submodule()
+ - submodule refactor: use git_path_submodule() in add_submodule_odb()
+
+ The submodule code has been taught to work better with separate
+ work trees created via "git worktree add".
+
+ Waiting for a review.
+ ($gmane/275340).
+
+
 * nd/list-files (2015-02-09) 21 commits
  - t3080: tests for git-list-files
  - list-files: -M aka diff-cached
@@ -235,19 +535,6 @@ of the repositories listed at
  Expecting a reroll.
 
 
-* hv/submodule-config (2015-06-15) 4 commits
- - do not die on error of parsing fetchrecursesubmodules option
- - use new config API for worktree configurations of submodules
- - extract functions for submodule config set and lookup
- - implement submodule config API for lookup of .gitmodules values
-
- The gitmodules API accessed from the C code learned to cache stuff
- lazily.
-
- Needs another reroll?
- ($gmane/273743)
-
-
 * jk/log-missing-default-HEAD (2015-06-03) 1 commit
  - log: diagnose empty HEAD more clearly
 
@@ -293,417 +580,259 @@ of the repositories listed at
  - bisect: allow setting any user-specified in 'git bisect start'
  - bisect: add 'git bisect terms' to view the current terms
  - bisect: add the terms old/new
- - bisect: sanity check on terms
-
- The use of 'good/bad' in "git bisect" made it confusing to use when
- hunting for a state change that is not a regression (e.g. bugfix).
- The command learned 'old/new' and then allows the end user to
- say e.g. "bisect start --term-old=fast --term=new=slow" to find a
- performance regression.
-
- Michael's idea to make 'good/bad' more intelligent does have
- certain attractiveness ($gname/272867), and makes some of the work
- on this topic a moot point.
-
- Will hold.
-
-
-* mh/notes-allow-reading-treeish (2015-07-13) 1 commit
- - notes: allow treeish expressions as notes ref
-
- Some "git notes" operations, e.g. "git log --notes=<note>", should
- be able to read notes from any tree-ish that is shaped like a notes
- tree, but the notes infrastructure required that the argument must
- be a ref under refs/notes/.  Loosen it to require a valid ref only
- when the operation would update the notes (in which case we must
- have a place to store the updated notes tree, iow, a ref).
-
- Needs update to docs.
- ($gmane/273928)
-
-
-* 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
-
- "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.
-
-
-* pw/remote-set-url-fetch (2014-11-26) 1 commit
- . remote: add --fetch and --both options to set-url
-
- Ejected.
-
-
-* tr/remerge-diff (2014-11-10) 9 commits
- - t4213: avoid "|" in sed regexp
- - 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
- - merge-recursive: internal flag to avoid touching the worktree
- - merge-recursive: remove dead conditional in update_stages()
-
- "log -p" output learns a new way to let users inspect a merge
- commit by showing the differences between the automerged result
- with conflicts the person who recorded the merge would have seen
- and the final conflict resolution that was recorded in the merge.
-
- Waiting for a reroll.
- ($gmane/256591).
-
-
-* tg/perf-lib-test-perf-cleanup (2013-09-19) 2 commits
- - perf-lib: add test_perf_cleanup target
- - perf-lib: split starting the test from the execution
-
- Add test_perf_cleanup shell function to the perf suite, that allows
- the script writers to define a test with a clean-up action.
-
- Will hold.
-
-
-* jc/show-branch (2014-03-24) 5 commits
- - show-branch: use commit slab to represent bitflags of arbitrary width
- - show-branch.c: remove "all_mask"
- - show-branch.c: abstract out "flags" operation
- - show-branch.c: lift all_mask/all_revs to a global static
- - show-branch.c: update comment style
-
- Waiting for the final step to lift the hard-limit.
-
---------------------------------------------------
-[Cooking]
-
-* bb/remote-get-url (2015-08-05) 1 commit
- - remote: add get-url subcommand
-
- "git remote" learned "get-url" subcommand to show the URL for a
- given remote name used for fetching and pushing.
-
- Waiting for a reroll.
- ($gmane/275401)
-
-
-* cb/open-noatime-clear-errno (2015-08-12) 1 commit
-  (merged to 'next' on 2015-08-17 at 6aa43a1)
- + git_open_noatime: return with errno=0 on success
-
- When trying to see that an object does not exist, a state errno
- leaked from our "first try to open a packfile with O_NOATIME and
- then if it fails retry without it" logic on a system that refuses
- O_NOATIME.  This confused us and caused us to die, saying that the
- packfile is unreadable, when we should have just reported that the
- object does not exist in that packfile to the caller.
-
- Will merge to 'master'.
-
-
-* jk/guess-repo-name-regression-fix (2015-08-10) 2 commits
-  (merged to 'next' on 2015-08-12 at 4cba33c)
- + clone: use computed length in guess_dir_name
- + clone: add tests for output directory
- (this branch is used by ps/guess-repo-name-at-root.)
-
- "git clone $URL" in recent releases of Git contains a regression in
- the code that invents a new repository name incorrectly based on
- the $URL.  This has been corrected.
-
- Will merge to 'master'.
-
-
-* ps/guess-repo-name-at-root (2015-08-10) 3 commits
-  (merged to 'next' on 2015-08-12 at 088860f)
- + clone: abort if no dir name could be guessed
- + clone: do not use port number as dir name
- + clone: do not include authentication data in guessed dir
- (this branch uses jk/guess-repo-name-regression-fix.)
-
- "git clone $URL", when cloning from a site whose sole purpose is to
- host a single repository (hence, no path after <scheme>://<site>/),
- tried to use the site name as the new repository name, but did not
- remove username or password when <site> part was of the form
- <user>@<pass>:<host>.  The code is taught to redact these.
-
- Will merge to 'master'.
-
-
-* jk/notes-merge-config (2015-08-14) 4 commits
- - notes: teach git-notes about notes.<ref>.mergestrategy option
- - notes: add notes.mergestrategy option to select default strategy
- - notes: add tests for --commit/--abort/--strategy exclusivity
- - notes: document cat_sort_uniq rewriteMode
-
- "git notes merge" can be told with "--strategy=<how>" option how to
- automatically handle conflicts; this can now be configured by
- setting notes.merge configuration variable.
-
- The latest reroll (v8) hasn't been picked up.
- Expecting a reroll.
- ($gmane/276068)
-
-
-* mk/submodule-gitdir-path (2015-08-05) 2 commits
- - path: implement common_dir handling in git_path_submodule()
- - submodule refactor: use git_path_submodule() in add_submodule_odb()
-
- The submodule code has been taught to work better with separate
- work trees created via "git worktree add".
-
- Waiting for a review.
- ($gmane/275340).
+ - bisect: sanity check on terms
 
+ The use of 'good/bad' in "git bisect" made it confusing to use when
+ hunting for a state change that is not a regression (e.g. bugfix).
+ The command learned 'old/new' and then allows the end user to
+ say e.g. "bisect start --term-old=fast --term=new=slow" to find a
+ performance regression.
 
-* mm/pull-upload-pack (2015-07-30) 1 commit
-  (merged to 'next' on 2015-08-12 at 14d2a52)
- + pull.sh: quote $upload_pack when passing it to git-fetch
+ Michael's idea to make 'good/bad' more intelligent does have
+ certain attractiveness ($gname/272867), and makes some of the work
+ on this topic a moot point.
 
- "git pull" in recent releases of Git has a regression in the code
- that allows custom path to the --upload-pack=<program>.  This has
- been corrected.
+ Will hold.
 
- Will merge to 'maint'.
 
- Note that this is irrelevant for 'master' with "git pull" rewritten
- in C.
+* mh/notes-allow-reading-treeish (2015-07-13) 1 commit
+ - notes: allow treeish expressions as notes ref
 
+ Some "git notes" operations, e.g. "git log --notes=<note>", should
+ be able to read notes from any tree-ish that is shaped like a notes
+ tree, but the notes infrastructure required that the argument must
+ be a ref under refs/notes/.  Loosen it to require a valid ref only
+ when the operation would update the notes (in which case we must
+ have a place to store the updated notes tree, iow, a ref).
 
-* ps/t1509-chroot-test-fixup (2015-08-05) 2 commits
-  (merged to 'next' on 2015-08-12 at 6d10ea5)
- + tests: fix cleanup after tests in t1509-root-worktree
- + tests: fix broken && chains in t1509-root-worktree
+ Needs update to docs.
+ ($gmane/273928)
 
- t1509 test that requires a dedicated VM environment had some
- bitrot, which has been corrected.
 
- Will merge to 'master'.
+* 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
 
+ "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.
 
-* pt/am-builtin-options (2015-08-12) 3 commits
-  (merged to 'next' on 2015-08-12 at e57f754)
- + am: let --signoff override --no-signoff
- + am: let command-line options override saved options
- + test_terminal: redirect child process' stdin to a pty
+ The fix in this patch is broken, unfortunately.
 
- After "git am --opt1" stops, running "git am --opt2" pays attention
- to "--opt2" only for the patch that caused the original invocation
- to stop.
 
- Will merge to 'master'.
+* pw/remote-set-url-fetch (2014-11-26) 1 commit
+ . remote: add --fetch and --both options to set-url
 
+ Ejected.
 
-* sb/remove-get-pathspec (2015-08-03) 1 commit
- - builtin/mv: remove get_pathspec()
 
- Expecting a reroll.
- ($gmane/275224)
+* tr/remerge-diff (2014-11-10) 9 commits
+ . t4213: avoid "|" in sed regexp
+ . 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
+ . merge-recursive: internal flag to avoid touching the worktree
+ . merge-recursive: remove dead conditional in update_stages()
 
+ "log -p" output learns a new way to let users inspect a merge
+ commit by showing the differences between the automerged result
+ with conflicts the person who recorded the merge would have seen
+ and the final conflict resolution that was recorded in the merge.
 
-* sb/submodule-helper (2015-08-07) 1 commit
- - submodule: implement `module_list` as a builtin helper
+ Waiting for a reroll.
+ ($gmane/256591).
 
- The beginning of "git submodule" rewritten in C.
 
+* tg/perf-lib-test-perf-cleanup (2013-09-19) 2 commits
+ - perf-lib: add test_perf_cleanup target
+ - perf-lib: split starting the test from the execution
 
-* tb/complete-rebase-i-edit-todo (2015-08-05) 1 commit
-  (merged to 'next' on 2015-08-12 at 9606c21)
- + completion: offer '--edit-todo' during interactive rebase
+ Add test_perf_cleanup shell function to the perf suite, that allows
+ the script writers to define a test with a clean-up action.
 
The command-line completion script (in contrib/) has been updated.
Will hold.
 
- Will merge to 'master'.
 
+* jc/show-branch (2014-03-24) 5 commits
+ - show-branch: use commit slab to represent bitflags of arbitrary width
+ - show-branch.c: remove "all_mask"
+ - show-branch.c: abstract out "flags" operation
+ - show-branch.c: lift all_mask/all_revs to a global static
+ - show-branch.c: update comment style
 
-* dt/untracked-subdir (2015-08-07) 2 commits
- - DONTMERGE: wait for Duy to Ack or comment
- - untracked-cache: fix subdirectory handling
+ Waiting for the final step to lift the hard-limit.
 
- Waiting for a review cycle to conclude.
- ($gmane/276019).
+--------------------------------------------------
+[Cooking]
 
+* db/push-sign-if-asked (2015-08-19) 9 commits
+ - push: add a config option push.gpgSign for default signed pushes
+ - push: support signing pushes iff the server supports it
+ - builtin/send-pack.c: use parse_options API
+ - config.c: rename git_config_maybe_bool_text and export it as git_parse_maybe_bool
+ - transport: remove git_transport_options.push_cert
+ - gitremote-helpers.txt: document pushcert option
+ - Documentation/git-send-pack.txt: document --signed
+ - Documentation/git-send-pack.txt: wrap long synopsis line
+ - Documentation/git-push.txt: document when --signed may fail
 
-* jk/test-with-x (2015-08-07) 2 commits
-  (merged to 'next' on 2015-08-12 at 06576a1)
- + test-lib: disable trace when test is not verbose
- + test-lib: turn off "-x" tracing during chain-lint check
+ The client side codepaths in "git push" have been cleaned up
+ and the user can request to perform an optional "signed push",
+ i.e. sign only when the other end accepts signed push.
 
- Running tests with the "-x" option to make them verbose had some
- unpleasant interactions with other features of the test suite.
+ I think this is ready for 'next', but did I miss comments that need
+ to be addressed before it happens?
 
- Will merge to 'master'.
 
+* dk/gc-idx-wo-pack (2015-08-17) 3 commits
+ - DONTMERGE: log message, grace-period and tests $gmane/276058
+ - gc: remove stale .idx files without corresponding .pack file
+ - prepare_packed_git(): refactor garbage reporting in pack directory
 
-* ad/cygwin-wants-rename (2015-08-07) 1 commit
- - config.mak.uname: Cygwin needs OBJECT_CREATION_USES_RENAMES
+ Having a leftover .idx file without correspoinding .pack file in
+ the repository hurts performance; "git gc" learned to prune them.
 
- Will hold.
- ($gmane/275680).
+ Expecting a reroll.
 
 
-* ee/clean-remove-dirs (2015-08-11) 1 commit
-  (merged to 'next' on 2015-08-12 at fc41b09)
- + t7300-clean: require POSIXPERM for chmod 0 test
+* ep/http-configure-ssl-version (2015-08-17) 1 commit
+  (merged to 'next' on 2015-08-19 at aab726b)
+ + http: add support for specifying the SSL version
 
- Test updates for Windows.
+ A new configuration variable http.sslVersion can be used to specify
+ what specific version of SSL/TLS to use to make a connection.
 
  Will merge to 'master'.
 
 
-* jc/finalize-temp-file (2015-08-10) 1 commit
-  (merged to 'next' on 2015-08-12 at 6fe62fe)
- + sha1_file.c: rename move_temp_to_file() to finalize_object_file()
+* jv/send-email-selective-smtp-auth (2015-08-17) 1 commit
+  (merged to 'next' on 2015-08-19 at 3f0c693)
+ + send-email: provide whitelist of SMTP AUTH mechanisms
 
- Long overdue micro clean-up.
+ "git send-email" learned a new option --smtp-auth to limit the SMTP
+ AUTH mechanisms to be used to a subset of what the system library
+ supports.
 
  Will merge to 'master'.
 
 
-* jk/git-path (2015-08-10) 16 commits
-  (merged to 'next' on 2015-08-12 at 7ebe864)
- + memoize common git-path "constant" files
- + get_repo_path: refactor path-allocation
- + find_hook: keep our own static buffer
- + refs.c: remove_empty_directories can take a strbuf
- + refs.c: avoid git_path assignment in lock_ref_sha1_basic
- + refs.c: avoid repeated git_path calls in rename_tmp_log
- + refs.c: simplify strbufs in reflog setup and writing
- + path.c: drop git_path_submodule
- + refs.c: remove extra git_path calls from read_loose_refs
- + remote.c: drop extraneous local variable from migrate_file
- + prefer mkpathdup to mkpath in assignments
- + prefer git_pathdup to git_path in some possibly-dangerous cases
- + add_to_alternates_file: don't add duplicate entries
- + t5700: modernize style
- + cache.h: complete set of git_path_submodule helpers
- + cache.h: clarify documentation for git_path, et al
-
- git_path() and mkpath() are handy helper functions but it is easy
- to misuse, as the callers need to be careful to keep the number of
- active results below 4.  Their uses have been reduced.
+* po/po-readme (2015-08-17) 1 commit
+  (merged to 'next' on 2015-08-19 at 1899e59)
+ + po/README: Update directions for l10n contributors
 
  Will merge to 'master'.
 
 
-* jk/long-error-messages (2015-08-11) 2 commits
-  (merged to 'next' on 2015-08-12 at 36303cd)
- + vreportf: avoid intermediate buffer
- + vreportf: report to arbitrary filehandles
+* pt/am-builtin-abort-fix (2015-08-19) 1 commit
+  (merged to 'next' on 2015-08-19 at 729e682)
+ + am --skip/--abort: merge HEAD/ORIG_HEAD tree into index
 
- The codepath to produce error messages had a hard-coded limit to
the size of the message, primarily to avoid memory allocation while
calling die().
+ "git am" that was recently reimplemented in C had a performance
regression in "git am --abort" that goes back to the version before
an attempted (and failed) patch application.
 
  Will merge to 'master'.
 
 
-* nd/dwim-wildcards-as-pathspecs (2015-08-11) 1 commit
-  (merged to 'next' on 2015-08-12 at bb73f4d)
- + t2019: skip test requiring '*' in a file name non Windows
-
- Test updates for Windows.
+* ss/fix-config-fd-leak (2015-08-14) 1 commit
+  (merged to 'next' on 2015-08-19 at 80d4880)
+ + config: close config file handle in case of error
 
  Will merge to 'master'.
 
 
-* sg/config-name-only (2015-08-10) 2 commits
-  (merged to 'next' on 2015-08-12 at c658fe4)
- + completion: list variable names reliably with 'git config --name-only'
- + config: add '--name-only' option to list only variable names
+* bb/remote-get-url (2015-08-05) 1 commit
+ - remote: add get-url subcommand
 
- "git config --list" output was hard to parse when values consist of
multiple lines.  "--name-only" option is added to help this.
+ "git remote" learned "get-url" subcommand to show the URL for a
given remote name used for fetching and pushing.
 
- Will merge to 'master'.
+ Waiting for a reroll.
+ ($gmane/275401)
 
 
-* mh/tempfile (2015-08-12) 16 commits
-  (merged to 'next' on 2015-08-12 at 80efcb7)
- + credential-cache--daemon: use tempfile module
- + credential-cache--daemon: delete socket from main()
- + gc: use tempfile module to handle gc.pid file
- + lock_repo_for_gc(): compute the path to "gc.pid" only once
- + diff: use tempfile module
- + setup_temporary_shallow(): use tempfile module
- + write_shared_index(): use tempfile module
- + register_tempfile(): new function to handle an existing temporary file
- + tempfile: add several functions for creating temporary files
- + prepare_tempfile_object(): new function, extracted from create_tempfile()
- + tempfile: a new module for handling temporary files
- + commit_lock_file(): use get_locked_file_path()
- + lockfile: add accessor get_lock_file_path()
- + lockfile: add accessors get_lock_file_fd() and get_lock_file_fp()
- + create_bundle(): duplicate file descriptor to avoid closing it twice
- + lockfile: move documentation to lockfile.h and lockfile.c
+* jk/notes-merge-config (2015-08-17) 6 commits
+ - notes: teach git-notes about notes.<name>.mergeStrategy option
+ - notes: add notes.mergeStrategy option to select default strategy
+ - notes: add tests for --commit/--abort/--strategy exclusivity
+ - notes: extract parse_notes_merge_strategy to notes-utils
+ - notes: extract enum notes_merge_strategy to notes-utils.h
+ - notes: document cat_sort_uniq rewriteMode
 
- The "lockfile" API has been rebuilt on top of a new "tempfile" API.
+ "git notes merge" can be told with "--strategy=<how>" option how to
+ automatically handle conflicts; this can now be configured by
+ setting notes.merge configuration variable.
 
- Will merge to 'master'.
+ I think this is ready for 'next', but did I miss comments that need
+ to be addressed before it happens?
 
 
-* jh/strbuf-read-use-read-in-full (2015-08-10) 1 commit
-  (merged to 'next' on 2015-08-12 at db16247)
- + strbuf_read(): skip unnecessary strbuf_grow() at eof
+* hv/submodule-config (2015-08-19) 4 commits
+  (merged to 'next' on 2015-08-25 at 82adb30)
+ + submodule: allow erroneous values for the fetchRecurseSubmodules option
+ + submodule: use new config API for worktree configurations
+ + submodule: extract functions for config set and lookup
+ + submodule: implement a config API for lookup of .gitmodules values
+ (this branch is used by sb/submodule-helper.)
 
- strbuf_read() used to have one extra iteration (and an unnecessary
strbuf_grow() of 8kB), which was eliminated.
+ The gitmodules API accessed from the C code learned to cache stuff
lazily.
 
  Will merge to 'master'.
 
 
-* sb/check-return-from-read-ref (2015-08-03) 1 commit
-  (merged to 'next' on 2015-08-12 at 4a1c801)
- + transport-helper: die on errors reading refs.
+* sb/submodule-helper (2015-08-25) 7 commits
+ - submodule: helper to run foreach in parallel
+ - thread-utils: add a threaded task queue
+ - FIXUP submodule: implement `module_clone` as a builtin helper
+ - submodule: implement `module_clone` as a builtin helper
+ - submodule: implement `module_name` as a builtin helper
+ - submodule: implement `module_list` as a builtin helper
+ - Merge 'hv/submodule-config' to 'sb/submodule-helper'
+ (this branch uses hv/submodule-config.)
 
- Will merge to 'master'.
+ The infrastructure to rewrite "git submodule" in C is being built
+ incrementally.  These early part looks promising.
 
 
-* jk/negative-hiderefs (2015-08-07) 2 commits
-  (merged to 'next' on 2015-08-12 at bdc478d)
- + refs: support negative transfer.hideRefs
- + docs/config.txt: reorder hideRefs config
+* dt/untracked-subdir (2015-08-19) 2 commits
+  (merged to 'next' on 2015-08-25 at ab4fd04)
+ + untracked cache: fix entry invalidation
+ + untracked-cache: fix subdirectory handling
+ (this branch uses dt/untracked-sparse.)
 
- A negative !ref entry in multi-value transfer.hideRefs
configuration can be used to say "don't hide this one".
+ The experimental untracked-cache feature were buggy when paths with
a few levels of subdirectories are involved.
 
  Will merge to 'master'.
 
 
-* dt/notes-multiple (2015-08-11) 2 commits
-  (merged to 'next' on 2015-08-12 at 0052055)
- + notes: handle multiple worktrees
- + worktrees: add find_shared_symref
-
- When linked worktree is used, simultaneous "notes merge" instances
- for the same ref in refs/notes/* are prevented from stomping on
- each other.
+* ad/cygwin-wants-rename (2015-08-07) 1 commit
+ - config.mak.uname: Cygwin needs OBJECT_CREATION_USES_RENAMES
 
- Will merge to 'master'.
+ Will hold.
+ ($gmane/275680).
 
 
-* dt/refs-pseudo (2015-08-11) 6 commits
-  (merged to 'next' on 2015-08-12 at 7078eb6)
- + pseudoref: check return values from read_ref()
-  (merged to 'next' on 2015-08-03 at 3eafd33)
- + sequencer: replace write_cherry_pick_head with update_ref
- + bisect: use update_ref
- + pseudorefs: create and use pseudoref update and delete functions
- + refs: add ref_type function
- + refs: introduce pseudoref and per-worktree ref concepts
+* sg/config-name-only (2015-08-20) 6 commits
+  (merged to 'next' on 2015-08-25 at 6cb3b7d)
+ + get_urlmatch: avoid useless strbuf write
+ + format_config: simplify buffer handling
+ + format_config: don't init strbuf
+ + config: restructure format_config() for better control flow
+  (merged to 'next' on 2015-08-12 at c658fe4)
+ + completion: list variable names reliably with 'git config --name-only'
+ + config: add '--name-only' option to list only variable names
 
- To prepare for allowing a different "ref" backend to be plugged in
- to the system, update_ref()/delete_ref() have been taught about
- ref-like things like MERGE_HEAD that are per-worktree (they will
- always be written to the filesystem inside $GIT_DIR).
+ "git config --list" output was hard to parse when values consist of
+ multiple lines.  "--name-only" option is added to help this.
 
  Will merge to 'master'.
 
@@ -721,6 +850,7 @@ of the repositories listed at
  + ref-filter: implement '--points-at' option
  + tag: libify parse_opt_points_at()
  + t6302: for-each-ref tests for ref-filter APIs
+ (this branch is used by kn/for-each-tag.)
 
  Originally merged to 'next' on 2015-07-15
 
@@ -756,6 +886,8 @@ of the repositories listed at
 
  Code clean-up and minor fixes (so far).
 
+ Will merge to 'next'.
+
 
 * jc/rerere-multi (2015-07-30) 7 commits
  . t4200: rerere a merge with two identical conflicts
@@ -767,7 +899,9 @@ of the repositories listed at
  - rerere: split conflict ID further
  (this branch uses jc/rerere.)
 
- This is a contination of jc/rerere topic.
+ "git rerere" can encounter two or more files with the same conflict
+ signature that have to be resolved in different ways, but there was
+ no way to record these separate resolutions.
 
 
 * jc/merge-drop-old-syntax (2015-04-29) 1 commit