gitweb.git
Merge branch 'jk/fetch-pack-remove-dups-optim'Junio C Hamano Tue, 29 May 2012 20:09:08 +0000 (13:09 -0700)

Merge branch 'jk/fetch-pack-remove-dups-optim'

The way "fetch-pack" that is given multiple references to fetch tried to
remove duplicates was very inefficient.

By Jeff King
* jk/fetch-pack-remove-dups-optim:
fetch-pack: sort incoming heads list earlier
fetch-pack: avoid quadratic loop in filter_refs
fetch-pack: sort the list of incoming refs
add sorting infrastructure for list refs
fetch-pack: avoid quadratic behavior in remove_duplicates
fetch-pack: sort incoming heads

Merge branch 'rs/refs-string-slice'Junio C Hamano Tue, 29 May 2012 20:09:02 +0000 (13:09 -0700)

Merge branch 'rs/refs-string-slice'

Avoid unnecessary temporary allocations while looking for matching refs
inside refs API.

By René Scharfe (3) and Junio C Hamano (1)
* rs/refs-string-slice:
refs: do not create ref_entry when searching
refs: use strings directly in find_containing_dir()
refs: convert parameter of create_dir_entry() to length-limited string
refs: convert parameter of search_ref_dir() to length-limited string

Merge branch 'mh/fetch-pack-constness'Junio C Hamano Tue, 29 May 2012 20:08:53 +0000 (13:08 -0700)

Merge branch 'mh/fetch-pack-constness'

Tighten constness of some local variables in a callchain.

By Michael Haggerty
* mh/fetch-pack-constness:
cmd_fetch_pack(): respect constness of argv parameter
cmd_fetch_pack(): combine the loop termination conditions
cmd_fetch_pack(): handle non-option arguments outside of the loop
cmd_fetch_pack(): declare dest to be const

Merge branch 'mh/ref-api-lazy-loose'Junio C Hamano Tue, 29 May 2012 20:08:35 +0000 (13:08 -0700)

Merge branch 'mh/ref-api-lazy-loose'

The code to lazily read loose refs unnecessarily read the refs in a
subhierarchy by mistake when we free the data for the subhierarchy.

By Michael Haggerty
* mh/ref-api-lazy-loose:
free_ref_entry(): do not trigger reading of loose refs

Merge branch 'ng/pack-objects-cleanup'Junio C Hamano Tue, 29 May 2012 20:08:30 +0000 (13:08 -0700)

Merge branch 'ng/pack-objects-cleanup'

By Nguyễn Thái Ngọc Duy
* ng/pack-objects-cleanup:
pack-objects: refactor write_object() into helper functions
pack-objects, streaming: turn "xx >= big_file_threshold" to ".. > .."

Git 1.7.11-rc0 v1.7.11-rc0Junio C Hamano Fri, 25 May 2012 19:19:45 +0000 (12:19 -0700)

Git 1.7.11-rc0

Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'sp/sh-windows-pwd'Junio C Hamano Fri, 25 May 2012 19:08:26 +0000 (12:08 -0700)

Merge branch 'sp/sh-windows-pwd'

* sp/sh-windows-pwd:
git-sh-setup: define workaround wrappers before they are used

Merge branch 'mh/test-keep-prove-cache'Junio C Hamano Fri, 25 May 2012 19:08:21 +0000 (12:08 -0700)

Merge branch 'mh/test-keep-prove-cache'

By Michael Haggerty
* mh/test-keep-prove-cache:
t/Makefile: retain cache t/.prove across prove runs

Merge branch 'rs/dir-strbuf-read-recursive-fix'Junio C Hamano Fri, 25 May 2012 19:07:52 +0000 (12:07 -0700)

Merge branch 'rs/dir-strbuf-read-recursive-fix'

Simplification for the codepath to read directories recursively.

By René Scharfe
* rs/dir-strbuf-read-recursive-fix:
dir: simplify fill_directory()
dir: respect string length argument of read_directory_recursive()

Merge branch 'fc/git-complete-helper-fix'Junio C Hamano Fri, 25 May 2012 19:07:09 +0000 (12:07 -0700)

Merge branch 'fc/git-complete-helper-fix'

Resurrects old behaviour of _git/_gitk for external users.

Merge branch 'ap/checkout-no-progress-for-non-tty'Junio C Hamano Fri, 25 May 2012 19:06:34 +0000 (12:06 -0700)

Merge branch 'ap/checkout-no-progress-for-non-tty'

The progress indicator for a large "git checkout" was sent to stderr
even if it is not a terminal.

Merge branch 'jk/format-person-part-buffer-limit'Junio C Hamano Fri, 25 May 2012 19:06:16 +0000 (12:06 -0700)

Merge branch 'jk/format-person-part-buffer-limit'

Avoid buffer overflow in format_person_part() function

Merge branch 'jk/pretty-commit-header-incomplete-line'Junio C Hamano Fri, 25 May 2012 19:05:35 +0000 (12:05 -0700)

Merge branch 'jk/pretty-commit-header-incomplete-line'

Fixes error codepath when a malformed commit object has a header line
chomped in the middle.

Merge branch 'jk/ident-split-fix'Junio C Hamano Fri, 25 May 2012 19:05:26 +0000 (12:05 -0700)

Merge branch 'jk/ident-split-fix'

An author/committer name that is a single character was mishandled as an
invalid name by mistake.

Merge branch 'rs/xdiff-fast-hash-fix'Junio C Hamano Fri, 25 May 2012 19:05:02 +0000 (12:05 -0700)

Merge branch 'rs/xdiff-fast-hash-fix'

Fixes compilation issue on 32-bit in an earlier series.

Merge branch 'mh/ref-api'Junio C Hamano Fri, 25 May 2012 19:04:36 +0000 (12:04 -0700)

Merge branch 'mh/ref-api'

Fixes a performance regression in the earlier series.

Merge branch 'rs/maint-grep-F'Junio C Hamano Fri, 25 May 2012 19:04:19 +0000 (12:04 -0700)

Merge branch 'rs/maint-grep-F'

"git grep -e '$pattern'", unlike the case where the patterns are read from
a file, did not treat individual lines in the given pattern argument as
separate regular expressions as it should.

Sync with 1.7.10.3Junio C Hamano Fri, 25 May 2012 18:36:25 +0000 (11:36 -0700)

Sync with 1.7.10.3

Git 1.7.10.3 v1.7.10.3Junio C Hamano Fri, 25 May 2012 18:28:43 +0000 (11:28 -0700)

Git 1.7.10.3

Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'hv/submodule-alt-odb' into maintJunio C Hamano Fri, 25 May 2012 18:26:38 +0000 (11:26 -0700)

Merge branch 'hv/submodule-alt-odb' into maint

When a submodule repository uses alternate object store mechanism, some
commands that were started from the superproject did not notice it and
failed with "No such object" errors. The subcommands of "git submodule"
command that recursed into the submodule in a separate process were OK;
only the ones that cheated and peeked directly into the submodule's
repository from the primary process were affected.

By Heiko Voigt
* hv/submodule-alt-odb:
teach add_submodule_odb() to look for alternates

Merge branch 'bp/diff-no-index-strbuf-fix' into maintJunio C Hamano Fri, 25 May 2012 18:25:36 +0000 (11:25 -0700)

Merge branch 'bp/diff-no-index-strbuf-fix' into maint

The directory path used in "git diff --no-index", when it recurses
down, was broken with a recent update after v1.7.10.1 release.

By Bobby Powers
* bp/diff-no-index-strbuf-fix:
diff --no-index: don't leak buffers in queue_diff
diff --no-index: reset temporary buffer lengths on directory iteration

fmt-merge-message: add empty line between tag and signa... Linus Torvalds Fri, 25 May 2012 16:02:03 +0000 (09:02 -0700)

fmt-merge-message: add empty line between tag and signature verification

When adding the information from a tag, put an empty line between the
message of the tag and the commented-out signature verification
information.

At least for the kernel workflow, I often end up re-formatting the message
that people send me in the tag data. In that situation, putting the tag
message and the tag signature verification back-to-back then means that
normal editor "reflow parapgraph" command will get confused and think that
the signature is a continuation of the last message paragraph.

So I always end up having to first add an empty line, and then go back and
reflow the last paragraph. Let's just do it in git directly.

The extra vertical space also makes the verification visually stand out
more from the user-supplied message, so it looks a bit more readable to me
too, but that may be just an odd personal preference.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

config doc: remove confusion about relative GIT_DIR... Jonathan Nieder Fri, 25 May 2012 18:12:04 +0000 (13:12 -0500)

config doc: remove confusion about relative GIT_DIR from FILES section

From the FILES section of the git-config(1) manual:

$GIT_DIR/config::
Repository specific configuration file. (The filename is
of course relative to the repository root, not the working
directory.)

That's confusing because $GIT_DIR really is relative to the working
directory.

$ GIT_DIR=.git GIT_EDITOR='pwd; echo editing'
$ export GIT_DIR GIT_EDITOR
$ git config --edit --local
/home/jrn/src/git/Documentation
editing .git/config

It turns out that the comment is a remnant from older days when the
heading said ".git/config" (which is indeed relative to the top of the
worktree).

It was only when the heading was changed to refer more precisely to
<git dir>/config (see v1.5.3.2~18, AsciiDoc tweak to avoid leading
dot, 2007-09-14) that the parenthesis stopped making sense. Remove
it.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Sync with maintJunio C Hamano Fri, 25 May 2012 00:37:40 +0000 (17:37 -0700)

Sync with maint

By Jeff King (1) and Junio C Hamano (1)
* maint:
Update draft release notes to 1.7.10.3
osxkeychain: pull make config from top-level directory

Update draft release notes to 1.7.10.3Junio C Hamano Fri, 25 May 2012 00:37:29 +0000 (17:37 -0700)

Update draft release notes to 1.7.10.3

Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'jk/maint-status-porcelain-z-b' into maintJunio C Hamano Fri, 25 May 2012 00:32:30 +0000 (17:32 -0700)

Merge branch 'jk/maint-status-porcelain-z-b' into maint

"git status --porcelain" ignored "--branch" option by mistake. The output
for "git status --branch -z" was also incorrect and did not terminate the
record for the current branch name with NUL as asked.

By Jeff King
* jk/maint-status-porcelain-z-b:
status: respect "-b" for porcelain format
status: fix null termination with "-b"
status: refactor null_termination option
commit: refactor option parsing

Avoid sorting if references are added to ref_cache... Michael Haggerty Thu, 24 May 2012 12:16:50 +0000 (14:16 +0200)

Avoid sorting if references are added to ref_cache in order

The old code allowed many references to be efficiently added to a
single directory, because it just appended the references to the
containing directory unsorted without doing any searching (and
therefore without requiring any intermediate sorting). But the old
code was inefficient when a large number of subdirectories were added
to a directory, because the directory always had to be searched to see
if the new subdirectory already existed, and this search required the
directory to be sorted first. The same was repeated for every new
subdirectory, so the time scaled like O(N^2), where N is the number of
subdirectories within a single directory.

In practice, references are often added to the ref_cache in
lexicographic order, for example when reading the packed-refs file.
So build some intelligence into add_entry_to_dir() to optimize for the
case of references and/or subdirectories being added in lexicographic
order: if the existing entries were already sorted, and the new entry
comes after the last existing entry, then adjust ref_dir::sorted to
reflect the fact that the ref_dir is still sorted.

Thanks to Peff for pointing out the performance regression that
inspired this change.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

checkout: no progress messages if !isatty(2).Avery Pennarun Thu, 24 May 2012 06:12:24 +0000 (02:12 -0400)

checkout: no progress messages if !isatty(2).

If stderr isn't a tty, we shouldn't be printing incremental progress
messages. In particular, this affects 'git checkout -f . >&logfile'
unless you provided -q. And git-new-workdir has no way to provide -q.

It would probably be better to have progress.c check isatty(2) all the time,
but that wouldn't allow things like 'git push --progress' to force progress
reporting to on, so I won't try to solve the general case right now.

Actual fix suggested by Jeff King.

Signed-off-by: Avery Pennarun <apenwarr@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

osxkeychain: pull make config from top-level directoryJeff King Wed, 23 May 2012 17:36:53 +0000 (13:36 -0400)

osxkeychain: pull make config from top-level directory

The default compiler and cflags were mostly "works for me"
when I built the original version. We need to be much less
careful here than usual, because we know we are building
only on OS X. But it's only polite to at least respect the
CFLAGS and CC definitions that the user may have provided
earlier.

While we're at it, let's update our definitions and rules to
be more like the top-level Makefile; default our CFLAGS to
include -O2, and make sure we use CFLAGS and LDFLAGS when
linking.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

fetch-pack: sort incoming heads list earlierJeff King Thu, 24 May 2012 06:04:51 +0000 (02:04 -0400)

fetch-pack: sort incoming heads list earlier

Commit 4435968 started sorting heads fed to fetch-pack so
that later commits could use more optimized algorithms;
commit 7db8d53 switched the remove_duplicates function to
such an algorithm.

Of course, the sorting is more effective if you do it
_before_ the algorithm in question.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Update draft release notes to 1.7.11Junio C Hamano Wed, 23 May 2012 20:54:23 +0000 (13:54 -0700)

Update draft release notes to 1.7.11

Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'rs/archive-tree-in-tip-simplify'Junio C Hamano Wed, 23 May 2012 20:35:22 +0000 (13:35 -0700)

Merge branch 'rs/archive-tree-in-tip-simplify'

By René Scharfe
* rs/archive-tree-in-tip-simplify:
archive-tar: keep const in checksum calculation
archive: simplify refname handling

Merge branch 'js/rev-parse-doc-fix'Junio C Hamano Wed, 23 May 2012 20:35:19 +0000 (13:35 -0700)

Merge branch 'js/rev-parse-doc-fix'

By Jon Seymour
* js/rev-parse-doc-fix:
rev-parse doc: --git-dir does not always show a relative path

Merge branch 'js/rebase-i-p-test-fix'Junio C Hamano Wed, 23 May 2012 20:35:15 +0000 (13:35 -0700)

Merge branch 'js/rebase-i-p-test-fix'

By Johannes Sixt
* js/rebase-i-p-test-fix:
Fix t3411.3 to actually rebase something

Merge branch 'bp/diff-no-index-strbuf-fix'Junio C Hamano Wed, 23 May 2012 20:35:12 +0000 (13:35 -0700)

Merge branch 'bp/diff-no-index-strbuf-fix'

Fix regressions to "git diff --no-index" when it recurses down.

By Bobby Powers
* bp/diff-no-index-strbuf-fix:
diff --no-index: don't leak buffers in queue_diff
diff --no-index: reset temporary buffer lengths on directory iteration

Merge branch 'hv/submodule-alt-odb'Junio C Hamano Wed, 23 May 2012 20:35:05 +0000 (13:35 -0700)

Merge branch 'hv/submodule-alt-odb'

When peeking into object stores of submodules, the code forgot that they
might borrow objects from alternate object stores on their own.

By Heiko Voigt
* hv/submodule-alt-odb:
teach add_submodule_odb() to look for alternates

xdiff: import new 32-bit version of count_masked_bytes()René Scharfe Tue, 22 May 2012 20:36:57 +0000 (22:36 +0200)

xdiff: import new 32-bit version of count_masked_bytes()

Import the latest 32-bit implementation of count_masked_bytes() from
Linux (arch/x86/include/asm/word-at-a-time.h). It's shorter and avoids
overflows and negative numbers.

This fixes test failures on 32-bit, where negative partial results had
been shifted right using the "wrong" method (logical shift right instead
of arithmetic short right). The compiler is free to chose the method,
so it was only wrong in the sense that it didn't work as intended by us.

Reported-by: Øyvind A. Holm <sunny@sunbase.org>
Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

xdiff: avoid more compiler warnings with XDL_FAST_HASH... René Scharfe Tue, 22 May 2012 20:36:39 +0000 (22:36 +0200)

xdiff: avoid more compiler warnings with XDL_FAST_HASH on 32-bit machines

Hide literals that can cause compiler warnings for 32-bit architectures in
expressions that evaluate to small numbers there. Some compilers warn that
0x0001020304050608 won't fit into a 32-bit long, others that shifting right
by 56 bits clears a 32-bit value completely.

The correct values are calculated in the 64-bit case, which is all that matters
in this if-branch.

Reported-by: Øyvind A. Holm <sunny@sunbase.org>
Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Acked-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

xdiff: avoid compiler warnings with XDL_FAST_HASH on... René Scharfe Tue, 22 May 2012 20:36:25 +0000 (22:36 +0200)

xdiff: avoid compiler warnings with XDL_FAST_HASH on 32-bit machines

Import macro REPEAT_BYTE from Linux (arch/x86/include/asm/word-at-a-time.h)
to avoid 64-bit integer literals, which cause some 32-bit compilers to
print warnings.

Reported-by: Øyvind A. Holm <sunny@sunbase.org>
Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

refs: do not create ref_entry when searchingJunio C Hamano Tue, 22 May 2012 21:03:29 +0000 (14:03 -0700)

refs: do not create ref_entry when searching

The search_ref_dir() function is about looking up an existing ref_entry in
a sorted array of ref_entry stored in dir->entries, but it still allocates
a new ref_entry and frees it before returning. This is only because the
call to bsearch(3) was coded in a suboptimal way. Unlike the comparison
function given to qsort(3), the first parameter to its comparison function
does not need to point at an object that is shaped like an element in the
array.

Introduce a new comparison function that takes a counted string as the key
and an element in an array of ref_entry and give it to bsearch(), so that
we do not have to allocate a new ref_entry that we will never return to
the caller anyway.

Signed-off-by: Junio C Hamano <gitster@pobox.com>

refs: use strings directly in find_containing_dir()René Scharfe Tue, 22 May 2012 18:50:58 +0000 (20:50 +0200)

refs: use strings directly in find_containing_dir()

Convert the parameter subdirname of search_for_subdir() to a
length-limted string and then simply pass the interesting slice of the
refname from find_containing_dir(), thereby avoiding to duplicate the
string.

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

refs: convert parameter of create_dir_entry() to length... René Scharfe Tue, 22 May 2012 18:50:52 +0000 (20:50 +0200)

refs: convert parameter of create_dir_entry() to length-limited string

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

refs: convert parameter of search_ref_dir() to length... René Scharfe Tue, 22 May 2012 18:50:39 +0000 (20:50 +0200)

refs: convert parameter of search_ref_dir() to length-limited string

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

fetch-pack: avoid quadratic loop in filter_refsJeff King Mon, 21 May 2012 22:23:29 +0000 (18:23 -0400)

fetch-pack: avoid quadratic loop in filter_refs

We have a list of refs that we want to compare against the
"match" array. The current code searches the match list
linearly, giving quadratic behavior over the number of refs
when you want to fetch all of them.

Instead, we can compare the lists as we go, giving us linear
behavior.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

fetch-pack: sort the list of incoming refsJeff King Mon, 21 May 2012 22:19:51 +0000 (18:19 -0400)

fetch-pack: sort the list of incoming refs

Having the list sorted means we can avoid some quadratic
algorithms when comparing lists.

These should typically be sorted already, but they do come
from the remote, so let's be extra careful. Our ref-sorting
implementation does a mergesort, so we do not have to care
about performance degrading in the common case that the list
is already sorted.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

add sorting infrastructure for list refsJeff King Mon, 21 May 2012 22:19:28 +0000 (18:19 -0400)

add sorting infrastructure for list refs

Since we store lists of refs as linked lists, we can use
llist_mergesort to efficiently sort them.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

fetch-pack: avoid quadratic behavior in remove_duplicatesJeff King Mon, 21 May 2012 22:17:20 +0000 (18:17 -0400)

fetch-pack: avoid quadratic behavior in remove_duplicates

We remove duplicate entries from the list of refs we are
fed in fetch-pack. The original algorithm is quadratic over
the number of refs, but since the list is now guaranteed to
be sorted, we can do it in linear time.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

fetch-pack: sort incoming headsJeff King Mon, 21 May 2012 22:17:02 +0000 (18:17 -0400)

fetch-pack: sort incoming heads

There's no reason to preserve the incoming order of the
heads we're requested to fetch. By having them sorted, we
can replace some of the quadratic algorithms with linear
ones.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

cmd_fetch_pack(): respect constness of argv parameterMichael Haggerty Mon, 21 May 2012 07:59:59 +0000 (09:59 +0200)

cmd_fetch_pack(): respect constness of argv parameter

The old code cast away the constness of the strings passed to the
function in argument argv[], which could result in their being
modified by filter_refs(). Fix by copying reference names from argv
and putting them into our own array (similarly to how refnames passed
to stdin were already handled).

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

cmd_fetch_pack(): combine the loop termination conditionsMichael Haggerty Mon, 21 May 2012 07:59:58 +0000 (09:59 +0200)

cmd_fetch_pack(): combine the loop termination conditions

If an argument that does not start with '-' is found, the loop is
terminated. So move that check into the for-loop condition.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

cmd_fetch_pack(): handle non-option arguments outside... Michael Haggerty Mon, 21 May 2012 07:59:57 +0000 (09:59 +0200)

cmd_fetch_pack(): handle non-option arguments outside of the loop

This makes it more obvious that the code is always executed unless
there is an error, and that the first initialization of nr_heads is
unnecessary.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

cmd_fetch_pack(): declare dest to be constMichael Haggerty Mon, 21 May 2012 07:59:56 +0000 (09:59 +0200)

cmd_fetch_pack(): declare dest to be const

There is no need for it to be non-const, and this avoids the need
for casting away the constness of an argv element.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

avoid segfault when reading header of malformed commitsJeff King Tue, 22 May 2012 04:52:17 +0000 (00:52 -0400)

avoid segfault when reading header of malformed commits

If a commit object has a header line at the end of the
buffer that is missing its newline (or if it appears so
because the content on the header line contains a stray
NUL), then git will segfault.

Interestingly, this case is explicitly handled and we do
correctly scan the final line for the header we are looking
for. But if we don't find it, we will dereference NULL while
trying to look at the next line.

Git will never generate such a commit, but it's good to be
defensive. We could die() in such a case, but since it's
easy enough to handle it gracefully, let's just issue a
warning and continue (so you could still view such a commit
with "git show", though you might be missing headers after
the NUL).

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

pretty: avoid buffer overflow in format_person_partJeff King Tue, 22 May 2012 05:45:08 +0000 (01:45 -0400)

pretty: avoid buffer overflow in format_person_part

When we parse the name and email from a commit to
pretty-print them, we usually can just put the result
directly into our strbuf result. However, if we are going to
use the mailmap, then we must first copy them into a
NUL-terminated buffer to feed to the mailmap machinery.

We did so by using strlcpy into a static buffer, but we used
it wrong. We fed it the length of the substring we wanted to
copy, but never checked that that length was less than the
size of the destination buffer.

The simplest fix is to just use snprintf to copy the
substring properly while still respecting the destination
buffer's size. It might seem like replacing the static
buffer with a strbuf would help, but we need to feed a
static buffer to the mailmap machinery anyway, so there's
not much benefit to handling arbitrary sizes.

A more ideal solution would be for mailmap to grow an
interface that:

1. Takes a pointer and length combination, instead of
assuming a NUL-terminated string.

2. Returns a pointer to the mailmap's allocated string,
rather than copying it into the buffer.

Then we could avoid the need for an extra buffer entirely.
However, doing this would involve a lot of refactoring of
mailmap and of string_list (which mailmap uses to store the
map itself). For now, let's do the simplest thing to fix the
bug.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

fix off-by-one error in split_ident_lineJeff King Tue, 22 May 2012 06:12:20 +0000 (02:12 -0400)

fix off-by-one error in split_ident_line

Commit 4b340cf split the logic to parse an ident line out of
pretty.c's format_person_part. But in doing so, it
accidentally introduced an off-by-one error that caused it
to think that single-character names were invalid.

This manifested itself as the "%an" format failing to show
anything at all for a single-character name.

Reported-by: Brian Turner <bturner@atlassian.com>
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

grep: stop leaking line strings with -fRené Scharfe Mon, 21 May 2012 16:10:09 +0000 (18:10 +0200)

grep: stop leaking line strings with -f

When reading patterns from a file, we pass the lines as allocated string
buffers to append_grep_pat() and never free them. That's not a problem
because they are needed until the program ends anyway.

However, now that the function duplicates the pattern string, we can
reuse the strbuf after calling that function. This simplifies the code
a bit and plugs a minor memory leak.

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

remote: fix typoRalf Thielow Fri, 18 May 2012 16:46:01 +0000 (18:46 +0200)

remote: fix typo

The mapping that describe what ref fetched from the remote is used to
update what ref locally is called "refspec", not "respec".

Signed-off-by: Ralf Thielow <ralf.thielow@googlemail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'maint'Junio C Hamano Sun, 20 May 2012 22:45:35 +0000 (15:45 -0700)

Merge branch 'maint'

By Jens Lehmann (1) and Johannes Sixt (1)
* maint:
Consistently use "superproject" instead of "supermodule"
t3404: begin "exchange commits with -p" test with correct preconditions

grep: support newline separated pattern listRené Scharfe Sun, 20 May 2012 14:33:07 +0000 (16:33 +0200)

grep: support newline separated pattern list

Currently, patterns that contain newline characters don't match anything
when given to git grep. Regular grep(1) interprets patterns as lists of
newline separated search strings instead.

Implement this functionality by creating and inserting extra grep_pat
structures for patterns consisting of multiple lines when appending to
the pattern lists. For simplicity, all pattern strings are duplicated.
The original pattern is truncated in place to make it contain only the
first line.

Requested-by: Torne (Richard Coles) <torne@google.com>
Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

grep: factor out do_append_grep_pat()René Scharfe Sun, 20 May 2012 14:32:54 +0000 (16:32 +0200)

grep: factor out do_append_grep_pat()

Add do_append_grep_pat() as a shared function for adding patterns to
the header pattern list and the general pattern list.

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

grep: factor out create_grep_pat()René Scharfe Sun, 20 May 2012 14:32:39 +0000 (16:32 +0200)

grep: factor out create_grep_pat()

Add create_grep_pat(), a shared helper for all grep pattern allocation
and initialization needs.

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

free_ref_entry(): do not trigger reading of loose refsMichael Haggerty Sun, 20 May 2012 06:49:32 +0000 (08:49 +0200)

free_ref_entry(): do not trigger reading of loose refs

Do not call get_ref_dir() from within free_ref_entry(), because that
triggers the reading of loose refs, only for them to be freed
immediately.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Consistently use "superproject" instead of "supermodule"Jens Lehmann Sun, 20 May 2012 13:28:26 +0000 (15:28 +0200)

Consistently use "superproject" instead of "supermodule"

We fairly consistently say "superproject" and never "supermodule" these
days. But there are seven occurrences of "supermodule" left in the current
work tree. Three appear in Release Notes for 1.5.3 and 1.7.7, three in
test names and one in a C-code comment.

Replace all occurrences of "supermodule" outside of the Release Notes
(which shouldn't be changed after the fact) with "superproject" for
consistency.

Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t3404: begin "exchange commits with -p" test with corre... Johannes Sixt Sat, 19 May 2012 13:14:16 +0000 (15:14 +0200)

t3404: begin "exchange commits with -p" test with correct preconditions

The test case shows a bug in 'rebase -p', but even if the bug were fixed
the test would fail because it did not ensure that the preconditions match
the postconditions that were checked. Insert the suitable 'git checkout'.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Acked-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

completion: add support for backwards compatibilityFelipe Contreras Sat, 19 May 2012 02:41:35 +0000 (04:41 +0200)

completion: add support for backwards compatibility

Some people might be relying on _git and _gitk to define custom aliases,
unfortunately, commit 6b179ad (completion: add new __git_complete
helper) broke that support.

"bash: [: 1: unary operator expected"

This can be easily fixed by using __git_complete, but it's not meant to
be public.

Although _git and _gitk are probably not meant to be public, it's easy
to keep having support for them by having a wrapper to the proper
new function that is fully functional.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

completion: rename internal helpers _git and _gitkFelipe Contreras Sat, 19 May 2012 02:41:34 +0000 (04:41 +0200)

completion: rename internal helpers _git and _gitk

Would be useful to provide backwards compatibility for _git. Also, zsh
completion uses _git, and it cannot be changed.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t/Makefile: retain cache t/.prove across prove runsMichael Haggerty Wed, 2 May 2012 15:31:52 +0000 (17:31 +0200)

t/Makefile: retain cache t/.prove across prove runs

prove(1) can write a summary of its test results and timings into a
cache file, t/.prove, then use this information during later runs for
various purposes. But deleting t/.prove after every test run defeats
this purpose. So do not delete t/.prove as part of "make
DEFAILT_TEST_TARGET=prove test". (Continue to delete the file on
"make clean".)

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

pack-objects: refactor write_object() into helper functionsNguyễn Thái Ngọc Duy Wed, 16 May 2012 12:02:10 +0000 (19:02 +0700)

pack-objects: refactor write_object() into helper functions

The function first decides if we want to copy data taken from existing
pack verbatim or we want to encode the data ourselves for the packfile
we are creating and then carries out the decision. Separate the latter
phase into two helper functions, one for the case the data is reused,
the other for the case the data is produced anew.

A little twist is that it can later turn out that we cannot reuse the
data after we initially decide to do so; in such a case, the "reuse"
helper makes a call to "generate" helper. It is easier to follow than
the current fallback code that uses "goto" inside a single large
function.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

pack-objects, streaming: turn "xx >= big_file_threshold... Nguyễn Thái Ngọc Duy Wed, 16 May 2012 12:02:09 +0000 (19:02 +0700)

pack-objects, streaming: turn "xx >= big_file_threshold" to ".. > .."

This is because all other places do "xx > big_file_threshold"

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Fix t3411.3 to actually rebase somethingJohannes Sixt Fri, 18 May 2012 13:48:53 +0000 (15:48 +0200)

Fix t3411.3 to actually rebase something

The test intends to rebase a branchy history onto a later commit, but it
forgot to reset HEAD back to an earlier commit before it set up the side
branches. In the end, every "rebased" commit was only a fast-forward and
the 'rebase -p' did not change the commit graph at all. Insert the missing
checkout that moves to an earlier commit.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

rev-parse doc: --git-dir does not always show a relativ... Jon Seymour Fri, 18 May 2012 09:23:24 +0000 (19:23 +1000)

rev-parse doc: --git-dir does not always show a relative path

The description was misleading because it lead the reader to believe
that --git-dir would always show a relative path when, in fact, the
actual behaviour does not guarantee this.

Rather, it was intended that the advice be given that if a relative
path is shown, then the path is relative to the current working
directory and not some other directory (for example, the root of the
working tree).

Signed-off-by: Jon Seymour <jon.seymour@gmail.com>
Acked-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

archive-tar: keep const in checksum calculationRené Scharfe Fri, 18 May 2012 05:18:11 +0000 (07:18 +0200)

archive-tar: keep const in checksum calculation

For correctness, don't needlessly drop the const qualifier when casting.

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

archive: simplify refname handlingRené Scharfe Fri, 18 May 2012 05:15:17 +0000 (07:15 +0200)

archive: simplify refname handling

There is no need to build a copy of the relevant part of the string just
to make sure we have a NUL-terminated string. We can simply pass the
length of the interesting part to dwim_ref() instead.

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge git://github.com/git-l10n/git-poJunio C Hamano Thu, 17 May 2012 22:35:35 +0000 (15:35 -0700)

Merge git://github.com/git-l10n/git-po

By Jiang Xin (3) and others
via Jiang Xin (3) and Ralf Thielow (1)
* git://github.com/git-l10n/git-po:
l10n: de.po: translate 3 new messages
l10n: zh_CN.po: translate 3 new messages
l10n: pt_PT.po translate new messages
l10n: Update git.pot (8 new, 4 removed messages)
l10n: Update git.pot (3 new, 2 removed messages)

Merge branch 'nd/i18n-parseopt'Junio C Hamano Thu, 17 May 2012 22:22:29 +0000 (15:22 -0700)

Merge branch 'nd/i18n-parseopt'

Text from "git cmd --help" are getting prepared for i18n.

By Nguyễn Thái Ngọc Duy
* nd/i18n-parseopt:
i18n: apply: mark parseopt strings for translation
i18n: parseopt: lookup help and argument translations when showing usage

Merge branch 'rs/xdiff-lose-emit-func'Junio C Hamano Thu, 17 May 2012 22:22:13 +0000 (15:22 -0700)

Merge branch 'rs/xdiff-lose-emit-func'

Simplifies the interface between the implementation of "blame" and
underlying xdiff engine, and removes a lot of unused or unnecessary code
from the latter.

By René Scharfe (6) and Ramsay Jones (1)
* rs/xdiff-lose-emit-func:
builtin/blame.c: Fix a "Using plain integer as NULL pointer" warning
xdiff: remove unused functions
xdiff: remove emit_func() and xdi_diff_hunks()
blame: factor out helper for calling xdi_diff()
blame: use hunk_func(), part 2
blame: use hunk_func(), part 1
xdiff: add hunk_func()

Merge branch 'fc/git-complete-helper'Junio C Hamano Thu, 17 May 2012 22:21:55 +0000 (15:21 -0700)

Merge branch 'fc/git-complete-helper'

By Felipe Contreras
* fc/git-complete-helper:
completion: add new __git_complete helper

Merge branch 'ld/git-p4-tags-and-labels'Junio C Hamano Thu, 17 May 2012 22:21:46 +0000 (15:21 -0700)

Merge branch 'ld/git-p4-tags-and-labels'

By Luke Diamand
* ld/git-p4-tags-and-labels:
git p4: fix bug when enabling tag import/export via config variables
git p4: fix bug when verbose enabled with tag export
git p4: add test for tag import/export enabled via config

git-svn: clarify the referent of dcommit's optional... Jon Seymour Thu, 17 May 2012 03:20:43 +0000 (13:20 +1000)

git-svn: clarify the referent of dcommit's optional argument

The documentation of the dcommit subcommand is reworded to clarify that
the optional argument refers to a git branch, not an SVN branch.

The discussion of the optional argument is put into its own paragraph
as is the guidance about using 'dcommit' in preference to 'set-tree'.

The section on REBASE vs. PULL/MERGE is reworded to incorporate the
advice to prefer 'git rebase' previously in the description of 'dcommit'.

Signed-off-by: Jon Seymour <jon.seymour@gmail.com>
Acked-by: Eric Wong <normalperson@yhbt.net>

git-svn: support rebase --preserve-mergesAvishay Lavie Tue, 15 May 2012 08:45:50 +0000 (11:45 +0300)

git-svn: support rebase --preserve-merges

When git svn rebase is performed after an unpushed merge, the
rebase operation follows both parents and replays both the user's
local commits and those from the merged branch. This is usually
not the intended behavior.
This patch adds support for the --preserve-merges/-p flag which
allows for a better workflow by re-applying merge commits as merges.

[ew: fixed a minor syntax error]

Signed-off-by: Avishay Lavie <avishay.lavie@gmail.com>
Signed-off-by: Eric Wong <normalperson@yhbt.net>

diff --no-index: don't leak buffers in queue_diffBobby Powers Wed, 16 May 2012 14:50:31 +0000 (10:50 -0400)

diff --no-index: don't leak buffers in queue_diff

queue_diff uses two strbufs, and at the end of the function
strbuf_reset was called. This only reset the length of the buffer -
any allocated memory was leaked. Using strbuf_release fixes this.

Signed-off-by: Bobby Powers <bobbypowers@gmail.com>
Reviewed-by: René Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

diff --no-index: reset temporary buffer lengths on... Bobby Powers Wed, 16 May 2012 14:28:31 +0000 (10:28 -0400)

diff --no-index: reset temporary buffer lengths on directory iteration

Commit 875b91b (diff --no-index: use strbuf for temporary pathnames,
2012-04-25) introduced a regression when using diff --no-index with
directories. When iterating through a directory, the switch to strbuf
from heap-allocated char arrays caused paths to form like 'dir/file1',
'dir/file1file2', rather than 'dir/file1', 'dir/file2' as expected.

Avoid this by resetting the paths variables to their original length
before each iteration.

Signed-off-by: Bobby Powers <bobbypowers@gmail.com>
Reviewed-by: René Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-sh-setup: define workaround wrappers before they... Junio C Hamano Wed, 16 May 2012 17:36:01 +0000 (10:36 -0700)

git-sh-setup: define workaround wrappers before they are used

Recently we tweaked this scriptlet to let mingw port redefine "pwd" to
always return Windows-style path, but the code to do so came after the
first use of "pwd" to set up $GIT_DIR shell variable.

Move the block to define these workaround wrappers, so that everything
everything that executes when the scriptlet is dot-sourced uses the
replacements.

Noticed-by: Ramsay Jones
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'maint' into masterJiang Xin Tue, 15 May 2012 23:32:20 +0000 (07:32 +0800)

Merge branch 'maint' into master

By Ralf Thielow(1) and Jiang Xin(1)
* maint:
l10n: de.po: translate 3 new messages
l10n: zh_CN.po: translate 3 new messages

l10n: de.po: translate 3 new messagesRalf Thielow Tue, 15 May 2012 17:00:40 +0000 (19:00 +0200)

l10n: de.po: translate 3 new messages

Translate 3 new messages for upcoming git 1.7.10.3.

Signed-off-by: Ralf Thielow <ralf.thielow@googlemail.com>

l10n: zh_CN.po: translate 3 new messagesJiang Xin Tue, 15 May 2012 03:53:26 +0000 (11:53 +0800)

l10n: zh_CN.po: translate 3 new messages

Translate 3 new messages for upcoming git 1.7.10.3.

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>

Merge branch 'master' of git://github.com/marcomsousa... Jiang Xin Mon, 14 May 2012 23:11:58 +0000 (07:11 +0800)

Merge branch 'master' of git://github.com/marcomsousa/git-l10n-pt_PT

By Marco Sousa
* marcomsousa/git-l10n-pt_PT/master:
l10n: pt_PT.po translate new messages

l10n: pt_PT.po translate new messagesMarco Sousa Mon, 14 May 2012 19:18:32 +0000 (21:18 +0200)

l10n: pt_PT.po translate new messages

Translate new and old messages came from git.pot.

Signed-off-by: Marco Sousa <marcomsousa@gmail.com>
Signed-off-by: Jiang Xin <worldhello.net@gmail.com>

l10n: Update git.pot (8 new, 4 removed messages)Jiang Xin Mon, 14 May 2012 22:43:03 +0000 (06:43 +0800)

l10n: Update git.pot (8 new, 4 removed messages)

Generate po/git.pot from v1.7.10.2-520-g6a4a48:

* 8 new l10n messages at lines:

977, 982, 1404, 1409, 1414, 1419, 1424, 1429.

* 4 removed l10n messages from lines:

977, 1399, 1404, 1409.

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>

Merge branch 'maint'Jiang Xin Mon, 14 May 2012 22:40:08 +0000 (06:40 +0800)

Merge branch 'maint'

* maint:
l10n: Update git.pot (3 new, 2 removed messages)

l10n: Update git.pot (3 new, 2 removed messages)Jiang Xin Mon, 14 May 2012 22:36:36 +0000 (06:36 +0800)

l10n: Update git.pot (3 new, 2 removed messages)

Generate po/git.pot from v1.7.10.2-35-g0b9f4:

* 3 new l10n messages at lines: 2743, 2751, 2759.

* 2 removed l10n messages from lines: 1879, 2757.

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>

Update draft release notes for 12th batchJunio C Hamano Mon, 14 May 2012 19:20:46 +0000 (12:20 -0700)

Update draft release notes for 12th batch

Signed-off-by: Junio C Hamano <gitster@pobox.com>

teach add_submodule_odb() to look for alternatesHeiko Voigt Mon, 14 May 2012 16:24:45 +0000 (18:24 +0200)

teach add_submodule_odb() to look for alternates

Since we allow to link other object databases when loading a submodules
database we should also load possible alternates.

Signed-off-by: Heiko Voigt <hvoigt@hvoigt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'fc/simplify-complete-revlist-file'Junio C Hamano Mon, 14 May 2012 18:50:57 +0000 (11:50 -0700)

Merge branch 'fc/simplify-complete-revlist-file'

By Felipe Contreras
* fc/simplify-complete-revlist-file:
completion: simplify __git_complete_revlist_file

Merge branch 'nd/threaded-index-pack'Junio C Hamano Mon, 14 May 2012 18:50:40 +0000 (11:50 -0700)

Merge branch 'nd/threaded-index-pack'

Enables threading in index-pack to resolve base data in parallel.

By Nguyễn Thái Ngọc Duy (3) and Ramsay Jones (1)
* nd/threaded-index-pack:
index-pack: disable threading if NO_PREAD is defined
index-pack: support multithreaded delta resolving
index-pack: restructure pack processing into three main functions
compat/win32/pthread.h: Add an pthread_key_delete() implementation

Sync with maintJunio C Hamano Mon, 14 May 2012 18:50:20 +0000 (11:50 -0700)

Sync with maint

Merge branch 'master' of git://github.com/git-l10n... Junio C Hamano Mon, 14 May 2012 18:49:18 +0000 (11:49 -0700)

Merge branch 'master' of git://github.com/git-l10n/git-po

By Ralf Thielow (6) and others
via Jiang Xin (3) and Ralf Thielow (1)
* 'master' of git://github.com/git-l10n/git-po:
l10n: zh_CN.po: translate 1 new message
l10n: de.po: translate one new message
l10n: de.po: unify translation of "ahead" and "behind"
l10n: de.po: collection of improvements
l10n: de.po: translate "remote" as "extern"
l10n: de.po: translate "track" as "beobachten"
l10n: add new members to German translation team
l10n: de.po: collection of suggestions
l10n: de.po: translate "bad" as "ungültig" ("invalid")
l10n: de.po: hopefully uncontroversial fixes
l10n: de.po: translate "bare" as "bloß"
l10n: Update git.pot (275 new, 15 removed messages)
l10n: Update git.pot (1 new messages)

Merge branch 'maint' of git://github.com/git-l10n/git... Junio C Hamano Mon, 14 May 2012 18:47:49 +0000 (11:47 -0700)

Merge branch 'maint' of git://github.com/git-l10n/git-po into maint

By Ralf Thielow (6) and others
via Jiang Xin
* 'maint' of git://github.com/git-l10n/git-po:
l10n: zh_CN.po: translate 1 new message
l10n: de.po: translate one new message
l10n: de.po: unify translation of "ahead" and "behind"
l10n: de.po: collection of improvements
l10n: de.po: translate "remote" as "extern"
l10n: de.po: translate "track" as "beobachten"
l10n: add new members to German translation team
l10n: de.po: collection of suggestions
l10n: de.po: translate "bad" as "ungültig" ("invalid")
l10n: de.po: hopefully uncontroversial fixes
l10n: de.po: translate "bare" as "bloß"
l10n: Update git.pot (1 new messages)

Start preparing for 1.7.10.3Junio C Hamano Mon, 14 May 2012 18:47:20 +0000 (11:47 -0700)

Start preparing for 1.7.10.3

Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'jk/maint-reflog-walk-count-vs-time' into... Junio C Hamano Mon, 14 May 2012 18:46:16 +0000 (11:46 -0700)

Merge branch 'jk/maint-reflog-walk-count-vs-time' into maint

Gives a better DWIM behaviour for --pretty=format:%gd, "stash list", and
"log -g", depending on how the starting point ("master" vs "master@{0}" vs
"master@{now}") and date formatting options (e.g. "--date=iso") are given
on the command line.

By Jeff King (4) and Junio C Hamano (1)
* jk/maint-reflog-walk-count-vs-time:
reflog-walk: tell explicit --date=default from not having --date at all
reflog-walk: always make HEAD@{0} show indexed selectors
reflog-walk: clean up "flag" field of commit_reflog struct
log: respect date_mode_explicit with --format:%gd
t1411: add more selector index/date tests