What's cooking (2013/08 #07)
[alt-git.git] / whats-cooking.txt
blobd8ccbe73807cc9fdc0d512599958e82fc02809d9
1 To: git@vger.kernel.org
2 Bcc: lwn@lwn.net
3 Subject: What's cooking in git.git (Aug 2013, #07; Wed, 28)
4 X-master-at: e230c568c4b9a991e3175e5f65171a566fd8e39c
5 X-next-at: 4ec6b414090cf91b9ca5200ee6921ae9a92582ff
7 What's cooking in git.git (Aug 2013, #07; Wed, 28)
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 The tip of 'next' has been rewound. I ejected a handful of topics
15 that have been cooking there while rebuilding it, but it is not
16 because I found anything in them problematic, but merely because
17 they were young and I wanted to give their authors a chance to tweak
18 with a reroll instead of a set of follow-up patches. Unless I hear
19 otherwise in a few days, they will be merged back to 'next'.
21 By the way, the push that overrides the usual "must fast-forward"
22 was done using the "force-with-lease" option that has been cooking
23 in next, like so:
25     $ git fetch ko next
26     $ anchor=$(git rev-parse --verify FETCH_HEAD)
27     $ for remote in ko repo gph github2
28       do
29         git push --force-with-lease=refs/heads/next:$anchor $remote next
30       done
32 I used to do this with just --force.
34 You can find the changes described here in the integration branches
35 of the repositories listed at
37     http://git-blame.blogspot.com/p/git-public-repositories.html
39 --------------------------------------------------
40 [New Topics]
42 * cc/replace-with-the-same-type (2013-08-27) 5 commits
43  - Documentation/replace: add Creating Replacement Objects section
44  - t6050-replace: add test to clean up all the replace refs
45  - t6050-replace: test that objects are of the same type
46  - Documentation/replace: state that objects must be of the same type
47  - replace: forbid replacing an object with one of a different type
49  Using the replace mechanism to swap an object with another object
50  of a different type can introduce inconsistency (e.g. a tree
51  expects an object name to refer to a blob, but the blob object can
52  be mistakenly or maliciously replaced with an object with a
53  different type). Attempt to forbid such.
55  This may need to be given an escape hatch "--force", though.
58 * jx/clean-interactive (2013-08-28) 1 commit
59  - documentation: clarify notes for clean.requireForce
61  Finishing touches to update the document to adjust to a new option
62  "git clean" learned recently.
64  Will merge to 'next'.
67 * mm/status-without-comment-char (2013-08-28) 3 commits
68  - SQUASH??? wt-status.c decl-after-stmt
69  - status: introduce status.displayCommentChar to disable display of #
70  - submodule: introduce --[no-]display-comment-char
72  Allow "git status" to omit the prefix to make its output a comment
73  in a commit log editor, which is not necessary for human
74  consumption.
77 * xx/cleanup (2013-08-28) 1 commit
78  - builtin/stripspace.c: fix broken indentation
80  Will probably directly cherry-pick to 'maint' or 'master' and kill
81  the branch.
83 --------------------------------------------------
84 [Stalled]
86 * rv/send-email-cache-generated-mid (2013-08-21) 2 commits
87  - git-send-email: Cache generated message-ids, use them when prompting
88  - git-send-email: add optional 'choices' parameter to the ask sub
91 * rj/read-default-config-in-show-ref-pack-refs (2013-06-17) 3 commits
92  - ### DONTMERGE: needs better explanation on what config they need
93  - pack-refs.c: Add missing call to git_config()
94  - show-ref.c: Add missing call to git_config()
96  The changes themselves are probably good, but it is unclear what
97  basic setting needs to be read for which exact operation.
99  Waiting for clarification.
100  $gmane/228294
103 * jh/shorten-refname (2013-05-07) 4 commits
104  - t1514: refname shortening is done after dereferencing symbolic refs
105  - shorten_unambiguous_ref(): Fix shortening refs/remotes/origin/HEAD to origin
106  - t1514: Demonstrate failure to correctly shorten "refs/remotes/origin/HEAD"
107  - t1514: Add tests of shortening refnames in strict/loose mode
109  When remotes/origin/HEAD is not a symbolic ref, "rev-parse
110  --abbrev-ref remotes/origin/HEAD" ought to show "origin", not
111  "origin/HEAD", which is fixed with this series (if it is a symbolic
112  ref that points at remotes/origin/something, then it should show
113  "origin/something" and it already does).
115  Expecting a reroll, as an early part of a larger series.
116  $gmane/225137
119 * jk/list-objects-sans-blobs (2013-06-06) 4 commits
120  . archive: ignore blob objects when checking reachability
121  . list-objects: optimize "revs->blob_objects = 0" case
122  . upload-archive: restrict remote objects with reachability check
123  . clear parsed flag when we free tree buffers
125  Attempt to allow "archive --remote=$there $arbitrary_sha1" while
126  keeping the reachability safety.
128  Seems to break some tests in a trivial and obvious way.
131 * mg/more-textconv (2013-05-10) 7 commits
132  - grep: honor --textconv for the case rev:path
133  - grep: allow to use textconv filters
134  - t7008: demonstrate behavior of grep with textconv
135  - cat-file: do not die on --textconv without textconv filters
136  - show: honor --textconv for blobs
137  - diff_opt: track whether flags have been set explicitly
138  - t4030: demonstrate behavior of show with textconv
140  Make "git grep" and "git show" pay attention to --textconv when
141  dealing with blob objects.
143  I thought this was pretty well designed and executed, but it seems
144  there are some doubts on the list; kicked back to 'pu'.
147 * jc/format-patch (2013-04-22) 2 commits
148  - format-patch: --inline-single
149  - format-patch: rename "no_inline" field
151  A new option to send a single patch to the standard output to be
152  appended at the bottom of a message.  I personally have no need for
153  this, but it was easy enough to cobble together.  Tests, docs and
154  stripping out more MIMEy stuff are left as exercises to interested
155  parties.
157  Not ready for inclusion.
159  Will discard unless we hear from anybody who is interested in
160  tying its loose ends.
163 * jk/gitweb-utf8 (2013-04-08) 4 commits
164  - gitweb: Fix broken blob action parameters on blob/commitdiff pages
165  - gitweb: Don't append ';js=(0|1)' to external links
166  - gitweb: Make feed title valid utf8
167  - gitweb: Fix utf8 encoding for blob_plain, blobdiff_plain, commitdiff_plain, and patch
169  Various fixes to gitweb.
171  Drew Northup volunteered to take a look into this.
172  $gmane/226216
175 * jc/show-branch (2013-06-07) 5 commits
176  - show-branch: use commit slab to represent bitflags of arbitrary width
177  - show-branch.c: remove "all_mask"
178  - show-branch.c: abstract out "flags" operation
179  - show-branch.c: lift all_mask/all_revs to a global static
180  - show-branch.c: update comment style
182  Waiting for the final step to lift the hard-limit before sending it out.
184 --------------------------------------------------
185 [Cooking]
187 * js/xread-in-full (2013-08-20) 1 commit
188  - stream_to_pack: xread does not guarantee to read all requested bytes
190  Originally merged to 'next' on 2013-08-20
192  A call to xread() was used without a loop around to cope with short
193  read in the codepath to stream new contents to a pack.
195  Will merge to 'next'.
198 * sb/mailmap-freeing-NULL-is-ok (2013-08-20) 1 commit
199  - mailmap: remove redundant check for freeing memory
201  Originally merged to 'next' on 2013-08-20
203  Will merge to 'next'.
206 * tg/index-struct-sizes (2013-08-20) 1 commit
207   (merged to 'next' on 2013-08-28 at c815042)
208  + read-cache: use fixed width integer types
210  Originally merged to 'next' on 2013-08-22
212  The code that reads from a region that mmaps an on-disk index
213  assumed that "int"/"short" are always 32/16 bits.
215  Will merge to 'master' in the second batch.
218 * bc/completion-for-bash-3.0 (2013-08-22) 3 commits
219   (merged to 'next' on 2013-08-28 at fb87a84)
220  + contrib/git-prompt.sh: handle missing 'printf -v' more gracefully
221  + t9902-completion.sh: old Bash still does not support array+=('') notation
222  + git-completion.bash: use correct Bash/Zsh array length syntax
224  Originally merged to 'next' on 2013-08-22
226  Some people still use rather old versions of bash, which cannot
227  grok some constructs like 'printf -v varname' the prompt and
228  completion code started to use recently.
230  Will merge to 'master'.
233 * bc/submodule-status-ignored (2013-08-20) 2 commits
234  - submodule: don't print status output with ignore=all
235  - submodule: fix confusing variable name
237  Originally merged to 'next' on 2013-08-22
239  Will merge to 'next'.
242 * jk/config-int-range-check (2013-08-21) 2 commits
243  - teach git-config to output large integers
244  - config: properly range-check integer values
246  Originally merged to 'next' on 2013-08-22
248  "git config --int section.var 3g" should somehow diagnose that the
249  number does not fit in "int" (on 32-bit platforms anyway) but it
250  did not.
253 * jk/duplicate-objects-in-packs (2013-08-24) 6 commits
254  - default pack.indexDuplicates to false
255  - index-pack: optionally reject packs with duplicate objects
256  - test index-pack on packs with recoverable delta cycles
257  - add tests for indexing packs with delta cycles
258  - sha1-lookup: handle duplicate keys with GIT_USE_LOOKUP
259  - test-sha1: add a binary output mode
261  A packfile that stores the same object more than once is broken and
262  will be rejected.
264  Will merge to 'next'.
267 * mm/mediawiki-dumb-push-fix (2013-08-21) 2 commits
268  - git-remote-mediawiki: add test and check Makefile targets
269  - git-remote-mediawiki: reset private ref after non-dumb push
271  Waiting for a reroll.
274 * rt/rebase-p-no-merge-summary (2013-08-21) 1 commit
275  - rebase --preserve-merges: ignore "merge.log" config
277  Originally merged to 'next' on 2013-08-22
279  "git rebase -p" internally used the merge machinery, but when
280  rebasing, there should not be a need for merge summary.
282  Will merge to 'next'.
285 * sp/clip-read-write-to-8mb (2013-08-20) 2 commits
286   (merged to 'next' on 2013-08-28 at c9840d7)
287  + Revert "compat/clipped-write.c: large write(2) fails on Mac OS X/XNU"
288  + xread, xwrite: limit size of IO to 8MB
290  Originally merged to 'next' on 2013-08-22
292  Send a large request to read(2)/write(2) as a smaller but still
293  reasonably large chunks, which would improve the latency when the
294  operation needs to be killed and incidentally works around broken
295  64-bit systems that cannot take a 2GB write or read in one go.
297  Will merge to 'master' in the second batch.
300 * sp/doc-smart-http (2013-08-21) 1 commit
301   (merged to 'next' on 2013-08-28 at 20a6877)
302  + Document the HTTP transport protocols
304  Originally merged to 'next' on 2013-08-22
306  Will merge to 'master'.
309 * dw/diff-no-index-doc (2013-08-28) 2 commits
310  - diff --no-index: describe in a separate paragraph
311  - diff --no-index: clarify operation when not inside a repository
313  When the user types "git diff" outside a working tree, thinking he
314  is inside one, the current error message that is a single-liner
315  "usage: git diff --no-index <path> <path>" may not be sufficient to
316  make him realize the mistake. Add "Not a git repository" to the
317  error message when we fell into the "--no-index" mode without an
318  explicit command line option to instruct us to do so.
321 * sb/repack-in-c (2013-08-22) 3 commits
322  - repack: rewrite the shell script in C (squashing proposal)
323  - repack: retain the return value of pack-objects
324  - repack: rewrite the shell script in C
327 * ap/commit-author-mailmap (2013-08-24) 1 commit
328  - commit: search author pattern against mailmap
330  "git commit --author=$name", when $name is not in the canonical
331  "A. U. Thor <au.thor@example.xz>" format, looks for a matching name
332  from existing history, but did not consult mailmap to grab the
333  preferred author name.
335  Will merge to 'next'.
338 * hv/config-from-blob (2013-08-26) 1 commit
339   (merged to 'next' on 2013-08-28 at 189c6c1)
340  + config: do not use C function names as struct members
342  Portability fix.
344  Will merge to 'master', aiming to later apply to 1.8.4.x maintenance track.
347 * jk/mailmap-incomplete-line (2013-08-28) 1 commit
348  - mailmap: handle mailmap blobs without trailing newlines
350  Will merge to 'next' and later to 'master' and 'maint'.
353 * jk/write-broken-index-with-nul-sha1 (2013-08-26) 1 commit
354  - write_index: optionally allow broken null sha1s
356  Am I waiting for another reroll?
359 * kk/tests-with-no-perl (2013-08-24) 4 commits
360  - reset test: modernize style
361  - t/t7106-reset-unborn-branch.sh: Add PERL prerequisite
362  - add -i test: use skip_all instead of repeated PERL prerequisite
363  - Make test "using invalid commit with -C" more strict
365  Some tests were not skipped under NO_PERL build.
367  Will merge to 'next'.
370 * mm/fast-import-feature-doc (2013-08-25) 1 commit
371  - Documentation/fast-import: clarify summary for `feature` command
373  Will merge to 'next'.
376 * mm/remote-helpers-doc (2013-08-26) 1 commit
377  - Documentation/remote-helpers: document common use-case for private ref
379  Will merge to 'next'.
382 * mn/doc-pack-heu-remove-dead-pastebin (2013-08-23) 1 commit
383  - remove dead pastebin link from pack-heuristics document
385  Will merge to 'next'.
388 * nd/fetch-pack-shallow-fix (2013-08-25) 1 commit
389   (merged to 'next' on 2013-08-28 at 6f5ed42)
390  + fetch-pack: do not remove .git/shallow file when --depth is not specified
392  Originally merged to 'next' on 2013-08-27
394  Recent "short-cut clone connectivity check" topic broke a shallow
395  repository when a fetch operation tries to auto-follow tags.
397  Will merge to 'master', aiming to later apply to 1.8.4.x maintenance track.
400 * ta/user-manual (2013-08-27) 11 commits
401  - "git prune" is safe
402  - Remove irrelevant reference from "Tying it all together"
403  - Remove unnecessary historical note from "Object storage format"
404  - Improve section "Merging multiple trees"
405  - Improve section "Manipulating branches"
406  - Simplify "How to make a commit"
407  - Fix some typos and improve wording
408  - Use "git merge" instead of "git pull ."
409  - Use current output for "git repack"
410  - Use current "detached HEAD" message
411  - Call it "Git User Manual" and remove reference to very old Git version
413  Update the user's manual to more recent versions of Git.
416 * tb/precompose-autodetect-fix (2013-08-27) 1 commit
417  - Set core.precomposeunicode to true on e.g. HFS+
419  Will merge to 'next'.
422 * tf/gitweb-ss-tweak (2013-08-20) 4 commits
423  - gitweb: make search help link less ugly
424  - gitweb: omit the repository owner when it is unset
425  - gitweb: vertically centre contents of page footer
426  - gitweb: ensure OPML text fits inside its box
428  Originally merged to 'next' on 2013-08-22
430  Tweak Gitweb CSS to layout some elements better.
432  Will merge to 'next'.
435 * es/rebase-i-respect-core-commentchar (2013-08-18) 1 commit
436  - rebase -i: fix cases ignoring core.commentchar
438  Originally merged to 'next' on 2013-08-20
440  Will merge to 'next'.
443 * jx/branch-vv-always-compare-with-upstream (2013-08-26) 2 commits
444  - status: always show tracking branch even no change
445  - branch: report invalid tracking branch as gone
447  "git branch -v -v" (and "git status") did not distinguish among a
448  branch that does not build on any other branch, a branch that is in
449  sync with the branch it builds on, and a branch that is configured
450  to build on some other branch that no longer exists.
452  Am I waiting for another reroll?
455 * nd/fetch-into-shallow (2013-08-28) 7 commits
456  - Add testcase for needless objects during a shallow fetch
457  - list-objects: mark more commits as edges in mark_edges_uninteresting
458  - list-objects: reduce one argument in mark_edges_uninteresting
459  - upload-pack: delegate rev walking in shallow fetch to pack-objects
460  - shallow: add setup_temporary_shallow()
461  - shallow: only add shallow graft points to new shallow file
462  - move setup_alternate_shallow and write_shallow_commits to shallow.c
464  When there is no sufficient overlap between old and new history
465  during a fetch into a shallow repository, we unnecessarily sent
466  objects the sending side knows the receiving end has.
468  Will merge to 'next'.
471 * sb/diff-delta-remove-needless-comparison (2013-08-18) 1 commit
472   (merged to 'next' on 2013-08-28 at ba09c3f)
473  + create_delta_index: simplify condition always evaluating to true
475  Originally merged to 'next' on 2013-08-20
477  Will merge to 'master'.
480 * sg/bash-prompt-lf-in-cwd-test (2013-08-18) 1 commit
481   (merged to 'next' on 2013-08-28 at eb449b5)
482  + bash prompt: test the prompt with newline in repository path
484  Originally merged to 'next' on 2013-08-20
486  Will merge to 'master'.
489 * jl/some-submodule-config-are-not-boolean (2013-08-19) 1 commit
490   (merged to 'next' on 2013-08-28 at 7fabc3e)
491  + avoid segfault on submodule.*.path set to an empty "true"
493  Originally merged to 'next' on 2013-08-20
495  Will merge to 'master'.
498 * jc/ls-files-killed-optim (2013-08-23) 4 commits
499  - dir.c::test_one_path(): work around directory_exists_in_index_icase() breakage
500  - t3010: update to demonstrate "ls-files -k" optimization pitfalls
501  - ls-files -k: a directory only can be killed if the index has a non-directory
502  - dir.c: use the cache_* macro to access the current index
504  Originally merged to 'next' on 2013-08-27
506  "git ls-files -k" needs to crawl only the part of the working tree
507  that may overlap the paths in the index to find killed files, but
508  shared code with the logic to find all the untracked files, which
509  made it unnecessarily inefficient.
511  Will merge to 'next'.
514 * es/blame-L-twice (2013-08-06) 16 commits
515   (merged to 'next' on 2013-08-28 at e83ae2e)
516  + line-range: reject -L line numbers less than 1
517  + t8001/t8002: blame: add tests of -L line numbers less than 1
518  + line-range: teach -L^:RE to search from start of file
519  + line-range: teach -L:RE to search from end of previous -L range
520  + line-range: teach -L^/RE/ to search from start of file
521  + line-range-format.txt: document -L/RE/ relative search
522  + log: teach -L/RE/ to search from end of previous -L range
523  + blame: teach -L/RE/ to search from end of previous -L range
524  + line-range: teach -L/RE/ to search relative to anchor point
525  + blame: document multiple -L support
526  + t8001/t8002: blame: add tests of multiple -L options
527  + blame: accept multiple -L ranges
528  + blame: inline one-line function into its lone caller
529  + range-set: publish API for re-use by git-blame -L
530  + line-range-format.txt: clarify -L:regex usage form
531  + git-log.txt: place each -L option variation on its own line
532  (this branch is used by es/contacts-blame-L-multi; uses es/blame-L-more.)
534  Originally merged to 'next' on 2013-08-08
536  Teaches "git blame" to take more than one -L ranges.
538  Will merge to 'master' in the second batch.
541 * mm/no-shell-escape-in-die-message (2013-08-07) 1 commit
542   (merged to 'next' on 2013-08-28 at 86b300f)
543  + die_with_status: use "printf '%s\n'", not "echo"
545  Originally merged to 'next' on 2013-08-08
547  Fixes a minor bug in "git rebase -i" (there could be others, as the
548  root cause is pretty generic) where the code feeds a random, data
549  dependeant string to 'echo' and expects it to come out literally.
551  Will merge to 'master'.
554 * tr/fd-gotcha-fixes (2013-08-06) 1 commit
555   (merged to 'next' on 2013-08-28 at 5305271)
556  + t0070: test that git_mkstemps correctly checks return value of open()
558  Originally merged to 'next' on 2013-08-08
560  Finishing touches to an earlier fix already in 'master'.
562  Will merge to 'master'.
565 * ap/remote-hg-tilde-is-home-directory (2013-08-09) 1 commit
566   (merged to 'next' on 2013-08-28 at 9bfc430)
567  + remote-hg: fix path when cloning with tilde expansion
569  Originally merged to 'next' on 2013-08-14
571  Will merge to 'master'.
574 * es/rebase-i-no-abbrev (2013-08-25) 3 commits
575  - rebase -i: fix short SHA-1 collision
576  - t3404: rebase -i: demonstrate short SHA-1 collision
577  - t3404: make tests more self-contained
579  Originally merged to 'next' on 2013-08-26
581  Will merge to 'next'.
584 * fc/remote-hg-shared-setup (2013-08-11) 2 commits
585   (merged to 'next' on 2013-08-28 at 41ee3fe)
586  + remote-hg: add shared repo upgrade
587  + remote-hg: ensure shared repo is initialized
589  Originally merged to 'next' on 2013-08-14
591  Will merge to 'master'.
594 * jc/transport-do-not-use-connect-twice-in-fetch (2013-08-07) 5 commits
595   (merged to 'next' on 2013-08-28 at 2ed86df)
596  + fetch: work around "transport-take-over" hack
597  + fetch: refactor code that fetches leftover tags
598  + fetch: refactor code that prepares a transport
599  + fetch: rename file-scope global "transport" to "gtransport"
600  + t5802: add test for connect helper
602  Originally merged to 'next' on 2013-08-20
604  The auto-tag-following code in "git fetch" tries to reuse the same
605  transport twice when the serving end does not cooperate and does
606  not give tags that point to commits that are asked for as part of
607  the primary transfer.  Unfortunately, Git-aware transport helper
608  interface is not designed to be used more than once, hence this
609  does not work over smart-http transfer.
611  Will merge to 'master' in the second batch.
614 * ks/p4-view-spec (2013-08-11) 3 commits
615  - WAITING FOR ACK
616  - git p4: implement view spec wildcards with "p4 where"
617  - git p4 test: sanitize P4CHARSET
619  Waiting for an ack.
622 * mm/war-on-whatchanged (2013-08-13) 2 commits
623   (merged to 'next' on 2013-08-28 at 25e9c18)
624  + whatchanged: document its historical nature
625  + core-tutorial: trim the section on Inspecting Changes
627  Originally merged to 'next' on 2013-08-14
629  Will merge to 'master'.
632 * nd/gc-lock-against-each-other (2013-08-09) 1 commit
633   (merged to 'next' on 2013-08-28 at 46e072b)
634  + gc: reject if another gc is running, unless --force is given
636  Originally merged to 'next' on 2013-08-14
638  Will merge to 'master'.
641 * rt/doc-merge-file-diff3 (2013-08-09) 1 commit
642   (merged to 'next' on 2013-08-28 at d6b8006)
643  + Documentation/git-merge-file: document option "--diff3"
645  Originally merged to 'next' on 2013-08-14
647  Will merge to 'master'.
650 * sb/misc-cleanup (2013-08-09) 3 commits
651   (merged to 'next' on 2013-08-28 at bc2045b)
652  + rm: remove unneeded null pointer check
653  + diff: fix a possible null pointer dereference
654  + diff: remove ternary operator evaluating always to true
656  Originally merged to 'next' on 2013-08-14
658  Will merge to 'master'.
661 * aj/p4-symlink-lose-nl (2013-08-12) 1 commit
662   (merged to 'next' on 2013-08-28 at 5ce9ceb)
663  + git-p4: Fix occasional truncation of symlink contents.
665  Originally merged to 'next' on 2013-08-14
667  Will merge to 'master'.
670 * es/contacts-blame-L-multi (2013-08-13) 3 commits
671   (merged to 'next' on 2013-08-28 at 24ff8b4)
672  + contacts: reduce git-blame invocations
673  + contacts: gather all blame sources prior to invoking git-blame
674  + contacts: validate hunk length earlier
675  (this branch uses es/blame-L-more and es/blame-L-twice.)
677  Originally merged to 'next' on 2013-08-14
679  Will merge to 'master' in the second batch.
682 * fc/unpack-trees-leakfix (2013-08-13) 1 commit
683   (merged to 'next' on 2013-08-28 at 3ad1f21)
684  + unpack-trees: plug a memory leak
686  Originally merged to 'next' on 2013-08-14
688  Will merge to 'master'.
691 * nd/push-no-thin (2013-08-13) 1 commit
692  - push: respect --no-thin
694  Originally merged to 'next' on 2013-08-14
696  Will merge to 'next'.
699 * sh/pull-rebase-preserve (2013-08-13) 1 commit
700  - pull: Allow pull to preserve merges when rebasing.
702  Originally merged to 'next' on 2013-08-14
704  Will merge to 'next'.
707 * es/blame-L-more (2013-08-05) 11 commits
708   (merged to 'next' on 2013-08-28 at b73cdc9)
709  + blame: reject empty ranges -L,+0 and -L,-0
710  + t8001/t8002: blame: demonstrate acceptance of bogus -L,+0 and -L,-0
711  + blame: reject empty ranges -LX,+0 and -LX,-0
712  + t8001/t8002: blame: demonstrate acceptance of bogus -LX,+0 and -LX,-0
713  + log: fix -L bounds checking bug
714  + t4211: retire soon-to-be unimplementable tests
715  + t4211: log: demonstrate -L bounds checking bug
716  + blame: fix -L bounds checking bug
717  + t8001/t8002: blame: add empty file & partial-line tests
718  + t8001/t8002: blame: demonstrate -L bounds checking bug
719  + t8001/t8002: blame: decompose overly-large test
720  (this branch is used by es/blame-L-twice and es/contacts-blame-L-multi.)
722  Originally merged to 'next' on 2013-08-06
724  More fixes to the code to parse the "-L" option in "log" and "blame".
726  Will merge to 'master' in the second batch.
729 * jk/cat-file-batch-optim (2013-08-05) 1 commit
730   (merged to 'next' on 2013-08-28 at 624e60d)
731  + cat-file: only split on whitespace when %(rest) is used
733  Originally merged to 'next' on 2013-08-06
735  Rework the reverted change to `cat-file --batch-check`.
737  Will merge to 'master' in the second batch.
740 * jn/post-receive-utf8 (2013-08-05) 3 commits
741  - hooks/post-receive-email: set declared encoding to utf-8
742  - hooks/post-receive-email: force log messages in UTF-8
743  - hooks/post-receive-email: use plumbing instead of git log/show
745  Originally merged to 'next' on 2013-08-20
747  Update post-receive-email script to make sure the message contents
748  and pathnames are encoded consistently in UTF-8.
750  I have a feeling that it is a lost cause to solve the issue the
751  topic tries to address in general, because the patch text can have
752  payload in any encodings that are different from either the
753  pathnames or the log message.  Patches that touch paths that use an
754  encoding that conflicts with the encoding of the payload and/or the
755  log message could be transferred with core.quotepath set and patch
756  generated as all binary, but that would be pretty much useless.
758  Will merge to 'next'.
761 * sb/parseopt-boolean-removal (2013-08-07) 9 commits
762   (merged to 'next' on 2013-08-28 at 2f3f21f)
763  + revert: use the OPT_CMDMODE for parsing, reducing code
764  + checkout-index: fix negations of even numbers of -n
765  + config parsing options: allow one flag multiple times
766  + hash-object: replace stdin parsing OPT_BOOLEAN by OPT_COUNTUP
767  + branch, commit, name-rev: ease up boolean conditions
768  + checkout: remove superfluous local variable
769  + log, format-patch: parsing uses OPT__QUIET
770  + Replace deprecated OPT_BOOLEAN by OPT_BOOL
771  + Remove deprecated OPTION_BOOLEAN for parsing arguments
772  (this branch uses jc/parseopt-command-modes.)
774  Convert most uses of OPT_BOOLEAN/OPTION_BOOLEAN that can use
775  OPT_BOOL/OPTION_BOOLEAN which have much saner semantics, and turn
776  remaining ones into OPT_SET_INT, OPT_COUNTUP, etc. as necessary.
778  Will merge to 'master'.
781 * mb/docs-favor-en-us (2013-08-01) 1 commit
782   (merged to 'next' on 2013-08-28 at 82910e5)
783  + Provide some linguistic guidance for the documentation.
785  Originally merged to 'next' on 2013-08-06
787  Declare that the official grammar & spelling of the source of this
788  project is en_US, but strongly discourage patches only to "fix"
789  existing en_UK strings to avoid unnecessary churns.
791  Will merge to 'master'.
794 * jc/parseopt-command-modes (2013-07-30) 2 commits
795   (merged to 'next' on 2013-08-28 at 738b399)
796  + tag: use OPT_CMDMODE
797  + parse-options: add OPT_CMDMODE()
798  (this branch is used by sb/parseopt-boolean-removal.)
800  Many commands use --dashed-option as a operation mode selector
801  (e.g. "git tag --delete") that the user can use at most one
802  (e.g. "git tag --delete --verify" is a nonsense) and you cannot
803  negate (e.g. "git tag --no-delete" is a nonsense).  Make it easier
804  for users of parse_options() to enforce these restrictions.
806  Will merge to 'master'.
809 * tr/log-full-diff-keep-true-parents (2013-08-05) 2 commits
810   (merged to 'next' on 2013-08-28 at e86ec11)
811  + log: use true parents for diff when walking reflogs
812  + log: use true parents for diff even when rewriting
814  Originally merged to 'next' on 2013-08-08
816  Output from "git log --full-diff -- <pathspec>" looked strange,
817  because comparison was done with the previous ancestor that touched
818  the specified <pathspec>, causing the patches for paths outside the
819  pathspec to show more than the single commit has changed.
821  Tweak "git reflog -p" for the same reason using the same mechanism.
823  Will merge to 'master' in the second batch.
826 * bc/unuse-packfile (2013-08-02) 2 commits
827   (merged to 'next' on 2013-08-28 at 9029801)
828  + Don't close pack fd when free'ing pack windows
829  + sha1_file: introduce close_one_pack() to close packs on fd pressure
831  Originally merged to 'next' on 2013-08-06
833  Handle memory pressure and file descriptor pressure separately when
834  deciding to release pack windows to honor resource limits.
836  Will merge to 'master'.
839 * da/darwin (2013-08-05) 3 commits
840   (merged to 'next' on 2013-08-28 at 6e4c5ae)
841  + OS X: Fix redeclaration of die warning
842  + Makefile: Fix APPLE_COMMON_CRYPTO with BLK_SHA1
843  + imap-send: use Apple's Security framework for base64 encoding
845  Originally merged to 'next' on 2013-08-05
847  Will merge to 'master'.
850 * nd/sq-quote-buf (2013-07-30) 3 commits
851   (merged to 'next' on 2013-08-28 at d0ffd55)
852  + quote: remove sq_quote_print()
853  + tar-tree: remove dependency on sq_quote_print()
854  + for-each-ref, quote: convert *_quote_print -> *_quote_buf
856  Originally merged to 'next' on 2013-08-01
858  Code simplification as a preparatory step to something larger.
860  Will merge to 'master'.
863 * jc/url-match (2013-08-09) 7 commits
864   (merged to 'next' on 2013-08-28 at 2a9fd23)
865  + builtin/config.c: compilation fix
866  + config: "git config --get-urlmatch" parses section.<url>.key
867  + builtin/config: refactor collect_config()
868  + config: parse http.<url>.<variable> using urlmatch
869  + config: add generic callback wrapper to parse section.<url>.key
870  + config: add helper to normalize and match URLs
871  + http.c: fix parsing of http.sslCertPasswordProtected variable
873  Originally merged to 'next' on 2013-08-12
875  Allow section.<urlpattern>.var configuration variables to be
876  treated as a "virtual" section.var given a URL, and use the
877  mechanism to enhance http.* configuration variables.
879  This is a reroll of Kyle J. McKay's work.
881  Will merge to 'master' in the second batch.
884 * jl/submodule-mv (2013-08-06) 5 commits
885   (merged to 'next' on 2013-08-28 at 4ec6b41)
886  + rm: delete .gitmodules entry of submodules removed from the work tree
887  + mv: update the path entry in .gitmodules for moved submodules
888  + submodule.c: add .gitmodules staging helper functions
889  + mv: move submodules using a gitfile
890  + mv: move submodules together with their work trees
891  (this branch uses nd/magic-pathspec.)
893  Originally merged to 'next' on 2013-08-08
895  "git mv A B" when moving a submodule A does "the right thing",
896  inclusing relocating its working tree and adjusting the paths in
897  the .gitmodules file.
899  Will merge to 'master' in the second batch.
902 * nd/clone-connectivity-shortcut (2013-07-23) 1 commit
903   (merged to 'next' on 2013-08-28 at d227f9f)
904  + smart http: use the same connectivity check on cloning
906  Originally merged to 'next' on 2013-07-30
908  Will merge to 'master' in the second batch.
911 * db/http-savecookies (2013-08-05) 2 commits
912   (merged to 'next' on 2013-08-28 at 22a8464)
913  + t5551: Remove header from curl cookie file
914  + http: add http.savecookies option to write out HTTP cookies
916  Originally merged to 'next' on 2013-08-05
918  Will merge to 'master' in the second batch.
921 * rr/feed-real-path-to-editor (2013-07-29) 1 commit
922   (merged to 'next' on 2013-08-28 at 7458fa4)
923  + editor: use canonicalized absolute path
925  Originally merged to 'next' on 2013-07-30
927  Will merge to 'master'.
930 * rj/doc-rev-parse (2013-07-22) 2 commits
931   (merged to 'next' on 2013-08-28 at 0fce928)
932  + rev-parse(1): logically group options
933  + rev-parse: remove restrictions on some options
935  Originally merged to 'next' on 2013-07-22
937  Will merge to 'master'.
940 * jk/fast-import-empty-ls (2013-06-23) 4 commits
941   (merged to 'next' on 2013-08-28 at 876a39d)
942  + fast-import: allow moving the root tree
943  + fast-import: allow ls or filecopy of the root tree
944  + fast-import: set valid mode on root tree in "ls"
945  + t9300: document fast-import empty path issues
947  Originally merged to 'next' on 2013-07-22
949  Will merge to 'master'.
952 * jc/diff-filter-negation (2013-07-19) 6 commits
953   (merged to 'next' on 2013-08-28 at 5cc7720)
954  + diff: deprecate -q option to diff-files
955  + diff: allow lowercase letter to specify what change class to exclude
956  + diff: reject unknown change class given to --diff-filter
957  + diff: preparse --diff-filter string argument
958  + diff: factor out match_filter()
959  + diff: pass the whole diff_options to diffcore_apply_filter()
960  (this branch is used by jc/hold-diff-remove-q-synonym-for-no-deletion.)
962  Originally merged to 'next' on 2013-07-22
964  Teach "git diff --diff-filter" to express "I do not want to see
965  these classes of changes" more directly by listing only the
966  unwanted ones in lowercase (e.g. "--diff-filter=d" will show
967  everything but deletion) and deprecate "diff-files -q" which did
968  the same thing as "--diff-filter=d".
970  Will merge to 'master' in the second batch.
973 * nd/magic-pathspec (2013-07-23) 48 commits
974   (merged to 'next' on 2013-08-28 at 305c6e9)
975  + rm: do not set a variable twice without intermediate reading.
976  + t6131 - skip tests if on case-insensitive file system
977  + parse_pathspec: accept :(icase)path syntax
978  + pathspec: support :(glob) syntax
979  + pathspec: make --literal-pathspecs disable pathspec magic
980  + pathspec: support :(literal) syntax for noglob pathspec
981  + kill limit_pathspec_to_literal() as it's only used by parse_pathspec()
982  + parse_pathspec: preserve prefix length via PATHSPEC_PREFIX_ORIGIN
983  + parse_pathspec: make sure the prefix part is wildcard-free
984  + rename field "raw" to "_raw" in struct pathspec
985  + tree-diff: remove the use of pathspec's raw[] in follow-rename codepath
986  + remove match_pathspec() in favor of match_pathspec_depth()
987  + remove init_pathspec() in favor of parse_pathspec()
988  + remove diff_tree_{setup,release}_paths
989  + convert common_prefix() to use struct pathspec
990  + convert add_files_to_cache to take struct pathspec
991  + convert {read,fill}_directory to take struct pathspec
992  + convert refresh_index to take struct pathspec
993  + convert report_path_error to take struct pathspec
994  + checkout: convert read_tree_some to take struct pathspec
995  + convert unmerge_cache to take struct pathspec
996  + convert run_add_interactive to use struct pathspec
997  + convert read_cache_preload() to take struct pathspec
998  + line-log: convert to use parse_pathspec
999  + reset: convert to use parse_pathspec
1000  + add: convert to use parse_pathspec
1001  + check-ignore: convert to use parse_pathspec
1002  + archive: convert to use parse_pathspec
1003  + ls-files: convert to use parse_pathspec
1004  + rm: convert to use parse_pathspec
1005  + checkout: convert to use parse_pathspec
1006  + rerere: convert to use parse_pathspec
1007  + status: convert to use parse_pathspec
1008  + commit: convert to use parse_pathspec
1009  + clean: convert to use parse_pathspec
1010  + guard against new pathspec magic in pathspec matching code
1011  + parse_pathspec: support prefixing original patterns
1012  + parse_pathspec: support stripping/checking submodule paths
1013  + parse_pathspec: support stripping submodule trailing slashes
1014  + parse_pathspec: add special flag for max_depth feature
1015  + convert some get_pathspec() calls to parse_pathspec()
1016  + parse_pathspec: add PATHSPEC_PREFER_{CWD,FULL} flags
1017  + parse_pathspec: save original pathspec for reporting
1018  + add parse_pathspec() that converts cmdline args to struct pathspec
1019  + pathspec: add copy_pathspec
1020  + pathspec: i18n-ize error strings in pathspec parsing code
1021  + move struct pathspec and related functions to pathspec.[ch]
1022  + clean: remove unused variable "seen"
1023  (this branch is used by jl/submodule-mv.)
1025  Originally merged to 'next' on 2013-07-23
1027  Use "struct pathspec" interface in more places, instead of array of
1028  characters, the latter of which cannot express magic pathspecs
1029  (e.g. ":(icase)makefile" that matches both Makefile and makefile).
1031  Will merge to 'master' in the second batch.
1034 * jc/check-x-z (2013-07-11) 4 commits
1035   (merged to 'next' on 2013-08-28 at a7670ce)
1036  + check-attr -z: a single -z should apply to both input and output
1037  + check-ignore -z: a single -z should apply to both input and output
1038  + check-attr: the name of the character is NUL, not NULL
1039  + check-ignore: the name of the character is NUL, not NULL
1041  Originally merged to 'next' on 2013-07-15
1043  "git check-ignore -z" applied the NUL termination to both its input
1044  (with --stdin) and its output, but "git check-attr -z" ignored the
1045  option on the output side.
1047  This is potentially a backward incompatible fix.  Let's see if
1048  anybody screams before deciding if we want to do anything to help
1049  existing users (there may be none).
1051  Will merge to 'master'.
1054 * ms/fetch-prune-configuration (2013-07-18) 1 commit
1055   (merged to 'next' on 2013-08-28 at fa6ffc7)
1056  + fetch: make --prune configurable
1058  Originally merged to 'next' on 2013-07-21
1060  Allow fetch.prune and remote.*.prune configuration variables to be set,
1061  and "git fetch" to behave as if "--prune" is given.
1063  "git fetch" that honors remote.*.prune is fine, but I wonder if we
1064  should somehow make "git push" aware of it as well.  Perhaps
1065  remote.*.prune should not be just a boolean, but a 4-way "none",
1066  "push", "fetch", "both"?
1068  Will merge to 'master' in the second batch.
1071 * km/svn-1.8-serf-only (2013-07-18) 3 commits
1072   (merged to 'next' on 2013-08-28 at 1119134)
1073  + Git.pm: revert _temp_cache use of temp_is_locked
1074  + git-svn: allow git-svn fetching to work using serf
1075  + Git.pm: add new temp_is_locked function
1077  Originally merged to 'next' on 2013-07-19
1079  Subversion 1.8.0 that was recently released breaks older subversion
1080  clients coming over http/https in various ways.
1082  Will merge to 'master'.
1085 * tr/merge-recursive-index-only (2013-07-07) 3 commits
1086  - merge-recursive: -Xindex-only to leave worktree unchanged
1087  - merge-recursive: untangle double meaning of o->call_depth
1088  - merge-recursive: remove dead conditional in update_stages()
1090  Will hold, until we get any user.
1093 * jc/push-cas (2013-08-02) 9 commits
1094   (merged to 'next' on 2013-08-28 at 784281f)
1095  + push: teach --force-with-lease to smart-http transport
1096  + send-pack: fix parsing of --force-with-lease option
1097  + t5540/5541: smart-http does not support "--force-with-lease"
1098  + t5533: test "push --force-with-lease"
1099  + push --force-with-lease: tie it all together
1100  + push --force-with-lease: implement logic to populate old_sha1_expect[]
1101  + remote.c: add command line option parser for "--force-with-lease"
1102  + builtin/push.c: use OPT_BOOL, not OPT_BOOLEAN
1103  + cache.h: move remote/connect API out of it
1105  Originally merged to 'next' on 2013-08-05
1107  Allow a safer "rewind of the remote tip" push than blind "--force",
1108  by requiring that the overwritten remote ref to be unchanged since
1109  the new history to replace it was prepared.
1111  The machinery is more or less ready.  The "--force" option is again
1112  the big red button to override any safety, thanks to J6t's sanity
1113  (the original round allowed --lockref to defeat --force).
1115  The logic to choose the default implemented here is fragile
1116  (e.g. "git fetch" after seeing a failure will update the
1117  remote-tracking branch and will make the next "push" pass,
1118  defeating the safety pretty easily).  It is suitable only for the
1119  simplest workflows, and it may hurt users more than it helps them.
1121  Will merge to 'master' in the second batch.
1124 * jc/pull-training-wheel (2013-07-19) 1 commit
1125   (merged to 'next' on 2013-08-28 at c39bd15)
1126  + pull: require choice between rebase/merge on non-fast-forward pull
1128  Originally merged to 'next' on 2013-07-22
1130  Make "git pull" (without arguments that say what branch to
1131  integrate from where) refuse with "it does not fast forward; choose
1132  between 'pull --merge' and 'pull --rebase'".
1134  See
1136  http://thread.gmane.org/gmane.comp.version-control.git/225146/focus=225326
1137  http://thread.gmane.org/gmane.comp.version-control.git/225146/focus=229221
1139  for full discussion.
1141  Will merge to 'master' in the second batch.
1144 * jc/reflog-doc (2013-06-19) 1 commit
1145  - setup_reflog_action: document the rules for using GIT_REFLOG_ACTION
1147  Document rules to use GIT_REFLOG_ACTION variable in the scripted
1148  Porcelain.  git-rebase--interactive locally violates this, but it
1149  is a leaf user that does not call out to or dot-sources other
1150  scripts, so fixing it is not all that urgent.
1153 * jn/add-2.0-u-A-sans-pathspec (2013-04-26) 1 commit
1154  - git add: -u/-A now affects the entire working tree
1156  Will cook in 'next' until Git 2.0.
1159 * jc/core-checkstat-2.0 (2013-05-06) 1 commit
1160  - core.statinfo: remove as promised in Git 2.0
1162  Will cook in 'next' until Git 2.0.
1165 * jc/push-2.0-default-to-simple (2013-06-18) 1 commit
1166  - push: switch default from "matching" to "simple"
1168  Will cook in 'next' until Git 2.0.
1171 * jc/add-2.0-ignore-removal (2013-04-22) 1 commit
1172  - git add <pathspec>... defaults to "-A"
1174  Updated endgame for "git add <pathspec>" that defaults to "--all"
1175  aka "--no-ignore-removal".
1177  Will cook in 'next' until Git 2.0.
1180 * jc/hold-diff-remove-q-synonym-for-no-deletion (2013-07-19) 1 commit
1181  - diff: remove "diff-files -q" in a version of Git in a distant future
1182  (this branch uses jc/diff-filter-negation.)
1184  Will cook in 'next' until a distant future.
1186 --------------------------------------------------
1187 [Discarded]
1189 * jh/remote-hg-fetch-fix (2013-07-25) 2 commits
1190  . Revert "remotes-hg: bugfix for fetching non local remotes"
1191  . remotes-hg: bugfix for fetching non local remotes
1194 * km/http-curl-config-per-url (2013-07-31) 7 commits
1195  . Revert km/http-curl-config-per-url in its entirety
1196  . docs: update http.<url>.* options documentation
1197  . config: allow http.<url>.* any user matching
1198  . tests: add new test for the url_normalize function
1199  . config: improve support for http.<url>.* settings
1200  . config: add support for http.<url>.* settings
1201  . http.c: fix parsing of http.sslCertPasswordProtected variable
1203  Reverted to be replaced with a reroll (jc/url-match topic).
1206 * sb/fsck-opt-bool (2013-07-29) 1 commit
1207  . fsck: Replace deprecated OPT_BOOLEAN by OPT_BOOL
1209  sb/parseopt-boolean-removal contains the moral equivalent of this
1210  change.