What's cooking (2014/10 #01)
[git.git] / whats-cooking.txt
blobab107032ce9bd1fa216a0aa365f96ff77a840672
1 To: git@vger.kernel.org
2 Bcc: lwn@lwn.net
3 Subject: What's cooking in git.git (Oct 2014, #01; Tue, 7)
4 X-master-at: 325602ce120e7bd7321b9ed409b49b48fd20888e
5 X-next-at: 4587c01894e202cf47b7eeaf1c9cc40e47b01777
7 What's cooking in git.git (Oct 2014, #01; Tue, 7)
8 --------------------------------------------------
10 Here are the topics that have been cooking.  Commits prefixed with
11 '-' are only in 'pu' (proposed updates) while commits prefixed with
12 '+' are in 'next'.
14 You can find the changes described here in the integration branches
15 of the repositories listed at
17     http://git-blame.blogspot.com/p/git-public-repositories.html
19 --------------------------------------------------
20 [New Topics]
22 * mh/lockfile-stdio (2014-10-01) 3 commits
23  - commit_packed_refs(): reimplement using fdopen_lock_file()
24  - dump_marks(): reimplement using fdopen_lock_file()
25  - fdopen_lock_file(): access a lockfile using stdio
26  (this branch uses mh/lockfile.)
28  Will merge to 'next'.
31 * rs/daemon-fixes (2014-10-01) 3 commits
32   (merged to 'next' on 2014-10-07 at 4171e10)
33  + daemon: remove write-only variable maxfd
34  + daemon: fix error message after bind()
35  + daemon: handle gethostbyname() error
37  "git daemon" (with NO_IPV6 build configuration) used to incorrectly
38  use the hostname even when gethostbyname() reported that the given
39  hostname is not found.
41  Will merge to 'master'.
44 * rs/sha1-array-test (2014-10-01) 2 commits
45  - sha1-lookup: handle duplicates in sha1_pos()
46  - sha1-array: add test-sha1-array and basic tests
48  Will merge to 'next'.
51 * da/completion-show-signature (2014-10-07) 1 commit
52   (merged to 'next' on 2014-10-07 at 2467c19)
53  + completion: add --show-signature for log and show
55  Will merge to 'master'.
58 * jk/prune-mtime (2014-10-04) 18 commits
59  - write_sha1_file: freshen existing objects
60  - pack-objects: match prune logic for discarding objects
61  - pack-objects: refactor unpack-unreachable expiration check
62  - prune: keep objects reachable from recent objects
63  - sha1_file: add for_each iterators for loose and packed objects
64  - count-objects: use for_each_loose_file_in_objdir
65  - count-objects: do not use xsize_t when counting object size
66  - prune: factor out loose-object directory traversal
67  - t5304: use helper to report failure of "test foo = bar"
68  - t5304: use test_path_is_* instead of "test -f"
69  - reachable: clear pending array after walking it
70  - clean up name allocation in prepare_revision_walk
71  - object_array: add a "clear" function
72  - object_array: factor out slopbuf-freeing logic
73  - isxdigit: cast input to unsigned char
74  - foreach_alt_odb: propagate return value from callback
75  - Merge branch 'dt/cache-tree-repair' into jk/prune-mtime
76  - Merge branch 'jc/reopen-lock-file' into jk/prune-mtime
77  (this branch uses dt/cache-tree-repair.)
79  Expecting a reroll.
82 * jn/parse-config-slot (2014-10-07) 2 commits
83  - color_parse: do not mention variable name in error message
84  - pass config slots as pointers instead of offsets
86  Expecting an Ack/Sign-off or update from Jonathan on the bottom one.
89 * rs/mailsplit (2014-10-07) 1 commit
90  - mailsplit: remove unnecessary unlink(2) call
92  Will merge to 'next'.
95 * rs/more-uses-of-skip-prefix (2014-10-07) 1 commit
96  - use skip_prefix() to avoid more magic numbers
98  Will merge to 'next'.
101 * rs/plug-leak-in-bundle (2014-10-07) 1 commit
102  - bundle: plug minor memory leak in is_tag_in_date_range()
104  Will merge to 'next'.
106 --------------------------------------------------
107 [Stalled]
109 * rs/ref-transaction (2014-09-10) 19 commits
110  . ref_transaction_commit: bail out on failure to remove a ref
111  . lockfile: remove unable_to_lock_error
112  . refs.c: do not permit err == NULL
113  . for-each-ref.c: improve message before aborting on broken ref
114  . refs.c: fix handling of badly named refs
115  . branch -d: avoid repeated symref resolution
116  . refs.c: change resolve_ref_unsafe reading argument to be a flags field
117  . refs.c: make write_ref_sha1 static
118  . fetch.c: change s_update_ref to use a ref transaction
119  . refs.c: ref_transaction_commit: distinguish name conflicts from other errors
120  . refs.c: pass a skip list to name_conflict_fn
121  . refs.c: call lock_ref_sha1_basic directly from commit
122  . refs.c: move the check for valid refname to lock_ref_sha1_basic
123  . rename_ref: don't ask read_ref_full where the ref came from
124  . refs.c: pass the ref log message to _create/delete/update instead of _commit
125  . refs.c: add an err argument to delete_ref_loose
126  . wrapper.c: add a new function unlink_or_msg
127  . wrapper.c: remove/unlink_or_warn: simplify, treat ENOENT as success
128  . mv test: recreate mod/ directory instead of relying on stale copy
130  Expecting the final reroll.
133 * tr/remerge-diff (2014-09-08) 8 commits
134  - log --remerge-diff: show what the conflict resolution changed
135  - name-hash: allow dir hashing even when !ignore_case
136  - merge-recursive: allow storing conflict hunks in index
137  - merge_diff_mode: fold all merge diff variants into an enum
138  - combine-diff: do not pass revs->dense_combined_merges redundantly
139  - merge-recursive: -Xindex-only to leave worktree unchanged
140  - merge-recursive: internal flag to avoid touching the worktree
141  - merge-recursive: remove dead conditional in update_stages()
143  "log -p" output learns a new way to let users inspect a merge
144  commit by showing the differences between the automerged result
145  with conflicts the person who recorded the merge would have seen
146  and the final conflict resolution that was recorded in the merge.
148  Waiting for a reroll ($gmane/256591).
151 * hv/submodule-config (2014-06-30) 4 commits
152  - do not die on error of parsing fetchrecursesubmodules option
153  - use new config API for worktree configurations of submodules
154  - extract functions for submodule config set and lookup
155  - implement submodule config cache for lookup of submodule names
157  Kicked back to 'pu' per request ($gmane/255610).
160 * jt/timer-settime (2014-08-29) 6 commits
161  - use timer_settime() for new platforms
162  - autoconf: check for timer_settime()
163  - autoconf: check for struct itimerspec
164  - autoconf: check for struct sigevent
165  - autoconf: check for struct timespec
166  - autoconf: check for timer_t
168  Reviewed, discussed and wanting for a reroll.
171 * jk/pack-bitmap (2014-08-04) 1 commit
172  - pack-bitmap: do not use gcc packed attribute
174  Hold, waiting for Karsten's replacement.
177 * cb/mergetool-difftool (2014-07-21) 2 commits
178  - difftool: don't assume that default sh is sane
179  - mergetool: don't require a work tree for --tool-help
181  Update the way the "difftool --help" shows the help message that is
182  shared with the "mergetool" to reduce one shell dependency.
184  Will be rerolled.
187 * rr/mergetool-temporary-filename-tweak (2014-08-21) 1 commit
188  - Allow the user to change the temporary file name for mergetool
190  Needs rerolling (new paragraph in doc seems to be in a wrong place)
193 * jk/tag-contains (2014-06-30) 8 commits
194  . perf: add tests for tag --contains
195  . tag: use commit_contains
196  . commit: provide a fast multi-tip contains function
197  . string-list: add pos to iterator callback
198  . add functions for memory-efficient bitmaps
199  . paint_down_to_common: use prio_queue
200  . tag: factor out decision to stream tags
201  . tag: allow --sort with -n
203  Expecting a reroll.
206 * ab/add-interactive-show-diff-func-name (2014-05-12) 2 commits
207  - SQUASH??? git-add--interactive: Preserve diff heading when splitting hunks
208  - git-add--interactive: Preserve diff heading when splitting hunks
210  Waiting for a reroll.
213 * jn/gitweb-utf8-in-links (2014-05-27) 1 commit
214  - gitweb: Harden UTF-8 handling in generated links
216  $gmane/250758?
219 * rh/prompt-tests (2014-06-05) 11 commits
220  - t9904: new __git_ps1 tests for Zsh
221  - test-lib: make it possible to override how test code is eval'd
222  - lib-prompt-tests.sh: add variable for string that encodes percent in PS1
223  - lib-prompt-tests.sh: put all tests inside a function
224  - t9903: move prompt tests to a new lib-prompt-tests.sh file
225  - t9903: move PS1 color code variable definitions to lib-bash.sh
226  - t9903: include "Bash" in test names via new $shellname var
227  - t9903: run pc mode tests again with PS1 expansion disabled
228  - t9903: move test name prefix to a separate variable
229  - t9903: put the Bash pc mode prompt test cases in a function
230  - t9903: remove Zsh test from the suite of Bash prompt tests
232  Expecting a reroll to limit the damage to test_eval_; also reported
233  to be broken with older zsh that are still in the field ($gmane/251231).
236 * ss/userdiff-update-csharp-java (2014-06-02) 2 commits
237  - userdiff: support Java try keyword
238  - userdiff: support C# async methods and correct C# keywords
240  Reviews sent; waiting for a response.
243 * bg/rebase-off-of-previous-branch (2014-04-16) 1 commit
244  - git-rebase: print name of rev when using shorthand
246  Teach "git rebase -" to report the concrete name of the branch
247  (i.e. the previous one).
249  But it stops short and does not do the same for "git rebase @{-1}".
250  Expecting a reroll.
253 * jk/makefile (2014-02-05) 16 commits
254  . FIXUP
255  . move LESS/LV pager environment to Makefile
256  . Makefile: teach scripts to include make variables
257  . FIXUP
258  . Makefile: auto-build C strings from make variables
259  . Makefile: drop *_SQ variables
260  . FIXUP
261  . Makefile: add c-quote helper function
262  . Makefile: introduce sq function for shell-quoting
263  . Makefile: always create files via make-var
264  . Makefile: store GIT-* sentinel files in MAKE/
265  . Makefile: prefer printf to echo for GIT-*
266  . Makefile: use tempfile/mv strategy for GIT-*
267  . Makefile: introduce make-var helper function
268  . Makefile: fix git-instaweb dependency on gitweb
269  . Makefile: drop USE_GETTEXT_SCHEME from GIT-CFLAGS
271  Simplify the Makefile rules and macros that exist primarily for
272  quoting purposes, and make it easier to robustly express the
273  dependency rules.
275  Expecting a reroll.
278 * rb/merge-prepare-commit-msg-hook (2014-01-10) 4 commits
279  - merge: drop unused arg from abort_commit method signature
280  - merge: make prepare_to_commit responsible for write_merge_state
281  - t7505: ensure cleanup after hook blocks merge
282  - t7505: add missing &&
284  Expose more merge states (e.g. $GIT_DIR/MERGE_MODE) to hooks that
285  run during "git merge".  The log message stresses too much on one
286  hook, prepare-commit-msg, but it would equally apply to other hooks
287  like post-merge, I think.
289  Waiting for a reroll.
292 * jc/graph-post-root-gap (2013-12-30) 3 commits
293  - WIP: document what we want at the end
294  - graph: remove unused code a bit
295  - graph: stuff the current commit into graph->columns[]
297  This was primarily a RFH ($gmane/239580).
300 * tg/perf-lib-test-perf-cleanup (2013-09-19) 2 commits
301  - perf-lib: add test_perf_cleanup target
302  - perf-lib: split starting the test from the execution
304  Add test_perf_cleanup shell function to the perf suite, that allows
305  the script writers to define a test with a clean-up action.
307  Will hold.
310 * jc/show-branch (2014-03-24) 5 commits
311  - show-branch: use commit slab to represent bitflags of arbitrary width
312  - show-branch.c: remove "all_mask"
313  - show-branch.c: abstract out "flags" operation
314  - show-branch.c: lift all_mask/all_revs to a global static
315  - show-branch.c: update comment style
317  Waiting for the final step to lift the hard-limit before sending it out.
319 --------------------------------------------------
320 [Cooking]
322 * dt/cache-tree-repair (2014-09-30) 1 commit
323   (merged to 'next' on 2014-10-07 at 923bd93)
324  + t0090: avoid passing empty string to printf %d
325  (this branch is used by jk/prune-mtime.)
327  This fixes a topic that has graduated to 'master'.
329  Will merge to 'master'.
332 * bw/use-write-script-in-tests (2014-09-29) 1 commit
333   (merged to 'next' on 2014-09-29 at be4056e)
334  + t/lib-credential: use write_script
336  Will merge to 'master'.
339 * bw/trace-no-inline-getnanotime (2014-09-29) 1 commit
340  - trace.c: do not mark getnanotime() as "inline"
342  No file-scope static variables in an inlined function, please.
345 * po/everyday-doc (2014-09-29) 3 commits
346  - Make 'git help everyday' work
347  - doc: Makefile regularise OBSOLETE_HTML list building
348  - doc: modernise everyday.txt wording and format in man page style
350  Looks ready for 'next' except for minor nits.
353 * jc/push-cert-hmac-optim (2014-09-25) 2 commits
354  - receive-pack: truncate hmac early and convert only necessary bytes
355  - sha1_to_hex: split out "hex-format n bytes" helper and use it
356  (this branch uses jc/push-cert.)
358  This is "we could do this if we wanted to", not "we measured and it
359  improves performance critical codepath".
361  Will perhaps drop.
364 * je/quiltimport-no-fuzz (2014-09-26) 2 commits
365  - git-quiltimport: flip the default not to allow fuzz
366  - git-quiltimport.sh: allow declining fuzz with --exact option
368  "quiltimport" drove "git apply" always with -C1 option to reduce
369  context of the patch in order to give more chance to somewhat stale
370  patches to apply.  Add an "--exact" option to disable, and also
371  "-C$n" option to customize this behaviour.  The top patch
372  optionally flips the default to "--exact".
374  Waiting for an Ack.
377 * nd/archive-pathspec (2014-09-22) 1 commit
378   (merged to 'next' on 2014-09-25 at 8806f93)
379  + archive: support filtering paths with glob
381  "git archive" learned to filter what gets archived with pathspec.
383  Will merge to 'master'.
386 * so/rebase-doc-fork-point (2014-09-29) 1 commit
387   (merged to 'next' on 2014-10-07 at 03d8ed6)
388  + Documentation/git-rebase.txt: document when --fork-point is auto-enabled
390  Will merge to 'master'.
393 * sk/tag-contains-wo-recursion (2014-09-23) 1 commit
394  - t7004: give the test a bit more stack space
396  Waiting for an Ack ($gmane/257448).
399 * da/include-compat-util-first-in-c (2014-09-15) 1 commit
400   (merged to 'next' on 2014-10-07 at ea5bcb4)
401  + cleanups: ensure that git-compat-util.h is included first
403  Code clean-up.
405  Will merge to 'master'.
408 * mh/lockfile (2014-10-01) 38 commits
409  - lockfile.h: extract new header file for the functions in lockfile.c
410  - hold_locked_index(): move from lockfile.c to read-cache.c
411  - hold_lock_file_for_append(): restore errno before returning
412  - get_locked_file_path(): new function
413  - lockfile.c: rename static functions
414  - lockfile: rename LOCK_NODEREF to LOCK_NO_DEREF
415  - commit_lock_file_to(): refactor a helper out of commit_lock_file()
416  - trim_last_path_component(): replace last_path_elm()
417  - resolve_symlink(): take a strbuf parameter
418  - resolve_symlink(): use a strbuf for internal scratch space
419  - lockfile: change lock_file::filename into a strbuf
420  - commit_lock_file(): use a strbuf to manage temporary space
421  - try_merge_strategy(): use a statically-allocated lock_file object
422  - try_merge_strategy(): remove redundant lock_file allocation
423  - struct lock_file: declare some fields volatile
424  - lockfile: avoid transitory invalid states
425  - git_config_set_multivar_in_file(): avoid call to rollback_lock_file()
426  - dump_marks(): remove a redundant call to rollback_lock_file()
427  - api-lockfile: document edge cases
428  - commit_lock_file(): rollback lock file on failure to rename
429  - close_lock_file(): if close fails, roll back
430  - commit_lock_file(): die() if called for unlocked lockfile object
431  - commit_lock_file(): inline temporary variable
432  - remove_lock_file(): call rollback_lock_file()
433  - lock_file(): exit early if lockfile cannot be opened
434  - prepare_index(): declare return value to be (const char *)
435  - delete_ref_loose(): don't muck around in the lock_file's filename
436  - cache.h: define constants LOCK_SUFFIX and LOCK_SUFFIX_LEN
437  - lockfile.c: document the various states of lock_file objects
438  - lock_file(): always initialize and register lock_file object
439  - hold_lock_file_for_append(): release lock on errors
440  - lockfile: unlock file if lockfile permissions cannot be adjusted
441  - rollback_lock_file(): set fd to -1
442  - rollback_lock_file(): exit early if lock is not active
443  - rollback_lock_file(): do not clear filename redundantly
444  - close_lock_file(): exit (successfully) if file is already closed
445  - api-lockfile: revise and expand the documentation
446  - unable_to_lock_die(): rename function from unable_to_lock_index_die()
447  (this branch is used by mh/lockfile-stdio.)
449  The lockfile API and its users have been cleaned up.
451  Will merge to 'next'.
454 * nd/multiple-work-trees (2014-09-27) 32 commits
455  - t2025: add a test to make sure grafts is working from a linked checkout
456  - checkout: don't require a work tree when checking out into a new one
457  - git_path(): keep "info/sparse-checkout" per work-tree
458  - count-objects: report unused files in $GIT_DIR/worktrees/...
459  - gc: support prune --worktrees
460  - gc: factor out gc.pruneexpire parsing code
461  - gc: style change -- no SP before closing parenthesis
462  - checkout: clean up half-prepared directories in --to mode
463  - checkout: reject if the branch is already checked out elsewhere
464  - prune: strategies for linked checkouts
465  - checkout: support checking out into a new working directory
466  - use new wrapper write_file() for simple file writing
467  - wrapper.c: wrapper to open a file, fprintf then close
468  - setup.c: support multi-checkout repo setup
469  - setup.c: detect $GIT_COMMON_DIR check_repository_format_gently()
470  - setup.c: convert check_repository_format_gently to use strbuf
471  - setup.c: detect $GIT_COMMON_DIR in is_git_directory()
472  - setup.c: convert is_git_directory() to use strbuf
473  - git-stash: avoid hardcoding $GIT_DIR/logs/....
474  - *.sh: avoid hardcoding $GIT_DIR/hooks/...
475  - git-sh-setup.sh: use rev-parse --git-path to get $GIT_DIR/objects
476  - $GIT_COMMON_DIR: a new environment variable
477  - commit: use SEQ_DIR instead of hardcoding "sequencer"
478  - fast-import: use git_path() for accessing .git dir instead of get_git_dir()
479  - reflog: avoid constructing .lock path with git_path
480  - *.sh: respect $GIT_INDEX_FILE
481  - git_path(): be aware of file relocation in $GIT_DIR
482  - path.c: group git_path(), git_pathdup() and strbuf_git_path() together
483  - path.c: rename vsnpath() to do_git_path()
484  - git_snpath(): retire and replace with strbuf_git_path()
485  - path.c: make get_pathname() call sites return const char *
486  - path.c: make get_pathname() return strbuf instead of static buffer
488  A replacement for contrib/workdir/git-new-workdir that does not
489  rely on symbolic links and make sharing of objects and refs safer
490  by making the borrowee and borrowers aware of each other.
492  A few tests need some tweaks for MinGW ($gmane/{257756,257757}).
495 * cc/interpret-trailers (2014-09-22) 11 commits
496  - Documentation: add documentation for 'git interpret-trailers'
497  - trailer: add tests for commands in config file
498  - trailer: execute command from 'trailer.<name>.command'
499  - trailer: add tests for "git interpret-trailers"
500  - trailer: add interpret-trailers command
501  - trailer: put all the processing together and print
502  - trailer: parse trailers from file or stdin
503  - trailer: process command line trailer arguments
504  - trailer: read and process config information
505  - trailer: process trailers from input message and arguments
506  - trailer: add data structures and basic functions
508  A new filter to programatically edit the tail end of the commit log
509  messages.
511  Discussion on the topic with Michael Tsirkin who wants to utilize
512  this machinery is going on.  Finally a real functionality review
513  that is very much welcomed.
516 * sp/stream-clean-filter (2014-09-22) 7 commits
517   (merged to 'next' on 2014-09-29 at 47fc36d)
518  + sha1_file: don't convert off_t to size_t too early to avoid potential die()
519  + convert: stream from fd to required clean filter to reduce used address space
520  + copy_fd(): do not close the input file descriptor
521  + mmap_limit: introduce GIT_MMAP_LIMIT to allow testing expected mmap size
522  + memory_limit: use git_env_ulong() to parse GIT_ALLOC_LIMIT
523  + config.c: add git_env_ulong() to parse environment variable
524  + convert: drop arguments other than 'path' from would_convert_to_git()
526  When running a required clean filter, we do not have to mmap the
527  original before feeding the filter.  Instead, stream the file
528  contents directly to the filter and process its output.
530  Will merge to 'master'.
533 * jc/push-cert (2014-09-25) 24 commits
534   (merged to 'next' on 2014-09-25 at 3eb1d69)
535  + receive-pack::hmac_sha1(): copy the entire SHA-1 hash out
536   (merged to 'next' on 2014-09-24 at a99f5d8)
537  + signed push: allow stale nonce in stateless mode
538  + signed push: teach smart-HTTP to pass "git push --signed" around
539  + signed push: fortify against replay attacks
540  + signed push: add "pushee" header to push certificate
541  + signed push: remove duplicated protocol info
542  + send-pack: send feature request on push-cert packet
543  + receive-pack: GPG-validate push certificates
544  + push: the beginning of "git push --signed"
545  + pack-protocol doc: typofix for PKT-LINE
546  + gpg-interface: move parse_signature() to where it should be
547  + gpg-interface: move parse_gpg_output() to where it should be
548  + send-pack: clarify that cmds_sent is a boolean
549  + send-pack: refactor inspecting and resetting status and sending commands
550  + send-pack: rename "new_refs" to "need_pack_data"
551  + receive-pack: factor out capability string generation
552  + send-pack: factor out capability string generation
553  + send-pack: always send capabilities
554  + send-pack: refactor decision to send update per ref
555  + send-pack: move REF_STATUS_REJECT_NODELETE logic a bit higher
556  + receive-pack: factor out queueing of command
557  + receive-pack: do not reuse old_sha1[] for other things
558  + receive-pack: parse feature request a bit earlier
559  + receive-pack: do not overallocate command structure
560  (this branch is used by jc/push-cert-hmac-optim.)
562  Allow "git push" request to be signed, so that it can be verified and
563  audited, using the GPG signature of the person who pushed, that the
564  tips of branches at a public repository really point the commits
565  the pusher wanted to, without having to "trust" the server.
567  Will merge to 'master'.
570 * mt/patch-id-stable (2014-06-10) 1 commit
571  - patch-id: change default to stable
573  Teaches "git patch-id" to compute the patch ID that does not change
574  when the files in a single patch is reordered. As this new algorithm
575  is backward incompatible, the last bit to flip it to be the default
576  is left out of 'master' for now.
578  Nobody seems to be jumping up & down requesting this last step,
579  which makes the result somewhat backward incompatible.
580  Will perhaps drop.