Discussion:
[msysgit/git] 552ee6: git-gui: Fix parsing of <rev> <path-which-not-pres...
GitHub
2013-08-25 10:55:55 UTC
Permalink
Branch: refs/heads/pt/tentative-1.8.4
Home: https://github.com/msysgit/git
Commit: 552ee61ece4dad7a42012d83a7271e4b5464cb2e
https://github.com/msysgit/git/commit/552ee61ece4dad7a42012d83a7271e4b5464cb2e
Author: Kirill Smelkov <***@mns.spb.ru>
Date: 2012-11-13 (Tue, 13 Nov 2012)

Changed paths:
M git-gui.sh

Log Message:
-----------
git-gui: Fix parsing of <rev> <path-which-not-present-in-worktree>

Commit e3d06ca9 (git-gui: Detect full path when parsing arguments) broke

git gui blame rev path-not-present-in-worktree

in particular this does not work anymore:

# in linux.git
$ git gui blame 2bb8c26242c2393b097a993ffe9b003ec9b85395 drivers/net/sky2.c

This patch restores the original functionality in this case.

Acked-by: Andrew Wong <***@gmail.com>
Signed-off-by: Kirill Smelkov <***@mns.spb.ru>
Signed-off-by: Pat Thoyts <***@users.sourceforge.net>


Commit: ab571ef02f5fc0d08bf2dce4e455d324e40fb220
https://github.com/msysgit/git/commit/ab571ef02f5fc0d08bf2dce4e455d324e40fb220
Author: Grahack <***@gmail.com>
Date: 2012-11-28 (Wed, 28 Nov 2012)

Changed paths:
M po/fr.po

Log Message:
-----------
French translation: copy -> copie.

Signed-off-by: Pat Thoyts <***@users.sourceforge.net>


Commit: 9f316463ba00576d6c848bf50194b72246e8f9ab
https://github.com/msysgit/git/commit/9f316463ba00576d6c848bf50194b72246e8f9ab
Author: Christian Couder <***@tuxfamily.org>
Date: 2012-12-24 (Mon, 24 Dec 2012)

Changed paths:
M Makefile

Log Message:
-----------
Makefile: replace "echo 1>..." with "echo >..."

This is clearer to many people this way.

Signed-off-by: Christian Couder <***@tuxfamily.org>
Signed-off-by: Junio C Hamano <***@pobox.com>
Signed-off-by: Pat Thoyts <***@users.sourceforge.net>


Commit: 60468d6c893a6ad8795869d979a601e47cb90732
https://github.com/msysgit/git/commit/60468d6c893a6ad8795869d979a601e47cb90732
Author: Pat Thoyts <***@users.sourceforge.net>
Date: 2013-02-22 (Fri, 22 Feb 2013)

Changed paths:
M lib/mergetool.tcl

Log Message:
-----------
git-gui: fix the mergetool launcher for the Beyond Compare tool.

When using Beyond Compare as the mergetool it fails to save the merged
result correctly due to a quoting problem when executing the tool.
This patch solves the quoting problem.

Signed-off-by: Warren Falk <***@warrenfalk.com>
Signed-off-by: Pat Thoyts <***@users.sourceforge.net>


Commit: 25ed3412f86b136efb17689b6712d9e546cac388
https://github.com/msysgit/git/commit/25ed3412f86b136efb17689b6712d9e546cac388
Author: Bo Yang <***@gmail.com>
Date: 2013-03-28 (Thu, 28 Mar 2013)

Changed paths:
M Documentation/blame-options.txt
A Documentation/line-range-format.txt
M Makefile
M builtin/blame.c
A line-range.c
A line-range.h
M t/t8003-blame-corner-cases.sh

Log Message:
-----------
Refactor parse_loc

We want to use the same style of -L n,m argument for 'git log -L' as
for git-blame. Refactor the argument parsing of the range arguments
from builtin/blame.c to the (new) file that will hold the 'git log -L'
logic.

To accommodate different data structures in blame and log -L, the file
contents are abstracted away; parse_range_arg takes a callback that it
uses to get the contents of a line of the (notional) file.

The new test is for a case that made me pause during debugging: the
'blame -L with invalid end' test was the only one that noticed an
outright failure to parse the end *at all*. So make a more explicit
test for that.

Signed-off-by: Bo Yang <***@gmail.com>
Signed-off-by: Thomas Rast <***@student.ethz.ch>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: c7edcae06ed90ec0567179a78d7d1170e610c042
https://github.com/msysgit/git/commit/c7edcae06ed90ec0567179a78d7d1170e610c042
Author: Bo Yang <***@gmail.com>
Date: 2013-03-28 (Thu, 28 Mar 2013)

Changed paths:
M revision.c
M revision.h

Log Message:
-----------
Export rewrite_parents() for 'log -L'

The function rewrite_one is used to rewrite a single
parent of the current commit, and is used by rewrite_parents
to rewrite all the parents.

Decouple the dependence between them by making rewrite_one
a callback function that is passed to rewrite_parents. Then
export rewrite_parents for reuse by the line history browser.

We will use this function in line-log.c.

Signed-off-by: Bo Yang <***@gmail.com>
Signed-off-by: Thomas Rast <***@student.ethz.ch>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 12da1d1f6ffcd546a892a33302bb34fd37169022
https://github.com/msysgit/git/commit/12da1d1f6ffcd546a892a33302bb34fd37169022
Author: Thomas Rast <***@student.ethz.ch>
Date: 2013-03-28 (Thu, 28 Mar 2013)

Changed paths:
M Documentation/git-log.txt
M Makefile
M builtin/log.c
A line-log.c
A line-log.h
M line-range.c
M line-range.h
M log-tree.c
M revision.c
M revision.h
A t/perf/p4211-line-log.sh
A t/t4211-line-log.sh
A t/t4211/expect.beginning-of-file
A t/t4211/expect.end-of-file
A t/t4211/expect.move-support-f
A t/t4211/expect.simple-f
A t/t4211/expect.simple-main
A t/t4211/expect.two-ranges
A t/t4211/expect.vanishes-early
A t/t4211/history.export

Log Message:
-----------
Implement line-history search (git log -L)

This is a rewrite of much of Bo's work, mainly in an effort to split
it into smaller, easier to understand routines.

The algorithm is built around the struct range_set, which encodes a
series of line ranges as intervals [a,b). This is used in two
contexts:

* A set of lines we are tracking (which will change as we dig through
history).
* To encode diffs, as pairs of ranges.

The main routine is range_set_map_across_diff(). It processes the
diff between a commit C and some parent P. It determines which diff
hunks are relevant to the ranges tracked in C, and computes the new
ranges for P.

The algorithm is then simply to process history in topological order
from newest to oldest, computing ranges and (partial) diffs. At
branch points, we need to merge the ranges we are watching. We will
find that many commits do not affect the chosen ranges, and mark them
TREESAME (in addition to those already filtered by pathspec limiting).
Another pass of history simplification then gets rid of such commits.

This is wired as an extra filtering pass in the log machinery. This
currently only reduces code duplication, but should allow for other
simplifications and options to be used.

Finally, we hook a diff printer into the output chain. Ideally we
would wire directly into the diff logic, to optionally use features
like word diff. However, that will require some major reworking of
the diff chain, so we completely replace the output with our own diff
for now.

As this was a GSoC project, and has quite some history by now, many
people have helped. In no particular order, thanks go to

Jakub Narebski <***@gmail.com>
Jens Lehmann <***@web.de>
Jonathan Nieder <***@gmail.com>
Junio C Hamano <***@pobox.com>
Ramsay Jones <***@ramsay1.demon.co.uk>
Will Palmer <***@gmail.com>

Apologies to everyone I forgot.

Signed-off-by: Bo Yang <***@gmail.com>
Signed-off-by: Thomas Rast <***@student.ethz.ch>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 13b8f68c1f0b6d4ff5a7bed5a834e7e5e34a9fd0
https://github.com/msysgit/git/commit/13b8f68c1f0b6d4ff5a7bed5a834e7e5e34a9fd0
Author: Thomas Rast <***@student.ethz.ch>
Date: 2013-03-28 (Thu, 28 Mar 2013)

Changed paths:
M Documentation/blame-options.txt
M Documentation/git-blame.txt
M Documentation/git-log.txt
M Documentation/line-range-format.txt
M builtin/blame.c
M line-log.c
M line-range.c
M line-range.h
M t/t4211-line-log.sh
A t/t4211/expect.simple-f-to-main
A t/t4211/expect.simple-main-to-end

Log Message:
-----------
log -L: :pattern:file syntax to find by funcname

This new syntax finds a funcname matching /pattern/, and then takes from there
up to (but not including) the next funcname. So you can say

git log -L:main:main.c

and it will dig up the main() function and show its line-log, provided
there are no other funcnames matching 'main'.

Signed-off-by: Thomas Rast <***@student.ethz.ch>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 39410bf0bf81cb3f76fb9bfa8308cd672bc1442c
https://github.com/msysgit/git/commit/39410bf0bf81cb3f76fb9bfa8308cd672bc1442c
Author: Thomas Rast <***@student.ethz.ch>
Date: 2013-03-28 (Thu, 28 Mar 2013)

Changed paths:
M line-log.c

Log Message:
-----------
Speed up log -L... -M

So far log -L only used the implicit diff filtering by pathspec. If
the user specifies -M, we cannot do that, and so we simply handed the
whole diff queue (which is approximately 'git show --raw') to
diffcore_std().

Unfortunately this is very slow. We can optimize a lot if we throw
out files that we know cannot possibly be interesting, in the same
spirit that the pathspec filtering reduces the number of files.

However, in this case, we have to be more careful. Because we want to
look out for renames, we need to keep all filepairs where something
was deleted.

This is a bit hacky and should really be replaced by equivalent
support in --follow, and just using that. However, in the meantime it
speeds up 'log -M -L' by an order of magnitude.

Signed-off-by: Thomas Rast <***@student.ethz.ch>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 4596f190d384872305e502ebece2e38358ba463e
https://github.com/msysgit/git/commit/4596f190d384872305e502ebece2e38358ba463e
Author: Thomas Rast <***@inf.ethz.ch>
Date: 2013-04-05 (Fri, 05 Apr 2013)

Changed paths:
M line-log.c

Log Message:
-----------
log -L: check range set invariants when we look it up

lookup_line_range() is a good place to check that the range sets
satisfy the invariants: they have been computed and set in earlier
iterations, and we now start working with them.

Signed-off-by: Thomas Rast <***@inf.ethz.ch>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 209618860c2627a4e134a15472587c574b328b40
https://github.com/msysgit/git/commit/209618860c2627a4e134a15472587c574b328b40
Author: Thomas Rast <***@inf.ethz.ch>
Date: 2013-04-05 (Fri, 05 Apr 2013)

Changed paths:
M line-log.c
M t/t4211-line-log.sh
A t/t4211/expect.multiple
A t/t4211/expect.multiple-overlapping
A t/t4211/expect.multiple-superset

Log Message:
-----------
log -L: fix overlapping input ranges

The existing code was too defensive, and would trigger the assert in
range_set_append() if the user gave overlapping ranges.

The intent was always to define overlapping ranges as just the union
of all of them, as evidenced by the call to sort_and_merge_range_set().
(Which was already used, unlike what the comment said.)

Fix by splitting out the meat of range_set_append() to a new _unsafe()
function that lacks the paranoia. sort_and_merge_range_set will fix
up the ranges, so we don't need the checks there.

Signed-off-by: Thomas Rast <***@inf.ethz.ch>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 81d340d40af506eda3182190b6132575547fa4c5
https://github.com/msysgit/git/commit/81d340d40af506eda3182190b6132575547fa4c5
Author: Felipe Contreras <***@gmail.com>
Date: 2013-04-11 (Thu, 11 Apr 2013)

Changed paths:
M git-remote-testgit
M t/t5801-remote-helpers.sh
M transport-helper.c

Log Message:
-----------
transport-helper: report errors properly

If a push fails because the remote-helper died (with fast-export),
the user may not see any error message. We do correctly die with a
failed exit code, as we notice that the helper has died while
reading back the ref status from the helper. However, we don't print
any message. This is OK if the helper itself printed a useful error
message, but we cannot count on that; let's let the user know that
the helper failed.

In the long run, it may make more sense to propagate the error back
up to push, so that it can present the usual status table and give a
nicer message. But this is a much simpler fix that can help
immediately.

While we're adding tests, let's also confirm that the remote-helper
dying is also detected when importing refs. We currently do so
robustly when the helper uses the "done" feature (and that is what
we test). We cannot do so reliably when the helper does not use the
"done" feature, but it is not even worth testing; the right solution
is for the helper to start using "done".

Suggested-by: Jeff King <***@peff.net>
Signed-off-by: Felipe Contreras <***@gmail.com>
Signed-off-by: Jeff King <***@peff.net>
Acked-by: Sverre Rabbelier <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: c096955c5bb8e20186cc7c07d4d12b77ddcd01c6
https://github.com/msysgit/git/commit/c096955c5bb8e20186cc7c07d4d12b77ddcd01c6
Author: Jeff King <***@peff.net>
Date: 2013-04-11 (Thu, 11 Apr 2013)

Changed paths:
M t/t5801-remote-helpers.sh
M transport-helper.c

Log Message:
-----------
transport-helper: mention helper name when it dies

When we try to read from a remote-helper and get EOF or an
error, we print a message indicating that the helper died.
However, users may not know that a remote helper was in use
(e.g., when using git-over-http), or even what a remote
helper is.

Let's print the name of the helper (e.g., "git-remote-https");
this makes it more obvious what the program is for, and
provides a useful token for reporting bugs or searching for
more information (e.g., in manpages).

Signed-off-by: Jeff King <***@peff.net>
Acked-by: Sverre Rabbelier <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 5034fdea3017304fa37e50b3bd40c392503ebfd2
https://github.com/msysgit/git/commit/5034fdea3017304fa37e50b3bd40c392503ebfd2
Author: Felipe Contreras <***@gmail.com>
Date: 2013-04-11 (Thu, 11 Apr 2013)

Changed paths:
M t/t5801-remote-helpers.sh
M transport-helper.c

Log Message:
-----------
transport-helper: improve push messages

If there's already a remote-helper tracking ref, we can fetch the SHA-1
to report proper push messages (as opposed to always reporting
[new branch]).

The remote-helper currently can specify the old SHA-1 to avoid this
problem, but there's no point in forcing all remote-helpers to be aware
of git commit ids; they should be able to be agnostic of them.

Signed-off-by: Felipe Contreras <***@gmail.com>
Reviewed-by: Jeff King <***@peff.net>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: eef39f8124ba6045bdc1ae6e665d3d65e28385ab
https://github.com/msysgit/git/commit/eef39f8124ba6045bdc1ae6e665d3d65e28385ab
Author: Adam Spiers <***@adamspiers.org>
Date: 2013-04-11 (Thu, 11 Apr 2013)

Changed paths:
M t/t0008-ignores.sh

Log Message:
-----------
t0008: remove duplicated test fixture data

The expected contents of STDOUT for the final --stdin tests can be
derived from the expected contents of STDOUT for the same tests when
--verbose is given, in the same way that test_expect_success_multi
derives this for earlier tests.

Signed-off-by: Adam Spiers <***@adamspiers.org>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: ae3caf4c912429c8e9755f2e10d2f0a7f6279c36
https://github.com/msysgit/git/commit/ae3caf4c912429c8e9755f2e10d2f0a7f6279c36
Author: Adam Spiers <***@adamspiers.org>
Date: 2013-04-11 (Thu, 11 Apr 2013)

Changed paths:
M Documentation/git-check-ignore.txt
M builtin/check-ignore.c
M t/t0008-ignores.sh

Log Message:
-----------
check-ignore: add -n / --non-matching option

If `-n` or `--non-matching` are specified, non-matching pathnames will
also be output, in which case all fields in each output record except
for <pathname> will be empty. This can be useful when running
check-ignore as a background process, so that files can be
incrementally streamed to STDIN, and for each of these files, STDOUT
will indicate whether that file matched a pattern or not. (Without
this option, it would be impossible to tell whether the absence of
output for a given file meant that it didn't match any pattern, or
that the result simply hadn't been flushed to STDOUT yet.)

Signed-off-by: Adam Spiers <***@adamspiers.org>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 0006d85c3a2fcbd803ed46cf283fab4e4fae3a7f
https://github.com/msysgit/git/commit/0006d85c3a2fcbd803ed46cf283fab4e4fae3a7f
Author: Adam Spiers <***@adamspiers.org>
Date: 2013-04-11 (Thu, 11 Apr 2013)

Changed paths:
M builtin/check-ignore.c

Log Message:
-----------
check-ignore: move setup into cmd_check_ignore()

Initialisation of the dir_struct and path_exclude_check structs was
previously done within check_ignore(). This was acceptable since
check_ignore() was only called once per check-ignore invocation;
however the next commit will convert it into an inner loop which is
called once per line of STDIN when --stdin is given. Therefore moving
the initialisation code out into cmd_check_ignore() ensures that
initialisation is still only performed once per check-ignore
invocation, and consequently that the output is identical whether
pathspecs are provided as CLI arguments or via STDIN.

Signed-off-by: Adam Spiers <***@adamspiers.org>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 0c8e8c080b08632d6dbee33d093b5df648196b49
https://github.com/msysgit/git/commit/0c8e8c080b08632d6dbee33d093b5df648196b49
Author: Adam Spiers <***@adamspiers.org>
Date: 2013-04-11 (Thu, 11 Apr 2013)

Changed paths:
M builtin/check-ignore.c
M t/t0008-ignores.sh

Log Message:
-----------
check-ignore: allow incremental streaming of queries via --stdin

Some callers, such as the git-annex web assistant, find it useful to
invoke git check-ignore as a persistent background process, which can
then have queries fed to its STDIN at any point, and the corresponding
response consumed from its STDOUT. For this we need to invoke
check_ignore() once per line of standard input, and flush standard
output after each result.

The above use case suggests that empty STDIN is actually a reasonable
scenario (e.g. when the caller doesn't know in advance whether any
queries need to be fed to the background process until after it's
already started), so we make the minor behavioural change that "no
pathspec given." is no longer emitted in when STDIN is empty.

Even though check_ignore() could now be changed to operate on a single
pathspec, we keep it operating on an array of pathspecs since that is
a more convenient way of consuming the existing pathspec API.

Signed-off-by: Adam Spiers <***@adamspiers.org>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: f1ed7fea7974218db15155f3b8d2e29d3fe0971c
https://github.com/msysgit/git/commit/f1ed7fea7974218db15155f3b8d2e29d3fe0971c
Author: Adam Spiers <***@adamspiers.org>
Date: 2013-04-11 (Thu, 11 Apr 2013)

Changed paths:
M Documentation/git-check-attr.txt
M Documentation/git-check-ignore.txt
M Documentation/git.txt

Log Message:
-----------
Documentation: add caveats about I/O buffering for check-{attr,ignore}

check-attr and check-ignore have the potential to deadlock callers
which do not read back the output in real-time. For example, if a
caller writes N paths out and then reads N lines back in, it risks
becoming blocked on write() to check-*, and check-* is blocked on
write back to the caller. Somebody has to buffer; the pipe buffers
provide some leeway, but they are limited.

Thanks to Peff for pointing this out:

http://article.gmane.org/gmane.comp.version-control.git/220534

Signed-off-by: Adam Spiers <***@adamspiers.org>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 035ff3987bcbe93a823f47befbe019319c1484b0
https://github.com/msysgit/git/commit/035ff3987bcbe93a823f47befbe019319c1484b0
Author: Thomas Rast <***@inf.ethz.ch>
Date: 2013-04-12 (Fri, 12 Apr 2013)

Changed paths:
M t/t4211-line-log.sh
M t/t4211/expect.move-support-f

Log Message:
-----------
t4211: pass -M to 'git log -M -L...' test

Embarrassingly, the -M test did not actually invoke -M, and thus not
really test the feature.

Signed-off-by: Thomas Rast <***@inf.ethz.ch>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: d51c5274e458e9c2545144b6821978ccda85c117
https://github.com/msysgit/git/commit/d51c5274e458e9c2545144b6821978ccda85c117
Author: Thomas Rast <***@inf.ethz.ch>
Date: 2013-04-12 (Fri, 12 Apr 2013)

Changed paths:
M t/t4211-line-log.sh
A t/t4211/expect.parallel-change-f-to-main
M t/t4211/history.export

Log Message:
-----------
log -L: test merge of parallel modify/rename

This tests a toy example of a history like

* Merge
| \
| * Modify foo
| |
* | Rename foo->bar
| /
* Create foo

Current log -L fails on this; we'll fix it in the next commit.

Signed-off-by: Thomas Rast <***@inf.ethz.ch>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 31c61918313c7057a48ac939d8699860e8bfff99
https://github.com/msysgit/git/commit/31c61918313c7057a48ac939d8699860e8bfff99
Author: Thomas Rast <***@inf.ethz.ch>
Date: 2013-04-12 (Fri, 12 Apr 2013)

Changed paths:
M line-log.c
M line-log.h
M t/t4211-line-log.sh

Log Message:
-----------
log -L: store the path instead of a diff_filespec

line_log_data has held a diff_filespec* since the very early versions
of the code. However, the only place in the code where we actually
need the full filespec is parse_range_arg(); in all other cases, we
are only interested in the path, so there is hardly a reason to store
a filespec. Even worse, it causes a lot of redundant ->spec->path
pointer dereferencing.

And *even* worse, it caused the following bug. If you merge a rename
with a modification to the old filename, like so:

* Merge
| \
| * Modify foo
| |
* | Rename foo->bar
| /
* Create foo

we internally -- in process_ranges_merge_commit() -- scan all parents.
We are mainly looking for one that doesn't have any modifications, so
that we can assign all the blame to it and simplify away the merge.
In doing so, we run the normal machinery on all parents in a loop.
For each parent, we prepare a "working set" line_log_data by making a
copy with line_log_data_copy(), which does *not* make a copy of the
spec.

Now suppose the rename is the first parent. The diff machinery tells
us that the filepair is ('foo', 'bar'). We duly update the path we
are interested in:

rg->spec->path = xstrdup(pair->one->path);

But that 'struct spec' is shared between the output line_log_data and
the original input line_log_data. So we just wrecked the state of
process_ranges_merge_commit(). When we get around to the second
parent, the ranges tell us we are interested in a file 'foo' while the
commits touch 'bar'.

So most of this patch is just s/->spec->path/->path/ and associated
management changes. This implicitly fixes the bug because we removed
the shared parts between input and output of line_log_data_copy(); it
is now safe to overwrite the path in the copy.

There's one only somewhat related change: the comment in
process_all_files() explains the reasoning behind using 'range' there.
That bit of half-correct code had me sidetracked for a while.

Signed-off-by: Thomas Rast <***@inf.ethz.ch>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 1ddac3ff9aa29d1103aa05f59772812289b4cefa
https://github.com/msysgit/git/commit/1ddac3ff9aa29d1103aa05f59772812289b4cefa
Author: Thomas Rast <***@inf.ethz.ch>
Date: 2013-04-12 (Fri, 12 Apr 2013)

Changed paths:
M line-log.c

Log Message:
-----------
log -L: improve comments in process_all_files()

The funny range assignment in process_all_files() had me sidetracked
while investigating what led to the previous commit. Let's improve
the comments.

Signed-off-by: Thomas Rast <***@inf.ethz.ch>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 96c4f4a370591b4796628abe18f27f0133b21954
https://github.com/msysgit/git/commit/96c4f4a370591b4796628abe18f27f0133b21954
Author: Jeff King <***@peff.net>
Date: 2013-04-13 (Sat, 13 Apr 2013)

Changed paths:
M commit.c
M commit.h

Log Message:
-----------
commit: allow associating auxiliary info on-demand

The "indegree" field in the commit object is only used while sorting
a list of commits in topological order, and wasting memory otherwise.

We would prefer to shrink the size of individual commit objects,
which we may have to hold thousands of in-core. We could eject
"indegree" field out from the commit object and represent it as a
dynamic table based on the decoration infrastructure, but the
decoration is meant for sparse annotation and is not a good match.

Instead, let's try a different approach.

- Assign an integer (commit->index) to each commit we keep in-core
(reuse the space of "indegree" field for it);

- When running the topological sort, allocate an array of integers
in bulk (called "slab"), use the commit->index as an index into
this array, and store the "indegree" information there.

This does _not_ reduce the memory footprint of a commit object, but
the commit->index can be used as the index to dynamically associate
commits with other kinds of information as needed.

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


Commit: 66eb375d3d334efa3f467775a5f2a647c131c4b1
https://github.com/msysgit/git/commit/66eb375d3d334efa3f467775a5f2a647c131c4b1
Author: Junio C Hamano <***@pobox.com>
Date: 2013-04-13 (Sat, 13 Apr 2013)

Changed paths:
M commit.c

Log Message:
-----------
commit-slab: avoid large realloc

Instead of using a single "slab" and keep reallocating it as we find
that we need to deal with commits with larger values of commit->index,
make a "slab" an array of many "slab_piece"s. Each access may need
two levels of indirections, but we only need to reallocate the first
level array of pointers when we have to grow the table this way.

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


Commit: 4698c8feb1bb56497215e0c10003dd046df352fa
https://github.com/msysgit/git/commit/4698c8feb1bb56497215e0c10003dd046df352fa
Author: Jonathan Nieder <***@gmail.com>
Date: 2013-04-15 (Mon, 15 Apr 2013)

Changed paths:
M builtin/config.c
M config.c
M dir.c
M git-compat-util.h
M wrapper.c

Log Message:
-----------
config: allow inaccessible configuration under $HOME

The changes v1.7.12.1~2^2~4 (config: warn on inaccessible files,
2012-08-21) and v1.8.1.1~22^2~2 (config: treat user and xdg config
permission problems as errors, 2012-10-13) were intended to prevent
important configuration (think "[transfer] fsckobjects") from being
ignored when the configuration is unintentionally unreadable (for
example with EIO on a flaky filesystem, or with ENOMEM due to a DoS
attack). Usually ~/.gitconfig and ~/.config/git are readable by the
current user, and if they aren't then it would be easy to fix those
permissions, so the damage from adding this check should have been
minimal.

Unfortunately the access() check often trips when git is being run as
a server. A daemon (such as inetd or git-daemon) starts as "root",
creates a listening socket, and then drops privileges, meaning that
when git commands are invoked they cannot access $HOME and die with

fatal: unable to access '/root/.config/git/config': Permission denied

Any patch to fix this would have one of three problems:

1. We annoy sysadmins who need to take an extra step to handle HOME
when dropping privileges (the current behavior, or any other
proposal that they have to opt into).

2. We annoy sysadmins who want to set HOME when dropping privileges,
either by making what they want to do impossible, or making them
set an extra variable or option to accomplish what used to work
(e.g., a patch to git-daemon to set HOME when --user is passed).

3. We loosen the check, so some cases which might be noteworthy are
not caught.

This patch is of type (3).

Treat user and xdg configuration that are inaccessible due to
permissions (EACCES) as though no user configuration was provided at
all.

An alternative method would be to check if $HOME is readable, but that
would not help in cases where the user who dropped privileges had a
globally readable HOME with only .config or .gitconfig being private.

This does not change the behavior when /etc/gitconfig or .git/config
is unreadable (since those are more serious configuration errors),
nor when ~/.gitconfig or ~/.config/git is unreadable due to problems
other than permissions.

Signed-off-by: Jonathan Nieder <***@gmail.com>
Improved-by: Jeff King <***@peff.net>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 3d27b9b005f26b107227fc18b6648df329daee97
https://github.com/msysgit/git/commit/3d27b9b005f26b107227fc18b6648df329daee97
Author: Junio C Hamano <***@pobox.com>
Date: 2013-04-17 (Wed, 17 Apr 2013)

Changed paths:
M builtin/reflog.c
M cache.h
M date.c

Log Message:
-----------
date.c: add parse_expiry_date()

"git reflog --expire=all" tries to expire reflog entries up to the
current second, because the approxidate() parser gives the current
timestamp for anything it does not understand (and it does not know
what time "all" means). When the user tells us to expire "all" (or
set the expiration time to "now"), the user wants to remove all the
reflog entries (no reflog entry should record future time).

Just set it to ULONG_MAX and to let everything that is older that
timestamp expire.

While at it, allow "now" to be treated the same way for callers that
parse expiry date timestamp with this function. Also use an error
reporting version of approxidate() to report misspelled date. When
the user says e.g. "--expire=mnoday" to delete entries two days or
older on Wednesday, we wouldn't want the "unknown, default to now"
logic to kick in.

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


Commit: 7a43c55415a224039a41684cbadd5b94be6f1a8e
https://github.com/msysgit/git/commit/7a43c55415a224039a41684cbadd5b94be6f1a8e
Author: Felipe Contreras <***@gmail.com>
Date: 2013-04-17 (Wed, 17 Apr 2013)

Changed paths:
M Documentation/gitremote-helpers.txt
M t/t5801-remote-helpers.sh
M transport-helper.c

Log Message:
-----------
transport-helper: clarify *:* refspec

The *:* refspec doesn't work, and never has, clarify the code and
documentation to reflect that. This in effect reverts commit 9e7673e
(gitremote-helpers(1): clarify refspec behaviour).

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


Commit: bb0a5cc9dc574e1dda4ee6bcb1e0f166d29dcd65
https://github.com/msysgit/git/commit/bb0a5cc9dc574e1dda4ee6bcb1e0f166d29dcd65
Author: Felipe Contreras <***@gmail.com>
Date: 2013-04-17 (Wed, 17 Apr 2013)

Changed paths:
M Documentation/gitremote-helpers.txt

Log Message:
-----------
transport-helper: update refspec documentation

The refspec capability is not only used by 'import', also by
'export', and it's recommended in both.

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


Commit: 21610d820b97583a8f4e3e7f4a48716c8e32fd92
https://github.com/msysgit/git/commit/21610d820b97583a8f4e3e7f4a48716c8e32fd92
Author: Felipe Contreras <***@gmail.com>
Date: 2013-04-17 (Wed, 17 Apr 2013)

Changed paths:
M Documentation/gitremote-helpers.txt
M t/t5801-remote-helpers.sh
M transport-helper.c

Log Message:
-----------
transport-helper: clarify pushing without refspecs

This has never worked, since it's inception the code simply skips all
the refs, essentially telling fast-export to do nothing.

Let's at least tell the user what's going on.

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


Commit: a93b4a09acfed0e2a006770d0196c74968e65c25
https://github.com/msysgit/git/commit/a93b4a09acfed0e2a006770d0196c74968e65c25
Author: Felipe Contreras <***@gmail.com>
Date: 2013-04-17 (Wed, 17 Apr 2013)

Changed paths:
M t/t5801-remote-helpers.sh
M transport-helper.c

Log Message:
-----------
transport-helper: warn when refspec is not used

For the modes that need it. In the future we should probably error out,
instead of providing half-assed support.

The reason we want to do this is because if it's not present, the remote
helper might be updating refs/heads/*, or refs/remotes/origin/*,
directly, and in the process fetch will get confused trying to update
refs that are already updated, or older than what they should be. We
shouldn't be messing with the rest of git.

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


Commit: 9c51558cfb6ffe104da45d324194d9f1ebf9bc65
https://github.com/msysgit/git/commit/9c51558cfb6ffe104da45d324194d9f1ebf9bc65
Author: Felipe Contreras <***@gmail.com>
Date: 2013-04-17 (Wed, 17 Apr 2013)

Changed paths:
M transport-helper.c

Log Message:
-----------
transport-helper: trivial code shuffle

Just shuffle the die() part to make it more explicit, and cleanup the
code-style.

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


Commit: 664059fb624467975da5c9a4bf6053c83126eaa7
https://github.com/msysgit/git/commit/664059fb624467975da5c9a4bf6053c83126eaa7
Author: Felipe Contreras <***@gmail.com>
Date: 2013-04-17 (Wed, 17 Apr 2013)

Changed paths:
M t/t5801-remote-helpers.sh
M transport-helper.c

Log Message:
-----------
transport-helper: update remote helper namespace

When pushing, the remote namespace is updated correctly
(e.g. refs/origin/master), but not the remote helper's
(e.g. refs/testgit/origin/master), which currently is only
updated while fetching.

Since the remote namespace is used to tell fast-export which commits
to avoid (because they were already imported/exported), it makes
sense to have them in sync so they don't get generated twice. If the
remote helper was implemented properly, they would be ignored, if
not, they probably would end up repeated.

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


Commit: 61929404df24325b8bebedbd70d55d21142de9dd
https://github.com/msysgit/git/commit/61929404df24325b8bebedbd70d55d21142de9dd
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-04-18 (Thu, 18 Apr 2013)

Changed paths:
M Documentation/git-gc.txt
M Documentation/git-reflog.txt

Log Message:
-----------
git-gc.txt, git-reflog.txt: document new expiry options

Document the new values that can be used for expiry values where their
use makes sense:

* git reflog expire --expire=[all|never]
* git reflog expire --expire-unreachable=[all|never]
* git gc --prune=all

Other combinations aren't useful and therefore no documentation is
added (even though they are allowed):

* git gc --prune=never

is redundant with "git gc --no-prune"

* git prune --expire=all

is equivalent to providing no --expire option

* git prune --expire=never

is a NOP

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


Commit: 8a09e6c5f9010ac7159ef39a03b9a36bf233eaca
https://github.com/msysgit/git/commit/8a09e6c5f9010ac7159ef39a03b9a36bf233eaca
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-04-18 (Thu, 18 Apr 2013)

Changed paths:
M Documentation/technical/api-parse-options.txt

Log Message:
-----------
api-parse-options.txt: document "no-" for non-boolean options

Document that the "no-" prefix can also be used for non-boolean
options.

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


Commit: 399e4a1c560ae8caf338e13a73851089c384230a
https://github.com/msysgit/git/commit/399e4a1c560ae8caf338e13a73851089c384230a
Author: Johan Herland <***@herland.net>
Date: 2013-04-21 (Sun, 21 Apr 2013)

Changed paths:
A t/t2024-checkout-dwim.sh

Log Message:
-----------
t2024: Add tests verifying current DWIM behavior of 'git checkout <branch>'

The DWIM mode of checkout allows you to run "git checkout foo" when there is
no existing local ref or path called "foo", and there is exactly one remote
with a remote-tracking branch called "foo". Git will then automatically
create a new local branch called "foo" using the remote-tracking "foo" as
its starting point and configured upstream.

Improved-by: Jonathan Nieder <***@gmail.com>
Signed-off-by: Johan Herland <***@herland.net>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: ec2764ee8fb9a37cc92e0a1bce3b49ae2de0ffbc
https://github.com/msysgit/git/commit/ec2764ee8fb9a37cc92e0a1bce3b49ae2de0ffbc
Author: Johan Herland <***@herland.net>
Date: 2013-04-21 (Sun, 21 Apr 2013)

Changed paths:
M t/t2024-checkout-dwim.sh

Log Message:
-----------
t2024: Show failure to use refspec when DWIMming remote branch names

When using "git checkout foo" to DWIM the creation of local "foo" from some
existing upstream "foo", we assume conventional refspecs as created by "git
clone" or "git remote add", and fail to work correctly if the current
refspecs do not follow the conventional "refs/remotes/$remote/*" pattern.

Improved-by: Jonathan Nieder <***@gmail.com>
Signed-off-by: Johan Herland <***@herland.net>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: fa83a33b22283e465aafdacc53ad0fddea55bdf4
https://github.com/msysgit/git/commit/fa83a33b22283e465aafdacc53ad0fddea55bdf4
Author: Johan Herland <***@herland.net>
Date: 2013-04-21 (Sun, 21 Apr 2013)

Changed paths:
M Documentation/git-checkout.txt
M builtin/checkout.c
M t/t2024-checkout-dwim.sh

Log Message:
-----------
checkout: Use remote refspecs when DWIMming tracking branches

The DWIM mode of checkout allows you to run "git checkout foo" when there
is no existing local ref or path called "foo", and there is exactly _one_
remote with a remote-tracking branch called "foo". Git will automatically
create a new local branch called "foo" using the remote-tracking "foo" as
its starting point and configured upstream.

For example, consider the following unconventional (but perfectly valid)
remote setup:

[remote "origin"]
fetch = refs/heads/*:refs/remotes/origin/*
[remote "frotz"]
fetch = refs/heads/*:refs/remotes/frotz/nitfol/*

Case 1: Assume both "origin" and "frotz" have remote-tracking branches called
"foo", at "refs/remotes/origin/foo" and "refs/remotes/frotz/nitfol/foo"
respectively. In this case "git checkout foo" should fail, because there is
more than one remote with a "foo" branch.

Case 2: Assume only "frotz" have a remote-tracking branch called "foo". In
this case "git checkout foo" should succeed, and create a local branch "foo"
from "refs/remotes/frotz/nitfol/foo", using remote branch "foo" from "frotz"
as its upstream.

The current code hardcodes the assumption that all remote-tracking branches
must match the "refs/remotes/$remote/*" pattern (which is true for remotes
with "conventional" refspecs, but not true for the "frotz" remote above).
When running "git checkout foo", the current code looks for exactly one ref
matching "refs/remotes/*/foo", hence in the above example, it fails to find
"refs/remotes/frotz/nitfol/foo", which causes it to fail both case #1 and #2.

The better way to handle the above example is to actually study the fetch
refspecs to deduce the candidate remote-tracking branches for "foo"; i.e.
assume "foo" is a remote branch being fetched, and then map "refs/heads/foo"
through the refspecs in order to get the corresponding remote-tracking
branches "refs/remotes/origin/foo" and "refs/remotes/frotz/nitfol/foo".
Finally we check which of these happens to exist in the local repo, and
if there is exactly one, we have an unambiguous match for "git checkout foo",
and may proceed.

This fixes most of the failing tests introduced in the previous patch.

Signed-off-by: Johan Herland <***@herland.net>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 9c9cd39a0c9bc1f14e9dfc29ad98475794dda6b8
https://github.com/msysgit/git/commit/9c9cd39a0c9bc1f14e9dfc29ad98475794dda6b8
Author: Johan Herland <***@herland.net>
Date: 2013-04-21 (Sun, 21 Apr 2013)

Changed paths:
M t/t3200-branch.sh

Log Message:
-----------
t3200.39: tracking setup should fail if there is no matching refspec.

We are formalizing a requirement that any remote-tracking branch to be used
as an upstream (i.e. as an argument to --track), _must_ "belong" to a
configured remote by being matched by the "dst" side of a fetch refspec.

This patch encodes the new expected behavior of this test, and marks the
test with "test_expect_failure" in anticipation of a following patch to
introduce the new behavior.

Signed-off-by: Johan Herland <***@herland.net>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 88a9f72fe0f2ae3243b3d7a53dddf856cde48aca
https://github.com/msysgit/git/commit/88a9f72fe0f2ae3243b3d7a53dddf856cde48aca
Author: Johan Herland <***@herland.net>
Date: 2013-04-21 (Sun, 21 Apr 2013)

Changed paths:
M t/t7201-co.sh

Log Message:
-----------
t7201.24: Add refspec to keep --track working

We are formalizing a requirement that any remote-tracking branch to be used
as an upstream (i.e. as an argument to --track), _must_ "belong" to a
configured remote by being matched by the "dst" side of a fetch refspec.

Without this patch, this test would start failing when the new behavior is
introduced.

Signed-off-by: Johan Herland <***@herland.net>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 983b17d4bbedd426d4fdd8a95df4dcd292c1a695
https://github.com/msysgit/git/commit/983b17d4bbedd426d4fdd8a95df4dcd292c1a695
Author: Johan Herland <***@herland.net>
Date: 2013-04-21 (Sun, 21 Apr 2013)

Changed paths:
M t/t9114-git-svn-dcommit-merge.sh

Log Message:
-----------
t9114.2: Don't use --track option against "svn-remote"-tracking branches

We are formalizing a requirement that any remote-tracking branch to be used
as an upstream (i.e. as an argument to --track), _must_ "belong" to a
configured remote by being matched by the "dst" side of a fetch refspec.

This test uses --track against a "remotes/trunk" ref which does not belong
to any configured (git) remotes, but is instead created by "git svn fetch"
operating on an svn-remote. It does not make sense to use an svn-remote as
an upstream for a local branch, as a regular "git pull" from (or "git push"
to) it would obviously fail (instead you would need to use "git svn" to
communicate with this remote). Furthermore, the usage of --track in this
case is unnecessary, since the upstreaming config that would be created is
never used.

Simply removing --track fixes the issue without changing the expected
behavior of the test.

Acked-by: Eric Wong <***@yhbt.net>
Signed-off-by: Johan Herland <***@herland.net>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 41c21f22d0fc06f1f22489621980396aea9f7a62
https://github.com/msysgit/git/commit/41c21f22d0fc06f1f22489621980396aea9f7a62
Author: Johan Herland <***@herland.net>
Date: 2013-04-21 (Sun, 21 Apr 2013)

Changed paths:
M branch.c
M t/t2024-checkout-dwim.sh
M t/t3200-branch.sh

Log Message:
-----------
branch.c: Validate tracking branches with refspecs instead of refs/remotes/*

The current code for validating tracking branches (e.g. the argument to
the -t/--track option) hardcodes refs/heads/* and refs/remotes/* as the
potential locations for tracking branches. This works with the refspecs
created by "git clone" or "git remote add", but is suboptimal in other
cases:

- If "refs/remotes/foo/bar" exists without any association to a remote
(i.e. there is no remote named "foo", or no remote with a refspec
that matches "refs/remotes/foo/bar"), then it is impossible to set up
a valid upstream config that tracks it. Currently, the code defaults
to using "refs/remotes/foo/bar" from repo "." as the upstream, which
works, but is probably not what the user had in mind when running
"git branch baz --track foo/bar".

- If the user has tweaked the fetch refspec for a remote to put its
remote-tracking branches outside of refs/remotes/*, e.g. by running
git config remote.foo.fetch "+refs/heads/*:refs/foo_stuff/*"
then the current code will refuse to use its remote-tracking branches
as --track arguments, since they do not match refs/remotes/*.

This patch removes the "refs/remotes/*" requirement for upstream branches,
and replaces it with explicit checking of the refspecs for each remote to
determine whether a given --track argument is a valid remote-tracking
branch. This solves both of the above problems, since the matching refspec
guarantees that there is a both a remote name and a remote branch name
that can be used for the upstream config.

However, this means that refs located within refs/remotes/* without a
corresponding remote/refspec will no longer be usable as upstreams.
The few existing tests which depended on this behavioral quirk has
already been fixed in the preceding patches.

This patch fixes the last remaining test failure in t2024-checkout-dwim.

Signed-off-by: Johan Herland <***@herland.net>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 229177aaea295a3f804f98494d7bcde9c088fc0a
https://github.com/msysgit/git/commit/229177aaea295a3f804f98494d7bcde9c088fc0a
Author: Johan Herland <***@herland.net>
Date: 2013-04-21 (Sun, 21 Apr 2013)

Changed paths:
M Documentation/glossary-content.txt

Log Message:
-----------
glossary: Update and rephrase the definition of a remote-tracking branch

The definition of a remote-tracking branch in the glossary have been
out-of-date for a while (by e.g. referring to "Pull:" from old-style
$GIT_DIR/remotes files).

Also, the preceding patches have formalized that a remote-tracking branch
must match a configured refspec in order to be usable as an upstream.

This patch rewrites the paragraph on remote-tracking branches accordingly.

Signed-off-by: Johan Herland <***@herland.net>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 0f483436e9c2e03bbb80c1dc215d4d7bf8774282
https://github.com/msysgit/git/commit/0f483436e9c2e03bbb80c1dc215d4d7bf8774282
Author: Junio C Hamano <***@pobox.com>
Date: 2013-04-21 (Sun, 21 Apr 2013)

Changed paths:
M Documentation/git-log.txt

Log Message:
-----------
line-log: fix documentation formatting

The second paragraph of the added description for the -L option
"<start> and <end> can take one of these forms:", and the list of
forms that follow the headline, were indented one level too short,
due to the missing "+" to signal that the next paragraph continues
the previous one.

Also "You can specify this option more than once" is about the -L
option, not about its various forms of starting and ending points.
Move it to the end of the main text.

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


Commit: 499926670665570d785bc7baca4d7cd4420823dc
https://github.com/msysgit/git/commit/499926670665570d785bc7baca4d7cd4420823dc
Author: Thomas Rast <***@inf.ethz.ch>
Date: 2013-04-22 (Mon, 22 Apr 2013)

Changed paths:
M Documentation/git-log.txt

Log Message:
-----------
git-log(1): remove --full-line-diff description

This option is a remnant of an earlier log -L version, and not
currently implemented. Remove it until (if at all) it is implemented
again.

Signed-off-by: Thomas Rast <***@inf.ethz.ch>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 1afe6e404453586a1095ce0f3f7e899e62ab237f
https://github.com/msysgit/git/commit/1afe6e404453586a1095ce0f3f7e899e62ab237f
Author: Junio C Hamano <***@pobox.com>
Date: 2013-04-25 (Thu, 25 Apr 2013)

Changed paths:
M t/t5801-remote-helpers.sh

Log Message:
-----------
t5801: "VAR=VAL shell_func args" is forbidden

It is not a portable expectation that a single-shot environment
variable assignment works when calling a shell function, not a
command.

Set and export the variable before calling "test_must_fail git push"
instead. This change would not hurt because this is the last
command in the subprocess and the environment will not seep through
to later tests without using a single-shot assignment.

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


Commit: 27ec394a9701675762f02e9af464be2c297c6cf1
https://github.com/msysgit/git/commit/27ec394a9701675762f02e9af464be2c297c6cf1
Author: Junio C Hamano <***@pobox.com>
Date: 2013-04-25 (Thu, 25 Apr 2013)

Changed paths:
M Documentation/technical/api-parse-options.txt
M builtin/prune.c
M parse-options-cb.c
M parse-options.h

Log Message:
-----------
prune: introduce OPT_EXPIRY_DATE() and use it

Earlier we added support for --expire=all (or --expire=now) that
considers all crufts, regardless of their age, as eligible for
garbage collection by turning command argument parsers that use
approxidate() to use parse_expiry_date(), but "git prune" used a
built-in parse-options facility OPT_DATE() and did not benefit from
the new function.

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


Commit: 54bb9015c817728371b48e908257fdf6a078eb60
https://github.com/msysgit/git/commit/54bb9015c817728371b48e908257fdf6a078eb60
Author: John Keeping <***@keeping.me.uk>
Date: 2013-04-27 (Sat, 27 Apr 2013)

Changed paths:
M t/Makefile

Log Message:
-----------
t/Makefile: fix result handling with TEST_OUTPUT_DIRECTORY

When TEST_OUTPUT_DIRECTORY is set, the test results will be generated in
"$TEST_OUTPUT_DIRECTORY/test-results", which may not be the same as
"test-results" in t/Makefile. This causes the aggregate-results target
to fail as it finds no count files.

Fix this by introducing TEST_RESULTS_DIRECTORY and using it wherever
test-results is referenced.

Signed-off-by: John Keeping <***@keeping.me.uk>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 752db4254c940bb6ceeb96a265b50830b4cb10b3
https://github.com/msysgit/git/commit/752db4254c940bb6ceeb96a265b50830b4cb10b3
Author: Johannes Sixt <***@kdbg.org>
Date: 2013-04-27 (Sat, 27 Apr 2013)

Changed paths:
M git-remote-testgit

Log Message:
-----------
git-remote-testgit: avoid process substitution

The implementation of bash on Windows does not offer process substitution.

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


Commit: ddf07bddef9aac37cf54ef744452f2a9ad4e312e
https://github.com/msysgit/git/commit/ddf07bddef9aac37cf54ef744452f2a9ad4e312e
Author: Felipe Contreras <***@gmail.com>
Date: 2013-04-27 (Sat, 27 Apr 2013)

Changed paths:
M t/t9902-completion.sh

Log Message:
-----------
completion: add file completion tests

The commit fea16b4 (git-completion.bash: add support for path
completion) introduced quite a few changes, without the usual tests.

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


Commit: f03efba4c0a7046ceb51ec4b57f7413fe6e931eb
https://github.com/msysgit/git/commit/f03efba4c0a7046ceb51ec4b57f7413fe6e931eb
Author: Felipe Contreras <***@gmail.com>
Date: 2013-04-27 (Sat, 27 Apr 2013)

Changed paths:
M t/t9902-completion.sh

Log Message:
-----------
completion: document tilde expansion failure in tests

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


Commit: 9ab8d18322657db8bbe0cdf3b0dc19b479a3d4e5
https://github.com/msysgit/git/commit/9ab8d18322657db8bbe0cdf3b0dc19b479a3d4e5
Author: Felipe Contreras <***@gmail.com>
Date: 2013-04-27 (Sat, 27 Apr 2013)

Changed paths:
M contrib/completion/git-completion.bash

Log Message:
-----------
completion; remove unuseful comments

The only caller, __git_complete_index_file() doesn't specify any limits
to the options for 'git ls-files', neither should this function.

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


Commit: 0afe8e9e98b0b066105e03476f7c8f4c14bc1c15
https://github.com/msysgit/git/commit/0afe8e9e98b0b066105e03476f7c8f4c14bc1c15
Author: Felipe Contreras <***@gmail.com>
Date: 2013-04-27 (Sat, 27 Apr 2013)

Changed paths:
M contrib/completion/git-completion.bash

Log Message:
-----------
completion: use __gitcompadd for __gitcomp_file

Like the rest of the script does; let's not access COMPREPLY directly.

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


Commit: f825972c38ba5a8e0309a552b401ad55aeaaaf36
https://github.com/msysgit/git/commit/f825972c38ba5a8e0309a552b401ad55aeaaaf36
Author: Felipe Contreras <***@gmail.com>
Date: 2013-04-27 (Sat, 27 Apr 2013)

Changed paths:
M contrib/completion/git-completion.bash

Log Message:
-----------
completion: refactor diff_index wrappers

At the end of the day what we really need is to find out the files that
have been staged, or modified, because those files are the ones that
make sense to pass as arguments to 'git commit'.

We need diff-index to find those out, since 'git ls-files' doesn't do
that.

But we don't need wrappers and wrappers basically identical to the ones
used for 'git ls-files', when we can pretend it receives a --committable
option that would return what we need.

That way, we can remove a bunch of code without any functional changes.

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


Commit: fda54ef1aa66b54031a37c72a463ef15d6411912
https://github.com/msysgit/git/commit/fda54ef1aa66b54031a37c72a463ef15d6411912
Author: Felipe Contreras <***@gmail.com>
Date: 2013-04-27 (Sat, 27 Apr 2013)

Changed paths:
M contrib/completion/git-completion.bash

Log Message:
-----------
completion: refactor __git_complete_index_file()

The calls to __gitcomp_file() are essentially the same, but with
different prefix.

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


Commit: 3ffa4df4b2a26768938fc6bf1ed0640885b2bdf1
https://github.com/msysgit/git/commit/3ffa4df4b2a26768938fc6bf1ed0640885b2bdf1
Author: Felipe Contreras <***@gmail.com>
Date: 2013-04-27 (Sat, 27 Apr 2013)

Changed paths:
M contrib/completion/git-completion.bash

Log Message:
-----------
completion: add hack to enable file mode in bash < 4

This way we don't need all the compat stuff, different filters, and so
on. Also, now we complete exactly the same in bash 3 and bash 4.

This is the way bash-completion did it for quite some time, when bash 3
was supported. For more information about the hack:

http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=272660#64

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


Commit: fbe451182ed1a6830b9c46b12899fd9f20381ad4
https://github.com/msysgit/git/commit/fbe451182ed1a6830b9c46b12899fd9f20381ad4
Author: Felipe Contreras <***@gmail.com>
Date: 2013-04-27 (Sat, 27 Apr 2013)

Changed paths:
M contrib/completion/git-completion.bash

Log Message:
-----------
completion: add space after completed filename

Just like before fea16b4 (git-completion.bash: add support for path
completion).

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


Commit: c29e317994d1077fe3ac9cdeae5a5b35ffaa3440
https://github.com/msysgit/git/commit/c29e317994d1077fe3ac9cdeae5a5b35ffaa3440
Author: Felipe Contreras <***@gmail.com>
Date: 2013-04-27 (Sat, 27 Apr 2013)

Changed paths:
M contrib/completion/git-completion.bash

Log Message:
-----------
completion: remove __git_index_file_list_filter()

Refactor the code into the only caller; __git_index_files().

Also, Somehow messing up with the 'path' variable messes up the 'PATH'
variable. So let's not do that.

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


Commit: 5b62e6374aabb20297b22bdd72952ff582b2198b
https://github.com/msysgit/git/commit/5b62e6374aabb20297b22bdd72952ff582b2198b
Author: Ramsay Jones <***@ramsay1.demon.co.uk>
Date: 2013-04-28 (Sun, 28 Apr 2013)

Changed paths:
M compat/regex/regexec.c

Log Message:
-----------
compat/regex/regexec.c: Fix some sparse warnings

Sparse issues an "Using plain integer as NULL pointer" warning along
with two "symbol was not declared. Should it be static?" type warnings
for the 'merge_state_with_log' and 'find_recover_state' functions.

In order to suppress the warnings, we replace the use of '0' as a null
pointer constant with NULL and add the static modifier to the function
definitions.

Signed-off-by: Ramsay Jones <***@ramsay1.demon.co.uk>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 4fc8fb48e978b8563493d04069c2507b7fb0064a
https://github.com/msysgit/git/commit/4fc8fb48e978b8563493d04069c2507b7fb0064a
Author: Ramsay Jones <***@ramsay1.demon.co.uk>
Date: 2013-04-28 (Sun, 28 Apr 2013)

Changed paths:
M compat/fnmatch/fnmatch.c

Log Message:
-----------
compat/fnmatch/fnmatch.c: Fix a sparse error

Sparse issues the following error and warnings:

SP compat/fnmatch/fnmatch.c
.../fnmatch.c:144:17: warning: Using plain integer as NULL pointer
.../fnmatch.c:238:67: warning: Using plain integer as NULL pointer
.../fnmatch.c:303:40: error: too many arguments for function getenv

The error is caused by the extern declaration for the getenv function
not including the function prototype. Without the prototype, sparse
effectively sees the declaration as 'char *getenv(void)'. In order to
suppress the error, we simply include the function prototype.

In order to suppress the warnings, we include the <stddef.h> header
which provides an appropriate definition of the NULL macro, rather
than using the (inappropriate) default definition at fnmatch.c:132.

Signed-off-by: Ramsay Jones <***@ramsay1.demon.co.uk>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 241c957d899fe829bf5754e8589e357ce9496783
https://github.com/msysgit/git/commit/241c957d899fe829bf5754e8589e357ce9496783
Author: Ramsay Jones <***@ramsay1.demon.co.uk>
Date: 2013-04-28 (Sun, 28 Apr 2013)

Changed paths:
M Makefile
M compat/nedmalloc/malloc.c.h
M compat/nedmalloc/nedmalloc.c

Log Message:
-----------
compat/nedmalloc: Fix some sparse warnings

Sparse issues many "Using plain integer as NULL pointer" warnings
while checking nedmalloc.c (at least 98 such warnings before giving
up due to "too many warnings"). In addition, sparse issues some
"non-ANSI function declaration" type warnings for the symbols
'win32_getcurrentthreadid', 'malloc_stats' and 'malloc_footprint'.

In order to suppress the NULL pointer warnings, rather than replace
all uses of '0' as a null pointer representation with NULL, we add
-Wno-non-pointer-null to SPARSE_FLAGS while checking nedmalloc.c.

In order to suppress the "non-ANSI function declaration" warnings,
we simply include the missing 'empty parameter list' prototype (void)
in the function declarations.

Signed-off-by: Ramsay Jones <***@ramsay1.demon.co.uk>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: eec7fd8bc54eacf96d0988741a0d988f374c4db9
https://github.com/msysgit/git/commit/eec7fd8bc54eacf96d0988741a0d988f374c4db9
Author: Ramsay Jones <***@ramsay1.demon.co.uk>
Date: 2013-04-28 (Sun, 28 Apr 2013)

Changed paths:
M compat/nedmalloc/malloc.c.h

Log Message:
-----------
compat/nedmalloc: Fix compiler warnings on linux

On linux, when the build variable USE_NED_ALLOCATOR is set, gcc
issues the following warnings:

In file included from compat/nedmalloc/nedmalloc.c:63:
.../malloc.c.h: In function 'mmap_resize':
.../malloc.c.h:3762: warning: implicit declaration of function 'mremap'
.../malloc.c.h: In function 'sys_trim':
.../malloc.c.h:4195: warning: comparison between pointer and integer

The warnings are caused by the <sys/mman.h> header not enabling the
(conditional) declaration of the mremap() function. The declaration
can be enabled by defining the _GNU_SOURCE symbol prior to including
certain system header files. In particular, it may not be sufficient
to simply define _GNU_SOURCE just prior to including the <sys/mman.h>
header. (e.g. defining the symbol after including <sys/types.h> will
be completely ineffective.)

In order to suppress the warnings, we define the _GNU_SOURCE symbol
at the start of the malloc.c.h header file.

Signed-off-by: Ramsay Jones <***@ramsay1.demon.co.uk>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: ec535cc27e6c4f5e0b1d157e04f5511f166ecd9d
https://github.com/msysgit/git/commit/ec535cc27e6c4f5e0b1d157e04f5511f166ecd9d
Author: Ramsay Jones <***@ramsay1.demon.co.uk>
Date: 2013-04-28 (Sun, 28 Apr 2013)

Changed paths:
M compat/unsetenv.c

Log Message:
-----------
compat/unsetenv.c: Fix a sparse warning

The gitunsetenv function includes an (redundant) declaration of the
'environ' symbol, which is a pointer to the table of environment
variables. Unfortunately, on MinGW, this provokes sparse to issue
the following warning:

compat/unsetenv.c:5:20: warning: non-ANSI function declaration of \
function '__p__environ'

On MinGW, the <stdlib.h> header defines the 'environ' symbol as a
preprocessor macro (via _environ) which obtains the environ table
pointer via a call to the __p__environ() function.

In order to suppress the warning, we simply remove the redundant
declaration of the 'environ' symbol, since the symbol is already
declared correctly in <stdlib.h> (included via git-compat-util.h).

Signed-off-by: Ramsay Jones <***@ramsay1.demon.co.uk>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 9c3b051f931af9e3bcc765a4c83426e3be7de7f1
https://github.com/msysgit/git/commit/9c3b051f931af9e3bcc765a4c83426e3be7de7f1
Author: Ramsay Jones <***@ramsay1.demon.co.uk>
Date: 2013-04-28 (Sun, 28 Apr 2013)

Changed paths:
M compat/win32/pthread.c

Log Message:
-----------
compat/win32/pthread.c: Fix a sparse warning

Sparse issues a 'Using plain integer as NULL pointer' warning when
initializing an pthread_t structure with an '{ 0 }' initializer.
The first field of the pthread_t structure has type HANDLE (void *),
so in order to suppress the warning, we replace the initializer
expression with '{ NULL }'.

Signed-off-by: Ramsay Jones <***@ramsay1.demon.co.uk>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 1c31596a4b029e51cef1c520f32a3ecfbdea3c0a
https://github.com/msysgit/git/commit/1c31596a4b029e51cef1c520f32a3ecfbdea3c0a
Author: Ramsay Jones <***@ramsay1.demon.co.uk>
Date: 2013-04-28 (Sun, 28 Apr 2013)

Changed paths:
M compat/poll/poll.c

Log Message:
-----------
compat/poll/poll.c: Fix a sparse warning

Sparse issues an 'Using plain integer as NULL pointer' warning when
passing the constant '0' as the second parameter in the call to the
WSAEventSelect() function. The function parameter has a pointer type
(WSAEVENT, aka HANDLE, aka void *) so that, in order to suppress the
warning, we simply pass NULL for that parameter in the function call
expression.

Signed-off-by: Ramsay Jones <***@ramsay1.demon.co.uk>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 15b7f601fc976f7a112035fb0e91869eabe61c26
https://github.com/msysgit/git/commit/15b7f601fc976f7a112035fb0e91869eabe61c26
Author: Ramsay Jones <***@ramsay1.demon.co.uk>
Date: 2013-04-28 (Sun, 28 Apr 2013)

Changed paths:
M compat/win32mmap.c

Log Message:
-----------
compat/win32mmap.c: Fix some sparse warnings

Sparse issues two 'Using plain integer as NULL pointer' warnings
against the call to the CreateFileMapping() function. The warnings
relate to the second and sixth parameters, which both have pointer
type. In order to suppress the warnings, we simply pass the NULL
pointer, rather than '0', to those parameters in the function call.

Signed-off-by: Ramsay Jones <***@ramsay1.demon.co.uk>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 657b35f4bef7d25831607882ed7f1f2ced378eb7
https://github.com/msysgit/git/commit/657b35f4bef7d25831607882ed7f1f2ced378eb7
Author: Ramsay Jones <***@ramsay1.demon.co.uk>
Date: 2013-04-28 (Sun, 28 Apr 2013)

Changed paths:
M compat/mingw.c
M compat/mingw.h

Log Message:
-----------
compat/mingw.c: Fix some sparse warnings

Sparse issues the following warnings:
SP compat/mingw.c
compat/mingw.c:795:3: warning: symbol 'pinfo_t' was not declared. \
Should it be static?
compat/mingw.c:796:16: warning: symbol 'pinfo' was not declared. \
Should it be static?
compat/mingw.c:797:18: warning: symbol 'pinfo_cs' was not declared. \
Should it be static?
compat/mingw.c:1207:23: warning: Using plain integer as NULL pointer

In 'pinfo_t' variable, defined on line 795, seems to have been a
mistake (a missing typedef keyword?), so we simply remove it.

The 'pinfo' variable does not require more than file scope, so we
simply add the static modifier to the declaration.

The 'pinfo_cs' variable, in contrast, requires initialisation in the
mingw replacement main() function, so we add an extern declaration to
the compat/mingw.h header file.

The remaining warning is suppressed by replacing the rhs of the
pointer assignment with the NULL pointer literal.

Signed-off-by: Ramsay Jones <***@ramsay1.demon.co.uk>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 84d32bf7678259c08406571cd6ce4b7a6724dcba
https://github.com/msysgit/git/commit/84d32bf7678259c08406571cd6ce4b7a6724dcba
Author: Ramsay Jones <***@ramsay1.demon.co.uk>
Date: 2013-04-28 (Sun, 28 Apr 2013)

Changed paths:
M compat/mingw.h
M credential-store.c
M fast-import.c
M git.c
M remote-testsvn.c
M test-chmtime.c
M test-index-version.c
M test-mergesort.c
M test-parse-options.c
M test-subprocess.c

Log Message:
-----------
sparse: Fix mingw_main() argument number/type errors

Sparse issues 68 errors (two errors for each main() function) such
as the following:

SP git.c
git.c:510:5: error: too many arguments for function mingw_main
git.c:510:5: error: symbol 'mingw_main' redeclared with different type \
(originally declared at git.c:510) - different argument counts

The errors are caused by the 'main' macro used by the MinGW build
to provide a replacement main() function. The original main function
is effectively renamed to 'mingw_main' and is called from the new
main function. The replacement main is used to execute certain actions
common to all git programs on MinGW (e.g. ensure the standard I/O
streams are in binary mode).

In order to suppress the errors, we change the macro to include the
parameters in the declaration of the mingw_main function.

Unfortunately, this change provokes both sparse and gcc to complain
about 9 calls to mingw_main(), such as the following:

CC git.o
git.c: In function 'main':
git.c:510: warning: passing argument 2 of 'mingw_main' from \
incompatible pointer type
git.c:510: note: expected 'const char **' but argument is of \
type 'char **'

In order to suppress these warnings, since both of the main
functions need to be declared with the same prototype, we
change the declaration of the 9 main functions, thus:

int main(int argc, char **argv)

Signed-off-by: Ramsay Jones <***@ramsay1.demon.co.uk>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 85d501ce63d3c3b1331f9e51252c128c95e0adf1
https://github.com/msysgit/git/commit/85d501ce63d3c3b1331f9e51252c128c95e0adf1
Author: Johannes Sixt <***@viscovery.net>
Date: 2013-04-28 (Sun, 28 Apr 2013)

Changed paths:
M git-remote-testgit

Log Message:
-----------
git-remote-testgit: further remove some bashisms

Signed-off-by: Johannes Sixt <***@kdbg.org>


Commit: 709a957d9493cbdd457d02bfada067c9b3ccc253
https://github.com/msysgit/git/commit/709a957d9493cbdd457d02bfada067c9b3ccc253
Author: Junio C Hamano <***@pobox.com>
Date: 2013-04-28 (Sun, 28 Apr 2013)

Changed paths:
M .gitignore
M Makefile
R git-remote-testgit
A git-remote-testgit.sh
M t/t5801-remote-helpers.sh

Log Message:
-----------
git-remote-testgit: build it to run under $SHELL_PATH

Just like all the other shell scripts, replace the shebang line to
make sure it runs under the shell the user specified.

As this no longer depends on bashisms, t5801 does not have to say
bash must be available somewhere on the system.

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


Commit: af04fa2a78af3f4dc07bdc3e3018ccf3baa88c20
https://github.com/msysgit/git/commit/af04fa2a78af3f4dc07bdc3e3018ccf3baa88c20
Author: Michael Heemskerk <***@atlassian.com>
Date: 2013-04-28 (Sun, 28 Apr 2013)

Changed paths:
M Documentation/technical/pack-protocol.txt
M upload-pack.c

Log Message:
-----------
upload-pack: ignore 'shallow' lines with unknown obj-ids

When the client sends a 'shallow' line for an object that the server does
not have, the server currently dies with the error: "did not find object
for shallow <obj-id>". The client may have truncated the history at
the commit by fetching shallowly from a different server, or the commit
may have been garbage collected by the server. In either case, this
unknown commit is not relevant for calculating the pack that is to be
sent and can be safely ignored, and it is not used when recomputing where
the updated history of the client is cauterised.

The documentation in technical/pack-protocol.txt has been updated to
remove the restriction that "Clients MUST NOT mention an obj-id which it
does not know exists on the server". This requirement is not realistic
because clients cannot know whether an object has been garbage collected
by the server.

Signed-off-by: Michael Heemskerk <***@atlassian.com>
Reviewed-by: Nguyễn Thái Ngọc Duy <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 2d14e13c56a407eea6084ff2d5713a8d23d337f5
https://github.com/msysgit/git/commit/2d14e13c56a407eea6084ff2d5713a8d23d337f5
Author: John Keeping <***@keeping.me.uk>
Date: 2013-04-29 (Mon, 29 Apr 2013)

Changed paths:
M Makefile
M t/test-lib.sh
M t/valgrind/analyze.sh

Log Message:
-----------
test output: respect $TEST_OUTPUT_DIRECTORY

Most test results go in $TEST_OUTPUT_DIRECTORY, but the output files for
tests run with --tee or --valgrind just use bare "test-results".
Changes these so that they do respect $TEST_OUTPUT_DIRECTORY.

As a result of this, the valgrind/analyze.sh script may no longer
inspect the correct files so it is also updated to respect
$TEST_OUTPUT_DIRECTORY by adding it to GIT-BUILD-OPTIONS. This may be a
regression for people who have TEST_OUTPUT_DIRECTORY in their config.mak
but want to override it in the environment, but this change merely
brings it into line with GIT_TEST_OPTS which already cannot be
overridden if it is specified in config.mak.

Signed-off-by: John Keeping <***@keeping.me.uk>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: b96114edb36e16d214af1e7945a1d19b8a5e1686
https://github.com/msysgit/git/commit/b96114edb36e16d214af1e7945a1d19b8a5e1686
Author: Adam Spiers <***@adamspiers.org>
Date: 2013-04-29 (Mon, 29 Apr 2013)

Changed paths:
M t/t0008-ignores.sh

Log Message:
-----------
t0008: use named pipe (FIFO) to test check-ignore streaming

sleeps in the check-ignore test suite are not ideal since they can
fail when the system is under load, or when a tool like valgrind is
used which drastically alters the timing. Therefore we replace them
with a more robust solution using a named pipe (FIFO).

Thanks to Jeff King for coming up with the redirection wizardry
required to make this work.

http://article.gmane.org/gmane.comp.version-control.git/220916

Signed-off-by: Adam Spiers <***@adamspiers.org>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 3212d56ce528a86170f7809659f80a8769a5875f
https://github.com/msysgit/git/commit/3212d56ce528a86170f7809659f80a8769a5875f
Author: John Keeping <***@keeping.me.uk>
Date: 2013-05-01 (Wed, 01 May 2013)

Changed paths:
M contrib/subtree/git-subtree.sh

Log Message:
-----------
contrib/subtree: don't delete remote branches if split fails

When using "git subtree push" to split out a subtree and push it to a
remote repository, we do not detect if the split command fails which
causes the LHS of the refspec to be empty, deleting the remote branch.

Fix this by pulling the result of the split command into a variable so
that we can die if the command fails.

Reported-by: Steffen Jaeckel <***@stzedn.de>
Signed-off-by: John Keeping <***@keeping.me.uk>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 89df9c84e478b7e6055a93cf45cf37027d25b3e4
https://github.com/msysgit/git/commit/89df9c84e478b7e6055a93cf45cf37027d25b3e4
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-05-01 (Wed, 01 May 2013)

Changed paths:
M refs.c
M refs.h

Log Message:
-----------
refs: document flags constants REF_*

Document the bits that can appear in the "flags" parameter passed to
an each_ref_function and/or in the ref_entry::flag field.

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


Commit: 6c6f58dfd26c0643e38d7ea754b6d4173573a1f6
https://github.com/msysgit/git/commit/6c6f58dfd26c0643e38d7ea754b6d4173573a1f6
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-05-01 (Wed, 01 May 2013)

Changed paths:
M refs.c

Log Message:
-----------
refs: document the fields of struct ref_value

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


Commit: fcce17039cb94e6490a65a846b2375081785ce9b
https://github.com/msysgit/git/commit/fcce17039cb94e6490a65a846b2375081785ce9b
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-05-01 (Wed, 01 May 2013)

Changed paths:
M refs.c

Log Message:
-----------
refs: document do_for_each_ref() and do_one_ref()

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


Commit: 7d76fdc8299639096ace153aef0f0b96dcc5b308
https://github.com/msysgit/git/commit/7d76fdc8299639096ace153aef0f0b96dcc5b308
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-05-01 (Wed, 01 May 2013)

Changed paths:
M refs.c

Log Message:
-----------
refs: document how current_ref is used

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


Commit: 3feb4f0cfb7597a98d6e650abc8e9a1a9a0d65b5
https://github.com/msysgit/git/commit/3feb4f0cfb7597a98d6e650abc8e9a1a9a0d65b5
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-05-01 (Wed, 01 May 2013)

Changed paths:
M refs.c

Log Message:
-----------
refs: define constant PEELED_LINE_LENGTH

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


Commit: b830f6c66b2fd635d9cfa318d047917ea987a719
https://github.com/msysgit/git/commit/b830f6c66b2fd635d9cfa318d047917ea987a719
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-05-01 (Wed, 01 May 2013)

Changed paths:
M refs.c

Log Message:
-----------
do_for_each_ref_in_dirs(): remove dead code

There is no way to drop out of the while loop. This code has been
dead since 432ad41e.

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


Commit: 63331581aba9537a83d2e9fe21ffab305d9f8ad6
https://github.com/msysgit/git/commit/63331581aba9537a83d2e9fe21ffab305d9f8ad6
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-05-01 (Wed, 01 May 2013)

Changed paths:
M refs.c

Log Message:
-----------
get_packed_ref(): return a ref_entry

Instead of copying the reference's SHA1 into a caller-supplied
variable, just return the ref_entry itself (or NULL if there is no
such entry). This change will allow the function to be used from
elsewhere.

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


Commit: f361baeb71fbe9e6fe02f53243673e194265c4cc
https://github.com/msysgit/git/commit/f361baeb71fbe9e6fe02f53243673e194265c4cc
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-05-01 (Wed, 01 May 2013)

Changed paths:
M refs.c

Log Message:
-----------
peel_ref(): use function get_packed_ref()

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


Commit: 7618fd808aab2b7232abea04f1e7d8aa0ca2a476
https://github.com/msysgit/git/commit/7618fd808aab2b7232abea04f1e7d8aa0ca2a476
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-05-01 (Wed, 01 May 2013)

Changed paths:
M refs.c

Log Message:
-----------
repack_without_ref(): use function get_packed_ref()

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


Commit: 662428f4e98a740800659081910ef8b1ef3940fa
https://github.com/msysgit/git/commit/662428f4e98a740800659081910ef8b1ef3940fa
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-05-01 (Wed, 01 May 2013)

Changed paths:
M refs.c

Log Message:
-----------
refs: extract a function ref_resolves_to_object()

It is a nice unit of work and soon will be needed from multiple
locations.

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


Commit: cb2ae1c418eae2cf2c632ca78a14861ff5f3da68
https://github.com/msysgit/git/commit/cb2ae1c418eae2cf2c632ca78a14861ff5f3da68
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-05-01 (Wed, 01 May 2013)

Changed paths:
M refs.c

Log Message:
-----------
refs: extract function peel_object()

It is a nice, logical unit of work, and putting it in a function
removes the need to use a goto in peel_ref(). Soon it will also have
other uses.

The algorithm is unchanged.

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


Commit: 68cf87034402500f0c5dfb8d618b98b4e09895a7
https://github.com/msysgit/git/commit/68cf87034402500f0c5dfb8d618b98b4e09895a7
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-05-01 (Wed, 01 May 2013)

Changed paths:
M refs.c

Log Message:
-----------
peel_object(): give more specific information in return value

Instead of just returning a success/failure bit, return an enumeration
value that explains the reason for any failure. This will come in
handy shortly.

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


Commit: 2312a7932080f17c2847ec3ce5dddbc65c2e0b41
https://github.com/msysgit/git/commit/2312a7932080f17c2847ec3ce5dddbc65c2e0b41
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-05-01 (Wed, 01 May 2013)

Changed paths:
M refs.c
M refs.h

Log Message:
-----------
peel_ref(): fix return value for non-peelable, not-current reference

The old version was inconsistent: when a reference was
REF_KNOWS_PEELED but with a null peeled value, it returned non-zero
for the current reference but zero for other references. Change the
behavior for non-current references to match that of current_ref,
which is what callers expect. Document the behavior.

Current callers only call peel_ref() from within a for_each_ref-style
iteration and only for the current ref; therefore, the buggy code path
was never reached.

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


Commit: 9a489f3c17d6c974b18c47cf406404ca2a721c87
https://github.com/msysgit/git/commit/9a489f3c17d6c974b18c47cf406404ca2a721c87
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-05-01 (Wed, 01 May 2013)

Changed paths:
M refs.c

Log Message:
-----------
refs: extract a function peel_entry()

Peel the entry, and as a side effect store the peeled value in the
entry. Use this function from two places in peel_ref(); a third
caller will be added soon.

Please note that this change can lead to ref_entries for unpacked refs
being peeled. This has no practical benefit but is harmless.

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


Commit: 624cac351478be90bf02a753f9de3e7dc80ca300
https://github.com/msysgit/git/commit/624cac351478be90bf02a753f9de3e7dc80ca300
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-05-01 (Wed, 01 May 2013)

Changed paths:
M refs.c

Log Message:
-----------
refs: change the internal reference-iteration API

Establish an internal API for iterating over references, which gives
the callback functions direct access to the ref_entry structure
describing the reference. (Do not change the iteration API that is
exposed outside of the module.)

Define a new internal callback signature

int each_ref_entry_fn(struct ref_entry *entry, void *cb_data)

Change do_for_each_ref_in_dir() and do_for_each_ref_in_dirs() to
accept each_ref_entry_fn callbacks, and rename them to
do_for_each_entry_in_dir() and do_for_each_entry_in_dirs(),
respectively. Adapt their callers accordingly.

Add a new function do_for_each_entry() analogous to do_for_each_ref()
but using the new callback style.

Change do_one_ref() into an each_ref_entry_fn that does some
bookkeeping and then calls a wrapped each_ref_fn.

Reimplement do_for_each_ref() in terms of do_for_each_entry(), using
do_one_ref() as an adapter.

Please note that the responsibility for setting current_ref remains in
do_one_ref(), which means that current_ref is *not* set when iterating
over references via the new internal API. This is not a disadvantage,
because current_ref is not needed by callers of the internal API (they
receive a pointer to the current ref_entry anyway). But more
importantly, this change prevents peel_ref() from returning invalid
results in the following scenario:

When iterating via the external API, the iteration always includes
both packed and loose references, and in particular never presents a
packed ref if there is a loose ref with the same name. The internal
API, on the other hand, gives the option to iterate over only the
packed references. During such an iteration, there is no check
whether the packed ref might be hidden by a loose ref of the same
name. But until now the packed ref was recorded in current_ref during
the iteration. So if peel_ref() were called with the reference name
corresponding to current ref, it would return the peeled version of
the packed ref even though there might be a loose ref that peels to a
different value. This scenario doesn't currently occur in the code,
but fix it to prevent things from breaking in a very confusing way in
the future.

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


Commit: 0a0b8d1531feced259223314238aa43cb8ca2ce4
https://github.com/msysgit/git/commit/0a0b8d1531feced259223314238aa43cb8ca2ce4
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-05-01 (Wed, 01 May 2013)

Changed paths:
M t/t3210-pack-refs.sh

Log Message:
-----------
t3210: test for spurious error messages for dangling packed refs

A packed reference can be overridden by a loose reference, in which
case the packed reference is obsolete and is never used. The object
pointed to by such a reference can be garbage collected. Since
d66da478f2, this could lead to the emission of a spurious error
message:

error: refs/heads/master does not point to a valid object!

The error is generated by repack_without_ref() if there is an obsolete
dangling packed reference in packed-refs when the packed-refs file has
to be rewritten due to the deletion of another packed reference. Add
a failing test demonstrating this problem and some passing tests of
related scenarios.

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


Commit: ab292bc4f30dd29d3d111b040b9e982f20b9ceb7
https://github.com/msysgit/git/commit/ab292bc4f30dd29d3d111b040b9e982f20b9ceb7
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-05-01 (Wed, 01 May 2013)

Changed paths:
M refs.c
M t/t3210-pack-refs.sh

Log Message:
-----------
repack_without_ref(): silence errors for dangling packed refs

Stop emitting an error message when deleting a packed reference if we
find another dangling packed reference that is overridden by a loose
reference. See the previous commit for a longer explanation of the
issue.

We have to be careful to make sure that the invalid packed reference
really *is* overridden by a loose reference; otherwise what we have
found is repository corruption, which we *should* report.

Please note that this approach is vulnerable to a race condition
similar to the race conditions already known to affect packed
references [1]:

* Process 1 tries to peel packed reference X as part of deleting
another packed reference. It discovers that X does not refer to a
valid object (because the object that it referred to has been
garbage collected).

* Process 2 tries to delete reference X. It starts by deleting the
loose reference X.

* Process 1 checks whether there is a loose reference X. There is not
(it has just been deleted by process 2), so process 1 reports a
spurious error "X does not point to a valid object!"

The worst case seems relatively harmless, and the fix is identical to
the fix that will be needed for the other race conditions (namely
holding a lock on the packed-refs file during *all* reference
deletions), so we leave the cleaning up of all of them as a future
project.

[1] http://thread.gmane.org/gmane.comp.version-control.git/211956

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


Commit: 9fc0a64806aa72ca7ef1c20468ffcef5c86978b8
https://github.com/msysgit/git/commit/9fc0a64806aa72ca7ef1c20468ffcef5c86978b8
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-05-01 (Wed, 01 May 2013)

Changed paths:
M refs.c

Log Message:
-----------
search_ref_dir(): return an index rather than a pointer

Change search_ref_dir() to return the index of the sought entry (or -1
on error) rather than a pointer to the entry. This will make it more
natural to use the function for removing an entry from the list.

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


Commit: 506a760db8c3fd510d7ebe70c189672f185ee108
https://github.com/msysgit/git/commit/506a760db8c3fd510d7ebe70c189672f185ee108
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-05-01 (Wed, 01 May 2013)

Changed paths:
M refs.c

Log Message:
-----------
refs: change how packed refs are deleted

Add a function remove_ref(), which removes a single entry from a
reference cache.

Use this function to reimplement repack_without_ref(). The old
version iterated over all refs, packing all of them except for the one
to be deleted, then discarded the entire packed reference cache. The
new version deletes the doomed reference from the cache *before*
iterating.

This has two advantages:

* the code for writing packed-refs becomes simpler, because it doesn't
have to exclude one of the references.

* it is no longer necessary to discard the packed refs cache after
deleting a reference: symbolic refs cannot be packed, so packed
references cannot depend on each other, so the rest of the packed
refs cache remains valid after a reference is deleted.

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


Commit: c995de61cd218f7ce5119d340ac7d8282b2e2d73
https://github.com/msysgit/git/commit/c995de61cd218f7ce5119d340ac7d8282b2e2d73
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-05-01 (Wed, 01 May 2013)

Changed paths:
M t/t3211-peel-ref.sh

Log Message:
-----------
t3211: demonstrate loss of peeled refs if a packed ref is deleted

Add a test that demonstrates that the peeled values recorded in
packed-refs are lost if a packed ref is deleted. (The code in
repack_without_ref() doesn't even attempt to write peeled refs.) This
will be fixed in a moment.

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


Commit: 694b7a1999fa331e00ed9297f3b6b01f7da7a104
https://github.com/msysgit/git/commit/694b7a1999fa331e00ed9297f3b6b01f7da7a104
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-05-01 (Wed, 01 May 2013)

Changed paths:
M refs.c
M t/t3211-peel-ref.sh

Log Message:
-----------
repack_without_ref(): write peeled refs in the rewritten file

When a reference that existed in the packed-refs file is deleted, the
packed-refs file must be rewritten. Previously, the file was
rewritten without any peeled refs, even if the file contained peeled
refs when it was read. This was not a bug, because the packed-refs
file header didn't claim that the file contained peeled values. But
it had a performance cost, because the repository would lose the
benefit of having precomputed peeled references until pack-refs was
run again.

Teach repack_without_ref() to write peeled refs to the packed-refs
file (regardless of whether they were present in the old version of
the file).

This means that if the old version of the packed-refs file was not
fully peeled, then repack_without_ref() will have to peel references.
To avoid the expense of reading lots of loose references, we take two
shortcuts relative to pack-refs:

* If the peeled value of a reference is already known (i.e., because
it was read from the old version of the packed-refs file), then
output that peeled value again without any checks. This is the
usual code path and should avoid any noticeable overhead. (This is
different than pack-refs, which always re-peels references.)

* We don't verify that the packed ref is still current. It could be
that a packed references is overridden by a loose reference, in
which case the packed ref is no longer needed and might even refer
to an object that has been garbage collected. But we don't check;
instead, we just try to peel all references. If peeling is
successful, the peeled value is written out (even though it might
not be needed any more); if not, then the reference is silently
omitted from the output.

The extra overhead of peeling references in repack_without_ref()
should only be incurred the first time the packed-refs file is written
by a version of Git that knows about the "fully-peeled" attribute.

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


Commit: fec3137ffcc49d58e6388b1c61da902b031e01ca
https://github.com/msysgit/git/commit/fec3137ffcc49d58e6388b1c61da902b031e01ca
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-05-01 (Wed, 01 May 2013)

Changed paths:
M refs.c

Log Message:
-----------
refs: extract a function write_packed_entry()

Extract the I/O code from the "business logic" in repack_ref_fn().
Later there will be another caller for this function.

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


Commit: 0c0c0bd25e4bea1fb1f48e8bca3ce9b68d69ee93
https://github.com/msysgit/git/commit/0c0c0bd25e4bea1fb1f48e8bca3ce9b68d69ee93
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-05-01 (Wed, 01 May 2013)

Changed paths:
M pack-refs.c

Log Message:
-----------
pack-refs: rename handle_one_ref() to pack_one_ref()

This code is about to be moved, so name the function more
distinctively.

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


Commit: 32d462cea80cd52b2c3fa0d538aba7fcf079ba77
https://github.com/msysgit/git/commit/32d462cea80cd52b2c3fa0d538aba7fcf079ba77
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-05-01 (Wed, 01 May 2013)

Changed paths:
M Makefile
M builtin/clone.c
M builtin/pack-refs.c
R pack-refs.c
R pack-refs.h
M refs.c
M refs.h

Log Message:
-----------
pack-refs: merge code from pack-refs.{c,h} into refs.{c,h}

pack-refs.c doesn't contain much code, and the code it does contain is
closely related to reference handling. Moreover, there is some
duplication between pack_refs() and repack_without_ref(). Therefore,
merge pack-refs.c into refs.c and pack-refs.h into refs.h.

The code duplication will be addressed in future commits.

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


Commit: 3b4ae6d5023095114692d1e2e1a213611fec9314
https://github.com/msysgit/git/commit/3b4ae6d5023095114692d1e2e1a213611fec9314
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-05-01 (Wed, 01 May 2013)

Changed paths:
M refs.c

Log Message:
-----------
pack_one_ref(): rename "path" parameter to "refname"

Make this function conform to the naming convention established in
65385ef7d4 for the rest of the refs.c file.

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


Commit: d9470330379f5899dd117b7c720e67d278fed9e2
https://github.com/msysgit/git/commit/d9470330379f5899dd117b7c720e67d278fed9e2
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-05-01 (Wed, 01 May 2013)

Changed paths:
M refs.c

Log Message:
-----------
refs: use same lock_file object for both ref-packing functions

Use a single struct lock_file for both pack_refs() and
repack_without_ref().

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


Commit: 12e77559ec4bf863d3703a25ab79298d5ff89b3b
https://github.com/msysgit/git/commit/12e77559ec4bf863d3703a25ab79298d5ff89b3b
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-05-01 (Wed, 01 May 2013)

Changed paths:
M refs.c

Log Message:
-----------
pack_refs(): change to use do_for_each_entry()

pack_refs() was not using any of the extra features of for_each_ref(),
so change it to use do_for_each_entry(). This also gives it access to
the ref_entry and in particular its peeled field, which will be taken
advantage of in the next commit.

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


Commit: 8d3725b96fa6878fabe5ec715ff7b9f263481ea1
https://github.com/msysgit/git/commit/8d3725b96fa6878fabe5ec715ff7b9f263481ea1
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-05-01 (Wed, 01 May 2013)

Changed paths:
M refs.c

Log Message:
-----------
refs: inline function do_not_prune()

Function do_not_prune() was redundantly checking REF_ISSYMREF, which
was already tested at the top of pack_one_ref(), so remove that check.
And the rest was trivial, so inline the function.

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


Commit: f85354b5c7b800912743927f4abba022444163fd
https://github.com/msysgit/git/commit/f85354b5c7b800912743927f4abba022444163fd
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-05-01 (Wed, 01 May 2013)

Changed paths:
M refs.c

Log Message:
-----------
pack_one_ref(): use function peel_entry()

Change pack_one_ref() to call peel_entry() rather than using its own
code for peeling references. Aside from sharing code, this lets it
take advantage of the optimization introduced by 6c4a060d7d.

Please note that we *could* use any peeled values that happen to
already be stored in the ref_entries, which would avoid some object
lookups for references that were already packed. But doing so would
also propagate any peeling errors across runs of "git pack-refs" and
give no way to recover from such errors. And "git pack-refs" isn't
run often enough that the performance cost is a problem. So instead,
add a new option to peel_entry() to force the entry to be re-peeled,
and call it with that option set.

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


Commit: 0f29920f1e0ce00aaf867fdd9ad2174011179f47
https://github.com/msysgit/git/commit/0f29920f1e0ce00aaf867fdd9ad2174011179f47
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-05-01 (Wed, 01 May 2013)

Changed paths:
M refs.c

Log Message:
-----------
pack_one_ref(): use write_packed_entry() to do the writing

Change pack_refs() to work with a file descriptor instead of a FILE*
(making the file-locking code less awkward) and use
write_packed_entry() to do the writing.

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


Commit: b2a8226d6360fc6e19af134236b3dd11f9d2040e
https://github.com/msysgit/git/commit/b2a8226d6360fc6e19af134236b3dd11f9d2040e
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-05-01 (Wed, 01 May 2013)

Changed paths:
M refs.c

Log Message:
-----------
pack_one_ref(): do some cheap tests before a more expensive one

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


Commit: 65cf102bb09804929261e1f6cbd2ff5e0af9f301
https://github.com/msysgit/git/commit/65cf102bb09804929261e1f6cbd2ff5e0af9f301
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-05-01 (Wed, 01 May 2013)

Changed paths:
M refs.c

Log Message:
-----------
refs: change do_for_each_*() functions to take ref_cache arguments

Change the callers convert submodule names into ref_cache pointers.

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


Commit: 9da31cb027aa5dac3d4914a88faa8830f0578c88
https://github.com/msysgit/git/commit/9da31cb027aa5dac3d4914a88faa8830f0578c88
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-05-01 (Wed, 01 May 2013)

Changed paths:
M refs.c

Log Message:
-----------
refs: handle the main ref_cache specially

Hold the ref_cache instance for the main repository in a dedicated,
statically-allocated instance to avoid the need for a function call
and a linked-list traversal when it is needed.

Suggested by: Heiko Voigt <***@hvoigt.net>

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


Commit: 9a414486d9f0325c3663210471e4673ed0cd862c
https://github.com/msysgit/git/commit/9a414486d9f0325c3663210471e4673ed0cd862c
Author: Jeff King <***@peff.net>
Date: 2013-05-02 (Thu, 02 May 2013)

Changed paths:
M object.c

Log Message:
-----------
lookup_object: prioritize recently found objects

The lookup_object function is backed by a hash table of all
objects we have seen in the program. We manage collisions
with a linear walk over the colliding entries, checking each
with hashcmp(). The main cost of lookup is in these
hashcmp() calls; finding our item in the first slot is
cheaper than finding it in the second slot, which is cheaper
than the third, and so on.

If we assume that there is some locality to the object
lookups (e.g., if X and Y collide, and we have just looked
up X, the next lookup is more likely to be for X than for
Y), then we can improve our average lookup speed by checking
X before Y.

This patch does so by swapping a found item to the front of
the collision chain. The p0001 perf test reveals that this
does indeed exploit locality in the case of "rev-list --all
--objects":

Test origin this tree
-------------------------------------------------------------------------
0001.1: rev-list --all 0.40(0.38+0.02) 0.40(0.36+0.03) +0.0%
0001.2: rev-list --all --objects 2.24(2.17+0.05) 1.86(1.79+0.05) -17.0%

This is not surprising, as the full object traversal will
hit the same tree entries over and over (e.g., for every
commit that doesn't change "Documentation/", we will have to
look up the same sha1 just to find out that we already
processed it).

The reason why this technique works (and does not violate
any properties of the hash table) is subtle and bears some
explanation. Let's imagine we get a lookup for sha1 `X`, and
it hashes to bucket `i` in our table. That stretch of the
table may look like:

index | i-1 | i | i+1 | i+2 |
-----------------------------------
entry ... | A | B | C | X | ...
-----------------------------------

We start our probe at i, see that B does not match, nor does
C, and finally find X. There may be multiple C's in the
middle, but we know that there are no empty slots (or else
we would not find X at all).

We do not know the original index of B; it may be `i`, or it
may be less than i (e.g., if it were `i-1`, it would collide
with A and spill over into the `i` bucket). So it is
acceptable for us to move it to the right of a contiguous
stretch of entries (because we will find it from a linear
walk starting anywhere at `i` or before), but never to the
left (if we moved it to `i-1`, we would miss it when
starting our walk at `i`).

We do know the original index of X; it is `i`, so it is safe
to place it anywhere in the contiguous stretch between `i`
and where we found it (`i+2` in the this case).

This patch does a pure swap; after finding X in the
situation above, we would end with:

index | i-1 | i | i+1 | i+2 |
-----------------------------------
entry ... | A | X | C | B | ...
-----------------------------------

We could instead bump X into the `i` slot, and then shift
the whole contiguous chain down by one, resulting in:

index | i-1 | i | i+1 | i+2 |
-----------------------------------
entry ... | A | X | B | C | ...
-----------------------------------

That puts our chain in true most-recently-used order.
However, experiments show that it is not any faster (and in
fact, is slightly slower due to the extra manipulation).

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


Commit: 71d5f938910120275484aac0b2e1c27cdf8b5cf3
https://github.com/msysgit/git/commit/71d5f938910120275484aac0b2e1c27cdf8b5cf3
Author: Michael Heemskerk <***@atlassian.com>
Date: 2013-05-02 (Thu, 02 May 2013)

Changed paths:
M t/t5500-fetch-pack.sh

Log Message:
-----------
t5500: add test for fetching with an unknown 'shallow'

When the client sends a 'shallow' line for an object that the server does
not have, the server should just ignore it and let the client keep that
unknown shallow boundary.

Signed-off-by: Michael Heemskerk <***@atlassian.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: b3e0c4ed07e9f76e501c67c3677776e4f257d274
https://github.com/msysgit/git/commit/b3e0c4ed07e9f76e501c67c3677776e4f257d274
Author: John Keeping <***@keeping.me.uk>
Date: 2013-05-06 (Mon, 06 May 2013)

Changed paths:
M t/Makefile

Log Message:
-----------
t/Makefile: don't define TEST_RESULTS_DIRECTORY recursively

Commit 54bb901 (t/Makefile: fix result handling with
TEST_OUTPUT_DIRECTORY - 2013-04-26) incorrectly defined
TEST_RESULTS_DIRECTORY relative to itself, when it should be relative to
TEST_OUTPUT_DIRECTORY. Fix this.

Signed-off-by: John Keeping <***@keeping.me.uk>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 6f4dd60d0713980cf976f569eb83850f9a28fe3c
https://github.com/msysgit/git/commit/6f4dd60d0713980cf976f569eb83850f9a28fe3c
Author: Junio C Hamano <***@pobox.com>
Date: 2013-05-06 (Mon, 06 May 2013)

Changed paths:
M config.c

Log Message:
-----------
deprecate core.statinfo at Git 2.0 boundary

c08e4d5b5cfa (Enable minimal stat checking, 2013-01-22) advertised
the configuration variable core.checkstat in the documentation and
its log message, but the code expected core.statinfo instead.

For now, add core.checkstat, and warn people who have core.statinfo
in their configuration file that we will remove it in Git 2.0.

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


Commit: e6812cfa9aba69a8c9d83b0710291b27bff0f7a3
https://github.com/msysgit/git/commit/e6812cfa9aba69a8c9d83b0710291b27bff0f7a3
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-07 (Tue, 07 May 2013)

Changed paths:
M builtin/fast-export.c

Log Message:
-----------
fast-export: do not parse non-commit objects while reading marks file

We read from the marks file and keep only marked commits, but in
order to find the type of object, we are parsing the whole thing,
which is slow, specially in big repositories with lots of big files.

There's no need for that, we can query the object information with
sha1_object_info().

Before this, loading the objects of a fresh emacs import, with 260598
blobs took 14 minutes, after this patch, it takes 3 seconds.

This is the way fast-import does it. Also die if the object is not
found (like fast-import).

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


Commit: 47bd9bf82daeac71b28a5a697ecc44e70b205e18
https://github.com/msysgit/git/commit/47bd9bf82daeac71b28a5a697ecc44e70b205e18
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-07 (Tue, 07 May 2013)

Changed paths:
M builtin/fast-export.c

Log Message:
-----------
fast-export: don't parse commits while reading marks file

We don't need the parsed objects at this point, merely the
information that they have marks.

Seems to be three times faster in my setup with lots of objects.

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


Commit: 60003340cda05f5ecd79ee8522b21eda038b994b
https://github.com/msysgit/git/commit/60003340cda05f5ecd79ee8522b21eda038b994b
Author: Nguyễn Thái Ngọc Duy <***@gmail.com>
Date: 2013-05-07 (Tue, 07 May 2013)

Changed paths:
M Documentation/urls.txt
M builtin/clone.c
M connect.c
M t/t5601-clone.sh

Log Message:
-----------
clone: allow cloning local paths with colons in them

Usually "foo:bar" is interpreted as an ssh url. This patch allows to
clone from such paths by putting at least one slash before the colon
(i.e. /path/to/foo:bar or just ./foo:bar).

file://foo:bar should also work, but local optimizations are off in
that case, which may be unwanted. While at there, warn the users about
--local being ignored in this case.

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


Commit: 45c5d4a56bc3ef3b5088a07bdab12cef8163e61d
https://github.com/msysgit/git/commit/45c5d4a56bc3ef3b5088a07bdab12cef8163e61d
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-07 (Tue, 07 May 2013)

Changed paths:
M builtin/fast-export.c
M fast-import.c

Log Message:
-----------
fast-{import,export}: use get_sha1_hex() to read from marks file

It's wrong to call get_sha1() if they should be SHA-1s, plus
inefficient.

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


Commit: 1bc6d022b731e4cf69de42fea75c5f6366d2dbae
https://github.com/msysgit/git/commit/1bc6d022b731e4cf69de42fea75c5f6366d2dbae
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-07 (Tue, 07 May 2013)

Changed paths:
M t/t1508-at-combinations.sh

Log Message:
-----------
tests: at-combinations: simplify setup

The test is setting up an upstream branch, but there's a much simpler
way of doing that: git branch -u.

Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Felipe Contreras <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: c8a81e90acda9da55bae627928e80b04e98980fc
https://github.com/msysgit/git/commit/c8a81e90acda9da55bae627928e80b04e98980fc
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-08 (Wed, 08 May 2013)

Changed paths:
M t/t1508-at-combinations.sh

Log Message:
-----------
tests: at-combinations: check ref names directly

Some committishes might point to the same commit, but through a
different ref, that's why it's better to check directly for the ref,
rather than the commit message.

We can do that by calling rev-parse --symbolic-full-name, and to
differentiate the old from the new behavior we add an extra argument to
the check() helper.

Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Felipe Contreras <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 89d5dd4e2f47186687d70223847cec8ec3fb16dd
https://github.com/msysgit/git/commit/89d5dd4e2f47186687d70223847cec8ec3fb16dd
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-08 (Wed, 08 May 2013)

Changed paths:
M t/t1508-at-combinations.sh

Log Message:
-----------
tests: at-combinations: improve nonsense()

In some circumstances 'git log' might fail, but not because the @
parsing failed. For example: 'git rev-parse' might succeed and return a
bad object, and then 'git log' would fail.

The layer we want to test is revision parsing, so let's test that
directly.

Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Felipe Contreras <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: f58dc19e571bea9b7b079041198c21ec15ac3cea
https://github.com/msysgit/git/commit/f58dc19e571bea9b7b079041198c21ec15ac3cea
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-05-08 (Wed, 08 May 2013)

Changed paths:
M t/t1508-at-combinations.sh

Log Message:
-----------
tests: at-combinations: increase coverage

Add more tests exercising documented functionality.

[fc: commit message and extra tests]

Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Felipe Contreras <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 723b74ee3e09bfb19b43218da19c52f805bb69ae
https://github.com/msysgit/git/commit/723b74ee3e09bfb19b43218da19c52f805bb69ae
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-05-08 (Wed, 08 May 2013)

Changed paths:
M t/t1508-at-combinations.sh

Log Message:
-----------
tests: at-combinations: @{N} versus HEAD@{N}

All the tests so far check that @{N} is the same as HEAD@{N} (for
positive N). However, this is not always the case; write a couple of
tests for this.

[fc: simplify some wording]

Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Felipe Contreras <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 1ef2d8dacc992b98444170ea9ee17de417433146
https://github.com/msysgit/git/commit/1ef2d8dacc992b98444170ea9ee17de417433146
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-08 (Wed, 08 May 2013)

Changed paths:
M sha1_name.c

Log Message:
-----------
sha1_name: remove no-op

'at' is always 0, since we can reach this point only if
!len && reflog_len, and len=at when reflog is assigned.

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


Commit: b5f769a0d71bc3f13f916db849ef6b4768359c4e
https://github.com/msysgit/git/commit/b5f769a0d71bc3f13f916db849ef6b4768359c4e
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-08 (Wed, 08 May 2013)

Changed paths:
M sha1_name.c

Log Message:
-----------
sha1_name: remove unnecessary braces

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


Commit: e883a057a9da3c738dd6f6e2f1aa9498885ae1e8
https://github.com/msysgit/git/commit/e883a057a9da3c738dd6f6e2f1aa9498885ae1e8
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-05-08 (Wed, 08 May 2013)

Changed paths:
M sha1_name.c

Log Message:
-----------
sha1_name: don't waste cycles in the @-parsing loop

The @-parsing loop unnecessarily checks for the sequence "@{" from
(len - 2) unnecessarily. We can safely check from (len - 4).

Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Felipe Contreras <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 2bcf694b1892dca372c6d1d64602a017d7291899
https://github.com/msysgit/git/commit/2bcf694b1892dca372c6d1d64602a017d7291899
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-08 (Wed, 08 May 2013)

Changed paths:
M contrib/completion/git-completion.bash

Log Message:
-----------
completion: cleanup zsh wrapper

There's no need for a separate function; we can call
'emulate -k ksh func'.

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


Commit: 734b2f0532d847a9f566183982f83ddea8d8d197
https://github.com/msysgit/git/commit/734b2f0532d847a9f566183982f83ddea8d8d197
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-08 (Wed, 08 May 2013)

Changed paths:
M contrib/completion/git-completion.bash

Log Message:
-----------
completion: synchronize zsh wrapper

So it's closer to the full zsh wrapper.

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


Commit: 128fd54daeff23fbef0d0b7ec1a31f38d0803f63
https://github.com/msysgit/git/commit/128fd54daeff23fbef0d0b7ec1a31f38d0803f63
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-08 (Wed, 08 May 2013)

Changed paths:
M sha1_name.c

Log Message:
-----------
sha1_name: reorganize get_sha1_basic()

Through the years the functionality to handle @{-N} and @{u} has moved
around the code, and as a result, code that once made sense, doesn't any
more.

There is no need to call this function recursively with the branch of
@{-N} substituted because dwim_{ref,log} already replaces it.

However, there's one corner-case where @{-N} resolves to a detached
HEAD, in which case we wouldn't get any ref back.

So we parse the nth-prior manually, and deal with it depending on
whether it's a SHA-1, or a ref.

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


Commit: 83d16bc7bec92ea3f705f559c5a13589cb7c1f92
https://github.com/msysgit/git/commit/83d16bc7bec92ea3f705f559c5a13589cb7c1f92
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-05-08 (Wed, 08 May 2013)

Changed paths:
M sha1_name.c

Log Message:
-----------
sha1_name: check @{-N} errors sooner

It's trivial to check for them in the @{N} parsing loop.

Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Felipe Contreras <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 7a0a49a7ca787433255280b66e7652b56f7beb6e
https://github.com/msysgit/git/commit/7a0a49a7ca787433255280b66e7652b56f7beb6e
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-08 (Wed, 08 May 2013)

Changed paths:
M sha1_name.c

Log Message:
-----------
sha1_name: refactor reinterpret()

This code essentially replaces part of ref with another ref, for example
'@{-1}@{u}' is replaced with 'master@{u}', but this can be reused for
other purposes other than nth prior checkouts.

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


Commit: cdfd94837b27c220f70f032b596ea993d195488f
https://github.com/msysgit/git/commit/cdfd94837b27c220f70f032b596ea993d195488f
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-08 (Wed, 08 May 2013)

Changed paths:
M Documentation/git-check-ref-format.txt
M Documentation/revisions.txt
M refs.c
M sha1_name.c
M t/t1508-at-combinations.sh

Log Message:
-----------
Add new @ shortcut for HEAD

Typing 'HEAD' is tedious, especially when we can use '@' instead.

The reason for choosing '@' is that it follows naturally from the
***@op syntax (e.g. HEAD@{u}), except we have no ref, and no
operation, and when we don't have those, it makes sens to assume
'HEAD'.

So now we can use 'git show @~1', and all that goody goodness.

Until now '@' was a valid name, but it conflicts with this idea, so
let's make it invalid. Probably very few people, if any, used this name.

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


Commit: 1f27e7d56b65fdc232a5a2a4de2ee97ff5eb176b
https://github.com/msysgit/git/commit/1f27e7d56b65fdc232a5a2a4de2ee97ff5eb176b
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-08 (Wed, 08 May 2013)

Changed paths:
M sha1_name.c

Log Message:
-----------
sha1_name: compare variable with constant, not constant with variable

And restructure the if/else to factor out the common "is len positive?"
test into a single conditional.

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


Commit: 380395d094b49834c3ec804407853fd6e81de702
https://github.com/msysgit/git/commit/380395d094b49834c3ec804407853fd6e81de702
Author: Jonathan Nieder <***@gmail.com>
Date: 2013-05-08 (Wed, 08 May 2013)

Changed paths:
M abspath.c
M compat/terminal.c
M compat/win32.h
M diff-no-index.c
M git-compat-util.h
M help.c
M run-command.c
M test-chmtime.c
M thread-utils.c

Log Message:
-----------
mingw: rename WIN32 cpp macro to GIT_WINDOWS_NATIVE

Throughout git, it is assumed that the WIN32 preprocessor symbol is
defined on native Windows setups (mingw and msvc) and not on Cygwin.
On Cygwin, most of the time git can pretend this is just another Unix
machine, and Windows-specific magic is generally counterproductive.

Unfortunately Cygwin *does* define the WIN32 symbol in some headers.
Best to rely on a new git-specific symbol GIT_WINDOWS_NATIVE instead,
defined as follows:

#if defined(WIN32) && !defined(__CYGWIN__)
# define GIT_WINDOWS_NATIVE
#endif

After this change, it should be possible to drop the
CYGWIN_V15_WIN32API setting without any negative effect.

[rj: %s/WINDOWS_NATIVE/GIT_WINDOWS_NATIVE/g ]

Signed-off-by: Jonathan Nieder <***@gmail.com>
Signed-off-by: Ramsay Jones <***@ramsay1.demon.co.uk>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 83ff1da3e81824eebf0425ad9200248ea7205c35
https://github.com/msysgit/git/commit/83ff1da3e81824eebf0425ad9200248ea7205c35
Author: Ramsay Jones <***@ramsay1.demon.co.uk>
Date: 2013-05-08 (Wed, 08 May 2013)

Changed paths:
M Makefile
M compat/cygwin.c
M config.mak.uname

Log Message:
-----------
cygwin: Remove the CYGWIN_V15_WIN32API build variable

Commit 380a4d92 ("Update cygwin.c for new mingw-64 win32 api headers",
11-11-2012) solved an header include order problem on cygwin 1.7 when
using the new mingw-64 WIN32 API headers. The solution involved using
a new build variable (V15_MINGW_HEADERS) to conditionally compile the
cygwin.c source file to use an include order appropriate for the old
and new header files. (The build variable was later renamed in commit
9fca6cff to CYGWIN_V15_WIN32API).

The include order used for cygwin 1.7 includes the "win32.h" header
before "../git-compat-util.h". This order was problematic on cygwin
1.5, since it lead to the WIN32 symbol being defined along with the
inclusion of some WIN32 API headers (e.g. <winsock2.h>) which cause
compilation errors.

The header include order problem on cygwin 1.5 has since been fixed
(see commit "mingw: rename WIN32 cpp macro to GIT_WINDOWS_NATIVE"),
so we can now remove the conditional compilation along with the
associated CYGWIN_V15_WIN32API build variable.

Signed-off-by: Ramsay Jones <***@ramsay1.demon.co.uk>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: e56181060e1117d458b854c34e63206117dab8b6
https://github.com/msysgit/git/commit/e56181060e1117d458b854c34e63206117dab8b6
Author: Vikrant Varma <***@gmail.com>
Date: 2013-05-08 (Wed, 08 May 2013)

Changed paths:
M help.c
M help.h

Log Message:
-----------
help: add help_unknown_ref()

When the user gives an unknown string to a command that expects to
get a ref, we could be more helpful than just saying "that's not a
ref" and die.

Add helper function help_unknown_ref() to take care of displaying an
error message along with a list of suggested refs the user might
have meant. An interaction with "git merge" might go like this:

$ git merge foo
merge: foo - not something we can merge

Did you mean one of these?
origin/foo
upstream/foo

Signed-off-by: Vikrant Varma <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: f3f8af0e54a31ffed242dc36482f82393f596ee5
https://github.com/msysgit/git/commit/f3f8af0e54a31ffed242dc36482f82393f596ee5
Author: Vikrant Varma <***@gmail.com>
Date: 2013-05-08 (Wed, 08 May 2013)

Changed paths:
M builtin/merge.c

Log Message:
-----------
merge: use help_unknown_ref()

Use help.c:help_unknown_ref() instead of die() to provide a
friendlier error message before exiting, when one of the refs
specified in a merge is unknown.

Signed-off-by: Vikrant Varma <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 71a19a37442a8b79c02927e0f7c910f34f88d8aa
https://github.com/msysgit/git/commit/71a19a37442a8b79c02927e0f7c910f34f88d8aa
Author: René Scharfe <***@lsrfire.ath.cx>
Date: 2013-05-09 (Thu, 09 May 2013)

Changed paths:
M t/t5004-archive-corner-cases.sh

Log Message:
-----------
t5004: avoid using tar for checking emptiness of archive

Test 2 of t5004 checks if a supposedly empty tar archive really
contains no files. 24676f02 (t5004: fix issue with empty archive test
and bsdtar) removed our commit hash to make it work with bsdtar, but
the test still fails on NetBSD and OpenBSD, which use their own tar
that considers a tar file containing only NULs as broken.

Here's what the different archivers do when asked to create a tar
file without entries:

$ uname -v
NetBSD 6.0.1 (GENERIC)
$ gtar --version | head -1
tar (GNU tar) 1.26
$ bsdtar --version
bsdtar 2.8.4 - libarchive 2.8.4

$ : >zero.tar
$ perl -e 'print "\0" x 10240' >tenk.tar
$ sha1 zero.tar tenk.tar
SHA1 (zero.tar) = da39a3ee5e6b4b0d3255bfef95601890afd80709
SHA1 (tenk.tar) = 34e163be8e43c5631d8b92e9c43ab0bf0fa62b9c

$ : | tar cf - -T - | sha1
da39a3ee5e6b4b0d3255bfef95601890afd80709
$ : | gtar cf - -T - | sha1
34e163be8e43c5631d8b92e9c43ab0bf0fa62b9c
$ : | bsdtar cf - -T - | sha1
34e163be8e43c5631d8b92e9c43ab0bf0fa62b9c

So NetBSD's native tar creates an empty file, while GNU tar and bsdtar
both give us 10KB of NULs -- just like git archive with an empty tree.
Now let's see how the archivers handle these two kinds of empty tar
files:

$ tar tf zero.tar; echo $?
tar: Unexpected EOF on archive file
1
$ gtar tf zero.tar; echo $?
gtar: This does not look like a tar archive
gtar: Exiting with failure status due to previous errors
2
$ bsdtar tf zero.tar; echo $?
0

$ tar tf tenk.tar; echo $?
tar: Cannot identify format. Searching...
tar: End of archive volume 1 reached
tar: Sorry, unable to determine archive format.
$ gtar tf tenk.tar; echo $?
0
$ bsdtar tf tenk.tar; echo $?
0

NetBSD's tar complains about both, bsdtar happily accepts any of them
and GNU tar doesn't like zero-length archive files. So the safest
course of action is to stay with our block-of-NULs format which is
compatible with GNU tar and bsdtar, as we can't make NetBSD's native
tar happy anyway.

We can simplify our test, however, by taking tar out of the picture.
Instead of extracting the archive and checking for the non-presence of
files, check if the file has a size of 10KB and contains only NULs.
This makes t5004 pass on NetBSD and OpenBSD.

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


Commit: 56ee96572a7ec5a6b1a59ccdbbf204af16903d17
https://github.com/msysgit/git/commit/56ee96572a7ec5a6b1a59ccdbbf204af16903d17
Author: René Scharfe <***@lsrfire.ath.cx>
Date: 2013-05-09 (Thu, 09 May 2013)

Changed paths:
M t/t5004-archive-corner-cases.sh
A t/t5004/empty-with-pax-header.tar

Log Message:
-----------
t5004: resurrect original empty tar archive test

Add a test to verify the emptiness of an archive by extracting its
contents. Don't run this test if the version of tar doesn't support
archives containing only a comment header, though.

The existing check 'tar archive of empty tree is empty' used to work
like that (minus the tar capability check) but was changed to depend
on the exact representation of empty tar files created by git archive
instead of on the behaviour of tar in order to avoid issues with
different tar versions.

The different approaches test different things: The existing one is
for empty trees, for which we know the exact expected output and thus
we can simply check it without extracting; the new one is for commits
with empty trees, whose archives include stamps and so the more
"natural" check by extraction is a better fit because it focuses on
the interesting aspect, namely the absence of any archive entries.

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


Commit: d6ae7b2d366da8d90aa90cabfd54d285c24b5a86
https://github.com/msysgit/git/commit/d6ae7b2d366da8d90aa90cabfd54d285c24b5a86
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-10 (Fri, 10 May 2013)

Changed paths:
M t/t5801-remote-helpers.sh

Log Message:
-----------
test: remote-helper: add missing and

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


Commit: 126aac5cf3b5696481aafe840f8f596653087d8b
https://github.com/msysgit/git/commit/126aac5cf3b5696481aafe840f8f596653087d8b
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-10 (Fri, 10 May 2013)

Changed paths:
M git-remote-testgit
M t/t5801-remote-helpers.sh
M transport-helper.c

Log Message:
-----------
transport-helper: fix remote helper namespace regression

Commit 664059f (transport-helper: update remote helper namespace)
updates the namespace when the push succeeds or not; we should do it
only when it succeeded.

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


Commit: 0781aa4766ed88d620ea060c7d775ca806ebfa93
https://github.com/msysgit/git/commit/0781aa4766ed88d620ea060c7d775ca806ebfa93
Author: Nguyễn Thái Ngọc Duy <***@gmail.com>
Date: 2013-05-11 (Sat, 11 May 2013)

Changed paths:
M builtin/clone.c

Log Message:
-----------
clone: let the user know when check_everything_connected is run

check_everything_connected could take a long time, especially in the
clone case where the whole DAG is traversed. The user deserves to know
what's going on.

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


Commit: 29de20504e9790785fe1698300755323f74972aa
https://github.com/msysgit/git/commit/29de20504e9790785fe1698300755323f74972aa
Author: David Aguilar <***@gmail.com>
Date: 2013-05-11 (Sat, 11 May 2013)

Changed paths:
M Makefile

Log Message:
-----------
Makefile: fix default regex settings on Darwin

t0070-fundamental.sh fails on Mac OS X 10.8:

$ uname -a
Darwin lustrous 12.2.0 Darwin Kernel Version 12.2.0:
Sat Aug 25 00:48:52 PDT 2012;
root:xnu-2050.18.24~1/RELEASE_X86_64 x86_64

$ ./t0070-fundamental.sh -v
fatal: regex bug confirmed: re-build git with NO_REGEX=1

Fix it by using Git's regex library.

Reviewed-by: Jonathan Nieder <***@gmail.com>
Signed-off-by: David Aguilar <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 51f8c814d5603a917a91a47019875bbe707675bb
https://github.com/msysgit/git/commit/51f8c814d5603a917a91a47019875bbe707675bb
Author: Jeff King <***@peff.net>
Date: 2013-05-12 (Sun, 12 May 2013)

Changed paths:
M t/t5510-fetch.sh

Log Message:
-----------
t5510: start tracking-ref tests from a known state

We have three sequential tests for for whether tracking refs
are updated by various fetches and pulls; the first two
should not update the ref, and the third should. Each test
depends on the state left by the test before.

This is fragile (a failing early test will confuse later
tests), and means we cannot add more "should update" tests
after the third one.

Let's instead save the initial state before these tests, and
then reset to a known state before running each test.

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


Commit: 4ab90e7a5c46ce929ae8b3b7bbb5b276f2f60e0d
https://github.com/msysgit/git/commit/4ab90e7a5c46ce929ae8b3b7bbb5b276f2f60e0d
Author: Thomas Rast <***@inf.ethz.ch>
Date: 2013-05-12 (Sun, 12 May 2013)

Changed paths:
M Documentation/pull-fetch-param.txt

Log Message:
-----------
fetch/pull doc: untangle meaning of bare <ref>

The documentation erroneously used the same wording for both fetch and
pull, stating that something will be merged even in git-fetch(1).

In addition, saying that "<ref> is equivalent to <ref>:" doesn't
really help anyone who still needs to read manpages. Clarify what is
actually going on.

Signed-off-by: Thomas Rast <***@inf.ethz.ch>
Signed-off-by: Jeff King <***@peff.net>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 900f2814b8da951a450f5762dabb1b248dd77abc
https://github.com/msysgit/git/commit/900f2814b8da951a450f5762dabb1b248dd77abc
Author: Jeff King <***@peff.net>
Date: 2013-05-12 (Sun, 12 May 2013)

Changed paths:
M builtin/fetch.c
M cache.h

Log Message:
-----------
refactor "ref->merge" flag

Each "struct ref" has a boolean flag that is set by the
fetch code to determine whether the ref should be marked as
"not-for-merge" or not when we write it out to FETCH_HEAD.

It would be useful to turn this boolean into a tri-state,
with the third state meaning "do not bother writing it out
to FETCH_HEAD at all". That would let us add extra refs to
the set of refs to be stored (e.g., to store copies of
things we fetched) without impacting FETCH_HEAD.

This patch turns it into an enum that covers the tri-state
case, and hopefully makes the code more explicit and easier
to read.

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


Commit: f269048754f3b835f4f7287c5a132714a059efce
https://github.com/msysgit/git/commit/f269048754f3b835f4f7287c5a132714a059efce
Author: Jeff King <***@peff.net>
Date: 2013-05-12 (Sun, 12 May 2013)

Changed paths:
M Documentation/pull-fetch-param.txt
M builtin/fetch.c
M t/t5510-fetch.sh

Log Message:
-----------
fetch: opportunistically update tracking refs

When we run a regular "git fetch" without arguments, we
update the tracking refs according to the configured
refspec. However, when we run "git fetch origin master" (or
"git pull origin master"), we do not look at the configured
refspecs at all, and just update FETCH_HEAD.

We miss an opportunity to update "refs/remotes/origin/master"
(or whatever the user has configured). Some users find this
confusing, because they would want to do further comparisons
against the old state of the remote master, like:

$ git pull origin master
$ git log HEAD...origin/master

In the currnet code, they are comparing against whatever
commit happened to be in origin/master from the last time
they did a complete "git fetch". This patch will update a
ref from the RHS of a configured refspec whenever we happen
to be fetching its LHS. That makes the case above work.

The downside is that any users who really care about whether
and when their tracking branches are updated may be
surprised.

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


Commit: 5e2c7cd2c124da05d1807d5ffe61b2771bb755ee
https://github.com/msysgit/git/commit/5e2c7cd2c124da05d1807d5ffe61b2771bb755ee
Author: Junio C Hamano <***@pobox.com>
Date: 2013-05-12 (Sun, 12 May 2013)

Changed paths:
M t/t5551-http-fetch.sh

Log Message:
-----------
t5551: do not use unportable sed '\+'

The set-up step to prepare a repository with 50000 tags used a
non-porable '\+' to match one-or-more.

The error was not caught because the next test that uses that
repository did not even bother to check if these expected tags were
actually cloned to the resulting repository.

Fix the sed construct to use BRE and update the "clone" test that
wanted to test cloning from such a repository with many refs to
check the resulting repository.

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


Commit: c30754f188a4f1bcd35d81d898086fea33524bd6
https://github.com/msysgit/git/commit/c30754f188a4f1bcd35d81d898086fea33524bd6
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-05-12 (Sun, 12 May 2013)

Changed paths:
M git-am.sh

Log Message:
-----------
am: tighten a conditional that checks for $dotest

In preparation for a later patch that creates $dotest/autostash in
git-rebase.sh before anything else happens, don't assume that the
presence of a $dotest directory implies the existence of the
$dotest/next and $dotest/last files. Look for them explicitly.

Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 1224f3d0f1b47fc640e76b053f25d91e3ca84bcf
https://github.com/msysgit/git/commit/1224f3d0f1b47fc640e76b053f25d91e3ca84bcf
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-05-12 (Sun, 12 May 2013)

Changed paths:
M git-rebase--interactive.sh

Log Message:
-----------
rebase -i: don't error out if $state_dir already exists

In preparation for a later patch that will create $state_dir/autostash
in git-rebase.sh before anything else can happen, change a `mkdir
$state_dir` call to `mkdir -p $state_dir`. The change is safe,
because this is not a test to detect an in-progress rebase (that is
already done much earlier in git-rebase.sh).

Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: f5f758a5df470352ed46863288551f25fe9c7ea7
https://github.com/msysgit/git/commit/f5f758a5df470352ed46863288551f25fe9c7ea7
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-05-12 (Sun, 12 May 2013)

Changed paths:
M git-rebase.sh

Log Message:
-----------
rebase: prepare to do generic housekeeping

On successful completion of a rebase in git-rebase--$backend.sh, the
$backend script cleans up on its own and exits. The cleanup routine
is however, independent of the $backend, and each $backend script
unnecessarily duplicates this work:

rm -rf "$state_dir"
git gc --auto

Prepare git-rebase.sh for later patches that return control from each
$backend script back to us, for performing this generic cleanup
routine. The code that this patch adds is currently unreachable, and
will only start to be used when git-rebase--$backend.sh scripts are
taught to return control in later patches.

Another advantage is that git-rebase.sh can implement a generic
finish_rebase() to possibly do additional tasks in addition to the
cleanup.

Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: a1549e1049439386b9fd643fae236ad3ba649650
https://github.com/msysgit/git/commit/a1549e1049439386b9fd643fae236ad3ba649650
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-05-12 (Sun, 12 May 2013)

Changed paths:
M git-am.sh
M git-rebase--am.sh

Log Message:
-----------
am: return control to caller, for housekeeping

We only need to do these two tasks

git gc --auto
rm -fr "$dotest"

ourselves if the script was invoked as a standalone program; when
invoked with --rebasing (from git-rebase--am.sh), cascade control back
to the ultimate caller git-rebase.sh to do this for us.

Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 15d4bf2e1e4f9853a17a86eb923b55d41da22d54
https://github.com/msysgit/git/commit/15d4bf2e1e4f9853a17a86eb923b55d41da22d54
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-05-12 (Sun, 12 May 2013)

Changed paths:
M git-rebase--interactive.sh

Log Message:
-----------
rebase -i: return control to caller, for housekeeping

Return control to the caller git-rebase.sh to get these two tasks

rm -fr "$dotest"
git gc --auto

done by it.

Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 01a1e6465fea95c2b4303ed6c9bd14b276456f2d
https://github.com/msysgit/git/commit/01a1e6465fea95c2b4303ed6c9bd14b276456f2d
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-05-12 (Sun, 12 May 2013)

Changed paths:
M git-rebase--merge.sh

Log Message:
-----------
rebase --merge: return control to caller, for housekeeping

Return control to the caller git-rebase.sh to get these two tasks

rm -fr "$dotest"
git gc --auto

done by it.

Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: f659031c1ceb979d423161541a8a3763bfd7c96c
https://github.com/msysgit/git/commit/f659031c1ceb979d423161541a8a3763bfd7c96c
Author: Kevin Bracey <***@bracey.fi>
Date: 2013-05-13 (Mon, 13 May 2013)

Changed paths:
M t/t6019-rev-list-ancestry-path.sh

Log Message:
-----------
t6019: demonstrate --ancestry-path A...B breakage

Signed-off-by: Kevin Bracey <***@bracey.fi>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 0c38a95ec83f7adb5fc1b7a5133a2ac2668cdd4a
https://github.com/msysgit/git/commit/0c38a95ec83f7adb5fc1b7a5133a2ac2668cdd4a
Author: Thomas Rast <***@inf.ethz.ch>
Date: 2013-05-13 (Mon, 13 May 2013)

Changed paths:
M Makefile

Log Message:
-----------
coverage: split build target into compile and test

Confusingly, the coverage-build target in fact builds with gcov
support _and runs tests_.

Split it into two targets that actually are named after what they do.

Signed-off-by: Thomas Rast <***@inf.ethz.ch>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: dcbe7f1ab8b96b3875ae820d71c1364ee3bd99f5
https://github.com/msysgit/git/commit/dcbe7f1ab8b96b3875ae820d71c1364ee3bd99f5
Author: Thomas Rast <***@inf.ethz.ch>
Date: 2013-05-13 (Mon, 13 May 2013)

Changed paths:
M Makefile

Log Message:
-----------
coverage: do not delete .gcno files before building

The coverage-compile target depends on coverage-clean, which is
supposed to remove the earlier build products that would get in the
way of the next coverage test run.

However, removing *.gcno is actively wrong. These are the files that
contain the compile-time coverage related data. They are only rebuilt
if the source is compiled. So if one ran 'make coverage' two times in
a row, the second run would remove *.gcno, but then fail to recreate
them because neither source files nor build flags have changed. (This
remained hidden for so long most likely because any other intervening
use of 'make' will change the build flags, causing a full rebuild.)

So we make an exception for *.gcno. The *.gcda are the coverage
results, written when the gcov-instrumented program is run. We still
remove those, so as to get a one-test-run view of the data; you could
probably argue the other way too.

Signed-off-by: Thomas Rast <***@inf.ethz.ch>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: c14cc77c1126c04b35ce0ea16989af50af6cebc1
https://github.com/msysgit/git/commit/c14cc77c1126c04b35ce0ea16989af50af6cebc1
Author: Thomas Rast <***@inf.ethz.ch>
Date: 2013-05-13 (Mon, 13 May 2013)

Changed paths:
M Makefile

Log Message:
-----------
coverage: set DEFAULT_TEST_TARGET to avoid using prove

If the user sets DEFAULT_TEST_TARGET=prove in his config.mak, that
carries over into the coverage tests. Which is really bad if he also
sets GIT_PROVE_OPTS=-j<..> as that completely breaks the coverage
runs.

Instead of attempting to mess with the GIT_PROVE_OPTS, just force the
test target to 'test' so that we run under make, like we intended all
along.

Signed-off-by: Thomas Rast <***@inf.ethz.ch>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 5ce4367d644060821a264e00f7e2e98e35dd2d59
https://github.com/msysgit/git/commit/5ce4367d644060821a264e00f7e2e98e35dd2d59
Author: Thomas Rast <***@inf.ethz.ch>
Date: 2013-05-13 (Mon, 13 May 2013)

Changed paths:
M Makefile

Log Message:
-----------
coverage: build coverage-untested-functions by default

Change the 'coverage' target to build coverage-untested-functions by
default, so as to make it more discoverable.

Signed-off-by: Thomas Rast <***@inf.ethz.ch>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: b8612b4da45087d256a0ce339bc65611fb6586f5
https://github.com/msysgit/git/commit/b8612b4da45087d256a0ce339bc65611fb6586f5
Author: Matthieu Moy <***@imag.fr>
Date: 2013-05-15 (Wed, 15 May 2013)

Changed paths:
M builtin/config.c

Log Message:
-----------
config: refactor management of color.ui's default value

The meaning of get_colorbool_found and get_diff_color_found is "the
config value if found, and -1 otherwise", but get_color_ui_found had a
slightly different meaning, as it has the value 0 (which corresponds to
the default value from the user point of view) when color.ui is unset.

Make get_color_ui_found default to -1, and make it explicit that 0 is the
default value when nothing else is found.

Signed-off-by: Matthieu Moy <***@imag.fr>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: aac385717a62bfa6889151d191e08b9725587912
https://github.com/msysgit/git/commit/aac385717a62bfa6889151d191e08b9725587912
Author: Matthijs Kooijman <***@stdin.nl>
Date: 2013-05-15 (Wed, 15 May 2013)

Changed paths:
M combine-diff.c
M t/t4038-diff-combined.sh

Log Message:
-----------
combine-diff.c: Fix output when changes are exactly 3 lines apart

When a deletion is followed by exactly 3 (or whatever the number of
context lines) unchanged lines, followed by another change, the combined
diff output would hide the first deletion, resulting in a malformed
diff.

This happened because the 3 lines before each change are painted
interesting, but also marked as no_pre_delete to prevent showing deletes
that were previously marked as uninteresting. This behaviour was
introduced in c86fbe53 (diff -c/--cc: do not include uninteresting
deletion before leading context). However, as a side effect, this could
also mark deletes that were already interesting as no_pre_delete. This
would happen only if the delete was exactly 3 lines away from the next
change, since lines farther away would not be touched by the "paint
three lines before the change" code and lines closer would be painted
by the "merge two adjacent hunks" code instead, which does not set the
no_pre_delete flag.

This commit fixes this problem by only setting the no_pre_delete flag
for changes that were previously uninteresting.

Signed-off-by: Matthijs Kooijman <***@stdin.nl>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: a765499a0884375c47c78d0d1e2926e875074427
https://github.com/msysgit/git/commit/a765499a0884375c47c78d0d1e2926e875074427
Author: Kevin Bracey <***@bracey.fi>
Date: 2013-05-16 (Thu, 16 May 2013)

Changed paths:
M revision.c
M revision.h
M t/t6019-rev-list-ancestry-path.sh

Log Message:
-----------
revision.c: treat A...B merge bases as if manually specified

The documentation assures users that "A...B" is defined as "A B --not
$(git merge-base --all A B)". This wasn't in fact quite true, because
the calculated merge bases were not sent to add_rev_cmdline().

The main effect of this was that although

git rev-list --ancestry-path A B --not $(git merge-base --all A B)

worked, the simpler form

git rev-list --ancestry-path A...B

failed with a "no bottom commits" error.

Other potential users of bottom commits could also be affected by this
problem, if they examine revs->cmdline_info; I came across the issue in
my proposed history traversal refinements series.

So ensure that the calculated merge bases are sent to add_rev_cmdline(),
flagged with new 'whence' enum value REV_CMD_MERGE_BASE.

Signed-off-by: Kevin Bracey <***@bracey.fi>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 83f0412f3fff3b4108e7f05c30f3e861d148f5f2
https://github.com/msysgit/git/commit/83f0412f3fff3b4108e7f05c30f3e861d148f5f2
Author: Kevin Bracey <***@bracey.fi>
Date: 2013-05-16 (Thu, 16 May 2013)

Changed paths:
M decorate.c

Log Message:
-----------
decorate.c: compact table when growing

When growing the table, take the opportunity to "compact" it by removing
entries with NULL decoration.

Users may have "removed" decorations by passing NULL to
insert_decoration. An object's table entry can't actually be removed
during normal operation, as it would break the linear hash collision
search. But we can remove NULL decoration entries when rebuilding the
table.

Signed-off-by: Kevin Bracey <***@bracey.fi>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: c72424b1b5d511a346742dba62bec93a719ef1c8
https://github.com/msysgit/git/commit/c72424b1b5d511a346742dba62bec93a719ef1c8
Author: Kevin Bracey <***@bracey.fi>
Date: 2013-05-16 (Thu, 16 May 2013)

Changed paths:
M t/t6019-rev-list-ancestry-path.sh

Log Message:
-----------
t6019: test file dropped in -s ours merge

In preparation for upcoming TREESAME work, check the result for G.t,
which is dropped in "-s ours" merge L. The default rev-list is empty, as
expected - it follows the first parent path where it never existed.

Unfortunately, --ancestry-path is also empty. Merges H J and L are all
TREESAME to 1 parent, so are treated as TREESAME and not shown. This is
clearly undesirable in the case of merge L, which dropped our G.t by
taking the non-ancestry-path version. Document this as a known failure,
and expect "H J L", the 3 merges along the path that had to chose G.t
versions.

Signed-off-by: Kevin Bracey <***@bracey.fi>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: abdea96efdade975246cce0674fa2cfb8a7cc148
https://github.com/msysgit/git/commit/abdea96efdade975246cce0674fa2cfb8a7cc148
Author: Kevin Bracey <***@bracey.fi>
Date: 2013-05-16 (Thu, 16 May 2013)

Changed paths:
A t/t6111-rev-list-treesame.sh

Log Message:
-----------
t6111: new TREESAME test set

Some side branching and odd merging to illustrate various flaws in
revision list scans, particularly when limiting the list.

Many expected failures, which will be gone by the end of the "history
traversal refinements" series.

Signed-off-by: Kevin Bracey <***@bracey.fi>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: e16f434ab66993c58690db9b68c9506b344916f7
https://github.com/msysgit/git/commit/e16f434ab66993c58690db9b68c9506b344916f7
Author: Junio C Hamano <***@pobox.com>
Date: 2013-05-16 (Thu, 16 May 2013)

Changed paths:
M t/t6111-rev-list-treesame.sh

Log Message:
-----------
t6111: allow checking the parents as well

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


Commit: 53e38358c8ad5bef1a71e3dac4331014120165cc
https://github.com/msysgit/git/commit/53e38358c8ad5bef1a71e3dac4331014120165cc
Author: Kevin Bracey <***@bracey.fi>
Date: 2013-05-16 (Thu, 16 May 2013)

Changed paths:
M t/t6111-rev-list-treesame.sh

Log Message:
-----------
t6111: add parents to tests

Signed-off-by: Kevin Bracey <***@bracey.fi>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 617f50cbfded66e2b314fc5ae550bf94854bc55e
https://github.com/msysgit/git/commit/617f50cbfded66e2b314fc5ae550bf94854bc55e
Author: Kevin Bracey <***@bracey.fi>
Date: 2013-05-16 (Thu, 16 May 2013)

Changed paths:
M Documentation/rev-list-options.txt

Log Message:
-----------
rev-list-options.txt: correct TREESAME for P

In the example given, P is not TREESAME to E. This doesn't affect the
current result, but it will matter when we change behaviour.

Signed-off-by: Kevin Bracey <***@bracey.fi>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: e32db66d7a6b2ba1569ef5e316d869c40a8fac3b
https://github.com/msysgit/git/commit/e32db66d7a6b2ba1569ef5e316d869c40a8fac3b
Author: Kevin Bracey <***@bracey.fi>
Date: 2013-05-16 (Thu, 16 May 2013)

Changed paths:
M Documentation/rev-list-options.txt

Log Message:
-----------
Documentation: avoid "uninteresting"

The documentation of --boundary uses the term "uninteresting", which is
not used or defined anywhere else in the documentation. This is
unhelpful and confusing to anyone who hasn't seen the UNINTERESTING
flag in the source code.

Change to use "excluded", as per revisions.txt.

Signed-off-by: Kevin Bracey <***@bracey.fi>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: d0af663e42abfcd5be6f7c3db21a29e521aa4ca2
https://github.com/msysgit/git/commit/d0af663e42abfcd5be6f7c3db21a29e521aa4ca2
Author: Kevin Bracey <***@bracey.fi>
Date: 2013-05-16 (Thu, 16 May 2013)

Changed paths:
M Documentation/rev-list-options.txt
M revision.c
M revision.h
M t/t6019-rev-list-ancestry-path.sh
M t/t6111-rev-list-treesame.sh

Log Message:
-----------
revision.c: Make --full-history consider more merges

History simplification previously always treated merges as TREESAME
if they were TREESAME to any parent.

While this was consistent with the default behaviour, this could be
extremely unhelpful when searching detailed history, and could not be
overridden. For example, if a merge had ignored a change, as if by "-s
ours", then:

git log -m -p --full-history -Schange file

would successfully locate "change"'s addition but would not locate the
merge that resolved against it.

Futher, simplify_merges could drop the actual parent that a commit
was TREESAME to, leaving it as a normal commit marked TREESAME that
isn't actually TREESAME to its remaining parent.

Now redefine a commit's TREESAME flag to be true only if a commit is
TREESAME to _all_ of its parents. This doesn't affect either the default
simplify_history behaviour (because partially TREESAME merges are turned
into normal commits), or full-history with parent rewriting (because all
merges are output). But it does affect other modes. The clearest
difference is that --full-history will show more merges - sufficient to
ensure that -m -p --full-history log searches can really explain every
change to the file, including those changes' ultimate fate in merges.

Also modify simplify_merges to recalculate TREESAME after removing
a parent. This is achieved by storing per-parent TREESAME flags on the
initial scan, so the combined flag can be easily recomputed.

This fixes some t6111 failures, but creates a couple of new ones -
we are now showing some merges that don't need to be shown.

Signed-off-by: Kevin Bracey <***@bracey.fi>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: d5d2fc8b1a2afdd086b194b2a834e896367d6713
https://github.com/msysgit/git/commit/d5d2fc8b1a2afdd086b194b2a834e896367d6713
Author: Junio C Hamano <***@pobox.com>
Date: 2013-05-16 (Thu, 16 May 2013)

Changed paths:
M t/t6012-rev-list-simplify.sh

Log Message:
-----------
t6012: update test for tweaked full-history traversal

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


Commit: 9c129eab99f16d7bb174b35573e68ae6a5d02efe
https://github.com/msysgit/git/commit/9c129eab99f16d7bb174b35573e68ae6a5d02efe
Author: Kevin Bracey <***@bracey.fi>
Date: 2013-05-16 (Thu, 16 May 2013)

Changed paths:
M Documentation/rev-list-options.txt
M revision.c
M t/t6111-rev-list-treesame.sh

Log Message:
-----------
simplify-merges: never remove all TREESAME parents

When simplifying an odd merge, such as one that used "-s ours", we may
find ourselves TREESAME to apparently redundant parents. Prevent
simplify_merges() from removing every TREESAME parent; if this would
happen reinstate the first TREESAME parent - the one that the default
log would have followed.

This avoids producing a totally disjoint history from the default log
when the default log is a better explanation of the end result, and aids
visualisation of odd merges.

Signed-off-by: Kevin Bracey <***@bracey.fi>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 143f1eafdb0d326b1a8e3d15bf59a497b9440bf1
https://github.com/msysgit/git/commit/143f1eafdb0d326b1a8e3d15bf59a497b9440bf1
Author: Kevin Bracey <***@bracey.fi>
Date: 2013-05-16 (Thu, 16 May 2013)

Changed paths:
M Documentation/rev-list-options.txt
M revision.c
M t/t6012-rev-list-simplify.sh

Log Message:
-----------
simplify-merges: drop merge from irrelevant side branch

Reimplement commit 4b7f53da on top of the new simplify-merges
infrastructure, tightening the condition to only consider root parents;
the original version incorrectly dropped parents that were TREESAME to
anything.

Original log message follows.

The merge simplification rule stated in 6546b59 (revision traversal:
show full history with merge simplification, 2008-07-31) still
treated merge commits too specially. Namely, in a history with this
shape:

---o---o---M
/
x---x---x

where three 'x' were on a history completely unrelated to the main
history 'o' and do not touch any of the paths we are following, we
still said that after simplifying all of the parents of M, 'x'
(which is the leftmost 'x' that rightmost 'x simplifies down to) and
'o' (which would be the last commit on the main history that touches
the paths we are following) are independent from each other, and
both need to be kept.

That is incorrect; when the side branch 'x' never touches the paths,
it should be removed to allow M to simplify down to the last commit
on the main history that touches the paths.

Suggested-by: Junio C Hamano <***@pobox.com>
Signed-off-by: Kevin Bracey <***@bracey.fi>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 7f34a46ff57121910c9ad697c2809a2d01ed1673
https://github.com/msysgit/git/commit/7f34a46ff57121910c9ad697c2809a2d01ed1673
Author: Kevin Bracey <***@bracey.fi>
Date: 2013-05-16 (Thu, 16 May 2013)

Changed paths:
M revision.c
M revision.h

Log Message:
-----------
revision.c: add BOTTOM flag for commits

When performing edge-based operations on the revision graph, it can be
useful to be able to identify the INTERESTING graph's connection(s) to
the bottom commit(s) specified by the user.

Conceptually when the user specifies "A..B" (== B ^A), they are asking
for the history from A to B. The first connection from A onto the
INTERESTING graph is part of that history, and should be considered. If
we consider only INTERESTING nodes and their connections, then we're
really only considering the history from A's immediate descendants to B.

This patch does not change behaviour, but adds a new BOTTOM flag to
indicate the bottom commits specified by the user, ready to be used by
following patches.

We immediately use the BOTTOM flag to return collect_bottom_commits() to
its original approach of examining the pending commit list rather than
the command line. This will ensure alignment of the definition of
"bottom" with future patches.

Signed-off-by: Kevin Bracey <***@bracey.fi>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 4d826608e9610851d29440ca290e54b701921608
https://github.com/msysgit/git/commit/4d826608e9610851d29440ca290e54b701921608
Author: Kevin Bracey <***@bracey.fi>
Date: 2013-05-16 (Thu, 16 May 2013)

Changed paths:
M revision.c
M t/t6019-rev-list-ancestry-path.sh
M t/t6111-rev-list-treesame.sh

Log Message:
-----------
revision.c: discount side branches when computing TREESAME

Use the BOTTOM flag to define relevance for pruning. Relevant commits
are those that are !UNINTERESTING or BOTTOM, and this allows us to
identify irrelevant side branches (UNINTERESTING && !BOTTOM).

If a merge has relevant parents, and it is TREESAME to them, then do not
let irrelevant parents cause the merge to be treated as !TREESAME.

When considering simplification, don't always include all merges -
merges with exactly one relevant parent can be simplified, if TREESAME
according to the above rule.

These two changes greatly increase simplification in limited, pruned
revision lists.

Signed-off-by: Kevin Bracey <***@bracey.fi>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: bf3418b08bac89902a5f6c70f8695f148df99828
https://github.com/msysgit/git/commit/bf3418b08bac89902a5f6c70f8695f148df99828
Author: Kevin Bracey <***@bracey.fi>
Date: 2013-05-16 (Thu, 16 May 2013)

Changed paths:
M revision.c
M t/t6111-rev-list-treesame.sh

Log Message:
-----------
revision.c: don't show all merges for --parents

When using --parents or --children, get_commit_action() previously showed
all merges, even if TREESAME to both parents.

This was intended to tie together the topology of the rewritten parents,
but it was excessive - in fact we only need to show merges that have two
or more relevant parents. Merges at the boundary do not necessarily need
to be shown.

Signed-off-by: Kevin Bracey <***@bracey.fi>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 141efdba57b1769fc60ff9a3925afbc6af398faf
https://github.com/msysgit/git/commit/141efdba57b1769fc60ff9a3925afbc6af398faf
Author: Kevin Bracey <***@bracey.fi>
Date: 2013-05-16 (Thu, 16 May 2013)

Changed paths:
M revision.c
M t/t6111-rev-list-treesame.sh

Log Message:
-----------
revision.c: make default history consider bottom commits

Previously, the default history treated bottom commits the same as any
other UNINTERESTING commit, which could force it down side branches.

Consider the following history:

*A--*B---D--*F * marks !TREESAME parent paths
\ /*
`-C-'

When requesting "B..F", B is UNINTERESTING but TREESAME to D. C is
!UNINTERESTING.

So default following would go from D into the irrelevant side branch C
to A, rather than to B. Note also that if there had been an extra
!UNINTERESTING commit B1 between B and D, it wouldn't have gone down C.

Change the default following to test relevant_commit() instead of
!UNINTERESTING, so it can proceed straight from D to B, thus finishing
the traversal of that path.

Signed-off-by: Kevin Bracey <***@bracey.fi>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 84cf246670eab56a23ed5554ed084053a0f19f2d
https://github.com/msysgit/git/commit/84cf246670eab56a23ed5554ed084053a0f19f2d
Author: Junio C Hamano <***@pobox.com>
Date: 2013-05-16 (Thu, 16 May 2013)

Changed paths:
M sha1_name.c
M t/t0100-previous.sh

Log Message:
-----------
strbuf_branchname(): do not double-expand @{-1}~22

If you were on 'frotz' branch before you checked out your current
branch, "git merge @{-1}~22" means the same as "git merge frotz~22".

The strbuf_branchname() function, when interpret_branch_name() gives
up resolving "@{-1}~22" fully, returns "frotz" and tells the caller
that it only resolved "@{-1}" part of the input, mistakes this as a
total failure, and appends the whole thing to the result, yielding
"frotz@{-1}~22", which does not make any sense.

Inspect the return value from interpret_branch_name() a bit more
carefully. When it errored out without consuming anything, we will
get -1 and we should return the whole thing. Otherwise, we should
append the remainder (i.e. "~22" in the earlier example) to the
partially resolved name (i.e. "frotz").

The test suite adds enough number of checkout to make @{-12} in the
last test in t0100 that tried to check "we haven't flipped branches
that many times" error case succeed; raise the number to a hundred.

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


Commit: 1fcd24d04358ea10c296a414e2b93f3714adca4b
https://github.com/msysgit/git/commit/1fcd24d04358ea10c296a414e2b93f3714adca4b
Author: Heiko Voigt <***@hvoigt.net>
Date: 2013-05-16 (Thu, 16 May 2013)

Changed paths:
M lib/diff.tcl

Log Message:
-----------
git-gui: allow "\ No newline at end of file" for linewise staging

Counting of lines did not skip this line when generating the hunk
header.

Acked-by: Tobias Preuss <***@googlemail.com>
Signed-off-by: Heiko Voigt <***@hvoigt.net>
Signed-off-by: Pat Thoyts <***@users.sourceforge.net>


Commit: 66fa1b2c354f79ed48f5986ee700ccb2d167ccbf
https://github.com/msysgit/git/commit/66fa1b2c354f79ed48f5986ee700ccb2d167ccbf
Author: Richard Hansen <***@bbn.com>
Date: 2013-05-16 (Thu, 16 May 2013)

Changed paths:
M Documentation/merge-options.txt

Log Message:
-----------
Documentation/merge-options.txt: restore `-e` option

It looks like commit f8246281af9adb0fdddbcc90d2e19cb5cd5217e5
unintentionally removed the documentation for the `-e` option.

Signed-off-by: Richard Hansen <***@bbn.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: ed05e9f6c027a23ce45bcdbac4196058ed5d0e07
https://github.com/msysgit/git/commit/ed05e9f6c027a23ce45bcdbac4196058ed5d0e07
Author: Pat Thoyts <***@users.sourceforge.net>
Date: 2013-05-17 (Fri, 17 May 2013)

Changed paths:
M lib/choose_repository.tcl

Log Message:
-----------
git-gui: change dialog button positions for Windows to suit platform.

On windows it is more common to have cancel furthest on the right.

Signed-off-by: Pat Thoyts <***@users.sourceforge.net>


Commit: 15a54fb8095502217fce7c7c6dd14e9066b62ebe
https://github.com/msysgit/git/commit/15a54fb8095502217fce7c7c6dd14e9066b62ebe
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-05-17 (Fri, 17 May 2013)

Changed paths:
M contrib/completion/git-prompt.sh

Log Message:
-----------
prompt: introduce GIT_PS1_STATESEPARATOR

A typical prompt looks like:

artagnon|master *=:~/src/git$
^
why do we have this space?

Nobody has branch names that end with +, *, =, < or > anyway, so it
doesn't serve the purpose of disambiguation.

Make this separator configurable via GIT_PS1_STATESEPARATOR. This means
that you can set it to "" and get this prompt:

artagnon|master*=:~/src/git$

Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 18562ad1a007234aded1e78f73d4b2f53a02fd0b
https://github.com/msysgit/git/commit/18562ad1a007234aded1e78f73d4b2f53a02fd0b
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-05-17 (Fri, 17 May 2013)

Changed paths:
M contrib/completion/git-prompt.sh

Log Message:
-----------
prompt: factor out gitstring coloring logic

So that we can extend it with ZSH-colors in a later patch.

Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 9678696c4ad0d269f933de001daa78c54a2b8868
https://github.com/msysgit/git/commit/9678696c4ad0d269f933de001daa78c54a2b8868
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-05-17 (Fri, 17 May 2013)

Changed paths:
M contrib/completion/git-prompt.sh

Log Message:
-----------
prompt: colorize ZSH prompt

Add colors suitable for use in the ZSH prompt. Having learnt that the
ZSH equivalent of PROMPT_COMMAND is precmd (), you can now use
GIT_PS1_SHOWCOLORHINTS with ZSH.

Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 6c642a878688adf46b226903858b53e2d31ac5c3
https://github.com/msysgit/git/commit/6c642a878688adf46b226903858b53e2d31ac5c3
Author: Filipe Cabecinhas <***@gmail.com>
Date: 2013-05-17 (Fri, 17 May 2013)

Changed paths:
M Makefile
A compat/clipped-write.c
M config.mak.uname
M git-compat-util.h

Log Message:
-----------
compate/clipped-write.c: large write(2) fails on Mac OS X/XNU

Due to a bug in the Darwin kernel, write(2) calls have a maximum size
of INT_MAX bytes.

Introduce a new compat function, clipped_write(), that only writes
at most INT_MAX bytes and returns the number of bytes written, as
a substitute for write(2), and allow platforms that need this to
enable it from the build mechanism with NEEDS_CLIPPED_WRITE.

Set it for Mac OS X by default. It may be necessary to include this
function on Windows, too.

Signed-off-by: Filipe Cabecinhas <filcab+***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: e00dd1e9485c50f202cc97dfae19d510e108b565
https://github.com/msysgit/git/commit/e00dd1e9485c50f202cc97dfae19d510e108b565
Author: Mike Crowe <***@mcrowe.com>
Date: 2013-05-20 (Mon, 20 May 2013)

Changed paths:
M Documentation/git-describe.txt
M builtin/describe.c
M t/t6120-describe.sh

Log Message:
-----------
describe: Add --first-parent option

Only consider the first parent commit when walking the commit history. This
is useful if you only wish to match tags on your branch after a merge.

Signed-off-by: Mike Crowe <***@mcrowe.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 4dcd7732db071c8e1e0466b98eaf9501f7fe1a7e
https://github.com/msysgit/git/commit/4dcd7732db071c8e1e0466b98eaf9501f7fe1a7e
Author: David Aguilar <***@gmail.com>
Date: 2013-05-20 (Mon, 20 May 2013)

Changed paths:
M Makefile

Log Message:
-----------
Makefile: add support for Apple CommonCrypto facility

As of Mac OS X 10.7, Apple deprecated all OpenSSL functions due to
OpenSSL ABI instability, thus leading to build warnings. As a
replacement, Apple encourages developers to migrate to its own (stable)
CommonCrypto facility.

Introduce boilerplate which controls whether Apple's CommonCrypto
facility is employed (enabled by default). Also add a
NO_APPLE_COMMON_CRYPTO build flag with which the user can opt out to
use OpenSSL instead.

[es: extracted CommonCrypto-related Makefile boilerplate into separate
introductory patch]

Signed-off-by: David Aguilar <***@gmail.com>
Signed-off-by: Eric Sunshine <***@sunshineco.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 61067954ce166e8a6fbcd109376fe2d9681ca333
https://github.com/msysgit/git/commit/61067954ce166e8a6fbcd109376fe2d9681ca333
Author: David Aguilar <***@gmail.com>
Date: 2013-05-20 (Mon, 20 May 2013)

Changed paths:
M Makefile

Log Message:
-----------
cache.h: eliminate SHA-1 deprecation warnings on Mac OS X

As of Mac OS X 10.7, Apple deprecated all OpenSSL functions due to
OpenSSL ABI instability, thus leading to build diagnostics such as:

warning: 'SHA1_Init' is deprecated
(declared at /usr/include/openssl/sha.h:121)

Silence the warnings by using Apple's CommonCrypto SHA-1 replacement
functions for SHA1_Init(), SHA1_Update(), and SHA1_Final().

COMMON_DIGEST_FOR_OPENSSL is defined to instruct
<CommonCrypto/CommonDigest.h> to provide compatibility macros
associating OpenSSL SHA-1 functions with their CommonCrypto
counterparts.

[es: reworded commit message]

Signed-off-by: David Aguilar <***@gmail.com>
Signed-off-by: Eric Sunshine <***@sunshineco.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: c420df7b9bbfcf352a3602c78e8476f18098bb43
https://github.com/msysgit/git/commit/c420df7b9bbfcf352a3602c78e8476f18098bb43
Author: René Scharfe <***@lsrfire.ath.cx>
Date: 2013-05-20 (Mon, 20 May 2013)

Changed paths:
M t/t5000-tar-tree.sh

Log Message:
-----------
t5000: integrate export-subst tests into regular tests

Instead of creating extra archives for testing substitutions, set the
attribute export-subst and overwrite the marked file with the expected
(expanded) content right between committing and archiving. Thus
placeholder expansion based on the committed content is performed with
each archive creation and the comparison with the contents of directory
a yields the correct result. We can then remove the special tests for
export-subst.

Signed-off-by: René Scharfe <***@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 1355241bf58b325ec9bedc2768d28dd20355c50e
https://github.com/msysgit/git/commit/1355241bf58b325ec9bedc2768d28dd20355c50e
Author: René Scharfe <***@lsrfire.ath.cx>
Date: 2013-05-20 (Mon, 20 May 2013)

Changed paths:
M t/t5000-tar-tree.sh
M t/t5003-archive-zip.sh

Log Message:
-----------
t5000, t5003: create directories for extracted files lazily

Create the directories b and c just before they are needed instead of
up front. For t5003 it turns out we don't need them at all. For t5000
it makes the coming modifications easier.

Signed-off-by: René Scharfe <***@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: deb9c8ed858e431008695fa265e8b20f547192bc
https://github.com/msysgit/git/commit/deb9c8ed858e431008695fa265e8b20f547192bc
Author: René Scharfe <***@lsrfire.ath.cx>
Date: 2013-05-20 (Mon, 20 May 2013)

Changed paths:
M t/t5000-tar-tree.sh

Log Message:
-----------
t5000: factor out check_tar

Create a helper function that extracts a tar archive and checks its
contents, modelled after check_zip in t5003.

Signed-off-by: René Scharfe <***@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 03d9bc564b3e87a2cdf4d511c8707a2de54ee6c6
https://github.com/msysgit/git/commit/03d9bc564b3e87a2cdf4d511c8707a2de54ee6c6
Author: René Scharfe <***@lsrfire.ath.cx>
Date: 2013-05-20 (Mon, 20 May 2013)

Changed paths:
M t/t5000-tar-tree.sh

Log Message:
-----------
t5000: use check_tar for prefix test

Perform the full range of checks against all archived files instead of
looking only at the file type of a few of them. Also add a test of a
git archive with a prefix ending in with a slash, i.e. adding a full
directory level.

Signed-off-by: René Scharfe <***@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 0a00ee58446e3a74e480057059a877da9c857346
https://github.com/msysgit/git/commit/0a00ee58446e3a74e480057059a877da9c857346
Author: René Scharfe <***@lsrfire.ath.cx>
Date: 2013-05-20 (Mon, 20 May 2013)

Changed paths:
M t/t5000-tar-tree.sh

Log Message:
-----------
t5000: simplify tar-tree tests

Just compare the archives created by git tar-tree with the ones created
using git archive with the equivalent options, whose contents are
checked already, instead of extracting them again.

Signed-off-by: René Scharfe <***@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 9bf1ac41d215f9b1c026fe585a38ffa0555a5670
https://github.com/msysgit/git/commit/9bf1ac41d215f9b1c026fe585a38ffa0555a5670
Author: René Scharfe <***@lsrfire.ath.cx>
Date: 2013-05-20 (Mon, 20 May 2013)

Changed paths:
M t/t5000-tar-tree.sh
A t/t5000/pax.tar

Log Message:
-----------
t5000: test long filenames

Add a file with a long name to the test archive in order to check
entries with pax extended headers. Also add a check for tar versions
that doen't understand this format. Those versions should extract the
headers as a regular files. Add code to check_tar() to interpret the
path header if present, so that our tests work even with those tar
versions.

It's important to use the fallback code only if needed to still be
able to detect git archive errorously creating pax headers as regular
file entries (with a suitable tar version, of course).

The archive used to check for pax header support in tar was generated
using GNU tar 1.26 and its option --format=pax.

Tested successfully on NetBSD 6.1, which has a tar version lacking pax
header support.

Signed-off-by: René Scharfe <***@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: b3d6e6e7075967659dc2f5064b4829902cca67da
https://github.com/msysgit/git/commit/b3d6e6e7075967659dc2f5064b4829902cca67da
Author: Junio C Hamano <***@pobox.com>
Date: 2013-05-20 (Mon, 20 May 2013)

Changed paths:
M Documentation/git-diff-index.txt

Log Message:
-----------
Documentation/diff-index: mention two modes of operation

"diff-index" can be used to compare a tree with the tracked working
tree files (when used without the --index option), or with the index
(when used with the --index option).

The text however did not say anything about the comparison with the
working tree at all. Fix this.

Reported-by: Albert Netymk <***@gmail.com>
Helped-by: Jonathan Nieder <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 6912ea952bf5d1b2d21d5935d6b726bab02d8bf6
https://github.com/msysgit/git/commit/6912ea952bf5d1b2d21d5935d6b726bab02d8bf6
Author: Dmitry Marakasov <***@amdmi3.ru>
Date: 2013-05-21 (Tue, 21 May 2013)

Changed paths:
M contrib/subtree/git-subtree.sh

Log Message:
-----------
contrib/git-subtree: Use /bin/sh interpreter instead of /bin/bash

Use /bin/sh interpreter instead of /bin/bash for contrib/git-subtree:
it's required for systems which don't use bash by default (for example,
FreeBSD), while there seem to be no bashisms in the script (confirmed
by looking through the source and tesing subtree functionality with
FreeBSD's /bin/sh) to require specifically bash and not the generic
posix shell.

Signed-off-by: Dmitry Marakasov <***@amdmi3.ru>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 67c9c782dae17822266783f8b5e15d73e7c91c65
https://github.com/msysgit/git/commit/67c9c782dae17822266783f8b5e15d73e7c91c65
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-21 (Tue, 21 May 2013)

Changed paths:
M transport-helper.c

Log Message:
-----------
transport-helper: barf when user tries old:new

Otherwise with certain remote helpers (the ones that support 'export'),
the users will be pushing to the wrong branch:

git push topic:master

Will push the topic branch, as if the user typed:

git push topic

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


Commit: 21457f5719b894a5997d66ff098b375bc2404260
https://github.com/msysgit/git/commit/21457f5719b894a5997d66ff098b375bc2404260
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-21 (Tue, 21 May 2013)

Changed paths:
M transport-helper.c

Log Message:
-----------
transport-helper: check if the dry-run is supported

Certain remote-helpers (the ones with 'export') would try to push
regardless.

Obviously this is not what the user wants.

Also, add a check for the 'dry-run' option, so remote-helpers can
implement it.

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


Commit: 02a607260fdbaed7717935df68fb76b1a6e577c0
https://github.com/msysgit/git/commit/02a607260fdbaed7717935df68fb76b1a6e577c0
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-21 (Tue, 21 May 2013)

Changed paths:
M contrib/remote-helpers/test-bzr.sh
M contrib/remote-helpers/test-hg-bidi.sh
M contrib/remote-helpers/test-hg-hg-git.sh
M contrib/remote-helpers/test-hg.sh

Log Message:
-----------
remote-helpers: tests: use python directly

These remote helpers use 'env python', not PYTHON_PATH, so that's where
we should check for the extensions. Otherwise, if 'python' is not
PYTHON_PATH (e.g. /usr/bin/python: Makefile's default), there will be a
mismatch between the python libraries actually accessible to the remote
helpers.

Suggested by: Torsten Bögershausen <***@web.de>
Signed-off-by: Felipe Contreras <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 0c27c12d21c6af3163ac4253c815e62c6bdd37f3
https://github.com/msysgit/git/commit/0c27c12d21c6af3163ac4253c815e62c6bdd37f3
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-21 (Tue, 21 May 2013)

Changed paths:
M contrib/remote-helpers/test-hg-hg-git.sh

Log Message:
-----------
remote-hg: tests: fix hg merge

Let's specify a merge tool, otherwise mercurial might open one and hang
our tests waiting for user input.

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


Commit: be4c828b761a7c65edcff75b008051b6d027e64a
https://github.com/msysgit/git/commit/be4c828b761a7c65edcff75b008051b6d027e64a
Author: David Aguilar <***@gmail.com>
Date: 2013-05-21 (Tue, 21 May 2013)

Changed paths:
M imap-send.c

Log Message:
-----------
imap-send: eliminate HMAC deprecation warnings on Mac OS X

As of Mac OS X 10.7, Apple deprecated all OpenSSL functions due to
OpenSSL ABI instability. Silence the warnings by using Apple's
CommonCrypto HMAC replacement functions.

[es: reworded commit message; check APPLE_COMMON_CRYPTO instead of
abusing COMMON_DIGEST_FOR_OPENSSL]

Signed-off-by: David Aguilar <***@gmail.com>
Signed-off-by: Eric Sunshine <***@sunshineco.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: d0583da838afbc5e039b9f0cbbb9b1fb3aa1f1ae
https://github.com/msysgit/git/commit/d0583da838afbc5e039b9f0cbbb9b1fb3aa1f1ae
Author: Thomas Gummerer <***@gmail.com>
Date: 2013-05-22 (Wed, 22 May 2013)

Changed paths:
M contrib/completion/git-prompt.sh

Log Message:
-----------
prompt: fix show upstream with svn and zsh

Currently the __git_ps1 git prompt gives the following error with a
repository converted by git-svn, when used with zsh:

__git_ps1_show_upstream:19: bad pattern: svn_remote[
__git_ps1_show_upstream:45: bad substitution

To reproduce the problem, the __git_ps1_show_upstream function can be
executed in a repository converted with git-svn. Both those errors are
triggered by spaces after the '['.

Zsh also doesn't support initializing an array with `local var=(...)`.
This triggers the following error:

__git_ps1_show_upstream:41: bad pattern: svn_upstream=(commit

Use
local -a
var=(...)
instead to make is compatible.

This was introduced by 6d158cba (bash completion: Support "divergence
from upstream" messages in __git_ps1), when the script was for bash
only.

Signed-off-by: Thomas Gummerer <***@gmail.com>
Acked-by: Felipe Contreras <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 17bf4ff3cd3d7fd4b252b81417df8be1b3b2b128
https://github.com/msysgit/git/commit/17bf4ff3cd3d7fd4b252b81417df8be1b3b2b128
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-05-22 (Wed, 22 May 2013)

Changed paths:
M sha1_name.c
M t/t1507-rev-parse-upstream.sh

Log Message:
-----------
sha1_name: fix error message for @{u}

Currently, when no (valid) upstream is configured for a branch, you get
an error like:

$ git show @{u}
error: No upstream configured for branch 'upstream-error'
error: No upstream configured for branch 'upstream-error'
fatal: ambiguous argument '@{u}': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'

The "error: " line actually appears twice, and the rest of the error
message is useless. In sha1_name.c:interpret_branch_name(), there is
really no point in processing further if @{u} couldn't be resolved, and
we might as well die() instead of returning an error(). After making
this change, you get:

$ git show @{u}
fatal: No upstream configured for branch 'upstream-error'

Also tweak a few tests in t1507 to expect this output.

This only turns error() that may be called after we know we are
dealing with an @{upstream} marker into die(), without touching
silent error returns "return -1" from the function. Any caller that
wants to handle an error condition itself will not be hurt by this
change, unless they want to see the message from error() and then
exit silently without giving its own message, which needs to be
fixed anyway.

Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 7358a672b2c9df7473961e66e18714963b2bc107
https://github.com/msysgit/git/commit/7358a672b2c9df7473961e66e18714963b2bc107
Author: Torstein Hegge <***@resisty.net>
Date: 2013-05-22 (Wed, 22 May 2013)

Changed paths:
M git-bisect.sh

Log Message:
-----------
bisect: Fix log output for multi-parent skip ranges

The bisect log output of skipped commits introduced in f989cac "bisect:
Log possibly bad, skipped commits at bisection end" should obtain the range of
skipped commits from

git rev-list bad --not good-1 good-2

not

git rev-list bad --not good-1 --not good-2

when the skipped range contains a merge with good points in each parent.

Signed-off-by: Torstein Hegge <***@resisty.net>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 90d32d1ffa36390177990cb92e4e2a68c5ec4092
https://github.com/msysgit/git/commit/90d32d1ffa36390177990cb92e4e2a68c5ec4092
Author: Thomas Rast <***@inf.ethz.ch>
Date: 2013-05-23 (Thu, 23 May 2013)

Changed paths:
M Documentation/git-push.txt

Log Message:
-----------
Document push --no-verify

ec55559 (push: Add support for pre-push hooks, 2013-01-13) forgot to
add a note to git-push(1) about the new --no-verify option.

Signed-off-by: Thomas Rast <***@inf.ethz.ch>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 4c32e361f6b5fcce037ebfff8b6e42622b3fe509
https://github.com/msysgit/git/commit/4c32e361f6b5fcce037ebfff8b6e42622b3fe509
Author: Nguyễn Thái Ngọc Duy <***@gmail.com>
Date: 2013-05-24 (Fri, 24 May 2013)

Changed paths:
M Documentation/urls.txt

Log Message:
-----------
urls.txt: avoid auto converting to hyperlink

file:///path/to/repo.git/ is converted to a hyperlink while others are
not. Put a backslash to avoid the conversion. Tested with asciidoc
8.6.5.

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


Commit: 1b0a0f8446090c424ec16e222c15207e3211c6e3
https://github.com/msysgit/git/commit/1b0a0f8446090c424ec16e222c15207e3211c6e3
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-26 (Sun, 26 May 2013)

Changed paths:
M Makefile

Log Message:
-----------
build: trivial simplification

SCRIPT_PYTHON_GEN is '$(patsubst %.py,%,$(SCRIPT_PYTHON))', so replace
'$(patsubst %.py,%,$(SCRIPT_PYTHON))' with it

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


Commit: 654f23f57c812c2fff8cad51322bac71b1553239
https://github.com/msysgit/git/commit/654f23f57c812c2fff8cad51322bac71b1553239
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-26 (Sun, 26 May 2013)

Changed paths:
M Makefile

Log Message:
-----------
build: cleanup using $^

There's no need to list again the prerequisites. No functional changes.

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


Commit: f530aa977823281b819081384c084b98a210e0f5
https://github.com/msysgit/git/commit/f530aa977823281b819081384c084b98a210e0f5
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-26 (Sun, 26 May 2013)

Changed paths:
M Makefile

Log Message:
-----------
build: cleanup using $<

No need to list the first prerequisite. No functional changes.

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


Commit: 4331ea8de2b3e76250e1eec88d568c00bb84f4da
https://github.com/msysgit/git/commit/4331ea8de2b3e76250e1eec88d568c00bb84f4da
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-26 (Sun, 26 May 2013)

Changed paths:
M Makefile

Log Message:
-----------
build: add NO_INSTALL variable

So that we can specify which scripts we do not want to install (they are
for testing).

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


Commit: 416fda6917f05b456ae263cb7152892bdf96f47c
https://github.com/msysgit/git/commit/416fda6917f05b456ae263cb7152892bdf96f47c
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-26 (Sun, 26 May 2013)

Changed paths:
M Makefile

Log Message:
-----------
build: do not install git-remote-testpy

It's only meant for testing.

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


Commit: 99a4fdb950b214de3a0ad0ac255f6a2491f975d4
https://github.com/msysgit/git/commit/99a4fdb950b214de3a0ad0ac255f6a2491f975d4
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M contrib/remote-helpers/git-remote-bzr

Log Message:
-----------
remote-bzr: recover from failed clones

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


Commit: ad44a7209534a6298c85a2a0fe107c56de0c8849
https://github.com/msysgit/git/commit/ad44a7209534a6298c85a2a0fe107c56de0c8849
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M contrib/remote-helpers/git-remote-bzr

Log Message:
-----------
remote-bzr: fix for files with spaces

Set the maximum number of splits to make when dividing the diff stat
lines based on space characters.

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


Commit: 1bf09d4fbf402e42b3a0be2411a9c4feb1ba8d25
https://github.com/msysgit/git/commit/1bf09d4fbf402e42b3a0be2411a9c4feb1ba8d25
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M contrib/remote-helpers/git-remote-bzr

Log Message:
-----------
remote-bzr: simplify get_remote_branch()

No need for 'origin', it's only needed for the bzrdir 'sprout' method,
which can be greatly simplified.

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


Commit: 2ae078e8476639b0dcd559d9b797771e6ffd97ff
https://github.com/msysgit/git/commit/2ae078e8476639b0dcd559d9b797771e6ffd97ff
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M contrib/remote-helpers/git-remote-bzr

Log Message:
-----------
remote-bzr: delay cloning/pulling

Until the branch is actually going to be used.

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


Commit: 0454c399c9ce75bbdf7d35223845cfc98f51d5d9
https://github.com/msysgit/git/commit/0454c399c9ce75bbdf7d35223845cfc98f51d5d9
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M contrib/remote-helpers/git-remote-bzr

Log Message:
-----------
remote-bzr: change global repo

It's not used anyway.

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


Commit: a8ffc3ade273c5d6b2383450f1b4970c2da89d7d
https://github.com/msysgit/git/commit/a8ffc3ade273c5d6b2383450f1b4970c2da89d7d
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M contrib/remote-helpers/git-remote-bzr

Log Message:
-----------
remote-bzr: trivial cleanups

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


Commit: e56660a73f778546f7c40989d982ac2f21462975
https://github.com/msysgit/git/commit/e56660a73f778546f7c40989d982ac2f21462975
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M contrib/remote-helpers/git-remote-bzr

Log Message:
-----------
remote-bzr: reorganize the way 'wanted' works

If the user specified a list of branches, we ignore what the remote
repository lists, and simply use the branches directly. Since some
remotes don't report the branches correctly, this is useful.

Otherwise either fetch the repo, or the branch.

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


Commit: 85f931d3d5adf9d628aa3a75cfdd2f8f940f3d56
https://github.com/msysgit/git/commit/85f931d3d5adf9d628aa3a75cfdd2f8f940f3d56
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M contrib/remote-helpers/git-remote-bzr

Log Message:
-----------
remote-bzr: add fallback check for a partial clone

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


Commit: cf08a7e15fd473bc9853227f537f6fe5c6512370
https://github.com/msysgit/git/commit/cf08a7e15fd473bc9853227f537f6fe5c6512370
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M contrib/remote-helpers/test-hg.sh

Log Message:
-----------
remote-hg: test: be a little more quiet

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


Commit: 294ff7b233c3066041320b339f515af8ad58854f
https://github.com/msysgit/git/commit/294ff7b233c3066041320b339f515af8ad58854f
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M contrib/remote-helpers/git-remote-hg

Log Message:
-----------
remote-hg: trivial reorganization

We only need to get the remote dict once.

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


Commit: 4080ac81e5435ce0d1acbe08916190a7513aae2b
https://github.com/msysgit/git/commit/4080ac81e5435ce0d1acbe08916190a7513aae2b
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M contrib/remote-helpers/test-bzr.sh
M contrib/remote-helpers/test-hg.sh

Log Message:
-----------
remote-helpers: test: cleanup white-spaces

We prefer tabs to spaces.

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


Commit: dde67d794c2600fee74aef289332257742f28cfa
https://github.com/msysgit/git/commit/dde67d794c2600fee74aef289332257742f28cfa
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M contrib/remote-helpers/test-bzr.sh
M contrib/remote-helpers/test-hg.sh

Log Message:
-----------
remote-helpers: test: cleanup style

So it's more standardized between all the tests.

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


Commit: 531594e5aad738fa46cfad417bcef0fbd1520fbd
https://github.com/msysgit/git/commit/531594e5aad738fa46cfad417bcef0fbd1520fbd
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M contrib/remote-helpers/test-bzr.sh
M contrib/remote-helpers/test-hg-bidi.sh
M contrib/remote-helpers/test-hg-hg-git.sh
M contrib/remote-helpers/test-hg.sh

Log Message:
-----------
remote-helpers: tests: general improvements

So that we don't need a temporary directory.

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


Commit: 5f5e92fb7954c0bd258563541fed394bc5f88544
https://github.com/msysgit/git/commit/5f5e92fb7954c0bd258563541fed394bc5f88544
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M contrib/remote-helpers/test-bzr.sh
M contrib/remote-helpers/test-hg-bidi.sh
M contrib/remote-helpers/test-hg-hg-git.sh
M contrib/remote-helpers/test-hg.sh

Log Message:
-----------
remote-helpers: test: simplify remote URLs

No need to specify $PWD any more.

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


Commit: f6f00b46aed220517df3c9808f81ea7ca9576643
https://github.com/msysgit/git/commit/f6f00b46aed220517df3c9808f81ea7ca9576643
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M contrib/remote-helpers/test-hg-bidi.sh
M contrib/remote-helpers/test-hg-hg-git.sh

Log Message:
-----------
remote-hg: test: simplify previous branch checkout

@{-1} does the same thing.

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


Commit: cab3829d2b29b9cd750afd0e342d6f3cae359639
https://github.com/msysgit/git/commit/cab3829d2b29b9cd750afd0e342d6f3cae359639
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M contrib/remote-helpers/git-remote-hg

Log Message:
-----------
remote-hg: load all extensions

The user might have then configured differently, plus, all of them will
be loaded anyway later on.

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


Commit: 6796d49ed01c214d4eeb5b9f2ffd2a49b54a7207
https://github.com/msysgit/git/commit/6796d49ed01c214d4eeb5b9f2ffd2a49b54a7207
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M contrib/remote-helpers/git-remote-hg

Log Message:
-----------
remote-hg: use a shared repository store

This way we don't have to have duplicated Mercurial objects.

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


Commit: 52036431ff630ba9de9430fb6982a6869473d002
https://github.com/msysgit/git/commit/52036431ff630ba9de9430fb6982a6869473d002
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M contrib/remote-helpers/git-remote-hg

Log Message:
-----------
remote-hg: shuffle some code

In preparation to shift to SHA-1's.

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


Commit: e936a5d4842e9bbfeaf5792efc0db5965bf9e7ee
https://github.com/msysgit/git/commit/e936a5d4842e9bbfeaf5792efc0db5965bf9e7ee
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M contrib/remote-helpers/git-remote-hg

Log Message:
-----------
remote-hg: improve node traversing

We won't be able to count the unmarked commits, but we are not going to
be able to do that anyway when we switch to SHA-1 ids.

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


Commit: c43c06b1869c40e2a95a23f6b87dc38861e9d776
https://github.com/msysgit/git/commit/c43c06b1869c40e2a95a23f6b87dc38861e9d776
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M contrib/remote-helpers/git-remote-hg

Log Message:
-----------
remote-hg: add version checks to the marks

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


Commit: 93ae203495ded111bb0206fb50e54d0812df1cd5
https://github.com/msysgit/git/commit/93ae203495ded111bb0206fb50e54d0812df1cd5
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M contrib/remote-helpers/git-remote-hg

Log Message:
-----------
remote-hg: switch from revisions to SHA-1 noteids

Otherwise we won't know if revisions are replaced.

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


Commit: 68b161167841c43c138604429f9981cb453aff8a
https://github.com/msysgit/git/commit/68b161167841c43c138604429f9981cb453aff8a
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M contrib/remote-helpers/git-remote-hg

Log Message:
-----------
remote-hg: upgrade version 1 marks

As suggested by Jed Brown; there's no need to re-import all the commits.

Cc: Jed Brown <***@59a2.org>
Signed-off-by: Felipe Contreras <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 9529cce86e508d1910395d7493b7b8706ea7cd37
https://github.com/msysgit/git/commit/9529cce86e508d1910395d7493b7b8706ea7cd37
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M contrib/remote-helpers/git-remote-hg
M contrib/remote-helpers/test-hg.sh

Log Message:
-----------
remote-hg: ensure remote rebasing works

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


Commit: 34d75e78f407c85f948dc74806a6505cd1f001ec
https://github.com/msysgit/git/commit/34d75e78f407c85f948dc74806a6505cd1f001ec
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M contrib/remote-helpers/git-remote-hg

Log Message:
-----------
remote-hg: trivial cleanups

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


Commit: 63f54cf216944e8cadd7c762e624b0a7b1d0c3a2
https://github.com/msysgit/git/commit/63f54cf216944e8cadd7c762e624b0a7b1d0c3a2
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M contrib/remote-helpers/git-remote-hg

Log Message:
-----------
remote-hg: improve progress calculation

No need to manually keep track of the revision count.

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


Commit: 91347ea3e17b853155f9cab31f0c2a28143284ed
https://github.com/msysgit/git/commit/91347ea3e17b853155f9cab31f0c2a28143284ed
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M contrib/remote-helpers/git-remote-hg
M contrib/remote-helpers/test-hg-bidi.sh
M contrib/remote-helpers/test-hg-hg-git.sh
M contrib/remote-helpers/test-hg.sh

Log Message:
-----------
remote-hg: always point HEAD to master

Mercurial always checks out the 'default' branch, so there's no point in
complicating our lives trying to do something fancier, which causes
different behavior depending on whether the repository is local or
remote.

So let's always use 'default' (which we translate to 'master'), unless
we are in hg-git mode, which expects us to use the 'master' bookmark
instead.

Also, update the tests that used to check for different checkout
behaviors to simply check that the refs are there, remove unnecessary
ones, and fix the ones that expect something different.

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


Commit: 9f36d61e7b63618cc7931f948b7b57cdcd11bd7a
https://github.com/msysgit/git/commit/9f36d61e7b63618cc7931f948b7b57cdcd11bd7a
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M contrib/remote-helpers/test-hg.sh

Log Message:
-----------
remote-hg: add tests for 'master' bookmark

We want to make sure everything works correctly, even if there's a
'master' bookmark in Mercurial.

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


Commit: 0067ecc82b2dbef64d3768484eb6a1b4ca2c27d2
https://github.com/msysgit/git/commit/0067ecc82b2dbef64d3768484eb6a1b4ca2c27d2
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M contrib/remote-helpers/test-bzr.sh

Log Message:
-----------
remote-bzr: simplify test checks

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


Commit: b082b4f94ff1a82ce42223f7a46c9423e99c48e9
https://github.com/msysgit/git/commit/b082b4f94ff1a82ce42223f7a46c9423e99c48e9
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M contrib/remote-helpers/test-hg.sh

Log Message:
-----------
remote-hg: add check_bookmark() test helper

And check in a more proper way.

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


Commit: 731ce6cf75d304bc14c1ee0ad45e5846f5db6834
https://github.com/msysgit/git/commit/731ce6cf75d304bc14c1ee0ad45e5846f5db6834
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M contrib/remote-helpers/git-remote-hg

Log Message:
-----------
remote-hg: update bookmarks when using a remote

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


Commit: e6e803be79123dff163900c5a55e556cf6d6c9c0
https://github.com/msysgit/git/commit/e6e803be79123dff163900c5a55e556cf6d6c9c0
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M contrib/remote-helpers/git-remote-hg
M contrib/remote-helpers/test-hg.sh

Log Message:
-----------
remote-hg: add remote tests

The logic when working with a local repository is totally different from
the one where we work with a remote repository; we need to pull and push
from it.

All this logic is currently not tested at all, so let's introduce a
variable to force the remote behavior.

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


Commit: e14432f798d6575b5c8269982758c0916a5f13c5
https://github.com/msysgit/git/commit/e14432f798d6575b5c8269982758c0916a5f13c5
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M contrib/remote-helpers/test-hg.sh

Log Message:
-----------
remote-hg: add test to push new bookmark

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


Commit: 1a810864e87b78c08295acca124eb66b8cf2a973
https://github.com/msysgit/git/commit/1a810864e87b78c08295acca124eb66b8cf2a973
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M contrib/remote-helpers/test-hg.sh

Log Message:
-----------
remote-hg: add test for diverged push

Neither mercurial nor git allows pushing to a remote when it's a
non-fast-forward push. We should be able to detect these errors and
report them properly, as opposed to throwing an exception
stack-trace.

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


Commit: 747b61c6a66b5af279fdc1f919e9519045ed097a
https://github.com/msysgit/git/commit/747b61c6a66b5af279fdc1f919e9519045ed097a
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M contrib/remote-helpers/test-hg.sh

Log Message:
-----------
remote-hg: add test for bookmark diverge

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


Commit: ad22b92a810bd793e4a357d0230beefb865e929e
https://github.com/msysgit/git/commit/ad22b92a810bd793e4a357d0230beefb865e929e
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M contrib/remote-helpers/test-hg.sh

Log Message:
-----------
remote-hg: add test for new bookmark special
From the point of view of Mercurial, this creates a new branch head,
and requires a forced push.

Ideally, however, we would want it to work just like in git; new
branches can be pushed without problems.

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


Commit: d2c76330286c8bd604f9fbbb7818cecce893b769
https://github.com/msysgit/git/commit/d2c76330286c8bd604f9fbbb7818cecce893b769
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M contrib/remote-helpers/test-hg.sh

Log Message:
-----------
remote-hg: add test for big push

With lots branches and bookmarks, non-ff, updated and new.

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


Commit: 0bf9ee5720c6d98be8bee93ab3e1a80451de767c
https://github.com/msysgit/git/commit/0bf9ee5720c6d98be8bee93ab3e1a80451de767c
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M contrib/remote-helpers/test-hg.sh

Log Message:
-----------
remote-hg: add test for failed double push

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


Commit: aaadca28b6148c262385c258c761e166eff6fbeb
https://github.com/msysgit/git/commit/aaadca28b6148c262385c258c761e166eff6fbeb
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M contrib/remote-helpers/git-remote-hg

Log Message:
-----------
remote-hg: reorganize bookmark handling

We don't need to update both internal and remote bookmarks, so let's do
one or the other, and move the shared code earlier, so it's simpler.

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


Commit: dfcef29f2f32046f3edbcaee47a03d94bc237eb8
https://github.com/msysgit/git/commit/dfcef29f2f32046f3edbcaee47a03d94bc237eb8
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M contrib/remote-helpers/git-remote-hg

Log Message:
-----------
remote-hg: force remote bookmark push selectively

If we update the 'old' node, we might be updating the remote bookmark
even when our 'new' node is not related at all to what the remote has,
effectively forcing an update.

Let's do that only when forced push is configured.

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


Commit: d226945471d6c2d5ec6b42bdac78a4e6518c1be9
https://github.com/msysgit/git/commit/d226945471d6c2d5ec6b42bdac78a4e6518c1be9
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M contrib/remote-helpers/git-remote-hg

Log Message:
-----------
remote-hg: only update necessary revisions

We don't care about the rest, and in fact, we shouldn't try to push
everything, as there might be garbage from previous failed pushes.

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


Commit: 4f37bdbdb6229931c464b99eb9f6e198de01d0a7
https://github.com/msysgit/git/commit/4f37bdbdb6229931c464b99eb9f6e198de01d0a7
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M contrib/remote-helpers/git-remote-hg

Log Message:
-----------
remote-hg: implement custom push()

The one from mercurial does a ton of things we are not interested in,
and we need some special modifications which are impossible otherwise.

Most of the code is borrowed from Mercurial, and cleaned up, but should
be functionally the same for our purposes, except that multiple heads
are not detected.

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


Commit: 19a8cefc44b216db5cf8faf790d197c85db6395e
https://github.com/msysgit/git/commit/19a8cefc44b216db5cf8faf790d197c85db6395e
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M contrib/remote-helpers/git-remote-hg

Log Message:
-----------
remote-hg: implement custom checkheads()

The version from Mercurial is extremely inefficient and convoluted, this
version achieves basically the same, at least for our purposes.

No functional changes.

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


Commit: 883d7be110968c0d319dfa7c595c640e616da9c5
https://github.com/msysgit/git/commit/883d7be110968c0d319dfa7c595c640e616da9c5
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M contrib/remote-helpers/git-remote-hg
M contrib/remote-helpers/test-hg.sh

Log Message:
-----------
remote-hg: pass around revision refs

So that when a diverge is detected, we know which ref to report an error
for.

Also, since we are not throwing an exception, return a proper error
code.

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


Commit: d3c460b5b43ab67de894c9d3b6d6ce20f3f00070
https://github.com/msysgit/git/commit/d3c460b5b43ab67de894c9d3b6d6ce20f3f00070
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M contrib/remote-helpers/git-remote-hg
M contrib/remote-helpers/test-hg.sh

Log Message:
-----------
remote-hg: check diverged bookmarks

So that we can report a proper error.

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


Commit: 611024e606c8019d348ab1821a1fbb1898384a25
https://github.com/msysgit/git/commit/611024e606c8019d348ab1821a1fbb1898384a25
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M contrib/remote-helpers/git-remote-hg

Log Message:
-----------
remote-hg: simplify branch_tip()

It simply picks the last head that is not closed, but we have a stored
list of open heads.

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


Commit: c2f7a82032bff3f516aa7d029506aed096a01e0b
https://github.com/msysgit/git/commit/c2f7a82032bff3f516aa7d029506aed096a01e0b
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M contrib/remote-helpers/git-remote-hg

Log Message:
-----------
remote-hg: improve branch listing

We want to show the remote heads, not the internal ones, which might
have garbage.

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


Commit: b688911a789e4eb1cfb97e1a59df0b14817b9d1a
https://github.com/msysgit/git/commit/b688911a789e4eb1cfb97e1a59df0b14817b9d1a
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M contrib/remote-helpers/git-remote-hg
M contrib/remote-helpers/test-hg.sh

Log Message:
-----------
remote-hg: use remote 'default' not local one

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


Commit: d462469b4dd724b162a6ef29d0907eb133a5d56e
https://github.com/msysgit/git/commit/d462469b4dd724b162a6ef29d0907eb133a5d56e
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M contrib/remote-helpers/git-remote-hg

Log Message:
-----------
remote-hg: improve lightweight tag author

Use git's committer.

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


Commit: 66f46aa14fa48e5d17885b46e80250e155c255e3
https://github.com/msysgit/git/commit/66f46aa14fa48e5d17885b46e80250e155c255e3
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M contrib/remote-helpers/git-remote-hg

Log Message:
-----------
remote-hg: remove files before modifications

Otherwise replacing a file with a directory doesn't work.

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


Commit: 2b02a40587a4a8b7f8bd0542b57c61ec97d0ef2a
https://github.com/msysgit/git/commit/2b02a40587a4a8b7f8bd0542b57c61ec97d0ef2a
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M contrib/remote-helpers/test-hg.sh

Log Message:
-----------
remote-hg: add setup_big_push() helper

So we don't duplicate these commands.

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


Commit: 42cbbcc73b312e2306f051f89702799546aa7953
https://github.com/msysgit/git/commit/42cbbcc73b312e2306f051f89702799546aa7953
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M contrib/remote-helpers/test-hg.sh

Log Message:
-----------
remote-hg: add check_push() helper

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


Commit: 8316d18da324f44b93faf36cddbf19411b53d101
https://github.com/msysgit/git/commit/8316d18da324f44b93faf36cddbf19411b53d101
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M contrib/remote-helpers/git-remote-bzr
M contrib/remote-helpers/git-remote-hg

Log Message:
-----------
remote-helpers: improve marks usage

Always convert to strings (they are unicode because they come from JSON).

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


Commit: ab64bc9d21957d2ab30cd4a5e5359fb3f9155704
https://github.com/msysgit/git/commit/ab64bc9d21957d2ab30cd4a5e5359fb3f9155704
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M contrib/remote-helpers/git-remote-hg

Log Message:
-----------
remote-hg: trivial cleanup

It's better to catch the exception later on.

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


Commit: ba091c200d88b27a0bd9027f24a7250f196fc304
https://github.com/msysgit/git/commit/ba091c200d88b27a0bd9027f24a7250f196fc304
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M contrib/remote-helpers/git-remote-hg
M contrib/remote-helpers/test-hg.sh

Log Message:
-----------
remote-hg: check if a fetch is needed

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


Commit: e3751a1763112b301f2269dd268190900d7ddd29
https://github.com/msysgit/git/commit/e3751a1763112b301f2269dd268190900d7ddd29
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M contrib/remote-helpers/git-remote-hg
M contrib/remote-helpers/test-hg.sh

Log Message:
-----------
remote-hg: add support for --dry-run

This needs a specific patch from Git not applied yet.

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


Commit: c9eaef125bbecd60a8b328d58e66306d5db1357a
https://github.com/msysgit/git/commit/c9eaef125bbecd60a8b328d58e66306d5db1357a
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M contrib/remote-helpers/git-remote-hg
M contrib/remote-helpers/test-hg.sh

Log Message:
-----------
remote-hg: add support for --force

And get rid of the remote-hg.force-push option hack.

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


Commit: 6035d6aad8ca11954c0d7821f6f3e7c047039c8f
https://github.com/msysgit/git/commit/6035d6aad8ca11954c0d7821f6f3e7c047039c8f
Author: Nguyễn Thái Ngọc Duy <***@gmail.com>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M commit.h
M fetch-pack.c
M git.c
M shallow.c
M t/t5500-fetch-pack.sh

Log Message:
-----------
fetch-pack: prepare updated shallow file before fetching the pack

index-pack --strict looks up and follows parent commits. If shallow
information is not ready by the time index-pack is run, index-pack may
be led to non-existent objects. Make fetch-pack save shallow file to
disk before invoking index-pack.

git learns new global option --shallow-file to pass on the alternate
shallow file path. Undocumented (and not even support --shallow-file=
syntax) because it's unlikely to be used again elsewhere.

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


Commit: 920734b069b269937b25a692d21c1623cbaec4b0
https://github.com/msysgit/git/commit/920734b069b269937b25a692d21c1623cbaec4b0
Author: Nguyễn Thái Ngọc Duy <***@gmail.com>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M builtin/index-pack.c

Log Message:
-----------
index-pack: remove dead code (it should never happen)

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


Commit: c6807a40dcd29f7e5ad1e2f4fc44f1729c9afa11
https://github.com/msysgit/git/commit/c6807a40dcd29f7e5ad1e2f4fc44f1729c9afa11
Author: Nguyễn Thái Ngọc Duy <***@gmail.com>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M Documentation/git-index-pack.txt
M builtin/clone.c
M builtin/index-pack.c
M connected.c
M connected.h
M fetch-pack.c
M fetch-pack.h
M transport.c
M transport.h

Log Message:
-----------
clone: open a shortcut for connectivity check

In order to make sure the cloned repository is good, we run "rev-list
--objects --not --all $new_refs" on the repository. This is expensive
on large repositories. This patch attempts to mitigate the impact in
this special case.

In the "good" clone case, we only have one pack. If all of the
following are met, we can be sure that all objects reachable from the
new refs exist, which is the intention of running "rev-list ...":

- all refs point to an object in the pack
- there are no dangling pointers in any object in the pack
- no objects in the pack point to objects outside the pack

The second and third checks can be done with the help of index-pack as
a slight variation of --strict check (which introduces a new condition
for the shortcut: pack transfer must be used and the number of objects
large enough to call index-pack). The first is checked in
check_everything_connected after we get an "ok" from index-pack.

"index-pack + new checks" is still faster than the current "index-pack
+ rev-list", which is the whole point of this patch. If any of the
conditions fail, we fall back to the good old but expensive "rev-list
..". In that case it's even more expensive because we have to pay for
the new checks in index-pack. But that should only happen when the
other side is either buggy or malicious.

Cloning linux-2.6 over file://
before after
real 3m25.693s 2m53.050s
user 5m2.037s 4m42.396s
sys 0m13.750s 0m16.574s

A more realistic test with ssh:// over wireless
before after
real 11m26.629s 10m4.213s
user 5m43.196s 5m19.444s
sys 0m35.812s 0m37.630s

This shortcut is not applied to shallow clones, partly because shallow
clones should have no more objects than a usual fetch and the cost of
rev-list is acceptable, partly to avoid dealing with corner cases when
grafting is involved.

This shortcut does not apply to unpack-objects code path either
because the number of objects must be small in order to trigger that
code path.

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


Commit: 823c6d56a83f3eec657a94581c23c5b7682bdaf4
https://github.com/msysgit/git/commit/823c6d56a83f3eec657a94581c23c5b7682bdaf4
Author: John Keeping <***@keeping.me.uk>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M builtin/fetch.c
M t/t5510-fetch.sh

Log Message:
-----------
fetch: don't try to update unfetched tracking refs

Since commit f269048 (fetch: opportunistically update tracking refs,
2013-05-11) we update tracking refs opportunistically when fetching
remote branches. However, if there is a configured non-pattern refspec
that does not match any of the refspecs given on the command line then a
fatal error occurs.

Fix this by setting the "missing_ok" flag when calling get_fetch_map.

Test-added-by: Jeff King <***@peff.net>
Signed-off-by: John Keeping <***@keeping.me.uk>
Acked-by: Jeff King <***@peff.net>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 7a97ee1d84283d0e59648531678bd69a895c78f5
https://github.com/msysgit/git/commit/7a97ee1d84283d0e59648531678bd69a895c78f5
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M remote.c

Log Message:
-----------
remote: trivial style cleanup

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


Commit: 15c7348eb0731f33a65fb08a27979640d44a7a3d
https://github.com/msysgit/git/commit/15c7348eb0731f33a65fb08a27979640d44a7a3d
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M t/t3403-rebase-skip.sh
M t/t3505-cherry-pick-empty.sh

Log Message:
-----------
test: trivial cleanups

No functional changes.

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


Commit: 6f87f038972afef0d7d256073ddfd8930e4b909d
https://github.com/msysgit/git/commit/6f87f038972afef0d7d256073ddfd8930e4b909d
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M t/t3404-rebase-interactive.sh

Log Message:
-----------
test: rebase: fix --interactive test

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


Commit: af0b4a3b5973ebdf8fcdedcccbc2e8ddb93c8534
https://github.com/msysgit/git/commit/af0b4a3b5973ebdf8fcdedcccbc2e8ddb93c8534
Author: Nguyễn Thái Ngọc Duy <***@gmail.com>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M builtin.h
M builtin/prune-packed.c
M builtin/prune.c

Log Message:
-----------
prune-packed: avoid implying "1" is DRY_RUN in prune_packed_objects()

Commit b60daf0 (Make git-prune-packed a bit more chatty. - 2007-01-12)
changes the meaning of prune_packed_objects()'s argument, from "dry
run or not dry run" to a bitmap.

It however forgot to update prune_packed_objects() caller in
builtin/prune.c to use new DRY_RUN macro. It's fine (for a long time!)
but there is a risk that someday someone may change the value of
DRY_RUN to something else and builtin/prune.c suddenly breaks. Avoid
that possibility.

While at there, change "opts == VERBOSE" to "opts & VERBOSE" as there
is no obvious reason why we only be chatty when DRY_RUN is not set.

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


Commit: 219a0f33cae0f164f4353b2171ecd4c08d5b7ced
https://github.com/msysgit/git/commit/219a0f33cae0f164f4353b2171ecd4c08d5b7ced
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M builtin/describe.c

Log Message:
-----------
describe: make own copy of refname

Do not retain a reference to the refname passed to the each_ref_fn
callback get_name(), because there is no guarantee of the lifetimes of
these names. Instead, make a local copy when needed.

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


Commit: b87dbcc89940edbf92cbab381001542a7cac3627
https://github.com/msysgit/git/commit/b87dbcc89940edbf92cbab381001542a7cac3627
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M builtin/fetch.c

Log Message:
-----------
fetch: make own copies of refnames

Do not retain references to refnames passed to the each_ref_fn
callback add_existing(), because their lifetime is not guaranteed.

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


Commit: df835d3a0c013b9ef912172663c7c58dad87164d
https://github.com/msysgit/git/commit/df835d3a0c013b9ef912172663c7c58dad87164d
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M revision.c

Log Message:
-----------
add_rev_cmdline(): make a copy of the name argument

Instead of assuming that the memory pointed to by the name argument
will live forever, make a local copy of it before storing it in the
ref_cmdline_info.

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


Commit: 91de344d7696ba8d7b92b7c503fdc0d3961e8cd2
https://github.com/msysgit/git/commit/91de344d7696ba8d7b92b7c503fdc0d3961e8cd2
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M builtin/diff.c

Log Message:
-----------
builtin_diff_tree(): make it obvious that function wants two entries

Instead of accepting an array and using exactly two elements from the
array, take two single (struct object_array_entry *) arguments.

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


Commit: 33055fa823eff9f4fddb858856f9b9a8d85316fc
https://github.com/msysgit/git/commit/33055fa823eff9f4fddb858856f9b9a8d85316fc
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M builtin/diff.c

Log Message:
-----------
cmd_diff(): use an object_array for holding trees

Change cmd_diff() to use a (struct object_array) for holding the trees
that it accumulates, rather than rolling its own equivalent.

Incidentally, this change removes a hard-coded limit of 100 trees in
combined diff, not that it matters in practice.

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


Commit: 026f09e79689f99f573b8399443e8c4ffa84a794
https://github.com/msysgit/git/commit/026f09e79689f99f573b8399443e8c4ffa84a794
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M builtin/diff.c

Log Message:
-----------
cmd_diff(): rename local variable "list" -> "entry"

It's not a list, it's an array entry.

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


Commit: 5b1e14eab3109c1d33e27b00ee18f8f9f60e779c
https://github.com/msysgit/git/commit/5b1e14eab3109c1d33e27b00ee18f8f9f60e779c
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M builtin/diff.c

Log Message:
-----------
cmd_diff(): make it obvious which cases are exclusive of each other

At first glance the OBJ_COMMIT, OBJ_TREE, and OBJ_BLOB cases look like
they might be mutually exclusive. But the OBJ_COMMIT case doesn't end
the loop iteration with "continue" like the other two cases, but
rather falls through. So use if...else if...else construct to make it
more obvious that only the last two cases are mutually exclusive.

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


Commit: ff5f5f268fd36b6db059c06d124305866ecaa6ce
https://github.com/msysgit/git/commit/ff5f5f268fd36b6db059c06d124305866ecaa6ce
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M revision.c
M revision.h

Log Message:
-----------
revision: split some overly-long lines

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


Commit: aeb4a51ef82c71c9a65d11f77aeedb53bea0e983
https://github.com/msysgit/git/commit/aeb4a51ef82c71c9a65d11f77aeedb53bea0e983
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M object.c
M object.h

Log Message:
-----------
object_array: add function object_array_filter()

Add a function that allows unwanted entries in an object_array to be
removed. This encapsulation is a step towards giving object_array
ownership of its entries' name memory.

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


Commit: be6754c67f5aff02e9528116d06890391524f48e
https://github.com/msysgit/git/commit/be6754c67f5aff02e9528116d06890391524f48e
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M revision.c

Log Message:
-----------
revision: use object_array_filter() in implementation of gc_boundary()

Use object_array_filter(), which will soon be made smarter about
cleaning up discarded entries properly. Also add a function comment.

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


Commit: 1506510c170d23b8f769757dc81904f334c40281
https://github.com/msysgit/git/commit/1506510c170d23b8f769757dc81904f334c40281
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M object.c
M object.h

Log Message:
-----------
object_array_remove_duplicates(): rewrite to reduce copying

The old version copied one entry to its destination position, then
deleted any matching entries from the tail of the array. This
required the tail of the array to be copied multiple times. It didn't
affect the complexity of the algorithm because the whole tail has to
be searched through anyway. But all the copying was unnecessary.

Instead, check for the existence of an entry with the same name in the
*head* of the list before copying an entry to its final position.
This way each entry has to be copied at most one time.

Extract a helper function contains_name() to do a bit of the work.

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


Commit: 16aa3bfc9b9dc587d02f29d8e54810480cf955e4
https://github.com/msysgit/git/commit/16aa3bfc9b9dc587d02f29d8e54810480cf955e4
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M builtin/fsck.c

Log Message:
-----------
fsck: don't put a void*-shaped peg in a char*-shaped hole

The source of this nonsense was

04d3975937 fsck: reduce stack footprint

, which wedged a pointer to parent into the object_array_entry's name
field. The parent pointer was passed to traverse_one_object(), even
though that function *didn't use it*.

The useless code has been deleted over time. Commit

a1cdc25172 fsck: drop unused parameter from traverse_one_object()

removed the parent pointer from traverse_one_object()'s
signature. Commit

c0aa335c95 Remove unused variables

removed the code that read the parent pointer back out of the name
field.

This commit takes the last step: don't write the parent pointer into
the name field in the first place.

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


Commit: 3826902d25febf61274925d6f12cc7471ba3c38f
https://github.com/msysgit/git/commit/3826902d25febf61274925d6f12cc7471ba3c38f
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M submodule.c

Log Message:
-----------
find_first_merges(): initialize merges variable using initializer

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


Commit: 5de0c0155c824803a7ee39326b09eeb93e9ec899
https://github.com/msysgit/git/commit/5de0c0155c824803a7ee39326b09eeb93e9ec899
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M submodule.c

Log Message:
-----------
find_first_merges(): remove unnecessary code

No names are ever set for the object_array_entries in merges, so there
is no need to pretend to copy them to the result array.

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


Commit: b99d22f29a58feeccb1eb129b68a73f974715ee1
https://github.com/msysgit/git/commit/b99d22f29a58feeccb1eb129b68a73f974715ee1
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M git-send-email.perl
M t/t9001-send-email.sh

Log Message:
-----------
send-email: remove warning about unset chainreplyto

Three years and a half is probably more than enough time to give users
the opportunity to configure Git to do what they want. If they haven't
changed the configuration by now, this warning message is not going to
do anything for them anyway.

This effectively reverts commit 528fb08 (prepare send-email for smoother
change of --chain-reply-to default).

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


Commit: 46ec510ac088ac2669e617a4c8c35e6218dabecc
https://github.com/msysgit/git/commit/46ec510ac088ac2669e617a4c8c35e6218dabecc
Author: Clemens Buchacher <***@aon.at>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M combine-diff.c
M t/t4202-log.sh

Log Message:
-----------
fix segfault with git log -c --follow

In diff_tree_combined we make a copy of diffopts. In
try_to_follow_renames, called via diff_tree_sha1, we free and
re-initialize diffopts->pathspec->items. Since we did not make a deep
copy of diffopts in diff_tree_combined, the original diffopts does not
get the update. By the time we return from diff_tree_combined,
rev->diffopt->pathspec->items points to an invalid memory address. We
get a segfault next time we try to access that pathspec.

Instead, along with the copy of diffopts, make a copy pathspec->items as
well.

We would also have to make a copy of pathspec->raw to keep it consistent
with pathspec->items, but nobody seems to rely on that.

Signed-off-by: Clemens Buchacher <***@aon.at>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: de56ccf7999ca53370f44f252b780a970d639f9e
https://github.com/msysgit/git/commit/de56ccf7999ca53370f44f252b780a970d639f9e
Author: Xidorn Quan <***@gmail.com>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M contrib/credential/osxkeychain/git-credential-osxkeychain.c

Log Message:
-----------
credential-osxkeychain: support more protocols

Add protocol imap, imaps, ftp and smtp for credential-osxkeychain.

Signed-off-by: Xidorn Quan <***@gmail.com>
Acked-by: John Szakmeister <***@szakmeister.net>
Acked-by: Jeff King <***@peff.net>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 25206778aac776fc6cc4887653fdae476c7a9b5a
https://github.com/msysgit/git/commit/25206778aac776fc6cc4887653fdae476c7a9b5a
Author: René Scharfe <***@lsrfire.ath.cx>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M builtin/commit.c
M t/t7502-commit.sh

Log Message:
-----------
commit: don't start editor if empty message is given with -m

If an empty message is specified with the option -m of git commit then
the editor is started. That's unexpected and unnecessary. Instead of
using the length of the message string for checking if the user
specified one, directly remember if the option -m was given.

Reported-by: Mislav Marohnić <***@gmail.com>
Signed-off-by: René Scharfe <***@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: b1d04bfcf84cc3464d0bdf62b02443d0d55e3f2b
https://github.com/msysgit/git/commit/b1d04bfcf84cc3464d0bdf62b02443d0d55e3f2b
Author: Phil Hord <***@cisco.com>
Date: 2013-05-28 (Tue, 28 May 2013)

Changed paths:
M Documentation/diff-options.txt

Log Message:
-----------
trivial: Add missing period in documentation

Signed-off-by: Phil Hord <***@cisco.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 0aa0321212d6b817783616af4ba1353a46b82179
https://github.com/msysgit/git/commit/0aa0321212d6b817783616af4ba1353a46b82179
Author: Matthieu Moy <***@imag.fr>
Date: 2013-05-29 (Wed, 29 May 2013)

Changed paths:
M contrib/mw-to-git/git-remote-mediawiki.perl

Log Message:
-----------
git-remote-mediawiki: better error message when HTTP(S) access fails

My use-case is an invalid SSL certificate. Pulling from the wiki with a
recent version of libwww-perl fails, and git-remote-mediawiki gave no
clue about the reason. Give the mediawiki API detailed error message, and
since it is not so informative, hint the user about an invalid SSL
certificate on https:// urls.

Signed-off-by: Matthieu Moy <***@imag.fr>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 587947750bd73544a6a99811f0ddfd64e1ff1445
https://github.com/msysgit/git/commit/587947750bd73544a6a99811f0ddfd64e1ff1445
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-05-29 (Wed, 29 May 2013)

Changed paths:
M Documentation/config.txt
M Documentation/git-rebase.txt
M git-rebase.sh
A t/t3420-rebase-autostash.sh

Log Message:
-----------
rebase: implement --[no-]autostash and rebase.autostash

This new feature allows a rebase to be executed on a dirty worktree or
index. It works by creating a temporary "dangling merge commit" out
of the worktree and index changes (via 'git stash create'), and
automatically applying it after a successful rebase or abort.

rebase stores the SHA-1 hex of the temporary merge commit, along with
the rest of the rebase state, in either
.git/{rebase-merge,rebase-apply}/autostash depending on the kind of
rebase. Since $state_dir is automatically removed at the end of a
successful rebase or abort, so is the autostash.

The advantage of this approach is that we do not affect the normal
stash's reflogs, making the autostash invisible to the end-user. This
means that you can use 'git stash' during a rebase as usual.

When the autostash application results in a conflict, we push
$state_dir/autostash onto the normal stash and remove $state_dir
ending the rebase. The user can inspect the stash, and pop or drop at
any time.

Most significantly, this feature means that a caller like pull (with
pull.rebase set to true) can easily be patched to remove the
require_clean_work_tree restriction.

Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 1306321ebea4d789974f0d58062664cc35c411e8
https://github.com/msysgit/git/commit/1306321ebea4d789974f0d58062664cc35c411e8
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-29 (Wed, 29 May 2013)

Changed paths:
M contrib/completion/git-prompt.sh
M t/t9903-bash-prompt.sh

Log Message:
-----------
prompt: fix for simple rebase

When we are rebasing without options ('am' mode), the head rebased lives
in '$g/rebase-apply/head-name', so lets use that information so it's
reported the same way as if we were doing other rebases (-i or -m).

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


Commit: 798c35fcd8a71a094ca68ac05d81e08c5ac8166d
https://github.com/msysgit/git/commit/798c35fcd8a71a094ca68ac05d81e08c5ac8166d
Author: Nguyễn Thái Ngọc Duy <***@gmail.com>
Date: 2013-05-29 (Wed, 29 May 2013)

Changed paths:
M advice.c
M advice.h
M sha1_name.c
M t/t1512-rev-parse-disambiguation.sh

Log Message:
-----------
get_sha1: warn about full or short object names that look like refs

When we get 40 hex digits, we immediately assume it's an SHA-1. This
is the right thing to do because we have no way else to specify an
object. If there is a ref with the same object name, it will be
ignored. Warn the user about this case because the ref with full
object name is likely a mistake, for example

git checkout -b $empty_var $(git rev-parse something)

advice.object_name_warning is not documented because frankly people
should not be aware about it until they encounter this situation.

While at there, warn about ambiguation with abbreviated SHA-1 too.

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


Commit: 35ee69c0f6c77f293b66125d334467d9692ef866
https://github.com/msysgit/git/commit/35ee69c0f6c77f293b66125d334467d9692ef866
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-05-29 (Wed, 29 May 2013)

Changed paths:
M builtin/push.c

Log Message:
-----------
push: factor out the detached HEAD error message

With push.default set to upstream or simple, and a detached HEAD, git
push prints the following error:

$ git push
fatal: You are not currently on a branch.
To push the history leading to the current (detached HEAD)
state now, use

git push ram HEAD:<name-of-remote-branch>

This error is not unique to upstream or simple: current cannot push with
a detached HEAD either. So, factor out the error string in preparation
for using it in current.

Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 32eaf1de7f79c4ba09f3de3261c84e52e0a67af5
https://github.com/msysgit/git/commit/32eaf1de7f79c4ba09f3de3261c84e52e0a67af5
Author: Kenichi Saita <***@gmail.com>
Date: 2013-05-29 (Wed, 29 May 2013)

Changed paths:
M git-difftool.perl
M t/t7800-difftool.sh

Log Message:
-----------
difftool --dir-diff: allow changing any clean working tree file

The temporary directory prepared by "difftool --dir-diff" to
show the result of a change can be modified by the user via
the tree diff program, and we try hard not to lose changes
to them after tree diff program returns to us.

However, the set of files to be copied back is computed
differently between --symlinks and --no-symlinks modes. The
former checks all paths that start out as identical to the
working tree file, while the latter checks paths that
already had a local modification in the working tree,
allowing changes made in the tree diff program to paths that
did not have any local change to be lost.

Signed-off-by: Kenichi Saita <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: be706c6f4f99ec04c4104bda8820513276af8129
https://github.com/msysgit/git/commit/be706c6f4f99ec04c4104bda8820513276af8129
Author: Stefan Beller <***@googlemail.com>
Date: 2013-05-29 (Wed, 29 May 2013)

Changed paths:
M archive-zip.c

Log Message:
-----------
archive-zip:write_zip_entry: Remove second reset of size variable to zero.

It is set to zero just 3 lines before.
Reported by cppcheck.

Signed-off-by: Stefan Beller <***@googlemail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 3646b1a5ab47e535a746da10e5461ba70a0b652d
https://github.com/msysgit/git/commit/3646b1a5ab47e535a746da10e5461ba70a0b652d
Author: Felipe Contreras <***@gmail.com>
Date: 2013-05-29 (Wed, 29 May 2013)

Changed paths:
M contrib/completion/git-completion.zsh

Log Message:
-----------
completion: zsh: improve bash script loading

It's better to check in multiple locations, so the user doesn't have to.

And update the documentation.

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


Commit: 766f0f8ef755eeb7a79b87af9bc348a1ba824589
https://github.com/msysgit/git/commit/766f0f8ef755eeb7a79b87af9bc348a1ba824589
Author: Junio C Hamano <***@pobox.com>
Date: 2013-05-29 (Wed, 29 May 2013)

Changed paths:
M Documentation/gitremote-helpers.txt
M git-remote-testgit
M t/t5801-remote-helpers.sh
M transport-helper.c

Log Message:
-----------
Merge branch 'fc/transport-helper-error-reporting'

Update transport helper to report errors and maintain ref hierarchy
used to keep track of remote helper state better.

* fc/transport-helper-error-reporting:
transport-helper: fix remote helper namespace regression
test: remote-helper: add missing and
t5801: "VAR=VAL shell_func args" is forbidden
transport-helper: update remote helper namespace
transport-helper: trivial code shuffle
transport-helper: warn when refspec is not used
transport-helper: clarify pushing without refspecs
transport-helper: update refspec documentation
transport-helper: clarify *:* refspec
transport-helper: improve push messages
transport-helper: mention helper name when it dies
transport-helper: report errors properly


Commit: 1ccb22d524e4809d5a8282603f0d5433cf2cbb8c
https://github.com/msysgit/git/commit/1ccb22d524e4809d5a8282603f0d5433cf2cbb8c
Author: Junio C Hamano <***@pobox.com>
Date: 2013-05-29 (Wed, 29 May 2013)

Changed paths:
M .gitignore
M Makefile
R git-remote-testgit
A git-remote-testgit.sh
M t/t5801-remote-helpers.sh

Log Message:
-----------
Merge branch 'js/transport-helper-error-reporting-fix'

Finishing touches to fc/transport-helper-error-reporting topic.

* js/transport-helper-error-reporting-fix:
git-remote-testgit: build it to run under $SHELL_PATH
git-remote-testgit: further remove some bashisms
git-remote-testgit: avoid process substitution


Commit: 305e19bdc315f302b935d50abff4a1a405e14b71
https://github.com/msysgit/git/commit/305e19bdc315f302b935d50abff4a1a405e14b71
Author: Junio C Hamano <***@pobox.com>
Date: 2013-05-29 (Wed, 29 May 2013)

Changed paths:
M Documentation/technical/pack-protocol.txt
M t/t5500-fetch-pack.sh
M upload-pack.c

Log Message:
-----------
Merge branch 'mh/fetch-into-shallow'

"git fetch" into a shallow repository from a repository that does
not know about the shallow boundary commits (e.g. a different fork
from the repository the current shallow repository was cloned from)
did not work correctly.

* mh/fetch-into-shallow:
t5500: add test for fetching with an unknown 'shallow'
upload-pack: ignore 'shallow' lines with unknown obj-ids


Commit: 3e1e7624aa2aa39890ca49d0f7bd3af397c22b03
https://github.com/msysgit/git/commit/3e1e7624aa2aa39890ca49d0f7bd3af397c22b03
Author: Junio C Hamano <***@pobox.com>
Date: 2013-05-29 (Wed, 29 May 2013)

Changed paths:
M Documentation/git-gc.txt
M Documentation/git-reflog.txt
M Documentation/technical/api-parse-options.txt
M builtin/prune.c
M builtin/reflog.c
M cache.h
M date.c
M parse-options-cb.c
M parse-options.h

Log Message:
-----------
Merge branch 'jc/prune-all'

We used the approxidate() parser for "--expire=<timestamp>" options
of various commands, but it is better to treat --expire=all and
--expire=now a bit more specially than using the current timestamp.
Update "git gc" and "git reflog" with a new parsing function for
expiry dates.

* jc/prune-all:
prune: introduce OPT_EXPIRY_DATE() and use it
api-parse-options.txt: document "no-" for non-boolean options
git-gc.txt, git-reflog.txt: document new expiry options
date.c: add parse_expiry_date()


Commit: 77eb44b8ed601a17a5ec9b1fb8c4c53ba10aaa56
https://github.com/msysgit/git/commit/77eb44b8ed601a17a5ec9b1fb8c4c53ba10aaa56
Author: Junio C Hamano <***@pobox.com>
Date: 2013-05-29 (Wed, 29 May 2013)

Changed paths:
M Documentation/git-checkout.txt
M Documentation/glossary-content.txt
M branch.c
M builtin/checkout.c
A t/t2024-checkout-dwim.sh
M t/t3200-branch.sh
M t/t7201-co.sh
M t/t9114-git-svn-dcommit-merge.sh

Log Message:
-----------
Merge branch 'jh/checkout-auto-tracking'

Update "git checkout foo" that DWIMs the intended "upstream" and
turns it into "git checkout -t -b foo remotes/origin/foo" to
correctly take existing remote definitions into account.

The remote "origin" may be what uniquely map its own branch to
remotes/some/where/foo but that some/where may not be "origin".

* jh/checkout-auto-tracking:
glossary: Update and rephrase the definition of a remote-tracking branch
branch.c: Validate tracking branches with refspecs instead of refs/remotes/*
t9114.2: Don't use --track option against "svn-remote"-tracking branches
t7201.24: Add refspec to keep --track working
t3200.39: tracking setup should fail if there is no matching refspec.
checkout: Use remote refspecs when DWIMming tracking branches
t2024: Show failure to use refspec when DWIMming remote branch names
t2024: Add tests verifying current DWIM behavior of 'git checkout <branch>'


Commit: c51afbbd18f51beb186afdfa8bbe35c13a782df7
https://github.com/msysgit/git/commit/c51afbbd18f51beb186afdfa8bbe35c13a782df7
Author: Junio C Hamano <***@pobox.com>
Date: 2013-05-29 (Wed, 29 May 2013)

Changed paths:
M Documentation/git-check-attr.txt
M Documentation/git-check-ignore.txt
M Documentation/git.txt
M builtin/check-ignore.c
M t/t0008-ignores.sh

Log Message:
-----------
Merge branch 'as/check-ignore'

Enhance "check-ignore" (1.8.2 update) to work more like "check-attr"
over bidi-pipes.

* as/check-ignore:
t0008: use named pipe (FIFO) to test check-ignore streaming
Documentation: add caveats about I/O buffering for check-{attr,ignore}
check-ignore: allow incremental streaming of queries via --stdin
check-ignore: move setup into cmd_check_ignore()
check-ignore: add -n / --non-matching option
t0008: remove duplicated test fixture data


Commit: 2f1ef15070a8664d3194d164f20283d78571e51c
https://github.com/msysgit/git/commit/2f1ef15070a8664d3194d164f20283d78571e51c
Author: Junio C Hamano <***@pobox.com>
Date: 2013-05-29 (Wed, 29 May 2013)

Changed paths:
M Makefile
M builtin/clone.c
M builtin/pack-refs.c
R pack-refs.c
R pack-refs.h
M refs.c
M refs.h
M t/t3210-pack-refs.sh
M t/t3211-peel-ref.sh

Log Message:
-----------
Merge branch 'mh/packed-refs-various'

Update reading and updating packed-refs file, correcting corner case
bugs.

* mh/packed-refs-various: (33 commits)
refs: handle the main ref_cache specially
refs: change do_for_each_*() functions to take ref_cache arguments
pack_one_ref(): do some cheap tests before a more expensive one
pack_one_ref(): use write_packed_entry() to do the writing
pack_one_ref(): use function peel_entry()
refs: inline function do_not_prune()
pack_refs(): change to use do_for_each_entry()
refs: use same lock_file object for both ref-packing functions
pack_one_ref(): rename "path" parameter to "refname"
pack-refs: merge code from pack-refs.{c,h} into refs.{c,h}
pack-refs: rename handle_one_ref() to pack_one_ref()
refs: extract a function write_packed_entry()
repack_without_ref(): write peeled refs in the rewritten file
t3211: demonstrate loss of peeled refs if a packed ref is deleted
refs: change how packed refs are deleted
search_ref_dir(): return an index rather than a pointer
repack_without_ref(): silence errors for dangling packed refs
t3210: test for spurious error messages for dangling packed refs
refs: change the internal reference-iteration API
refs: extract a function peel_entry()
...


Commit: 7e2d574c37c6d53f09ceeb650f7af001aa50e987
https://github.com/msysgit/git/commit/7e2d574c37c6d53f09ceeb650f7af001aa50e987
Author: Junio C Hamano <***@pobox.com>
Date: 2013-05-29 (Wed, 29 May 2013)

Changed paths:
M Makefile
M compat/fnmatch/fnmatch.c
M compat/mingw.c
M compat/mingw.h
M compat/nedmalloc/malloc.c.h
M compat/nedmalloc/nedmalloc.c
M compat/poll/poll.c
M compat/regex/regexec.c
M compat/unsetenv.c
M compat/win32/pthread.c
M compat/win32mmap.c
M credential-store.c
M fast-import.c
M git.c
M remote-testsvn.c
M test-chmtime.c
M test-index-version.c
M test-mergesort.c
M test-parse-options.c
M test-subprocess.c

Log Message:
-----------
Merge branch 'rj/sparse'

* rj/sparse:
sparse: Fix mingw_main() argument number/type errors
compat/mingw.c: Fix some sparse warnings
compat/win32mmap.c: Fix some sparse warnings
compat/poll/poll.c: Fix a sparse warning
compat/win32/pthread.c: Fix a sparse warning
compat/unsetenv.c: Fix a sparse warning
compat/nedmalloc: Fix compiler warnings on linux
compat/nedmalloc: Fix some sparse warnings
compat/fnmatch/fnmatch.c: Fix a sparse error
compat/regex/regexec.c: Fix some sparse warnings


Commit: 31d176d08383012f9cbd040636151e22724b5ee7
https://github.com/msysgit/git/commit/31d176d08383012f9cbd040636151e22724b5ee7
Author: Junio C Hamano <***@pobox.com>
Date: 2013-05-29 (Wed, 29 May 2013)

Changed paths:
M Makefile
M t/Makefile
M t/test-lib.sh
M t/valgrind/analyze.sh

Log Message:
-----------
Merge branch 'jk/test-output'

When TEST_OUTPUT_DIRECTORY setting is used, it was handled somewhat
inconsistently between the test framework and t/Makefile, and logic
to summarize the results looked at a wrong place.

* jk/test-output:
t/Makefile: don't define TEST_RESULTS_DIRECTORY recursively
test output: respect $TEST_OUTPUT_DIRECTORY
t/Makefile: fix result handling with TEST_OUTPUT_DIRECTORY


Commit: feffa044374c4bfc29b3f2b1bd26551acbffcf40
https://github.com/msysgit/git/commit/feffa044374c4bfc29b3f2b1bd26551acbffcf40
Author: Junio C Hamano <***@pobox.com>
Date: 2013-05-29 (Wed, 29 May 2013)

Changed paths:
M contrib/subtree/git-subtree.sh

Log Message:
-----------
Merge branch 'jk/subtree-do-not-push-if-split-fails'

"git subtree" (in contrib/) had one codepath with loose error
checks to lose data at the remote side.

* jk/subtree-do-not-push-if-split-fails:
contrib/subtree: don't delete remote branches if split fails


Commit: 4818cfcdcc8011e5eef353d0f64cd9d2374ea381
https://github.com/msysgit/git/commit/4818cfcdcc8011e5eef353d0f64cd9d2374ea381
Author: Junio C Hamano <***@pobox.com>
Date: 2013-05-29 (Wed, 29 May 2013)

Changed paths:
M object.c

Log Message:
-----------
Merge branch 'jk/lookup-object-prefer-latest'

Optimizes object lookup when the object hashtable starts to become
crowded.

* jk/lookup-object-prefer-latest:
lookup_object: prioritize recently found objects


Commit: 7ebb906ddd69628fc9874b1266257ae2256b8f14
https://github.com/msysgit/git/commit/7ebb906ddd69628fc9874b1266257ae2256b8f14
Author: Junio C Hamano <***@pobox.com>
Date: 2013-05-29 (Wed, 29 May 2013)

Changed paths:
M builtin/config.c
M config.c
M dir.c
M git-compat-util.h
M wrapper.c

Log Message:
-----------
Merge branch 'jn/config-ignore-inaccessible'

When $HOME is misconfigured to point at an unreadable directory, we
used to complain and die. This loosens the check.

* jn/config-ignore-inaccessible:
config: allow inaccessible configuration under $HOME


Commit: 54219a4d89bac94c98f19f4eb5d1e18eb9499232
https://github.com/msysgit/git/commit/54219a4d89bac94c98f19f4eb5d1e18eb9499232
Author: Junio C Hamano <***@pobox.com>
Date: 2013-05-29 (Wed, 29 May 2013)

Changed paths:
A Documentation/RelNotes/1.8.4.txt
M Documentation/git.txt
M GIT-VERSION-GEN
M RelNotes

Log Message:
-----------
Start 1.8.4 cycle

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


Commit: a717d9e1d3a8b0b3ab32ece2d2fa88de3a2f2a6f
https://github.com/msysgit/git/commit/a717d9e1d3a8b0b3ab32ece2d2fa88de3a2f2a6f
Author: Junio C Hamano <***@pobox.com>
Date: 2013-05-29 (Wed, 29 May 2013)

Changed paths:
M Documentation/diff-options.txt

Log Message:
-----------
Merge branch 'maint-1.8.2' into maint

* maint-1.8.2:
trivial: Add missing period in documentation


Commit: fada522129c59755f8616f33adad49604db919d8
https://github.com/msysgit/git/commit/fada522129c59755f8616f33adad49604db919d8
Author: Junio C Hamano <***@pobox.com>
Date: 2013-05-29 (Wed, 29 May 2013)

Changed paths:
M GIT-VERSION-GEN

Log Message:
-----------
Start 1.8.3.1 maintenance track

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


Commit: 727a46b2f9a1ce69eaf09bc46cb129f1c40833d8
https://github.com/msysgit/git/commit/727a46b2f9a1ce69eaf09bc46cb129f1c40833d8
Author: Junio C Hamano <***@pobox.com>
Date: 2013-05-29 (Wed, 29 May 2013)

Changed paths:
M Documentation/diff-options.txt

Log Message:
-----------
Sync with maint

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


Commit: 7b2ecd81084adeba701c60da81eec6be478910b8
https://github.com/msysgit/git/commit/7b2ecd81084adeba701c60da81eec6be478910b8
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-05-29 (Wed, 29 May 2013)

Changed paths:
M builtin/push.c

Log Message:
-----------
push: fail early with detached HEAD and current

Setting push.default to current adds the refspec "HEAD" for the
transport layer to handle. If "HEAD" doesn't resolve to a branch (and
since no refspec rhs is specified), the push fails after some time with
a cryptic error message:

$ git push
error: unable to push to unqualified destination: HEAD
The destination refspec neither matches an existing ref on the remote nor
begins with refs/, and we are unable to guess a prefix based on the source ref.
error: failed to push some refs to '***@github.com:artagnon/git'

Fail early with a nicer error message:

$ git push
fatal: You are not currently on a branch.
To push the history leading to the current (detached HEAD)
state now, use

git push ram HEAD:<name-of-remote-branch>

Just like in the upstream and simple cases.

Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 0f075b220862e729eb3873a1c1496b923d17c2d4
https://github.com/msysgit/git/commit/0f075b220862e729eb3873a1c1496b923d17c2d4
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-05-29 (Wed, 29 May 2013)

Changed paths:
M builtin/push.c

Log Message:
-----------
push: make push.default = current use resolved HEAD

With this change, the output of the push (with push.default set to
current) changes subtly from:

$ git push
...
* [new branch] HEAD -> push-current-head

to:

$ git push
...
* [new branch] push-current-head -> push-current-head

This patch was written with a different motivation. There is a problem
unique to push.default = current:

# on branch push-current-head
$ git push
# on another terminal
$ git checkout master
# return to the first terminal
# the push tried to push master!

This happens because the 'git checkout' on the second terminal races
with the 'git push' on the first terminal. Although this patch does not
solve the core problem (there is still no guarantee that 'git push' on
the first terminal will resolve HEAD before 'git checkout' changes HEAD
on the second), it works in practice.

Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 2f0aaaf9dabd846061a759b53ff4759ec886df62
https://github.com/msysgit/git/commit/2f0aaaf9dabd846061a759b53ff4759ec886df62
Author: Ramsay Jones <***@ramsay1.demon.co.uk>
Date: 2013-05-29 (Wed, 29 May 2013)

Changed paths:
M git-compat-util.h

Log Message:
-----------
path: Fix a sparse warning

On MinGW, sparse issues an "'get_st_mode_bits' not declared. Should
it be static?" warning. The MinGW and MSVC builds do not see the
declaration of this function, within git-compat-util.h, due to its
placement within an preprocessor conditional.

In order to suppress the warning, we simply move the declaration to
the top level of the header.

Signed-off-by: Ramsay Jones <***@ramsay1.demon.co.uk>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 305ebea06d5e633e3d648c798b5e6bb2b9abf361
https://github.com/msysgit/git/commit/305ebea06d5e633e3d648c798b5e6bb2b9abf361
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-06-02 (Sun, 02 Jun 2013)

Changed paths:
M sha1_name.c

Log Message:
-----------
sha1_name: fix error message for @{<N>}, @{<date>}

Currently, when we try to resolve @{<N>} or @{<date>} when the reflog
doesn't go back far enough, we get errors like:

# on branch master
$ git show @{10000}
fatal: Log for '' only has 7 entries.

$ git show @{10000.days.ago}
warning: Log for '' only goes back to Tue, 21 May 2013 14:14:45 +0530.
...

# detached HEAD case
$ git show @{10000}
fatal: Log for '' only has 2005 entries.

$ git show master@{10000}
fatal: Log for 'master' only has 7 entries.

The empty string '' is confusing and does not convey information
about whose logs we are inspecting. Change this so that we get:

# on branch master
$ git show @{10000}
fatal: Log for 'master' only has 7 entries.

$ git show @{10000.days.ago}
warning: Log for 'master' only goes back to Tue, 21 May 2013 14:14:45 +0530.
...

# detached HEAD case
$ git show @{10000}
fatal: Log for 'HEAD' only has 2005 entries.

$ git show master@{10000}
fatal: Log for 'master' only has 7 entries.

Also one of the message strings given to die() now points into
real_ref that was not used in that fashion, so stop freeing the
underlying storage for it.

Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Bug-spotted-and-fixed-by: Thomas Rast
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 4917e1edabd6989e229e1a751b4062708cfd6f8e
https://github.com/msysgit/git/commit/4917e1edabd6989e229e1a751b4062708cfd6f8e
Author: Nguyễn Thái Ngọc Duy <***@gmail.com>
Date: 2013-06-02 (Sun, 02 Jun 2013)

Changed paths:
M Makefile

Log Message:
-----------
Makefile: promote wildmatch to be the default fnmatch implementation

This makes git use wildmatch by default for all fnmatch() calls. Users
who want to use system fnmatch (or compat fnmatch) need to set
NO_WILDMATCH flag.

wildmatch is a drop-in fnmatch replacement with more features. Using
wildmatch gives us a consistent behavior across platforms. The
tentative plan is make it default with an opt-out for about 2 cycles,
then remove NO_WILDMATCH and compat/fnmatch.

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


Commit: f0c73200e86b6166596f45ce32b7f04291074182
https://github.com/msysgit/git/commit/f0c73200e86b6166596f45ce32b7f04291074182
Author: Thomas Rast <***@inf.ethz.ch>
Date: 2013-06-02 (Sun, 02 Jun 2013)

Changed paths:
M t/t7501-commit.sh

Log Message:
-----------
Test 'commit --only' after 'checkout --orphan'

There are some index handling subtleties in 'commit --only' that are
best tested when we have an existing index, but an unborn or empty
HEAD. These circumstances are easily produced by 'checkout --orphan',
but we did not previously have a test for it.

The main expected failure mode would be: erroneously loading the
existing index contents when building the temporary index that is used
for --only. Cf.

http://article.gmane.org/gmane.comp.version-control.git/225969

and subsequent discussion.

Signed-off-by: Thomas Rast <***@inf.ethz.ch>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: e828908aa97ce0441b0c00a640b314c041fbd9e2
https://github.com/msysgit/git/commit/e828908aa97ce0441b0c00a640b314c041fbd9e2
Author: Jeff King <***@peff.net>
Date: 2013-06-02 (Sun, 02 Jun 2013)

Changed paths:
M t/t0005-signals.sh

Log Message:
-----------
t0005: test git exit code from signal death

When a sub-process dies with a signal, we convert the exit
code to the shell convention of 128+sig. Callers of git may
be relying on this behavior, so let's make sure it does not
break.

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


Commit: b79c0c3755f3694a3c7ecd3cad18bda011283db7
https://github.com/msysgit/git/commit/b79c0c3755f3694a3c7ecd3cad18bda011283db7
Author: Anthony Ramine <***@gmail.com>
Date: 2013-06-02 (Sun, 02 Jun 2013)

Changed paths:
M t/t3070-wildmatch.sh
M wildmatch.c

Log Message:
-----------
wildmatch: properly fold case everywhere

Case folding is not done correctly when matching against the [:upper:]
character class and uppercased character ranges (e.g. A-Z).
Specifically, an uppercase letter fails to match against any of them
when case folding is requested because plain characters in the pattern
and the whole string are preemptively lowercased to handle the base case
fast.

That optimization is kept and ISLOWER() is used in the [:upper:] case
when case folding is requested, while matching against a character range
is retried with toupper() if the character was lowercase, as the bounds
of the range itself cannot be modified (in a case-insensitive context,
[A-_] is not equivalent to [a-_]).

Signed-off-by: Anthony Ramine <***@gmail.com>
Reviewed-by: Duy Nguyen <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: c3c327deeaf018e727a27f5ae88e140ff7a48595
https://github.com/msysgit/git/commit/c3c327deeaf018e727a27f5ae88e140ff7a48595
Author: Karsten Blees <***@gmail.com>
Date: 2013-06-02 (Sun, 02 Jun 2013)

Changed paths:
M dir.c
M t/t3001-ls-files-others-exclude.sh

Log Message:
-----------
dir.c: fix ignore processing within not-ignored directories

As of 95c6f271 "dir.c: unify is_excluded and is_path_excluded APIs", the
is_excluded API no longer recurses into directories that match an ignore
pattern, and returns the directory's ignored state for all contained paths.

This is OK for normal ignore patterns, i.e. ignoring a directory affects
the entire contents recursively.

Unfortunately, this also "works" for negated ignore patterns ('!dir'), i.e.
the entire contents is "not-ignored" recursively, regardless of ignore
patterns that match the contents directly.

In prep_exclude, skip recursing into a directory only if it is really
ignored (i.e. the ignore pattern is not negated).

Signed-off-by: Karsten Blees <***@dcon.de>
Tested-by: Øystein Walle <***@gmail.com>
Reviewed-by: Duy Nguyen <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 31faeb2088ef35d0108ad81df3550513d6cec798
https://github.com/msysgit/git/commit/31faeb2088ef35d0108ad81df3550513d6cec798
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-06-02 (Sun, 02 Jun 2013)

Changed paths:
M bundle.c
M object.c
M object.h
M revision.c

Log Message:
-----------
object_array_entry: fix memory handling of the name field

Previously, the memory management of the object_array_entry::name
field was inconsistent and undocumented. object_array_entries are
ultimately created by a single function, add_object_array_with_mode(),
which has an argument "const char *name". This function used to
simply set the name field to reference the string pointed to by the
name parameter, and nobody on the object_array side ever freed the
memory. Thus, it assumed that the memory for the name field would be
managed by the caller, and that the lifetime of that string would be
at least as long as the lifetime of the object_array_entry. But
callers were inconsistent:

* Some passed pointers to constant strings or argv entries, which was
OK.

* Some passed pointers to newly-allocated memory, but didn't arrange
for the memory ever to be freed.

* Some passed the return value of sha1_to_hex(), which is a pointer to
a statically-allocated buffer that can be overwritten at any time.

* Some passed pointers to refnames that they received from a
for_each_ref()-type iteration, but the lifetimes of such refnames is
not guaranteed by the refs API.

Bring consistency to this mess by changing object_array to make its
own copy for the object_array_entry::name field and free this memory
when an object_array_entry is deleted from the array.

Many callers were passing the empty string as the name parameter, so
as a performance optimization, treat the empty string specially.
Instead of making a copy, store a pointer to a statically-allocated
empty string to object_array_entry::name. When deleting such an
entry, skip the free().

Change the callers that were already passing copies to
add_object_array_with_mode() to either skip the copy, or (if the
memory needed to be allocated anyway) freeing the memory itself.

A part of this commit effectively reverts

70d26c6e76 read_revisions_from_stdin: make copies for handle_revision_arg

because the copying introduced by that commit (which is still
necessary) is now done at a deeper level.

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


Commit: 6f64a16faff0189d54cf30854483493574476c6e
https://github.com/msysgit/git/commit/6f64a16faff0189d54cf30854483493574476c6e
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-06-02 (Sun, 02 Jun 2013)

Changed paths:
M builtin/fetch.c

Log Message:
-----------
do_fetch(): reduce scope of peer_item

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


Commit: 5b87d8d3f53c1dfb54027123af612488abc85006
https://github.com/msysgit/git/commit/5b87d8d3f53c1dfb54027123af612488abc85006
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-06-02 (Sun, 02 Jun 2013)

Changed paths:
M builtin/fetch.c

Log Message:
-----------
do_fetch(): clean up existing_refs before exiting

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


Commit: f83918edcb6fbcd1c5d8378c11e57edcc47bd232
https://github.com/msysgit/git/commit/f83918edcb6fbcd1c5d8378c11e57edcc47bd232
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-06-02 (Sun, 02 Jun 2013)

Changed paths:
M builtin/fetch.c

Log Message:
-----------
add_existing(): do not retain a reference to sha1

Its lifetime is not guaranteed, so make a copy. Free the memory when
the string_list is cleared.

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


Commit: 1d811dbd04afc9fd4e59d1a1a2c090abb835d55f
https://github.com/msysgit/git/commit/1d811dbd04afc9fd4e59d1a1a2c090abb835d55f
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-06-02 (Sun, 02 Jun 2013)

Changed paths:
M http-backend.c

Log Message:
-----------
show_head_ref(): do not shadow name of argument

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


Commit: 3e4ca43fd0ea0f6a150de3be096b52954d64f523
https://github.com/msysgit/git/commit/3e4ca43fd0ea0f6a150de3be096b52954d64f523
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-06-02 (Sun, 02 Jun 2013)

Changed paths:
M http-backend.c

Log Message:
-----------
show_head_ref(): rename first parameter to "refname"

This is the usual convention.

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


Commit: d235e994f893fddd7808a4f5af879fd718563649
https://github.com/msysgit/git/commit/d235e994f893fddd7808a4f5af879fd718563649
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-06-02 (Sun, 02 Jun 2013)

Changed paths:
M notes.c

Log Message:
-----------
string_list_add_one_ref(): rename first parameter to "refname"

This is the usual convention.

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


Commit: 8c46bf904fe95105faaa1823332c91d2802182c2
https://github.com/msysgit/git/commit/8c46bf904fe95105faaa1823332c91d2802182c2
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-06-02 (Sun, 02 Jun 2013)

Changed paths:
M notes.c

Log Message:
-----------
string_list_add_refs_by_glob(): add a comment about memory management

Since string_list_add_one_ref() adds refname to the string list, but
the lifetime of refname is limited, it is important that the
string_list passed to string_list_add_one_ref() has strdup_strings
set. Document this fact.

All current callers do the right thing.

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


Commit: 66ce0366285f73c340f04a21b3d8be898d7bf5a7
https://github.com/msysgit/git/commit/66ce0366285f73c340f04a21b3d8be898d7bf5a7
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-06-02 (Sun, 02 Jun 2013)

Changed paths:
M builtin/show-ref.c

Log Message:
-----------
exclude_existing(): set existing_refs.strdup_strings

The each_ref_fn add_existing() adds refnames to the existing_refs
list. But the lifetimes of these refnames is not guaranteed by the
refs API, so configure the string_list to make copies as it adds them.

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


Commit: bf42772e38db8e758aa28a045e8cba88096a9fcc
https://github.com/msysgit/git/commit/bf42772e38db8e758aa28a045e8cba88096a9fcc
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-06-02 (Sun, 02 Jun 2013)

Changed paths:
M bisect.c

Log Message:
-----------
register_ref(): make a copy of the bad reference SHA-1

The lifetime of the sha1 parameter passed to an each_ref_fn callback
is not guaranteed, so make a copy for later use.

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


Commit: 4f78c24c63bf0b035afc02372727a3b5897d9835
https://github.com/msysgit/git/commit/4f78c24c63bf0b035afc02372727a3b5897d9835
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-06-02 (Sun, 02 Jun 2013)

Changed paths:
M refs.h

Log Message:
-----------
refs: document the lifetime of the args passed to each_ref_fn

The lifetime of the memory pointed to by the refname and sha1
arguments to each_ref_fn was never documented, but some callers used
to assume that it was essentially permanent. In fact the API does
*not* guarantee that these objects live beyond a single callback
invocation.

In the current code, the lifetimes are bound together with the
lifetimes of the ref_caches. Since these are usually long, the
callers usually got away with their sloppiness. But even today, if a
ref_cache is invalidated the memory can be freed. And planned changes
to reference caching, needed to eliminate race conditions, will
probably need to shorten the lifetimes of these objects.

The commits leading up to this have (hopefully) fixed all of the
callers of the for_each_ref()-like functions. This commit does the
last step: documents what each_ref_fn callbacks can assume about
object lifetimes.

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


Commit: 20d142b48c8f2f50662db095e193836d0a8f5ad1
https://github.com/msysgit/git/commit/20d142b48c8f2f50662db095e193836d0a8f5ad1
Author: René Scharfe <***@lsrfire.ath.cx>
Date: 2013-06-02 (Sun, 02 Jun 2013)

Changed paths:
M cache.h

Log Message:
-----------
cache: mark cache_entry pointers const

Add const for pointers that are only dereferenced for reading by the
inline functions copy_cache_entry and ce_mode_from_stat. This allows
callers to pass in const pointers.

Signed-off-by: René Scharfe <***@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 21a6b9fa4212277d925b789795e83ac96c2aaa01
https://github.com/msysgit/git/commit/21a6b9fa4212277d925b789795e83ac96c2aaa01
Author: René Scharfe <***@lsrfire.ath.cx>
Date: 2013-06-02 (Sun, 02 Jun 2013)

Changed paths:
M cache.h
M read-cache.c

Log Message:
-----------
read-cache: mark cache_entry pointers const

ie_match_stat and ie_modified only derefence their struct cache_entry
pointers for reading. Add const to the parameter declaration here and
do the same for the static helper function used by them, as it's the
same there as well. This allows callers to pass in const pointers.

Signed-off-by: René Scharfe <***@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: a33bd4d34def15d12372aeb8c59a7465416f9f66
https://github.com/msysgit/git/commit/a33bd4d34def15d12372aeb8c59a7465416f9f66
Author: René Scharfe <***@lsrfire.ath.cx>
Date: 2013-06-02 (Sun, 02 Jun 2013)

Changed paths:
M unpack-trees.c

Log Message:
-----------
unpack-trees: factor out dup_entry

While we're add it, mark the struct cache_entry pointer of add_entry
const because we only read from it and this allows callers to pass in
const pointers.

Signed-off-by: René Scharfe <***@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: f2fa35420511cc49e85413a2932a1a2bac88cc1b
https://github.com/msysgit/git/commit/f2fa35420511cc49e85413a2932a1a2bac88cc1b
Author: René Scharfe <***@lsrfire.ath.cx>
Date: 2013-06-02 (Sun, 02 Jun 2013)

Changed paths:
M unpack-trees.c

Log Message:
-----------
unpack-trees: create working copy of merge entry in merged_entry

Duplicate the merge entry right away and work with that instead of
modifying the entry we got and duplicating it only at the end of
the function. Then mark that pointer const to document that we
don't modify the referenced cache_entry.

This change is safe because all existing merge functions call
merged_entry just before returning (or not at all), i.e. they don't
care about changes to the referenced cache_entry after the call.
unpack_nondirectories and unpack_index_entry, which call the merge
functions through call_unpack_fn, aren't interested in such changes
neither.

The change complicates merged_entry a bit because we have to free the
copy if we error out, but allows callers to pass a const pointer.

Signed-off-by: René Scharfe <***@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: eb9ae4b505bfacc4974a9ef4f4e6996c78d04a4c
https://github.com/msysgit/git/commit/eb9ae4b505bfacc4974a9ef4f4e6996c78d04a4c
Author: René Scharfe <***@lsrfire.ath.cx>
Date: 2013-06-02 (Sun, 02 Jun 2013)

Changed paths:
M builtin/read-tree.c
M diff-lib.c
M unpack-trees.c

Log Message:
-----------
diff-lib, read-tree, unpack-trees: mark cache_entry pointers const

Add const to struct cache_entry pointers throughout the tree which are
only used for reading. This allows callers to pass in const pointers.

Signed-off-by: René Scharfe <***@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 5828e8352c07753a1f751322800524bf9dff8679
https://github.com/msysgit/git/commit/5828e8352c07753a1f751322800524bf9dff8679
Author: René Scharfe <***@lsrfire.ath.cx>
Date: 2013-06-02 (Sun, 02 Jun 2013)

Changed paths:
M builtin/read-tree.c
M diff-lib.c
M unpack-trees.c
M unpack-trees.h

Log Message:
-----------
diff-lib, read-tree, unpack-trees: mark cache_entry array paramters const

Change the type merge_fn_t to accept the array of cache_entry pointers
as const pointers to const pointers. This documents the fact that the
merge functions don't modify the cache_entry contents or replace any of
the pointers in the array.

Only a single cast is necessary in unpack_nondirectories because adding
two const modifiers at once is not allowed in C. The cast is safe in
that it doesn't mask any modfication; call_unpack_fn only needs the
array for reading.

Signed-off-by: René Scharfe <***@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 5d80ef5a6e727bbecd7d892a5043bae25f7ca5e2
https://github.com/msysgit/git/commit/5d80ef5a6e727bbecd7d892a5043bae25f7ca5e2
Author: René Scharfe <***@lsrfire.ath.cx>
Date: 2013-06-02 (Sun, 02 Jun 2013)

Changed paths:
M unpack-trees.c

Log Message:
-----------
unpack-trees: free cache_entry array members for merges

The merge functions duplicate entries as needed and they don't free
them. Release them in unpack_nondirectories, the same function
where they were allocated, after we're done.

As suggested by Felipe, use the same loop style (zero-based for loop)
for freeing as for allocating.

Improved-by: Felipe Contreras <***@gmail.com>
Signed-off-by: René Scharfe <***@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 9721ac90106e1f6c86a2f18d92fc262fe1ffbffc
https://github.com/msysgit/git/commit/9721ac90106e1f6c86a2f18d92fc262fe1ffbffc
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-06-02 (Sun, 02 Jun 2013)

Changed paths:
R contrib/continuous/cidaemon
R contrib/continuous/post-receive-cinotify
R contrib/patches/docbook-xsl-manpages-charmap.patch

Log Message:
-----------
contrib: remove continuous/ and patches/

They haven't been touched in six years.

Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 6bf931a54fd66826f28d2808b7ad822024764d41
https://github.com/msysgit/git/commit/6bf931a54fd66826f28d2808b7ad822024764d41
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-02 (Sun, 02 Jun 2013)

Changed paths:
M contrib/completion/git-completion.bash
M contrib/completion/git-completion.zsh

Log Message:
-----------
Merge branch 'fc/zsh-leftover-bits'

* fc/zsh-leftover-bits:
completion: zsh: improve bash script loading
completion: synchronize zsh wrapper
completion: cleanup zsh wrapper


Commit: f241c08d40ad9d479fb88e99ff0bb90d6dd73eda
https://github.com/msysgit/git/commit/f241c08d40ad9d479fb88e99ff0bb90d6dd73eda
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-02 (Sun, 02 Jun 2013)

Changed paths:
M contrib/completion/git-completion.bash
M t/t9902-completion.sh

Log Message:
-----------
Merge branch 'fc/completion'

* fc/completion:
completion: remove __git_index_file_list_filter()
completion: add space after completed filename
completion: add hack to enable file mode in bash < 4
completion: refactor __git_complete_index_file()
completion: refactor diff_index wrappers
completion: use __gitcompadd for __gitcomp_file
completion; remove unuseful comments
completion: document tilde expansion failure in tests
completion: add file completion tests


Commit: 7abc6b715148118518a6fbdcef82b3e0dabbaa17
https://github.com/msysgit/git/commit/7abc6b715148118518a6fbdcef82b3e0dabbaa17
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-02 (Sun, 02 Jun 2013)

Changed paths:
M Documentation/git-diff-index.txt

Log Message:
-----------
Merge branch 'an/diff-index-doc'

* an/diff-index-doc:
Documentation/diff-index: mention two modes of operation


Commit: 499eaceb217df573fb3698d7a52e3e5a9b4173bc
https://github.com/msysgit/git/commit/499eaceb217df573fb3698d7a52e3e5a9b4173bc
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-02 (Sun, 02 Jun 2013)

Changed paths:
M Documentation/merge-options.txt

Log Message:
-----------
Merge branch 'rh/merge-options-doc-fix'

* rh/merge-options-doc-fix:
Documentation/merge-options.txt: restore `-e` option


Commit: 843fb919fd68739f3cc8f94e6a0225ead97e1e7e
https://github.com/msysgit/git/commit/843fb919fd68739f3cc8f94e6a0225ead97e1e7e
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-02 (Sun, 02 Jun 2013)

Changed paths:
M t/t5004-archive-corner-cases.sh
A t/t5004/empty-with-pax-header.tar

Log Message:
-----------
Merge branch 'rs/empty-archive'

Fixes tests added in 1.8.2 era that are broken on BSDs.

* rs/empty-archive:
t5004: resurrect original empty tar archive test
t5004: avoid using tar for checking emptiness of archive


Commit: dbbc93b221c6ee9cb2d417a43078b0d2a986fd33
https://github.com/msysgit/git/commit/dbbc93b221c6ee9cb2d417a43078b0d2a986fd33
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-02 (Sun, 02 Jun 2013)

Changed paths:
M builtin/fast-export.c
M fast-import.c

Log Message:
-----------
Merge branch 'fc/fast-export-persistent-marks'

Optimization for fast-export by avoiding unnecessarily resolving
arbitrary object name and parsing object when only presence and
type information is necessary, etc.

* fc/fast-export-persistent-marks:
fast-{import,export}: use get_sha1_hex() to read from marks file
fast-export: don't parse commits while reading marks file
fast-export: do not parse non-commit objects while reading marks file


Commit: 41aaccdcf9170e744e423f2b1f889ada6604ae38
https://github.com/msysgit/git/commit/41aaccdcf9170e744e423f2b1f889ada6604ae38
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-02 (Sun, 02 Jun 2013)

Changed paths:
M Documentation/urls.txt
M builtin/clone.c
M connect.c
M t/t5601-clone.sh

Log Message:
-----------
Merge branch 'nd/clone-local-with-colon'

"git clone foo/bar:baz" cannot be a request to clone from a remote
over git-over-ssh specified in the scp style. Detect this case and
clone from a local repository at "foo/bar:baz".

* nd/clone-local-with-colon:
clone: allow cloning local paths with colons in them


Commit: 1197c2298bd47c7046b57d92df2fd055051fbe99
https://github.com/msysgit/git/commit/1197c2298bd47c7046b57d92df2fd055051fbe99
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-02 (Sun, 02 Jun 2013)

Changed paths:
M builtin/merge.c
M help.c
M help.h

Log Message:
-----------
Merge branch 'vv/help-unknown-ref'

Detect "git merge foo" that might have meant "git merge origin/foo"
and give an error message that is more specific than "foo is not
something we can merge".

* vv/help-unknown-ref:
merge: use help_unknown_ref()
help: add help_unknown_ref()


Commit: 29d5350c0115d8847d010830b0dcca429b038e31
https://github.com/msysgit/git/commit/29d5350c0115d8847d010830b0dcca429b038e31
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-02 (Sun, 02 Jun 2013)

Changed paths:
M Makefile
A compat/clipped-write.c
M config.mak.uname
M git-compat-util.h

Log Message:
-----------
Merge branch 'fc/macos-x-clipped-write'

Mac OS X does not like to write(2) more than INT_MAX number of
bytes.

* fc/macos-x-clipped-write:
compate/clipped-write.c: large write(2) fails on Mac OS X/XNU


Commit: 527b1719f583ed56653b6d296422968e86f62d59
https://github.com/msysgit/git/commit/527b1719f583ed56653b6d296422968e86f62d59
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-02 (Sun, 02 Jun 2013)

Changed paths:
M Makefile
M imap-send.c

Log Message:
-----------
Merge branch 'da/darwin'

Newer MacOS X encourages the programs to compile and link with
their CommonCrypto, not with OpenSSL.

* da/darwin:
imap-send: eliminate HMAC deprecation warnings on Mac OS X
cache.h: eliminate SHA-1 deprecation warnings on Mac OS X
Makefile: add support for Apple CommonCrypto facility
Makefile: fix default regex settings on Darwin


Commit: aaec1ad08a3a9aa64eb803ac5763dc8820f86498
https://github.com/msysgit/git/commit/aaec1ad08a3a9aa64eb803ac5763dc8820f86498
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-02 (Sun, 02 Jun 2013)

Changed paths:
M t/t5551-http-fetch.sh

Log Message:
-----------
Merge branch 'jc/t5551-posix-sed-bre'

POSIX fix for a test script.

* jc/t5551-posix-sed-bre:
t5551: do not use unportable sed '\+'


Commit: 911439a5aba362add6b672a09afd11706e05aed7
https://github.com/msysgit/git/commit/911439a5aba362add6b672a09afd11706e05aed7
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-02 (Sun, 02 Jun 2013)

Changed paths:
M revision.c
M revision.h
M t/t6019-rev-list-ancestry-path.sh

Log Message:
-----------
Merge branch 'kb/ancestry-path-threedots'

"git log --ancestry-path A...B" did not work as expected, as it did
not pay attention to the fact that the merge base between A and B
was the bottom of the range being specified.

* kb/ancestry-path-threedots:
revision.c: treat A...B merge bases as if manually specified
t6019: demonstrate --ancestry-path A...B breakage


Commit: edc7f0abcbc42d05a5be1877ded9cc6eba5ec1b6
https://github.com/msysgit/git/commit/edc7f0abcbc42d05a5be1877ded9cc6eba5ec1b6
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-02 (Sun, 02 Jun 2013)

Changed paths:
M combine-diff.c
M t/t4038-diff-combined.sh

Log Message:
-----------
Merge branch 'mk/combine-diff-context-horizon-fix'

"git diff -c -p" was not showing a deleted line from a hunk when
another hunk immediately begins where the earlier one ends.

* mk/combine-diff-context-horizon-fix:
combine-diff.c: Fix output when changes are exactly 3 lines apart


Commit: 67b57a90f41aeba8486db37c2771550c0de03686
https://github.com/msysgit/git/commit/67b57a90f41aeba8486db37c2771550c0de03686
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-02 (Sun, 02 Jun 2013)

Changed paths:
M Makefile

Log Message:
-----------
Merge branch 'tr/coverage'

Update the test coverage support that was left to bitrot for some
time.

* tr/coverage:
coverage: build coverage-untested-functions by default
coverage: set DEFAULT_TEST_TARGET to avoid using prove
coverage: do not delete .gcno files before building
coverage: split build target into compile and test


Commit: db400949b31a5d2cec923b4c9da710fbdd52cca2
https://github.com/msysgit/git/commit/db400949b31a5d2cec923b4c9da710fbdd52cca2
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-02 (Sun, 02 Jun 2013)

Changed paths:
M Documentation/pull-fetch-param.txt
M builtin/fetch.c
M cache.h
M t/t5510-fetch.sh

Log Message:
-----------
Merge branch 'jk/fetch-always-update-tracking'

"git fetch origin master" unlike "git fetch origin" or "git fetch"
did not update "refs/remotes/origin/master"; this was an early
design decision to keep the update of remote tracking branches
predictable, but in practice it turns out that people find it more
convenient to opportunisticly update them whenever we have a chance,
and we have been updating them when we run "git push" which already
breaks the original "predictability" anyway.

Now such a fetch does update refs/remotes/origin/master.

* jk/fetch-always-update-tracking:
fetch: don't try to update unfetched tracking refs
fetch: opportunistically update tracking refs
refactor "ref->merge" flag
fetch/pull doc: untangle meaning of bare <ref>
t5510: start tracking-ref tests from a known state


Commit: 9a92cd1ce60babd661080f2b6a54f57fbfe133ae
https://github.com/msysgit/git/commit/9a92cd1ce60babd661080f2b6a54f57fbfe133ae
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-02 (Sun, 02 Jun 2013)

Changed paths:
M sha1_name.c
M t/t0100-previous.sh

Log Message:
-----------
Merge branch 'jc/strbuf-branchname-fix'

"git merge @{-1}~22" was rewritten to "git merge frotz@{1}~22"
incorrectly when your previous branch was "frotz" (it should be
rewritten to "git merge frotz~22" instead).

* jc/strbuf-branchname-fix:
strbuf_branchname(): do not double-expand @{-1}~22


Commit: 103093a0a80c385d17571a9c6da7b6c03227c767
https://github.com/msysgit/git/commit/103093a0a80c385d17571a9c6da7b6c03227c767
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-02 (Sun, 02 Jun 2013)

Changed paths:
M t/t5000-tar-tree.sh
A t/t5000/pax.tar
M t/t5003-archive-zip.sh

Log Message:
-----------
Merge branch 'rs/tar-tests'

* rs/tar-tests:
t5000: test long filenames
t5000: simplify tar-tree tests
t5000: use check_tar for prefix test
t5000: factor out check_tar
t5000, t5003: create directories for extracted files lazily
t5000: integrate export-subst tests into regular tests


Commit: 4de1179afcb1105a43cf167b513afda42c4f152d
https://github.com/msysgit/git/commit/4de1179afcb1105a43cf167b513afda42c4f152d
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-02 (Sun, 02 Jun 2013)

Changed paths:
M Documentation/git-describe.txt
M builtin/describe.c
M t/t6120-describe.sh

Log Message:
-----------
Merge branch 'mc/describe-first-parent'

* mc/describe-first-parent:
describe: Add --first-parent option


Commit: ed73fe56428eecd2b635473f6a517a183c4713a3
https://github.com/msysgit/git/commit/ed73fe56428eecd2b635473f6a517a183c4713a3
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-02 (Sun, 02 Jun 2013)

Changed paths:
M Documentation/blame-options.txt
M Documentation/git-blame.txt
M Documentation/git-log.txt
A Documentation/line-range-format.txt
M Makefile
M builtin/blame.c
M builtin/log.c
A line-log.c
A line-log.h
A line-range.c
A line-range.h
M log-tree.c
M revision.c
M revision.h
A t/perf/p4211-line-log.sh
A t/t4211-line-log.sh
A t/t4211/expect.beginning-of-file
A t/t4211/expect.end-of-file
A t/t4211/expect.move-support-f
A t/t4211/expect.multiple
A t/t4211/expect.multiple-overlapping
A t/t4211/expect.multiple-superset
A t/t4211/expect.parallel-change-f-to-main
A t/t4211/expect.simple-f
A t/t4211/expect.simple-f-to-main
A t/t4211/expect.simple-main
A t/t4211/expect.simple-main-to-end
A t/t4211/expect.two-ranges
A t/t4211/expect.vanishes-early
A t/t4211/history.export
M t/t8003-blame-corner-cases.sh

Log Message:
-----------
Merge branch 'tr/line-log'

* tr/line-log:
git-log(1): remove --full-line-diff description
line-log: fix documentation formatting
log -L: improve comments in process_all_files()
log -L: store the path instead of a diff_filespec
log -L: test merge of parallel modify/rename
t4211: pass -M to 'git log -M -L...' test
log -L: fix overlapping input ranges
log -L: check range set invariants when we look it up
Speed up log -L... -M
log -L: :pattern:file syntax to find by funcname
Implement line-history search (git log -L)
Export rewrite_parents() for 'log -L'
Refactor parse_loc


Commit: b2edae0ab6d8188d6cd912ba5c8d1f2086c2cb9a
https://github.com/msysgit/git/commit/b2edae0ab6d8188d6cd912ba5c8d1f2086c2cb9a
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-02 (Sun, 02 Jun 2013)

Changed paths:
M Documentation/RelNotes/1.8.4.txt

Log Message:
-----------
Update draft release notes to 1.8.4

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


Commit: e832f5c0968031d687706c97464be21f2da7be21
https://github.com/msysgit/git/commit/e832f5c0968031d687706c97464be21f2da7be21
Author: Felipe Contreras <***@gmail.com>
Date: 2013-06-02 (Sun, 02 Jun 2013)

Changed paths:
M contrib/completion/git-completion.bash

Log Message:
-----------
completion: avoid ls-remote in certain scenarios

It's _very_ slow in many cases, and there's really no point in fetching
*everything* from the remote just for completion. In many cases it might
be faster for the user to type the whole thing.

If the user manually specifies 'refs/*', then the full ls-remote
completion is triggered.

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


Commit: 926e89441fb735bc4ed7d10713a8cd3d3dc44b49
https://github.com/msysgit/git/commit/926e89441fb735bc4ed7d10713a8cd3d3dc44b49
Author: Johannes Sixt <***@kdbg.org>
Date: 2013-06-02 (Sun, 02 Jun 2013)

Changed paths:
M test-chmtime.c

Log Message:
-----------
test-chmtime: Fix exit code on Windows

MinGW's bash does not recognize an exit code -1 as failure. See also
47e3de0e (MinGW: truncate exit()'s argument to lowest 8 bits) and 2488df84
(builtin run_command: do not exit with -1). Exit code 1 is good enough.

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


Commit: 5adcf2c69989884ad6c51df0f9ad5e68f6a3f650
https://github.com/msysgit/git/commit/5adcf2c69989884ad6c51df0f9ad5e68f6a3f650
Author: Michael S. Tsirkin <***@redhat.com>
Date: 2013-06-03 (Mon, 03 Jun 2013)

Changed paths:
M t/t9001-send-email.sh

Log Message:
-----------
t/send-email.sh: add test for suppress-cc=self

This adds a basic test for --suppress-cc=self
option of git send-email.

Signed-off-by: Michael S. Tsirkin <***@redhat.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 1fee89cedd3f797ae792379475fab3e4183de17e
https://github.com/msysgit/git/commit/1fee89cedd3f797ae792379475fab3e4183de17e
Author: Felipe Contreras <***@gmail.com>
Date: 2013-06-03 (Mon, 03 Jun 2013)

Changed paths:
M t/t5407-post-rewrite-hook.sh

Log Message:
-----------
test: fix post rewrite hook report

First expected, then actual.

Signed-off-by: Felipe Contreras <***@gmail.com>
Acked-by: Thomas Rast <***@inf.ethz.ch>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 582eb8536bfc93e403b008e2d660a6f246a2ff46
https://github.com/msysgit/git/commit/582eb8536bfc93e403b008e2d660a6f246a2ff46
Author: Felipe Contreras <***@gmail.com>
Date: 2013-06-03 (Mon, 03 Jun 2013)

Changed paths:
M read-cache.c

Log Message:
-----------
read-cache: fix wrong 'the_index' usage

We are dealing with the 'istate' index, not 'the_index'.

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


Commit: c4aa3167fe9dd0b94594c20d8b3673929fcb217d
https://github.com/msysgit/git/commit/c4aa3167fe9dd0b94594c20d8b3673929fcb217d
Author: Felipe Contreras <***@gmail.com>
Date: 2013-06-03 (Mon, 03 Jun 2013)

Changed paths:
M read-cache.c

Log Message:
-----------
read-cache: trivial style cleanups

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


Commit: 4b8f772ce4df667583243e434ca0548d5b84b3a6
https://github.com/msysgit/git/commit/4b8f772ce4df667583243e434ca0548d5b84b3a6
Author: Felipe Contreras <***@gmail.com>
Date: 2013-06-03 (Mon, 03 Jun 2013)

Changed paths:
M sha1_file.c

Log Message:
-----------
sha1_file: trivial style cleanup

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


Commit: a758a3499ff72111ef5f7066a9f21059c0d63d48
https://github.com/msysgit/git/commit/a758a3499ff72111ef5f7066a9f21059c0d63d48
Author: Chris Rorvick <***@rorvick.com>
Date: 2013-06-03 (Mon, 03 Jun 2013)

Changed paths:
M Documentation/git.txt

Log Message:
-----------
git.txt: remove stale comment regarding GIT_WORK_TREE

Official support for specifying --work-tree/GIT_WORK_TREE without
--git-dir/GIT_DIR was added with v1.7.4-rc3~2^2~2. Update description
of GIT_WORK_TREE to reflect this.

Signed-off-by: Chris Rorvick <***@rorvick.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: d8517cc6670d4ba18e9b77a83b2481aec0edbc32
https://github.com/msysgit/git/commit/d8517cc6670d4ba18e9b77a83b2481aec0edbc32
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-06-03 (Mon, 03 Jun 2013)

Changed paths:
M contrib/completion/git-completion.bash

Log Message:
-----------
completion: difftool takes both revs and files

'git difftool' is clearly a frontend to 'git diff' and is used in
exactly the same way, but it uses a misleadingly named completion
function __git_complete_file. It happens to work only because it
calls __git_complete_revlist_file that completes both revs and
paths.

Change it to use __git_complete_revlist_file, just like 'git diff'.

Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 276b22d333d4207928f6cfe3ab7c1898cd509b88
https://github.com/msysgit/git/commit/276b22d333d4207928f6cfe3ab7c1898cd509b88
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-06-03 (Mon, 03 Jun 2013)

Changed paths:
M diffcore-pickaxe.c

Log Message:
-----------
diffcore-pickaxe: make error messages more consistent

Currently, diffcore-pickaxe reports two distinct errors for the same
user error:

$ git log --pickaxe-regex -S'\1'
fatal: invalid pickaxe regex: Invalid back reference

$ git log -G'\1'
fatal: invalid log-grep regex: Invalid back reference

This "log-grep" was only an internal name for the -G feature during
development, and invite confusion with "git log --grep=<pattern>".

Change the error messages to say "invalid regex".

Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 5bc3f0b56779d189aaf7cab7e5d307aa4e7c0887
https://github.com/msysgit/git/commit/5bc3f0b56779d189aaf7cab7e5d307aa4e7c0887
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-06-03 (Mon, 03 Jun 2013)

Changed paths:
M Documentation/diff-options.txt
M Documentation/gitdiffcore.txt

Log Message:
-----------
diffcore-pickaxe doc: document -S and -G properly

The documentation of -S and -G is very sketchy. Completely rewrite the
sections in Documentation/diff-options.txt and
Documentation/gitdiffcore.txt.

References:
52e9578 ([PATCH] Introducing software archaeologist's tool "pickaxe".)
f506b8e (git log/diff: add -G<regexp> that greps in the patch text)

Inputs-from: Phil Hord <***@gmail.com>
Co-authored-by: Junio C Hamano <***@pobox.com>
Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: c8d1351deb2ccb8634d5c3dd863dd37d0d8c082c
https://github.com/msysgit/git/commit/c8d1351deb2ccb8634d5c3dd863dd37d0d8c082c
Author: Felipe Contreras <***@gmail.com>
Date: 2013-06-03 (Mon, 03 Jun 2013)

Changed paths:
M sequencer.c

Log Message:
-----------
sequencer: remove useless indentation

By using good ol' goto.

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


Commit: dbea72a8c05d12c7dfd6a35376e62b21d5a655b5
https://github.com/msysgit/git/commit/dbea72a8c05d12c7dfd6a35376e62b21d5a655b5
Author: Thomas Rast <***@inf.ethz.ch>
Date: 2013-06-03 (Mon, 03 Jun 2013)

Changed paths:
M sha1_file.c

Log Message:
-----------
sha1_file: silence sha1_loose_object_info

sha1_object_info() returns -1 (OBJ_BAD) if it cannot find the object
for some reason, which suggests that it wants the _caller_ to report
this error. However, part of its work happens in
sha1_loose_object_info, which _does_ report errors itself. This is
doubly strange because:

* packed_object_info(), which is the other half of the duo, does _not_
report this.

* In the event that an object is packed and pruned while
sha1_object_info_extended() goes looking for it, we would
erroneously show the error -- even though the code of the latter
function purports to handle this case gracefully.

* A caller might invoke sha1_object_info() to find the type of an
object even if that object is not known to exist.

Silence this error. The others remain untouched as a corrupt object
is a much more grave error than it merely being absent.

Signed-off-by: Thomas Rast <***@inf.ethz.ch>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 3684101a654d5a7b598d9810df3b498f2a8928d0
https://github.com/msysgit/git/commit/3684101a654d5a7b598d9810df3b498f2a8928d0
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-03 (Mon, 03 Jun 2013)

Changed paths:
M dir.c
M t/t3001-ls-files-others-exclude.sh

Log Message:
-----------
Merge branch 'kb/status-ignored-optim-2'

Fix 1.8.3 regressions in the .gitignore path exclusion logic.

* kb/status-ignored-optim-2:
dir.c: fix ignore processing within not-ignored directories


Commit: b5c26758639cd934780620d4dd16854c8fdf8c34
https://github.com/msysgit/git/commit/b5c26758639cd934780620d4dd16854c8fdf8c34
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-03 (Mon, 03 Jun 2013)

Changed paths:
M sha1_file.c

Log Message:
-----------
Sync with maint


Commit: 0a2623269ff2996c453667a4abc12fbbbf2194b1
https://github.com/msysgit/git/commit/0a2623269ff2996c453667a4abc12fbbbf2194b1
Author: Sebastian Schuberth <***@gmail.com>
Date: 2013-06-04 (Tue, 04 Jun 2013)

Changed paths:
M config.mak.uname

Log Message:
-----------
Makefile: Do not use OLD_ICONV on MINGW anymore

We are building libiconv now the same way as upstream MinGW does, so we do
not need OLD_ICONV anymore when compiling Git either in msysGit or
mingwGitDevEnv.

Signed-off-by: Sebastian Schuberth <***@gmail.com>


Commit: ca35487192c449dc0b22a46af4ec75914a8d4383
https://github.com/msysgit/git/commit/ca35487192c449dc0b22a46af4ec75914a8d4383
Author: Johannes Schindelin <***@gmx.de>
Date: 2013-06-04 (Tue, 04 Jun 2013)

Changed paths:
M config.mak.uname

Log Message:
-----------
Define NO_GETTEXT for Git for Windows

The dreaded "your vnsprintf is broken (returned -1)" error is back. At
least with the libintl version we have. So for the moment, just work
around the issue by _not_ using gettext.

Ah, I wish that my attempt at implementing a custom strbuf_vaddf() would
not have been brushed aside so rashly. Oh well. Time saved on maintaining
that thing, I guess (although more time went into working around coping
with existing implementations).

Signed-off-by: Johannes Schindelin <***@gmx.de>


Commit: fb99070303e8e8af4438c0bad76d459af80d3bba
https://github.com/msysgit/git/commit/fb99070303e8e8af4438c0bad76d459af80d3bba
Author: Pierre le Riche <***@pleasedontspam.me>
Date: 2013-06-04 (Tue, 04 Jun 2013)

Changed paths:
M config.mak.uname

Log Message:
-----------
msysgit: Add the --large-address-aware linker directive to the makefile.

This has the effect of increasing the address space from 2GB to 4GB under
64-bit Windows, reducing the likelihood of an "out of memory" error when
e.g. repacking a large repository. The test suite passes with this
patch, with and without the MEM_TOP_DOWN flag added to all VirtualAlloc
calls. While this is no guarantee that there are no issues with large
memory support (it could break Git on other setups than mine, for
example), it at least increases the chance that nothing obvious goes wrong
(such as errors introduced by faulty sign extension, say, with ssize_t).

[PT: Resolves github issue #12]

Signed-off-by: Pierre le Riche <***@pleasedontspam.me>
Signed-off-by: Pat Thoyts <***@users.sourceforge.net>


Commit: ce39c2e04ced177747d02de83f61989dcbcca44e
https://github.com/msysgit/git/commit/ce39c2e04ced177747d02de83f61989dcbcca44e
Author: Pat Thoyts <***@users.sourceforge.net>
Date: 2013-06-04 (Tue, 04 Jun 2013)

Changed paths:
M .gitignore
M Makefile
M config.mak.uname
A git.rc

Log Message:
-----------
Provide a Windows version resource for the git executables.

Embeds the git version and description into the git executable thus
implementing the request in issue #5.

Acked-by: Heiko Voigt <***@hvoigt.net>
Acked-by: Sebastian Schuberth <***@gmail.com>
Acked-by: Johannes Schindelin <***@gmx.de>
Signed-off-by: Pat Thoyts <***@users.sourceforge.net>


Commit: 2be50eae75ef1d6c83a0546ebe7309f368b5824f
https://github.com/msysgit/git/commit/2be50eae75ef1d6c83a0546ebe7309f368b5824f
Author: Johannes Schindelin <***@gmx.de>
Date: 2013-06-04 (Tue, 04 Jun 2013)

Changed paths:
M Makefile

Log Message:
-----------
Windows resource: handle dashes in the Git version gracefully

Reported by postiffm as issue #14.

Signed-off-by: Johannes Schindelin <***@gmx.de>


Commit: bbc284d6ecaa1974c142e95272e866287694ca17
https://github.com/msysgit/git/commit/bbc284d6ecaa1974c142e95272e866287694ca17
Author: Pat Thoyts <***@users.sourceforge.net>
Date: 2013-06-04 (Tue, 04 Jun 2013)

Changed paths:
M Makefile

Log Message:
-----------
Ensure the resource file is rebuilt when the version changes.

Acked-by: Erik Faye-Lund <***@gmail.com>
Acked-by: Johannes Schindelin <***@gmx.de>
Signed-off-by: Pat Thoyts <***@users.sourceforge.net>


Commit: 65db0443710f59a1c05a85688cdccc215ff48333
https://github.com/msysgit/git/commit/65db0443710f59a1c05a85688cdccc215ff48333
Author: Pat Thoyts <***@users.sourceforge.net>
Date: 2013-06-04 (Tue, 04 Jun 2013)

Changed paths:
M config.mak.uname

Log Message:
-----------
Set the default help format to html for msys builds.

This resolves issue #19 by setting the compiled default to html in msys
builds following the changes introduced by commit
1cc8af0 "help: use HTML as the default help format on Windows"

Signed-off-by: Pat Thoyts <***@users.sourceforge.net>


Commit: f445500e4dd79ad0c4f6cf1c4949f01f155142f7
https://github.com/msysgit/git/commit/f445500e4dd79ad0c4f6cf1c4949f01f155142f7
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-04 (Tue, 04 Jun 2013)

Changed paths:
M t/README

Log Message:
-----------
t/README: test_must_fail is for testing Git

When a test wants to make sure there is no <string> in an output
file, we should just say "! grep string output".

"test_must_fail" is there only to test Git command and catch unusual
deaths we know about (e.g. segv) as an error, not as an expected
failure. "test_must_fail grep string output" is unnecessary, as
we are not making sure the system binaries do not dump core or
anything like that.

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


Commit: 2fe2458370d9bfcc9a00ade21181dd8ac65ca0f0
https://github.com/msysgit/git/commit/2fe2458370d9bfcc9a00ade21181dd8ac65ca0f0
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-04 (Tue, 04 Jun 2013)

Changed paths:
M t/README

Log Message:
-----------
Merge branch 'maint'

* maint:
t/README: test_must_fail is for testing Git


Commit: da608b124c76f8f7dba8a9d8f0bc8174b9744176
https://github.com/msysgit/git/commit/da608b124c76f8f7dba8a9d8f0bc8174b9744176
Author: Benoit Person <***@ensimag.fr>
Date: 2013-06-05 (Wed, 05 Jun 2013)

Changed paths:
M contrib/mw-to-git/git-remote-mediawiki.perl

Log Message:
-----------
git-remote-mediawiki: use Git.pm functions for credentials

In 52dce6d, a new credential function was added to Git.pm, based on
git-remote-mediawiki's functions. The logical follow-up is to use
those functions in git-remote-mediawiki.

Signed-off-by: Benoit Person <***@ensimag.fr>
Signed-off-by: Matthieu Moy <***@grenoble-inp.fr>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 5e3ee39df2be5712dbff5a7cbca94d35ea56990c
https://github.com/msysgit/git/commit/5e3ee39df2be5712dbff5a7cbca94d35ea56990c
Author: Michael S. Tsirkin <***@redhat.com>
Date: 2013-06-05 (Wed, 05 Jun 2013)

Changed paths:
M git-send-email.perl

Log Message:
-----------
send-email: fix suppress-cc=self on cccmd

When cccmd is used, old-style suppress-from filter
is applied by the newer suppress-cc=self isn't.
Fix this up.

Signed-off-by: Michael S. Tsirkin <***@redhat.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: d6ee44568c876f7644f23d7f4319f7689348de76
https://github.com/msysgit/git/commit/d6ee44568c876f7644f23d7f4319f7689348de76
Author: Michael S. Tsirkin <***@redhat.com>
Date: 2013-06-05 (Wed, 05 Jun 2013)

Changed paths:
M t/t9001-send-email.sh

Log Message:
-----------
t/send-email: test suppress-cc=self on cccmd

Check that suppress-cc=self works when applied
to output of cccmd.

Signed-off-by: Michael S. Tsirkin <***@redhat.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: da18759e86bb1a7ee718c79a0c6cb15fbcbdf3c2
https://github.com/msysgit/git/commit/da18759e86bb1a7ee718c79a0c6cb15fbcbdf3c2
Author: Michael S. Tsirkin <***@redhat.com>
Date: 2013-06-05 (Wed, 05 Jun 2013)

Changed paths:
M git-send-email.perl

Log Message:
-----------
send-email: make --suppress-cc=self sanitize input

--suppress-cc=self fails to filter sender address in many cases where it
needs to be sanitized in some way, for example quoted:
"A U. Thor" <***@example.com>
To fix, make send-email sanitize both sender and the address it is
compared against.

Signed-off-by: Michael S. Tsirkin <***@redhat.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: dd29f0b4dcc4e5411adeb310d6cd14a5a626b22c
https://github.com/msysgit/git/commit/dd29f0b4dcc4e5411adeb310d6cd14a5a626b22c
Author: Michael S. Tsirkin <***@redhat.com>
Date: 2013-06-05 (Wed, 05 Jun 2013)

Changed paths:
M t/t9001-send-email.sh

Log Message:
-----------
t/send-email: add test with quoted sender

add test where sender address needs to be quoted.
Make sure --suppress-cc=self works well in this case.

Signed-off-by: Michael S. Tsirkin <***@redhat.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 4b45bcf7b141baf49c7290925b4fa5a40e47b610
https://github.com/msysgit/git/commit/4b45bcf7b141baf49c7290925b4fa5a40e47b610
Author: Michael S. Tsirkin <***@redhat.com>
Date: 2013-06-05 (Wed, 05 Jun 2013)

Changed paths:
M t/t9001-send-email.sh

Log Message:
-----------
t/send-email: test suppress-cc=self with non-ascii

test suppress-cc=self when sender is non-acsii

Signed-off-by: Michael S. Tsirkin <***@redhat.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 14952666d18e5256e1796633e5a927891e77a8de
https://github.com/msysgit/git/commit/14952666d18e5256e1796633e5a927891e77a8de
Author: Michael S. Tsirkin <***@redhat.com>
Date: 2013-06-05 (Wed, 05 Jun 2013)

Changed paths:
M t/t9001-send-email.sh

Log Message:
-----------
test-send-email: test for pre-sanitized self name

Users can sanitize from address manually.
Verify that these are suppressed properly.

Signed-off-by: Michael S. Tsirkin <***@redhat.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 446913e5dbe32835ba0e354b77cc35182684b7c5
https://github.com/msysgit/git/commit/446913e5dbe32835ba0e354b77cc35182684b7c5
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-05 (Wed, 05 Jun 2013)

Changed paths:
M config.c

Log Message:
-----------
Merge branch 'jc/core-checkstat'

The configuration variable core.checkstat was advertised in the
documentation but the code expected core.statinfo instead.

For now, we accept both core.checkstat and core.statinfo, but the
latter will be removed in the longer term.

* jc/core-checkstat:
deprecate core.statinfo at Git 2.0 boundary


Commit: eb2694762c36bb6a8fbe4a12e5022a54f7052894
https://github.com/msysgit/git/commit/eb2694762c36bb6a8fbe4a12e5022a54f7052894
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-05 (Wed, 05 Jun 2013)

Changed paths:
M contrib/completion/git-prompt.sh

Log Message:
-----------
Merge branch 'rr/zsh-color-prompt'

Prompt support (in contrib/) for zsh is updated to use colors.

* rr/zsh-color-prompt:
prompt: colorize ZSH prompt
prompt: factor out gitstring coloring logic
prompt: introduce GIT_PS1_STATESEPARATOR


Commit: 779fd737d79a3e19a1aa420c33cf1195c7e20dd7
https://github.com/msysgit/git/commit/779fd737d79a3e19a1aa420c33cf1195c7e20dd7
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-05 (Wed, 05 Jun 2013)

Changed paths:
M contrib/subtree/git-subtree.sh

Log Message:
-----------
Merge branch 'dm/unbash-subtree'

It turns out that git-subtree script does not have to be run with
bash.

* dm/unbash-subtree:
contrib/git-subtree: Use /bin/sh interpreter instead of /bin/bash


Commit: 058a92ad64cfe55190777b7f4ad5f5772f156286
https://github.com/msysgit/git/commit/058a92ad64cfe55190777b7f4ad5f5772f156286
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-05 (Wed, 05 Jun 2013)

Changed paths:
M git-bisect.sh

Log Message:
-----------
Merge branch 'th/bisect-skip-report-range-fix'

Fix for an additional bisect log comments.

* th/bisect-skip-report-range-fix:
bisect: Fix log output for multi-parent skip ranges


Commit: 8cb9b5f787957460e48c7b376f2c219b7130080d
https://github.com/msysgit/git/commit/8cb9b5f787957460e48c7b376f2c219b7130080d
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-05 (Wed, 05 Jun 2013)

Changed paths:
M contrib/completion/git-prompt.sh

Log Message:
-----------
Merge branch 'tg/maint-zsh-svn-remote-prompt'

zsh prompt script that borrowed from bash prompt script did not
work due to slight differences in array variable notation between
these two shells.

* tg/maint-zsh-svn-remote-prompt:
prompt: fix show upstream with svn and zsh


Commit: 3f261c092fc2c1d1b9c47c5118db141bd37a7709
https://github.com/msysgit/git/commit/3f261c092fc2c1d1b9c47c5118db141bd37a7709
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-05 (Wed, 05 Jun 2013)

Changed paths:
M Documentation/git-push.txt

Log Message:
-----------
Merge branch 'tr/push-no-verify-doc'

"git push --[no-]verify" was not documented.

* tr/push-no-verify-doc:
Document push --no-verify


Commit: 57a00bf6042e429883c177e94f3a5d7cc7e9e8ad
https://github.com/msysgit/git/commit/57a00bf6042e429883c177e94f3a5d7cc7e9e8ad
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-05 (Wed, 05 Jun 2013)

Changed paths:
M Documentation/urls.txt

Log Message:
-----------
Merge branch 'nd/urls-doc-no-file-hyperlink-fix'

* nd/urls-doc-no-file-hyperlink-fix:
urls.txt: avoid auto converting to hyperlink


Commit: 854afacb8e64ef9c45d1e1cf3fe11a74692ba988
https://github.com/msysgit/git/commit/854afacb8e64ef9c45d1e1cf3fe11a74692ba988
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-05 (Wed, 05 Jun 2013)

Changed paths:
M Makefile

Log Message:
-----------
Merge branch 'fc/makefile'

Update Makefile to use handy automatic variables where appropriate,
and stop installing a script that is only used for testing.

* fc/makefile:
build: do not install git-remote-testpy
build: add NO_INSTALL variable
build: cleanup using $<
build: cleanup using $^
build: trivial simplification


Commit: 7221dd301bdcf59b714eb368a973e8fd7c01fb19
https://github.com/msysgit/git/commit/7221dd301bdcf59b714eb368a973e8fd7c01fb19
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-05 (Wed, 05 Jun 2013)

Changed paths:
M remote.c
M t/t3403-rebase-skip.sh
M t/t3404-rebase-interactive.sh
M t/t3505-cherry-pick-empty.sh

Log Message:
-----------
Merge branch 'fc/cleanups'

* fc/cleanups:
test: rebase: fix --interactive test
test: trivial cleanups
remote: trivial style cleanup


Commit: 54b9b58a8c54533e7752dd1354ec313fa20138eb
https://github.com/msysgit/git/commit/54b9b58a8c54533e7752dd1354ec313fa20138eb
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-05 (Wed, 05 Jun 2013)

Changed paths:
M git-send-email.perl
M t/t9001-send-email.sh

Log Message:
-----------
Merge branch 'fc/send-email-chainreplyto-warning'

An overdue removal of "behaviour changed at 1.7.0; if you were
living in a cave, here is what you can adjust to it" message.

* fc/send-email-chainreplyto-warning:
send-email: remove warning about unset chainreplyto


Commit: bf9923171e299fec694153c68f06bfc1650e412d
https://github.com/msysgit/git/commit/bf9923171e299fec694153c68f06bfc1650e412d
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-05 (Wed, 05 Jun 2013)

Changed paths:
M builtin/commit.c
M t/t7502-commit.sh

Log Message:
-----------
Merge branch 'rs/commit-m-no-edit'

"git commit --allow-empty-message -m ''" should not start an
editor.

* rs/commit-m-no-edit:
commit: don't start editor if empty message is given with -m


Commit: ecb9f3e73366d020dc97f60c7529c3703aa778e0
https://github.com/msysgit/git/commit/ecb9f3e73366d020dc97f60c7529c3703aa778e0
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-05 (Wed, 05 Jun 2013)

Changed paths:
M Documentation/RelNotes/1.8.4.txt

Log Message:
-----------
Update draft release notes to 1.8.4

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


Commit: 04422c74c88e2d5d78210bad65e95b223a18fd8e
https://github.com/msysgit/git/commit/04422c74c88e2d5d78210bad65e95b223a18fd8e
Author: Johannes Sixt <***@kdbg.org>
Date: 2013-06-06 (Thu, 06 Jun 2013)

Changed paths:
M t/t0005-signals.sh

Log Message:
-----------
t0005: skip signal death exit code test on Windows

The test case depends on that test-sigchain can commit suicide by a
call to raise(SIGTERM) in a way that run-command.c::wait_or_whine()
can detect as death through a signal. There are no POSIX signals on
Windows, and a sufficiently close emulation is not available in the
Microsoft C runtime (and probably not even possible).

The particular deficiency is that when a signal is raise()d whose
SIG_DFL action will cause process death (SIGTERM in this case), the
implementation of raise() in msvcrt just calls exit(3).

We could check for exit code 3 in addition to 143, but that would
miss the point of the test entirely. Hence, just skip it on Windows.

Signed-off-by: Johannes Sixt <***@kdbg.org>
Acked-by: Jeff King <***@peff.net>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 706728a37c53c3d1c3fc38aa9c9842060d03e9cc
https://github.com/msysgit/git/commit/706728a37c53c3d1c3fc38aa9c9842060d03e9cc
Author: Felipe Contreras <***@gmail.com>
Date: 2013-06-06 (Thu, 06 Jun 2013)

Changed paths:
M sequencer.c

Log Message:
-----------
sequencer: avoid leaking message buffer when refusing to create an empty commit

We should free objects before leaving.

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


Commit: 99d9ec090677c925c534001f01cbaf303a31cb82
https://github.com/msysgit/git/commit/99d9ec090677c925c534001f01cbaf303a31cb82
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-06 (Thu, 06 Jun 2013)

Changed paths:
M transport-helper.c

Log Message:
-----------
Merge branch 'fc/transport-helper-no-refspec'

With "export" remote-helper protocol,

(1) a push that tries to update a remote ref whose name is
different from the pushing side does not work yet, and

(2) the helper may not know how to do --dry-run

Detect such problematic cases and disable them for now.

* fc/transport-helper-no-refspec:
transport-helper: check if the dry-run is supported
transport-helper: barf when user tries old:new


Commit: 9d54f97e34a92d1504f24a5896e9741111f38d79
https://github.com/msysgit/git/commit/9d54f97e34a92d1504f24a5896e9741111f38d79
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-06 (Thu, 06 Jun 2013)

Changed paths:
M builtin.h
M builtin/prune-packed.c
M builtin/prune.c

Log Message:
-----------
Merge branch 'nd/prune-packed-dryrun-verbose'

* nd/prune-packed-dryrun-verbose:
prune-packed: avoid implying "1" is DRY_RUN in prune_packed_objects()


Commit: 72e719292d5dd6e037fecbc3a1c5e4d4f21f03b8
https://github.com/msysgit/git/commit/72e719292d5dd6e037fecbc3a1c5e4d4f21f03b8
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-06 (Thu, 06 Jun 2013)

Changed paths:
M Documentation/git-index-pack.txt
M builtin/clone.c
M builtin/index-pack.c
M commit.h
M connected.c
M connected.h
M fetch-pack.c
M fetch-pack.h
M git.c
M shallow.c
M t/t5500-fetch-pack.sh
M transport.c
M transport.h

Log Message:
-----------
Merge branch 'nd/clone-connectivity-shortcut'

Special case "git clone" and use lighter-weight implementation to
check the completeness of the history behind refs.

* nd/clone-connectivity-shortcut:
clone: open a shortcut for connectivity check
index-pack: remove dead code (it should never happen)
fetch-pack: prepare updated shallow file before fetching the pack
clone: let the user know when check_everything_connected is run


Commit: 5adb37410198bc1d2413df9100bfd5c9f5d844f2
https://github.com/msysgit/git/commit/5adb37410198bc1d2413df9100bfd5c9f5d844f2
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-06 (Thu, 06 Jun 2013)

Changed paths:
M contrib/completion/git-prompt.sh
M t/t9903-bash-prompt.sh

Log Message:
-----------
Merge branch 'fc/show-branch-in-rebase-am'

The bash prompt code (in contrib/) displayed the name of the branch
being rebased when "rebase -i/-m/-p" modes are in use, but not the
plain vanilla "rebase".

* fc/show-branch-in-rebase-am:
prompt: fix for simple rebase


Commit: 2fc0c022e60f54be55d6065b9a8abccdc0f67bab
https://github.com/msysgit/git/commit/2fc0c022e60f54be55d6065b9a8abccdc0f67bab
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-06 (Thu, 06 Jun 2013)

Changed paths:
M git-difftool.perl
M t/t7800-difftool.sh

Log Message:
-----------
Merge branch 'ks/difftool-dir-diff-copy-fix'

"difftool --dir-diff" did not copy back changes made by the
end-user in the diff tool backend to the working tree in some
cases.

* ks/difftool-dir-diff-copy-fix:
difftool --dir-diff: allow changing any clean working tree file


Commit: 36a22e4b6c5c8a16c9a0ea308017c0cad2d1d679
https://github.com/msysgit/git/commit/36a22e4b6c5c8a16c9a0ea308017c0cad2d1d679
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-06 (Thu, 06 Jun 2013)

Changed paths:
M builtin/push.c

Log Message:
-----------
Merge branch 'rr/push-head'

"git push $there HEAD:branch" did not resolve HEAD early enough, so
it was easy to flip it around while push is still going on and push
out a branch that the user did not originally intended when the
command was started.

* rr/push-head:
push: make push.default = current use resolved HEAD
push: fail early with detached HEAD and current
push: factor out the detached HEAD error message


Commit: d4f6b5f51ce2c974c7630b5491562a21821c8fe4
https://github.com/msysgit/git/commit/d4f6b5f51ce2c974c7630b5491562a21821c8fe4
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-06 (Thu, 06 Jun 2013)

Changed paths:
M archive-zip.c

Log Message:
-----------
Merge branch 'sb/archive-zip-double-assignment-fix'

* sb/archive-zip-double-assignment-fix:
archive-zip:write_zip_entry: Remove second reset of size variable to zero.


Commit: 00480a1e9ccd44f257c09c45c185c9c8825a3078
https://github.com/msysgit/git/commit/00480a1e9ccd44f257c09c45c185c9c8825a3078
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-06 (Thu, 06 Jun 2013)

Changed paths:
M git-compat-util.h

Log Message:
-----------
Merge branch 'rj/mingw-compat-st-mode-bits'

* rj/mingw-compat-st-mode-bits:
path: Fix a sparse warning


Commit: 882e78c7f9c284408640347a4b1910ea73537a10
https://github.com/msysgit/git/commit/882e78c7f9c284408640347a4b1910ea73537a10
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-06 (Thu, 06 Jun 2013)

Changed paths:
M Documentation/RelNotes/1.8.4.txt

Log Message:
-----------
Update draft release notes to 1.8.4

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


Commit: 7d2017e7738ace254d0b653ce844d07af8ecf026
https://github.com/msysgit/git/commit/7d2017e7738ace254d0b653ce844d07af8ecf026
Author: Stefan Haller <***@haller-berlin.de>
Date: 2013-06-06 (Thu, 06 Jun 2013)

Changed paths:
M git-gui.sh

Log Message:
-----------
git-gui: bring wish process to front on Mac

On Mac OS X, any application that is started from the Terminal will open
behind all running applications; as a work-around, manually bring ourselves
to the front. (Stolen from gitk, commit 76bf6ff93e.)

We do this as the very first thing, so that any message boxes that might pop
up during the rest of the startup sequence are actually seen by the user.

[PT: added catch and moved down to ensure Tk has been loaded]

Signed-off-by: Stefan Haller <***@haller-berlin.de>
Signed-off-by: Pat Thoyts <***@users.sourceforge.net>


Commit: 1462b67bc893fc845d28e2748c20357cb16a5ce3
https://github.com/msysgit/git/commit/1462b67bc893fc845d28e2748c20357cb16a5ce3
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-07 (Fri, 07 Jun 2013)

Changed paths:
M .gitignore
M Makefile
M config.mak.uname
A git.rc

Log Message:
-----------
Merge tag 'post183-for-junio' of http://github.com/msysgit/git

Collected msysgit build patches for upstream

This set of patches collects a number of build fixes that have been
used on the msysgit port for a while and merging upstream should
simplify future maintenance.

* tag 'post183-for-junio' of http://github.com/msysgit/git:
Set the default help format to html for msys builds.
Ensure the resource file is rebuilt when the version changes.
Windows resource: handle dashes in the Git version gracefully
Provide a Windows version resource for the git executables.
msysgit: Add the --large-address-aware linker directive to the makefile.
Define NO_GETTEXT for Git for Windows
Makefile: Do not use OLD_ICONV on MINGW anymore


Commit: 9eb4754d7682aa10c6dcbcc503a50a716d9cfc8a
https://github.com/msysgit/git/commit/9eb4754d7682aa10c6dcbcc503a50a716d9cfc8a
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-07 (Fri, 07 Jun 2013)

Changed paths:
M Documentation/fetch-options.txt

Log Message:
-----------
fetch-options.txt: prevent a wildcard refspec from getting misformatted

When explaining the "--tags" option as an equivalent to giving an
explicit "refs/tags/*:refs/tags/*" refspec, the two asterisks were
misinterpreted by AsciiDoc as a request to typeset the string
segment between them in bold.

We could fix it in two ways. We can replace them with {asterisk}s
while keeping the string as body text, or we can mark it as a
literal string with backquotes around it.

Let's do the latter, as it is teaching the user an "exactly as
typed" alternative.

Noticed-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: ca7a5dcfd39bdeb26d74074e78e6966df5e63a6b
https://github.com/msysgit/git/commit/ca7a5dcfd39bdeb26d74074e78e6966df5e63a6b
Author: Charles McGarvey <***@brokenzipper.com>
Date: 2013-06-07 (Fri, 07 Jun 2013)

Changed paths:
M gitweb/gitweb.perl

Log Message:
-----------
gitweb: fix problem causing erroneous project list

The bug is manifest when running gitweb in a persistent process (e.g.
FastCGI, PSGI), and it's easy to reproduce. If a gitweb request
includes the searchtext parameter (i.e. s), subsequent requests using
the project_list action--which is the default action--and without
a searchtext parameter will be filtered by the searchtext value of the
first request. This is because the value of the $search_regexp global
(the value of which is based on the searchtext parameter) is currently
being persisted between requests.

Instead, clear $search_regexp before dispatching each request.

Signed-off-by: Charles McGarvey <***@brokenzipper.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 2aad7cace2253797fe0cd688e20f39ffb66db995
https://github.com/msysgit/git/commit/2aad7cace2253797fe0cd688e20f39ffb66db995
Author: Martin von Zweigbergk <***@gmail.com>
Date: 2013-06-07 (Fri, 07 Jun 2013)

Changed paths:
M t/lib-rebase.sh
A t/t3421-rebase-topology-linear.sh

Log Message:
-----------
add simple tests of consistency across rebase types

Helped-by: Johannes Sixt <***@kdbg.org>
Signed-off-by: Martin von Zweigbergk <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 5b5e1c7c7875bcaed7e640dd0d33de3dbe87e1bb
https://github.com/msysgit/git/commit/5b5e1c7c7875bcaed7e640dd0d33de3dbe87e1bb
Author: Martin von Zweigbergk <***@gmail.com>
Date: 2013-06-07 (Fri, 07 Jun 2013)

Changed paths:
M t/lib-rebase.sh
M t/t3421-rebase-topology-linear.sh

Log Message:
-----------
add tests for rebasing with patch-equivalence present

Signed-off-by: Martin von Zweigbergk <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 00b8be5a4d383be1f4b6d0c083d3d4b10f38444b
https://github.com/msysgit/git/commit/00b8be5a4d383be1f4b6d0c083d3d4b10f38444b
Author: Martin von Zweigbergk <***@gmail.com>
Date: 2013-06-07 (Fri, 07 Jun 2013)

Changed paths:
M t/t3401-rebase-partial.sh
M t/t3421-rebase-topology-linear.sh

Log Message:
-----------
add tests for rebasing of empty commits

Signed-off-by: Martin von Zweigbergk <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 6a6bc5bdc4d73d0926bdbd8b65c8959583ba7911
https://github.com/msysgit/git/commit/6a6bc5bdc4d73d0926bdbd8b65c8959583ba7911
Author: Martin von Zweigbergk <***@gmail.com>
Date: 2013-06-07 (Fri, 07 Jun 2013)

Changed paths:
M t/t3421-rebase-topology-linear.sh

Log Message:
-----------
add tests for rebasing root

Signed-off-by: Martin von Zweigbergk <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 3f213981e44a9109d053550855dc0ae91d0287c6
https://github.com/msysgit/git/commit/3f213981e44a9109d053550855dc0ae91d0287c6
Author: Martin von Zweigbergk <***@gmail.com>
Date: 2013-06-07 (Fri, 07 Jun 2013)

Changed paths:
M t/t3400-rebase.sh
R t/t3401-rebase-partial.sh
M t/t3404-rebase-interactive.sh
M t/t3409-rebase-preserve-merges.sh
A t/t3425-rebase-topology-merges.sh

Log Message:
-----------
add tests for rebasing merged history

Signed-off-by: Martin von Zweigbergk <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 9e2248efdbc0327d1eee19d3b8e825e43f7df81f
https://github.com/msysgit/git/commit/9e2248efdbc0327d1eee19d3b8e825e43f7df81f
Author: Martin von Zweigbergk <***@gmail.com>
Date: 2013-06-07 (Fri, 07 Jun 2013)

Changed paths:
M t/t3406-rebase-message.sh

Log Message:
-----------
t3406: modernize style

Update the following:

- Quote 'setup'
- Remove blank lines within test case body
- Use test_commit instead of custom quick_one
- Create branch "topic" from tag created by test_commit

Signed-off-by: Martin von Zweigbergk <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: c9581cc8005d54680512cc6f22255b6847176f2b
https://github.com/msysgit/git/commit/c9581cc8005d54680512cc6f22255b6847176f2b
Author: Martin von Zweigbergk <***@gmail.com>
Date: 2013-06-07 (Fri, 07 Jun 2013)

Changed paths:
M t/t3400-rebase.sh
M t/t3406-rebase-message.sh

Log Message:
-----------
tests: move test for rebase messages from t3400 to t3406

t3406 is supposed to test "messages from rebase operation", so let's
move tests in t3400 that fit that description into 3406. Most of the
functionality they tested, except for the messages, has now been
subsumed by t3420.

Signed-off-by: Martin von Zweigbergk <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: a84b794ad0622103cae98639d7176b2451dc6f92
https://github.com/msysgit/git/commit/a84b794ad0622103cae98639d7176b2451dc6f92
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-07 (Fri, 07 Jun 2013)

Changed paths:
A commit-slab.h
M commit.c

Log Message:
-----------
commit-slab: introduce a macro to define a slab for new type

Introduce a header file to define a macro that can define the struct
type, initializer, accessor and cleanup functions to manage a commit
slab. Update the "indegree" topological sort facility using it.

To associate 32 flag bits with each commit, you can write:

define_commit_slab(flag32, uint32);

to declare "struct flag32" type, define an instance of it with

struct flag32 flags;

and initialize it by calling

init_flag32(&flags);

After that, a call to flag32_at() function

uint32 *fp = flag32_at(&flags, commit);

will return a pointer pointing at a uint32 for that commit. Once
you are done with these flags, clean them up with

clear_flag32(&flags);

Callers that cannot hard-code how wide the data to be associated
with the commit be at compile time can use the "_with_stride"
variant to initialize the slab.

Suppose you want to give one bit per existing ref, and paint commits
down to find which refs are descendants of each commit. Saying

typedef uint32 bits320[5];
define_commit_slab(flagbits, bits320);

at compile time will still limit your code with hard-coded limit,
because you may find that you have more than 320 refs at runtime.

The code can declare a commit slab "struct flagbits" like this
instead:

define_commit_slab(flagbits, unsigned char);
struct flagbits flags;

and initialize it by:

nrefs = ... count number of refs ...
init_flagbits_with_stride(&flags, (nrefs + 7) / 8);

so that

unsigned char *fp = flagbits_at(&flags, commit);

will return a pointer pointing at an array of 40 "unsigned char"s
associated with the commit, once you figure out nrefs is 320 at
runtime.

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


Commit: cb648689b9456a1131b494065d7888c925265ddd
https://github.com/msysgit/git/commit/cb648689b9456a1131b494065d7888c925265ddd
Author: Johannes Sixt <***@kdbg.org>
Date: 2013-06-07 (Fri, 07 Jun 2013)

Changed paths:
M t/t3010-ls-files-killed-modified.sh

Log Message:
-----------
t3010: modernize style

In particular:

- move test preparations inside test_expect_success

- place test description on the test_expect_success line

- indent with a tab

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


Commit: 9ce415d972a04df4bfceaad0fab8eaea9a66997e
https://github.com/msysgit/git/commit/9ce415d972a04df4bfceaad0fab8eaea9a66997e
Author: Johannes Sixt <***@kdbg.org>
Date: 2013-06-07 (Fri, 07 Jun 2013)

Changed paths:
M t/README
M t/test-lib-functions.sh

Log Message:
-----------
tests: introduce test_ln_s_add

Add a new function that creates a symbolic link and adds it to the index
to be used in cases where a symbolic link is not required on the file
system. We will use it to remove many SYMLINKS prerequisites from test
cases.

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


Commit: 889c6f0e4d637223e0517d000eedad39b173d8a2
https://github.com/msysgit/git/commit/889c6f0e4d637223e0517d000eedad39b173d8a2
Author: Johannes Sixt <***@kdbg.org>
Date: 2013-06-07 (Fri, 07 Jun 2013)

Changed paths:
M t/t1004-read-tree-m-u-wf.sh
M t/t2001-checkout-cache-clash.sh
M t/t2004-checkout-cache-temp.sh
M t/t2007-checkout-symlink.sh
M t/t2021-checkout-overwrite.sh
M t/t2200-add-update.sh
M t/t3010-ls-files-killed-modified.sh
M t/t3700-add.sh
M t/t3903-stash.sh
M t/t4008-diff-break-rewrite.sh
M t/t4030-diff-textconv.sh
M t/t4115-apply-symlink.sh
M t/t4122-apply-symlink-inside.sh
M t/t7001-mv.sh
M t/t7607-merge-overwrite.sh
M t/t8006-blame-textconv.sh
M t/t8007-cat-file-textconv.sh
M t/t9350-fast-export.sh
M t/t9500-gitweb-standalone-no-errors.sh

Log Message:
-----------
tests: use test_ln_s_add to remove SYMLINKS prerequisite (trivial cases)

There are many instances where the treatment of symbolic links in the
object model and the algorithms are tested, but where it is not
necessary to actually have a symbolic link in the worktree. Make
adjustments to the tests and remove the SYMLINKS prerequisite when
appropriate in trivial cases, where "trivial" means:

- merely a replacement of 'ln -s a b && git add b' by test_ln_s_add
is needed;

- a test for symbolic link on the file system can be split off (and
remains protected by SYMLINKS);

- existing code is equivalent to test_ln_s_add.

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


Commit: c723a76d4da632f8fbb8e687cea751f6d16b4cb0
https://github.com/msysgit/git/commit/c723a76d4da632f8fbb8e687cea751f6d16b4cb0
Author: Johannes Sixt <***@kdbg.org>
Date: 2013-06-07 (Fri, 07 Jun 2013)

Changed paths:
M t/t0000-basic.sh

Log Message:
-----------
t0000: use test_ln_s_add to remove SYMLINKS prerequisite

t0000-basic hard-codes many object IDs. To cater to file systems that do
not support symbolic links, different IDs are used depending on the
SYMLINKS prerequisite. But we can observe the symbolic links are only
needed to generate index entries. Use test_ln_s_add to generate the
index entries and get rid of explicit SYMLINKS checks.

This undoes the special casing introduced in this test by 704a3143
(Use prerequisite tags to skip tests that depend on symbolic links,
2009-03-04).

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


Commit: bba56042e7011a5555cb8b44a84e0d853fa43af5
https://github.com/msysgit/git/commit/bba56042e7011a5555cb8b44a84e0d853fa43af5
Author: Johannes Sixt <***@kdbg.org>
Date: 2013-06-07 (Fri, 07 Jun 2013)

Changed paths:
M t/t3030-merge-recursive.sh

Log Message:
-----------
t3030: use test_ln_s_add to remove SYMLINKS prerequisite

The test cases include many corner-cases of merge-recursive's behavior,
some of them involve type changes and symbolic links. All cases, including
those that are protected by SYMLINKS check only whether the result of
merge-recursive is correctly stored in the database and the index; the
file system is not investigated. Use test_ln_s_add to enter a symbolic
link in the index in the test setup and run the tests without the
SYMLINKS prerequisite.

Notice that one test that has the SYMLINKS protection removed is an
expect_failure. There is a possibility that the test fails differently
depending on whether SYMLINKS is present or not; but this is not the case
presently.

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


Commit: e40db07f5f4e46dc8678f81b672a0466d4d5b7ad
https://github.com/msysgit/git/commit/e40db07f5f4e46dc8678f81b672a0466d4d5b7ad
Author: Johannes Sixt <***@kdbg.org>
Date: 2013-06-07 (Fri, 07 Jun 2013)

Changed paths:
M t/t3100-ls-tree-restrict.sh

Log Message:
-----------
t3100: use test_ln_s_add to remove SYMLINKS prerequisite

This undoes the special casing introduced in this test by 704a3143
(Use prerequisite tags to skip tests that depend on symbolic links,
2009-03-04).

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


Commit: 622f98e272196c9eb00ae4bc7b8710ed72a2c1ad
https://github.com/msysgit/git/commit/622f98e272196c9eb00ae4bc7b8710ed72a2c1ad
Author: Johannes Sixt <***@kdbg.org>
Date: 2013-06-07 (Fri, 07 Jun 2013)

Changed paths:
M t/t3509-cherry-pick-merge-df.sh
M t/t4023-diff-rename-typechange.sh
M t/t4114-apply-typechange.sh

Log Message:
-----------
t3509, t4023, t4114: use test_ln_s_add to remove SYMLINKS prerequisite

In t4023 and t4114, we have to remove the entries using 'git rm' because
otherwise the entries that must turn from symbolic links to regular files
would stay symbolic links in the index. For the same reason, we have to
use 'git mv' instead of plain 'mv' in t3509.

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


Commit: bfd7804ee3d5285aa8598497995efe3f697ea7fd
https://github.com/msysgit/git/commit/bfd7804ee3d5285aa8598497995efe3f697ea7fd
Author: Johannes Sixt <***@kdbg.org>
Date: 2013-06-07 (Fri, 07 Jun 2013)

Changed paths:
M t/t6035-merge-dir-to-symlink.sh

Log Message:
-----------
t6035: use test_ln_s_add to remove SYMLINKS prerequisite

All tests in t6035 are protected by SYMLINKS. But that is not necessary,
because a lot of the functionality can be tested provided symbolic link
entries enter the index and object data base. Use test_ln_s_add for this
purpose.

Some test cases do test the presence of symbolic links on the file system.
Move these tests into separate test cases that remain protected by
SYMLINKS.

There is one instance of expect_failure. There is a possibility that this
test case fails differently depending on whether SYMLINKS is present or
not; but this is not the case.

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


Commit: 70836a6f8b71a945f074fc796c4241c2183b83a2
https://github.com/msysgit/git/commit/70836a6f8b71a945f074fc796c4241c2183b83a2
Author: Johannes Sixt <***@kdbg.org>
Date: 2013-06-07 (Fri, 07 Jun 2013)

Changed paths:
M t/t4011-diff-symlink.sh

Log Message:
-----------
t4011: remove SYMLINKS prerequisite

The part of the test that is about symbolic links in the index does not
require that the corresponding file system entry is actually a symbolic
link. Use test_ln_s_add to insert a symbolic link in the index. When
the file system does not support symbolic links, we actually have a
regular file in the worktree, which we can update as if it were a
symbolic link. diff-index picks up the symbolic link property from the
index.

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


Commit: 2f38dd03fcefb7ad3a6db2703eeb6dd9b4fd34b6
https://github.com/msysgit/git/commit/2f38dd03fcefb7ad3a6db2703eeb6dd9b4fd34b6
Author: John Keeping <***@keeping.me.uk>
Date: 2013-06-07 (Fri, 07 Jun 2013)

Changed paths:
M git-gui.sh

Log Message:
-----------
git-gui: fix file name handling with non-empty prefix

Commit e3d06ca (git-gui: Detect full path when parsing arguments -
2012-10-02) fixed the handling of absolute paths passed to the browser
and blame subcommands by checking whether the file exists without the
prefix before prepending the prefix and checking again. Since we have
chdir'd to the top level of the working tree before doing this, this
does not work if a file with the same name exists in a subdirectory and
at the top level (for example Makefile in git.git's t/ directory).

Instead of doing this, revert that patch and fix absolute path issue by
using "file join" to prepend the prefix to the supplied path. This will
correctly handle absolute paths by skipping the prefix in that case.

Acked-by: Andrew Wong <***@gmail.com>
Signed-off-by: John Keeping <***@keeping.me.uk>
Signed-off-by: Pat Thoyts <***@users.sourceforge.net>


Commit: 81b4f18fb8f9356477157a3b9f0652d371cba835
https://github.com/msysgit/git/commit/81b4f18fb8f9356477157a3b9f0652d371cba835
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-07 (Fri, 07 Jun 2013)

Changed paths:
M .gitignore
M Documentation/gitremote-helpers.txt
M Makefile
R git-remote-testgit
A git-remote-testgit.sh
M t/t5801-remote-helpers.sh
M transport-helper.c

Log Message:
-----------
Merge branch 'js/transport-helper-error-reporting-fix' into fc/makefile

* js/transport-helper-error-reporting-fix:
git-remote-testgit: build it to run under $SHELL_PATH
git-remote-testgit: further remove some bashisms
git-remote-testgit: avoid process substitution
t5801: "VAR=VAL shell_func args" is forbidden
transport-helper: update remote helper namespace
transport-helper: trivial code shuffle
transport-helper: warn when refspec is not used
transport-helper: clarify pushing without refspecs
transport-helper: update refspec documentation
transport-helper: clarify *:* refspec
transport-helper: improve push messages
transport-helper: mention helper name when it dies
transport-helper: report errors properly

Conflicts:
t/t5801-remote-helpers.sh


Commit: 6c473a56d26bf596d4314b7c2e4c2bfafbfe757e
https://github.com/msysgit/git/commit/6c473a56d26bf596d4314b7c2e4c2bfafbfe757e
Author: Felipe Contreras <***@gmail.com>
Date: 2013-06-07 (Fri, 07 Jun 2013)

Changed paths:
M Makefile

Log Message:
-----------
build: generate and clean test scripts

Commit 416fda6 (build: do not install git-remote-testpy) made it so
git-remote-testpy is not only not installed, but also not generated
by default. From a fresh checkout, "make --test=5800 test" would
have failed.

This was not found primarily because "make clean" failed to remove
git-remote-testpy, which is another bug in the same commit.

Fix the former by having 'all' target depend on $(NO_INSTALL) and
the latter by removing $(NO_INSTALL) in the 'clean' target.

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


Commit: 7ded0554010f520940704d8588821f1c0e8307ab
https://github.com/msysgit/git/commit/7ded0554010f520940704d8588821f1c0e8307ab
Author: Felipe Contreras <***@gmail.com>
Date: 2013-06-07 (Fri, 07 Jun 2013)

Changed paths:
M Makefile

Log Message:
-----------
build: do not install git-remote-testgit

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


Commit: 26f8f32a2039a0e4568fb7d3682be19b94a9dd7f
https://github.com/msysgit/git/commit/26f8f32a2039a0e4568fb7d3682be19b94a9dd7f
Author: Fredrik Gustafsson <***@iveqy.com>
Date: 2013-06-09 (Sun, 09 Jun 2013)

Changed paths:
M Documentation/gitrepository-layout.txt

Log Message:
-----------
Document .git/modules

A note in the beginning of this document describes the behavior already.
This patch just adds where to find the repositories.

Signed-off-by: Fredrik Gustafsson <***@iveqy.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 467b8fe1bb900832f51281fe954d9134b545d6dd
https://github.com/msysgit/git/commit/467b8fe1bb900832f51281fe954d9134b545d6dd
Author: René Scharfe <***@lsrfire.ath.cx>
Date: 2013-06-09 (Sun, 09 Jun 2013)

Changed paths:
M submodule.c

Log Message:
-----------
submodule: remove redundant check for the_index.initialized

read_cache already performs the same check and returns immediately if
the cache has already been loaded.

Signed-off-by: René Scharfe <***@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 21117bfeac37d6000e2d8c0b69a146ff3717f961
https://github.com/msysgit/git/commit/21117bfeac37d6000e2d8c0b69a146ff3717f961
Author: Felipe Contreras <***@gmail.com>
Date: 2013-06-09 (Sun, 09 Jun 2013)

Changed paths:
M Makefile

Log Message:
-----------
Makefile: use $^ to avoid listing prerequisites on the command line

There's no need to list again the prerequisites.

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


Commit: 5269f7f8c6b293f1568c4f03c14596835e22df31
https://github.com/msysgit/git/commit/5269f7f8c6b293f1568c4f03c14596835e22df31
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-06-09 (Sun, 09 Jun 2013)

Changed paths:
M contrib/completion/git-completion.bash

Log Message:
-----------
completion: show can take both revlist and paths

The 'git show' completion uses __git_complete_file (aliased to
__git_complete_revlist_file), because accepts <tree-ish>:<path> as
well as <commit-ish>. But the command also accepts range of commits
in A..B notation, so using __git_complete_revlist_file is more
appropriate.

There still remain two users of __git_complete_file, completions for
"archive" and "ls-tree". As these commands do not take range
notation, and "git show" no longer uses __git_complete_file, the
implementation of it can be updated not to complete ranges, but that
is a separate topic.

Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: b12ca9631f86adc35b0c03fb5b792cd82c288288
https://github.com/msysgit/git/commit/b12ca9631f86adc35b0c03fb5b792cd82c288288
Author: Nguyễn Thái Ngọc Duy <***@gmail.com>
Date: 2013-06-09 (Sun, 09 Jun 2013)

Changed paths:
M Documentation/git.txt
M cache.h
M config.c
M environment.c
M sha1_file.c

Log Message:
-----------
core: use env variable instead of config var to turn on logging pack access

5f44324 (core: log offset pack data accesses happened - 2011-07-06)
provides a way to observe pack access patterns via a config
switch. Setting an environment variable looks more obvious than a
config var, especially when you just need to _observe_, and more
inline with other tracing knobs we have.

Document it as it may be useful for remote troubleshooting.

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


Commit: 1dd278ce60294aa6b3119a469007949c6fde425a
https://github.com/msysgit/git/commit/1dd278ce60294aa6b3119a469007949c6fde425a
Author: Nguyễn Thái Ngọc Duy <***@gmail.com>
Date: 2013-06-09 (Sun, 09 Jun 2013)

Changed paths:
M Documentation/git.txt

Log Message:
-----------
git.txt: document GIT_TRACE_PACKET

"This can help with debugging object negotiation or other protocol
issues."

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


Commit: ca8d148daf3014577222c2562ca2c8170a866aa4
https://github.com/msysgit/git/commit/ca8d148daf3014577222c2562ca2c8170a866aa4
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-09 (Sun, 09 Jun 2013)

Changed paths:
M t/t0040-parse-options.sh
M t/t3400-rebase.sh
M t/t3903-stash.sh
M t/t5521-pull-options.sh
M t/t5702-clone-options.sh
M t/t7102-reset.sh
M t/t7400-submodule-basic.sh
M t/t9402-git-cvsserver-refs.sh
M t/test-lib-functions.sh

Log Message:
-----------
test: test_must_be_empty helper

There are quite a lot places where an output file is expected to be
empty, and we fail the test when it is not. The output from running
the test script with -i -v can be helped if we showed the unexpected
contents at that point.

We could of course do
expected.empty && test_cmp expected.empty actual
but this is commmon enough to be done with a dedicated helper.

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


Commit: 1ecb5ff141f6e54727c746446b52af51016e662c
https://github.com/msysgit/git/commit/1ecb5ff141f6e54727c746446b52af51016e662c
Author: René Scharfe <***@lsrfire.ath.cx>
Date: 2013-06-09 (Sun, 09 Jun 2013)

Changed paths:
M .gitignore
M Makefile
A t/perf/p0002-read-cache.sh
A test-read-cache.c

Log Message:
-----------
read-cache: add simple performance test

Add the helper test-read-cache, which can be used to call read_cache and
discard_cache in a loop as well as a performance check based on it.

Signed-off-by: René Scharfe <***@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: a0fc4db01dfa69d836dc6f24218974a674ec29ac
https://github.com/msysgit/git/commit/a0fc4db01dfa69d836dc6f24218974a674ec29ac
Author: René Scharfe <***@lsrfire.ath.cx>
Date: 2013-06-09 (Sun, 09 Jun 2013)

Changed paths:
M read-cache.c

Log Message:
-----------
read-cache: free cache in discard_index

discard_cache doesn't have to free the array of cache entries, because
the next call of read_cache can simply reuse it, as they all operate on
the global variable the_index.

discard_index on the other hand does have to free it, because it can be
used e.g. with index_state variables on the stack, in which case a
missing free would cause an unrecoverable leak. This patch releases the
memory and removes a comment that was relevant for discard_cache but has
become outdated.

Since discard_cache is just a wrapper around discard_index nowadays, we
lose the optimization that avoids reallocation of that array within
loops of read_cache and discard_cache. That doesn't cause a performance
regression for me, however (HEAD = this patch, HEAD^ = master + p0002):

Test // HEAD^ HEAD
---------------\\-----------------------------------------------------
0002.1: read_ca// 1000 times 0.62(0.58+0.04) 0.61(0.58+0.02) -1.6%

Suggested-by: Felipe Contreras <***@gmail.com>
Signed-off-by: René Scharfe <***@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: fd500302096b5b4e45d78c14d6ea9a704f556a16
https://github.com/msysgit/git/commit/fd500302096b5b4e45d78c14d6ea9a704f556a16
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-09 (Sun, 09 Jun 2013)

Changed paths:
M dir.c
M t/t3001-ls-files-others-exclude.sh

Log Message:
-----------
Merge branch 'kb/status-ignored-optim-2' into maint

Fix recent regression of .gitignore files that list !directory to
mark it not-ignored.

* kb/status-ignored-optim-2:
dir.c: fix ignore processing within not-ignored directories


Commit: b1c418e155a86a1a6104c20e5424d847e516c8d7
https://github.com/msysgit/git/commit/b1c418e155a86a1a6104c20e5424d847e516c8d7
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-09 (Sun, 09 Jun 2013)

Changed paths:
M builtin/config.c
M config.c
M dir.c
M git-compat-util.h
M wrapper.c

Log Message:
-----------
Merge branch 'jn/config-ignore-inaccessible' into maint

A git daemon that starts as "root" and then drops privilege often
leaves $HOME set to that of the root user, which is unreadable by
the daemon process, which was diagnosed as a configuration error.

Make per-user configuration files that are inaccessible due to
EACCES as though these files do not exist to avoid this issue, as
the tightening which was originally meant as an additional security
has annoyed enough sysadmins.

* jn/config-ignore-inaccessible:
config: allow inaccessible configuration under $HOME


Commit: 4c7f1819b3c142ace98269a556bc929c80e7c9fd
https://github.com/msysgit/git/commit/4c7f1819b3c142ace98269a556bc929c80e7c9fd
Author: Matthieu Moy <***@imag.fr>
Date: 2013-06-10 (Mon, 10 Jun 2013)

Changed paths:
M Documentation/config.txt
M builtin/config.c
M color.c

Log Message:
-----------
make color.ui default to 'auto'

Most users seem to like having colors enabled, and colors can help
beginners to understand the output of some commands (e.g. notice
immediately the boundary between commits in the output of "git log").

Many tutorials tell the users to set color.ui=auto as a very first step,
which tend to indicate that color.ui=none is not the recommanded value,
hence should not be the default.

These tutorials would benefit from skipping this step and starting the
real Git manipulations earlier. Other beginners do not know about
color.ui=auto, and may not discover it by themselves, hence live with
black&white outputs while they may have preferred colors.

A few people (e.g. color-blind) prefer having no colors, but they can
easily set color.ui=never for this (and googling "disable colors in git"
already tells them how to do so), but this needs not occupy space in
beginner-oriented documentations.

A transition period with Git emitting a warning when color.ui is unset
would be possible, but the discomfort of having the warning seems
superior to the benefit: users may be surprised by the change, but not
harmed by it.

The default value is changed, and the documentation is reworded to
mention "color.ui=false" first, since the primary use of color.ui after
this change is to disable colors, not to enable it.

Signed-off-by: Matthieu Moy <***@imag.fr>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: a45406585b0a42e38e580baf47b0daf631c5e454
https://github.com/msysgit/git/commit/a45406585b0a42e38e580baf47b0daf631c5e454
Author: Erik Faye-Lund <***@gmail.com>
Date: 2013-06-10 (Mon, 10 Jun 2013)

Changed paths:
M compat/mingw.c

Log Message:
-----------
mingw: make mingw_signal return the correct handler

Returning the SIGALRM handler for SIGINT is not very useful.

Signed-off-by: Erik Faye-Lund <***@gmail.com>
Signed-off-by: Johannes Sixt <***@kdbg.org>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 362de916c06521205276acb7f51c99f47db94727
https://github.com/msysgit/git/commit/362de916c06521205276acb7f51c99f47db94727
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-10 (Mon, 10 Jun 2013)

Changed paths:
A Documentation/RelNotes/1.8.3.1.txt
M Documentation/git.txt
M GIT-VERSION-GEN
M RelNotes

Log Message:
-----------
Git 1.8.3.1

Primarily to push out two regression issues that seem to affect many
people, namely, the ".gitignore !directory" bug and "daemon cannot
read from $HOME owned by root" bug.

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


Commit: 39fd762572d42a118e577d9095d83d84f3db9ddf
https://github.com/msysgit/git/commit/39fd762572d42a118e577d9095d83d84f3db9ddf
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-10 (Mon, 10 Jun 2013)

Changed paths:
A Documentation/RelNotes/1.8.3.1.txt
M Documentation/git.txt
M Documentation/gitrepository-layout.txt
M compat/mingw.c
M submodule.c

Log Message:
-----------
Sync with 1.8.3.1

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


Commit: 3ea59412e83065b38b52cb8d7b8432e0f516de6c
https://github.com/msysgit/git/commit/3ea59412e83065b38b52cb8d7b8432e0f516de6c
Author: Wieland Hoffmann <***@gmail.com>
Date: 2013-06-11 (Tue, 11 Jun 2013)

Changed paths:
A templates/hooks--pre-push.sample
R templates/hooks--pre-push.sample

Log Message:
-----------
pre-push.sample: Make the script executable

githooks(5) says that "[...]the .sample files are executable by default"
which was not true.

Signed-off-by: Wieland Hoffmann <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 03b1558208f02df6f5a74d22fcc8a751f9470b95
https://github.com/msysgit/git/commit/03b1558208f02df6f5a74d22fcc8a751f9470b95
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-11 (Tue, 11 Jun 2013)

Changed paths:
M sha1_name.c
M t/t1507-rev-parse-upstream.sh

Log Message:
-----------
Merge branch 'rr/die-on-missing-upstream'

When a reflog notation is used for implicit "current branch", we
did not say which branch and worse said "branch ''".

* rr/die-on-missing-upstream:
sha1_name: fix error message for @{<N>}, @{<date>}
sha1_name: fix error message for @{u}


Commit: dd261b1727e4c251e761b45295c00d1cfcf52b8b
https://github.com/msysgit/git/commit/dd261b1727e4c251e761b45295c00d1cfcf52b8b
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-11 (Tue, 11 Jun 2013)

Changed paths:
M builtin/read-tree.c
M cache.h
M diff-lib.c
M read-cache.c
M unpack-trees.c
M unpack-trees.h

Log Message:
-----------
Merge branch 'rs/unpack-trees-plug-leak'

* rs/unpack-trees-plug-leak:
unpack-trees: free cache_entry array members for merges
diff-lib, read-tree, unpack-trees: mark cache_entry array paramters const
diff-lib, read-tree, unpack-trees: mark cache_entry pointers const
unpack-trees: create working copy of merge entry in merged_entry
unpack-trees: factor out dup_entry
read-cache: mark cache_entry pointers const
cache: mark cache_entry pointers const


Commit: 9845bbba972c0299ae6d74c3e85dafba8372b6b4
https://github.com/msysgit/git/commit/9845bbba972c0299ae6d74c3e85dafba8372b6b4
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-11 (Tue, 11 Jun 2013)

Changed paths:
M t/t7501-commit.sh

Log Message:
-----------
Merge branch 'tr/test-commit-only-on-orphan'

* tr/test-commit-only-on-orphan:
Test 'commit --only' after 'checkout --orphan'


Commit: a62d73e7c6fff96ea7fb2133b3e127a4a4bda957
https://github.com/msysgit/git/commit/a62d73e7c6fff96ea7fb2133b3e127a4a4bda957
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-11 (Tue, 11 Jun 2013)

Changed paths:
M contrib/completion/git-completion.bash

Log Message:
-----------
Merge branch 'fc/completion-less-ls-remote'

* fc/completion-less-ls-remote:
completion: avoid ls-remote in certain scenarios


Commit: e936318aa61760a8fe02557bd3c241136613fb34
https://github.com/msysgit/git/commit/e936318aa61760a8fe02557bd3c241136613fb34
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-11 (Tue, 11 Jun 2013)

Changed paths:
M Makefile
M abspath.c
M compat/cygwin.c
M compat/terminal.c
M compat/win32.h
M config.mak.uname
M diff-no-index.c
M git-compat-util.h
M help.c
M run-command.c
M test-chmtime.c
M thread-utils.c

Log Message:
-----------
Merge branch 'rj/mingw-cygwin'

Update build for Cygwin 1.[57]. Torsten Bögershausen reports that
this is fine with Cygwin 1.7 ($gmane/225824) so let's try moving it
ahead.

* rj/mingw-cygwin:
cygwin: Remove the CYGWIN_V15_WIN32API build variable
mingw: rename WIN32 cpp macro to GIT_WINDOWS_NATIVE


Commit: 8d3b97ae51a0fd77443b3b71a169858e28d12261
https://github.com/msysgit/git/commit/8d3b97ae51a0fd77443b3b71a169858e28d12261
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-11 (Tue, 11 Jun 2013)

Changed paths:
M contrib/remote-helpers/git-remote-bzr
M contrib/remote-helpers/git-remote-hg
M contrib/remote-helpers/test-bzr.sh
M contrib/remote-helpers/test-hg-bidi.sh
M contrib/remote-helpers/test-hg-hg-git.sh
M contrib/remote-helpers/test-hg.sh

Log Message:
-----------
Merge branch 'fc/remote-hg'

* fc/remote-hg: (50 commits)
remote-hg: add support for --force
remote-hg: add support for --dry-run
remote-hg: check if a fetch is needed
remote-hg: trivial cleanup
remote-helpers: improve marks usage
remote-hg: add check_push() helper
remote-hg: add setup_big_push() helper
remote-hg: remove files before modifications
remote-hg: improve lightweight tag author
remote-hg: use remote 'default' not local one
remote-hg: improve branch listing
remote-hg: simplify branch_tip()
remote-hg: check diverged bookmarks
remote-hg: pass around revision refs
remote-hg: implement custom checkheads()
remote-hg: implement custom push()
remote-hg: only update necessary revisions
remote-hg: force remote bookmark push selectively
remote-hg: reorganize bookmark handling
remote-hg: add test for failed double push
...


Commit: 221ea21e881a326552cfc94590098abb04e51580
https://github.com/msysgit/git/commit/221ea21e881a326552cfc94590098abb04e51580
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-11 (Tue, 11 Jun 2013)

Changed paths:
M contrib/remote-helpers/git-remote-bzr

Log Message:
-----------
Merge branch 'fc/remote-bzr'

* fc/remote-bzr:
remote-bzr: add fallback check for a partial clone
remote-bzr: reorganize the way 'wanted' works
remote-bzr: trivial cleanups
remote-bzr: change global repo
remote-bzr: delay cloning/pulling
remote-bzr: simplify get_remote_branch()
remote-bzr: fix for files with spaces
remote-bzr: recover from failed clones


Commit: 6bf2227b92b9b8094e625e41b8e621cd6fdc7ee1
https://github.com/msysgit/git/commit/6bf2227b92b9b8094e625e41b8e621cd6fdc7ee1
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-11 (Tue, 11 Jun 2013)

Changed paths:
M read-cache.c

Log Message:
-----------
Merge branch 'fc/do-not-use-the-index-in-add-to-index'

* fc/do-not-use-the-index-in-add-to-index:
read-cache: trivial style cleanups
read-cache: fix wrong 'the_index' usage


Commit: cb4d6c2b7d5b710b9108a39b2df5fcff77c65463
https://github.com/msysgit/git/commit/cb4d6c2b7d5b710b9108a39b2df5fcff77c65463
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-11 (Tue, 11 Jun 2013)

Changed paths:
M contrib/credential/osxkeychain/git-credential-osxkeychain.c

Log Message:
-----------
Merge branch 'xq/credential-osxkeychain'

* xq/credential-osxkeychain:
credential-osxkeychain: support more protocols


Commit: a1ddd1145282b363dcfc08c6ab8fb0c688f88f16
https://github.com/msysgit/git/commit/a1ddd1145282b363dcfc08c6ab8fb0c688f88f16
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-11 (Tue, 11 Jun 2013)

Changed paths:
M combine-diff.c
M t/t4202-log.sh

Log Message:
-----------
Merge branch 'cb/log-follow-with-combined'

* cb/log-follow-with-combined:
fix segfault with git log -c --follow


Commit: f1e74148fa5a1a7f2127660a648cf5e304bbb59f
https://github.com/msysgit/git/commit/f1e74148fa5a1a7f2127660a648cf5e304bbb59f
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-11 (Tue, 11 Jun 2013)

Changed paths:
M contrib/mw-to-git/git-remote-mediawiki.perl

Log Message:
-----------
Merge branch 'mm/mediawiki-https-fail-message'

Hint users when https:// connection failed to check the certificate.

* mm/mediawiki-https-fail-message:
git-remote-mediawiki: better error message when HTTP(S) access fails


Commit: b1bd929611c729ace6e38a41b01b365469312327
https://github.com/msysgit/git/commit/b1bd929611c729ace6e38a41b01b365469312327
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-11 (Tue, 11 Jun 2013)

Changed paths:
M Documentation/git.txt

Log Message:
-----------
Merge branch 'cr/git-work-tree-sans-git-dir'

These days, "git --work-tree=there cmd" without specifying an
explicit --git-dir=here will do the usual discovery, but we had a
description of older behaviour in the documentation.

* cr/git-work-tree-sans-git-dir:
git.txt: remove stale comment regarding GIT_WORK_TREE


Commit: 71e120202fe073bd2e4e9db59ca01ab7c5e72f7e
https://github.com/msysgit/git/commit/71e120202fe073bd2e4e9db59ca01ab7c5e72f7e
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-11 (Tue, 11 Jun 2013)

Changed paths:
M Documentation/diff-options.txt
M Documentation/gitdiffcore.txt
M diffcore-pickaxe.c

Log Message:
-----------
Merge branch 'rr/diffcore-pickaxe-doc'

Update the low-level diffcore documentation on -S/-G and --pickaxe-all.

* rr/diffcore-pickaxe-doc:
diffcore-pickaxe doc: document -S and -G properly
diffcore-pickaxe: make error messages more consistent


Commit: f4c52a05277f8f5901f7663f6ab339271b814872
https://github.com/msysgit/git/commit/f4c52a05277f8f5901f7663f6ab339271b814872
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-11 (Tue, 11 Jun 2013)

Changed paths:
M advice.c
M advice.h
M sha1_name.c
M t/t1512-rev-parse-disambiguation.sh

Log Message:
-----------
Merge branch 'nd/warn-ambiguous-object-name'

"git cmd <name>", when <name> happens to be a 40-hex string,
directly uses the 40-hex string as an object name, even if a ref
"refs/<some hierarchy>/<name>" exists. This disambiguation order
is unlikely to change, but we should warn about the ambiguity just
like we warn when more than one refs/ hierachies share the same
name.

* nd/warn-ambiguous-object-name:
get_sha1: warn about full or short object names that look like refs


Commit: cf6de2968c7d4fdfb80885f1223f9fd8535ff2b7
https://github.com/msysgit/git/commit/cf6de2968c7d4fdfb80885f1223f9fd8535ff2b7
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-11 (Tue, 11 Jun 2013)

Changed paths:
M sha1_file.c

Log Message:
-----------
Merge branch 'tr/sha1-file-silence-loose-object-info-under-prune-race'

* tr/sha1-file-silence-loose-object-info-under-prune-race:
sha1_file: silence sha1_loose_object_info


Commit: 96d339f1e345e4457c4409f29a84d13254489621
https://github.com/msysgit/git/commit/96d339f1e345e4457c4409f29a84d13254489621
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-11 (Tue, 11 Jun 2013)

Changed paths:
M t/t3070-wildmatch.sh
M wildmatch.c

Log Message:
-----------
Merge branch 'ar/wildmatch-foldcase'

The wildmatch engine did not honor WM_CASEFOLD option correctly.

* ar/wildmatch-foldcase:
wildmatch: properly fold case everywhere


Commit: bb1c8fbcc86b31a1e86a1f6cadcb82d67fab1dc0
https://github.com/msysgit/git/commit/bb1c8fbcc86b31a1e86a1f6cadcb82d67fab1dc0
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-11 (Tue, 11 Jun 2013)

Changed paths:
M Documentation/git-check-ref-format.txt
M Documentation/revisions.txt
M refs.c
M sha1_name.c
M t/t1508-at-combinations.sh

Log Message:
-----------
Merge branch 'fc/at-head'

Instead of typing four capital letters "HEAD", you can say "@"
instead.

* fc/at-head:
sha1_name: compare variable with constant, not constant with variable
Add new @ shortcut for HEAD
sha1_name: refactor reinterpret()
sha1_name: check @{-N} errors sooner
sha1_name: reorganize get_sha1_basic()
sha1_name: don't waste cycles in the @-parsing loop
sha1_name: remove unnecessary braces
sha1_name: remove no-op
tests: at-combinations: @{N} versus HEAD@{N}
tests: at-combinations: increase coverage
tests: at-combinations: improve nonsense()
tests: at-combinations: check ref names directly
tests: at-combinations: simplify setup


Commit: 52faa0e8c80ec8351f735c32d858b167d63a0642
https://github.com/msysgit/git/commit/52faa0e8c80ec8351f735c32d858b167d63a0642
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-11 (Tue, 11 Jun 2013)

Changed paths:
M t/t0005-signals.sh

Log Message:
-----------
Merge branch 'jk/test-exit-code-by-signal'

* jk/test-exit-code-by-signal:
t0005: skip signal death exit code test on Windows
t0005: test git exit code from signal death


Commit: 45acb7592825b1faa59ea09247bb88b8e91849e3
https://github.com/msysgit/git/commit/45acb7592825b1faa59ea09247bb88b8e91849e3
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-11 (Tue, 11 Jun 2013)

Changed paths:
M Documentation/config.txt
M Documentation/git-rebase.txt
M git-am.sh
M git-rebase--am.sh
M git-rebase--interactive.sh
M git-rebase--merge.sh
M git-rebase.sh
A t/t3420-rebase-autostash.sh

Log Message:
-----------
Merge branch 'rr/rebase-autostash'

* rr/rebase-autostash:
rebase: implement --[no-]autostash and rebase.autostash
rebase --merge: return control to caller, for housekeeping
rebase -i: return control to caller, for housekeeping
am: return control to caller, for housekeeping
rebase: prepare to do generic housekeeping
rebase -i: don't error out if $state_dir already exists
am: tighten a conditional that checks for $dotest


Commit: 0f93608bfecbbb60cec49d7cf9b39d9dea1ee7c6
https://github.com/msysgit/git/commit/0f93608bfecbbb60cec49d7cf9b39d9dea1ee7c6
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-11 (Tue, 11 Jun 2013)

Changed paths:
M Documentation/fetch-options.txt

Log Message:
-----------
Merge branch 'rr/maint-fetch-tag-doc-asterisks'

* rr/maint-fetch-tag-doc-asterisks:
fetch-options.txt: prevent a wildcard refspec from getting misformatted


Commit: a8624d39689d574c17fb44339e4ffebfb0432413
https://github.com/msysgit/git/commit/a8624d39689d574c17fb44339e4ffebfb0432413
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-11 (Tue, 11 Jun 2013)

Changed paths:
M gitweb/gitweb.perl

Log Message:
-----------
Merge branch 'cm/gitweb-project-list-persistent-cgi-fix'

"gitweb" forgot to clear a global variable $search_regexp upon each
request, mistakenly carrying over the previous search to a new one
when used as a persistent CGI.

* cm/gitweb-project-list-persistent-cgi-fix:
gitweb: fix problem causing erroneous project list


Commit: 879070e650d30ac8451b20b5851fad423552cfed
https://github.com/msysgit/git/commit/879070e650d30ac8451b20b5851fad423552cfed
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-11 (Tue, 11 Jun 2013)

Changed paths:
M Documentation/RelNotes/1.8.4.txt

Log Message:
-----------
Update draft release notes

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


Commit: b3b8ceb48b7d75631a8638f1dc6ccdf7f1b53888
https://github.com/msysgit/git/commit/b3b8ceb48b7d75631a8638f1dc6ccdf7f1b53888
Author: Torsten Bögershausen <***@web.de>
Date: 2013-06-11 (Tue, 11 Jun 2013)

Changed paths:
M t/t0070-fundamental.sh

Log Message:
-----------
t0070 "mktemp to unwritable directory" needs SANITY

Use the SANITY prerequisite when testing if a temp file can
be created in a read only directory.
Skip the test under CYGWIN, or skip it under Unix/Linux when
it is run as root.

Signed-off-by: Torsten Bögershausen <***@web.de>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: f2b4626d9e78e00d2168a8470633d6c7f5331a13
https://github.com/msysgit/git/commit/f2b4626d9e78e00d2168a8470633d6c7f5331a13
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-11 (Tue, 11 Jun 2013)

Changed paths:
M t/t0070-fundamental.sh
R templates/hooks--pre-push.sample
A templates/hooks--pre-push.sample

Log Message:
-----------
Merge branch 'maint-1.8.2' into maint

* maint-1.8.2:
t0070 "mktemp to unwritable directory" needs SANITY
pre-push.sample: Make the script executable


Commit: 4d1c565e1fb4e76c391448cdf85fe7c132bbb390
https://github.com/msysgit/git/commit/4d1c565e1fb4e76c391448cdf85fe7c132bbb390
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-11 (Tue, 11 Jun 2013)

Changed paths:
M t/t0070-fundamental.sh
R templates/hooks--pre-push.sample
A templates/hooks--pre-push.sample

Log Message:
-----------
Merge branch 'maint'

* maint:
t0070 "mktemp to unwritable directory" needs SANITY
pre-push.sample: Make the script executable


Commit: 5ada8687995fadea01f755d52ceec58337d003a3
https://github.com/msysgit/git/commit/5ada8687995fadea01f755d52ceec58337d003a3
Author: Célestin Matte <***@ensimag.fr>
Date: 2013-06-11 (Tue, 11 Jun 2013)

Changed paths:
M contrib/mw-to-git/git-remote-mediawiki.perl

Log Message:
-----------
git-remote-mediawiki: display message when launched directly

Users may be confused when they run the perl script directly.
A good way to detect this is to check the number of parameters used to call the
script, which is never different from 2 in a normal use.
Display a proper error message to avoid any confusion.

Signed-off-by: Célestin Matte <***@ensimag.fr>
Signed-off-by: Matthieu Moy <***@grenoble-inp.fr>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 50e4f757f4adda096239c1ad60499cf606bf2c6f
https://github.com/msysgit/git/commit/50e4f757f4adda096239c1ad60499cf606bf2c6f
Author: Jorge Juan Garcia Garcia <Jorge-Juan.Garcia-***@ensimag.imag.fr>
Date: 2013-06-11 (Tue, 11 Jun 2013)

Changed paths:
M Documentation/config.txt
M builtin/commit.c
M t/t7508-status.sh

Log Message:
-----------
status: introduce status.short to enable --short by default

Some people always run 'git status -s'.
The configuration variable status.short allows to set it by default.

Signed-off-by: Jorge Juan Garcia Garcia <Jorge-Juan.Garcia-***@ensimag.imag.fr>
Signed-off-by: Mathieu Lienard--Mayor <Mathieu.Lienard--***@ensimag.imag.fr>
Reviewed-by: Matthieu Moy <***@grenoble-inp.fr>
Signed-off-by: Matthieu Moy <***@grenoble-inp.fr>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 08f704f294e4a3525b405c2cb1f4ee85e73fd92c
https://github.com/msysgit/git/commit/08f704f294e4a3525b405c2cb1f4ee85e73fd92c
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-11 (Tue, 11 Jun 2013)

Changed paths:
M builtin/log.c
M builtin/show-branch.c
M commit.c
M commit.h
M revision.c
M revision.h

Log Message:
-----------
toposort: rename "lifo" field

The primary invariant of sort_in_topological_order() is that a
parent commit is not emitted until all children of it are. When
traversing a forked history like this with "git log C E":

A----B----C
\
D----E

we ensure that A is emitted after all of B, C, D, and E are done, B
has to wait until C is done, and D has to wait until E is done.

In some applications, however, we would further want to control how
these child commits B, C, D and E on two parallel ancestry chains
are shown.

Most of the time, we would want to see C and B emitted together, and
then E and D, and finally A (i.e. the --topo-order output). The
"lifo" parameter of the sort_in_topological_order() function is used
to control this behaviour. We start the traversal by knowing two
commits, C and E. While keeping in mind that we also need to
inspect E later, we pick C first to inspect, and we notice and
record that B needs to be inspected. By structuring the "work to be
done" set as a LIFO stack, we ensure that B is inspected next,
before other in-flight commits we had known that we will need to
inspect, e.g. E.

When showing in --date-order, we would want to see commits ordered
by timestamps, i.e. show C, E, B and D in this order before showing
A, possibly mixing commits from two parallel histories together.
When "lifo" parameter is set to false, the function keeps the "work
to be done" set sorted in the date order to realize this semantics.
After inspecting C, we add B to the "work to be done" set, but the
next commit we inspect from the set is E which is newer than B.

The name "lifo", however, is too strongly tied to the way how the
function implements its behaviour, and does not describe what the
behaviour _means_.

Replace this field with an enum rev_sort_order, with two possible
values: REV_SORT_IN_GRAPH_ORDER and REV_SORT_BY_COMMIT_DATE, and
update the existing code. The mechanical replacement rule is:

"lifo == 0" is equivalent to "sort_order == REV_SORT_BY_COMMIT_DATE"
"lifo == 1" is equivalent to "sort_order == REV_SORT_IN_GRAPH_ORDER"

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


Commit: b4b594a3154078430b04fad4f6ffbed9c7274be5
https://github.com/msysgit/git/commit/b4b594a3154078430b04fad4f6ffbed9c7274be5
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-11 (Tue, 11 Jun 2013)

Changed paths:
M .gitignore
M Makefile
A prio-queue.c
A prio-queue.h
A t/t0009-prio-queue.sh
A test-prio-queue.c

Log Message:
-----------
prio-queue: priority queue of pointers to structs

Traditionally we used a singly linked list of commits to hold a set
of in-flight commits while traversing history. The most typical use
of the list is to add commits that are newly discovered to it, keep
the list sorted by commit timestamp, pick up the newest one from the
list, and keep digging. The cost of keeping the singly linked list
sorted is nontrivial, and this typical use pattern better matches a
priority queue.

Introduce a prio-queue structure, that can be used either as a LIFO
stack, or a priority queue. This will be used in the next patch to
hold in-flight commits during sort-in-topological-order.

Tests and the idea to make it usable for any "void *" pointers to
"things" are by Jeff King. Bugs are mine.

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


Commit: da24b1044f7dc85cda52d6423f5a794a7074fbf8
https://github.com/msysgit/git/commit/da24b1044f7dc85cda52d6423f5a794a7074fbf8
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-11 (Tue, 11 Jun 2013)

Changed paths:
M commit.c
M prio-queue.c
M prio-queue.h

Log Message:
-----------
sort-in-topological-order: use prio-queue

Use the prio-queue data structure to implement a priority queue of
commits sorted by committer date, when handling --date-order. The
structure can also be used as a simple LIFO stack, which is a good
match for --topo-order processing.

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


Commit: 81c6b38b67019eff48e8e5c324bb77f6c796c0b5
https://github.com/msysgit/git/commit/81c6b38b67019eff48e8e5c324bb77f6c796c0b5
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-11 (Tue, 11 Jun 2013)

Changed paths:
M Documentation/rev-list-options.txt
M commit.c
M commit.h
M revision.c

Log Message:
-----------
log: --author-date-order

Sometimes people would want to view the commits in parallel
histories in the order of author dates, not committer dates.

Teach "topo-order" sort machinery to do so, using a commit-info slab
to record the author dates of each commit, and prio-queue to sort
them.

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


Commit: 80a14665b199a0ccacceb095e3a8bfc4f1e8645e
https://github.com/msysgit/git/commit/80a14665b199a0ccacceb095e3a8bfc4f1e8645e
Author: Johan Herland <***@herland.net>
Date: 2013-06-12 (Wed, 12 Jun 2013)

Changed paths:
M builtin.h
M builtin/commit.c
M builtin/notes.c

Log Message:
-----------
finish_copy_notes_for_rewrite(): Let caller provide commit message

When copying notes for a rewritten object, the resulting notes commit
would have the following hardcoded commit message:

Notes added by 'git notes copy'

This is obviously bogus when the notes rewriting is performed by
'git commit --amend'.

Therefore, let the caller specify an appropriate notes commit message
instead of hardcoding it. The above message is used for 'git notes copy',
but when calling finish_copy_notes_for_rewrite() from builtin/commit.c,
we use the following message instead:

Notes added by 'git commit --amend'

Cc: Thomas Rast <***@inf.ethz.ch>
Signed-off-by: Johan Herland <***@herland.net>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 49c2470400bbb695b953abeb4e6737be747317af
https://github.com/msysgit/git/commit/49c2470400bbb695b953abeb4e6737be747317af
Author: Johan Herland <***@herland.net>
Date: 2013-06-12 (Wed, 12 Jun 2013)

Changed paths:
M Makefile
M builtin.h
M builtin/commit.c
M builtin/notes.c
A notes-utils.c
A notes-utils.h

Log Message:
-----------
Move copy_note_for_rewrite + friends from builtin/notes.c to notes-utils.c

This is a pure code movement of the machinery for copying notes to
rewritten objects. This code was located in builtin/notes.c for
historical reasons. In order to make it available to builtin/commit.c
it was declared in builtin.h. This was more of an accident of history
than a concious design, and we now want to make this machinery more
widely available.

Hence, this patch moves the code into the new notes-utils.[hc] files
which are included into libgit.a. Except for adjusting #includes
accordingly, this patch merely moves the relevant functions verbatim
into the new files.

Cc: Thomas Rast <***@inf.ethz.ch>
Signed-off-by: Johan Herland <***@herland.net>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: bf9a05ba46a9d464424d22482aaa54abdd28b77d
https://github.com/msysgit/git/commit/bf9a05ba46a9d464424d22482aaa54abdd28b77d
Author: Johan Herland <***@herland.net>
Date: 2013-06-12 (Wed, 12 Jun 2013)

Changed paths:
M notes-merge.c
M notes-merge.h
M notes-utils.c
M notes-utils.h

Log Message:
-----------
Move create_notes_commit() from notes-merge.c into notes-utils.c

create_notes_commit() is needed by both the notes-merge code, and by
commit_notes() in notes-utils. Since it is generally useful, and not
bound to the notes-merge machinery, we move it from (the more specific)
notes-merge to (the more general) notes-utils.

Signed-off-by: Johan Herland <***@herland.net>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 1af6a877c5aeeb97e8fbacb06992e976e5cdbf83
https://github.com/msysgit/git/commit/1af6a877c5aeeb97e8fbacb06992e976e5cdbf83
Author: Jeff King <***@peff.net>
Date: 2013-06-12 (Wed, 12 Jun 2013)

Changed paths:
R contrib/blameview/README
R contrib/blameview/blameview.perl

Log Message:
-----------
contrib: drop blameview/ directory

Blameview was a quick-and-dirty demonstration of how blame's
incremental output could be used in an interface. These days
one can find much better (and less ugly!) demonstrations in
"git gui blame" and "tig blame".

The only advantage blameview has is that its code is perhaps
simpler to read. However, that is balanced by the fact that
it probably has bugs, as nobody uses it nor has touched the
code in 6 years. An implementor is probably better off just
reading the "incremental output" section of "man git-blame".

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


Commit: 9926f66fbd4392c9c7c05fae83e80bc12e0be889
https://github.com/msysgit/git/commit/9926f66fbd4392c9c7c05fae83e80bc12e0be889
Author: Slava Kardakov <***@ojab.ru>
Date: 2013-06-12 (Wed, 12 Jun 2013)

Changed paths:
M git-svn.perl

Log Message:
-----------
Fix `git svn` `rebase` & `dcommit` if top-level HEAD directory exist

When a file (or a directory) called HEAD exists in the working tree,
internal calls git svn makes trigger "did you mean a revision or a
path?" ambiguity check.

$ git svn rebase
fatal: ambiguous argument 'HEAD': both revision and filename
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
rev-list --first-parent --pretty=medium HEAD: command returned error: 128

Explicitly disambiguate by adding "--" after the revision.

Signed-off-by: Slava Kardakov <***@ojab.ru>
Reviewed-by: Jeff King <***@peff.net>
Acked-by: Eric Wong <***@yhbt.net>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 2cc0f53b53e7d5456ec45713a201142754d69249
https://github.com/msysgit/git/commit/2cc0f53b53e7d5456ec45713a201142754d69249
Author: John Keeping <***@keeping.me.uk>
Date: 2013-06-12 (Wed, 12 Jun 2013)

Changed paths:
M git-add--interactive.perl

Log Message:
-----------
add--interactive: respect diff.algorithm

When staging hunks interactively it is sometimes useful to use an
alternative diff algorithm which splits the changes into hunks in a more
logical manner. This is not possible because the plumbing commands
called by add--interactive ignore the "diff.algorithm" configuration
option (as they should).

Since add--interactive is a porcelain command it should respect this
configuration variable. To do this, make it read diff.algorithm and
pass its value to the underlying diff-index and diff-files invocations.

At this point, do not add options to "git add", "git reset" or "git
checkout" (all of which can call git-add--interactive). If a user
wants to override the value on the command line they can use:

git -c diff.algorithm=$ALGO ...

Signed-off-by: John Keeping <***@keeping.me.uk>
Reviewed-by: Jeff King <***@peff.net>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 914dc0289d1df75cfa744cea8ec84cb529cbc791
https://github.com/msysgit/git/commit/914dc0289d1df75cfa744cea8ec84cb529cbc791
Author: Mathieu Lienard--Mayor <Mathieu.Lienard--***@ensimag.imag.fr>
Date: 2013-06-12 (Wed, 12 Jun 2013)

Changed paths:
M builtin/rm.c
M t/t3600-rm.sh

Log Message:
-----------
rm: better error message on failure for multiple files

When 'git rm' fails, it now displays a single message
with the list of files involved, instead of displaying
a list of messages with one file each.

As an example, the old message:
error: 'foo.txt' has changes staged in the index
(use --cached to keep the file, or -f to force removal)
error: 'bar.txt' has changes staged in the index
(use --cached to keep the file, or -f to force removal)

would now be displayed as:
error: the following files have changes staged in the index:
foo.txt
bar.txt
(use --cached to keep the file, or -f to force removal)

Signed-off-by: Mathieu Lienard--Mayor <Mathieu.Lienard--***@ensimag.imag.fr>
Signed-off-by: Jorge Juan Garcia Garcia <Jorge-Juan.Garcia-***@ensimag.imag.fr>
Signed-off-by: Matthieu Moy <***@grenoble-inp.fr>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 7e30944622573ebdf87beed057b098af7360234c
https://github.com/msysgit/git/commit/7e30944622573ebdf87beed057b098af7360234c
Author: Mathieu Lienard--Mayor <Mathieu.Lienard--***@ensimag.imag.fr>
Date: 2013-06-12 (Wed, 12 Jun 2013)

Changed paths:
M Documentation/config.txt
M advice.c
M advice.h
M builtin/rm.c
M t/t3600-rm.sh

Log Message:
-----------
rm: introduce advice.rmHints to shorten messages

Introduce advice.rmHints to choose whether to display advice or not
when git rm fails. Defaults to true, in order to preserve current behavior.

As an example, the message:
error: 'foo.txt' has changes staged in the index
(use --cached to keep the file, or -f to force removal)

would look like, with advice.rmHints=false:
error: 'foo.txt' has changes staged in the index

Signed-off-by: Mathieu Lienard--Mayor <Mathieu.Lienard--***@ensimag.imag.fr>
Signed-off-by: Jorge Juan Garcia Garcia <Jorge-Juan.Garcia-***@ensimag.imag.fr>
Signed-off-by: Matthieu Moy <***@grenoble-inp.fr>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 10a3fb00ebbf19d5c22a0aa9ccd7803fe5367329
https://github.com/msysgit/git/commit/10a3fb00ebbf19d5c22a0aa9ccd7803fe5367329
Author: René Scharfe <***@lsrfire.ath.cx>
Date: 2013-06-13 (Thu, 13 Jun 2013)

Changed paths:
M match-trees.c

Log Message:
-----------
match-trees: factor out fill_tree_desc_strict

Deduplicate code by moving tree_desc initialization into a helper
function, fill_tree_desc_strict. It is like fill_tree_descriptor,
except that it only accepts tree hashes and no tree references (tags,
commits). No functional change.

Signed-off-by: René Scharfe <***@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 0b437a18bdd188794cec8855e2a413921d08b6e8
https://github.com/msysgit/git/commit/0b437a18bdd188794cec8855e2a413921d08b6e8
Author: René Scharfe <***@lsrfire.ath.cx>
Date: 2013-06-13 (Thu, 13 Jun 2013)

Changed paths:
M builtin/apply.c
M builtin/ls-files.c
M builtin/merge-base.c

Log Message:
-----------
use logical OR (||) instead of binary OR (|) in logical context

The compiler can short-circuit the evaluation of conditions strung
together with logical OR operators instead of computing the resulting
bitmask with binary ORs. More importantly, this patch makes the
intent of the changed code clearer, because the logical context (as
opposed to binary context) becomes immediately obvious.

While we're at it, simplify the check for patch->is_rename in
builtin/apply.c a bit; it can only be 0 or 1, so we don't need a
comparison operator.

Signed-off-by: René Scharfe <***@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: dc8ca9123a5b8aa21d8e987875aa2112871f4afa
https://github.com/msysgit/git/commit/dc8ca9123a5b8aa21d8e987875aa2112871f4afa
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-06-13 (Thu, 13 Jun 2013)

Changed paths:
M git-rebase.sh

Log Message:
-----------
rebase: guard against missing files in read_basic_state()

Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: af2f0ebcbdb164043d6ad72c81c6ce5cdadf63b5
https://github.com/msysgit/git/commit/af2f0ebcbdb164043d6ad72c81c6ce5cdadf63b5
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-06-13 (Thu, 13 Jun 2013)

Changed paths:
M git-rebase.sh
M t/t3420-rebase-autostash.sh

Log Message:
-----------
rebase: finish_rebase() in fast-forward rebase

In the following case

$ git rebase master
Fast-forwarded autostash-fix to master.

The autostash is not applied automatically, because this codepath
forgets to call finish_rebase(). Fix this. Also add a test to guard
against regressions.

Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 96e2b99ed56c8433cc4aa03f32d2ef2a22748fc0
https://github.com/msysgit/git/commit/96e2b99ed56c8433cc4aa03f32d2ef2a22748fc0
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-06-13 (Thu, 13 Jun 2013)

Changed paths:
M git-rebase.sh
M t/t3420-rebase-autostash.sh

Log Message:
-----------
rebase: finish_rebase() in noop rebase

In the following case

$ git rebase master
Current branch autostash-fix is up to date.

the autostash is not applied automatically, because this codepath
forgets to call finish_rebase(). Fix this. Also add a test to guard
against regressions.

Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 74671241fd53df2899d4b4400593afc12e8e1bf7
https://github.com/msysgit/git/commit/74671241fd53df2899d4b4400593afc12e8e1bf7
Author: Fredrik Gustafsson <***@iveqy.com>
Date: 2013-06-14 (Fri, 14 Jun 2013)

Changed paths:
M git-submodule.sh
M t/t7400-submodule-basic.sh

Log Message:
-----------
handle multibyte characters in name

Many "git submodule" operations do not work on a submodule at a path whose
name is not in ASCII.

This is because "git ls-files" is used to find which paths are bound to
submodules to the current working tree, and the output is C-quoted by default
for non ASCII pathnames.

Tell "git ls-files" to not C-quote its output, which is easier than unwrapping
C-quote ourselves.

Signed-off-by: Fredrik Gustafsson <***@iveqy.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 2847cae835fa70f00e6e2286fbfa5595cb2247d0
https://github.com/msysgit/git/commit/2847cae835fa70f00e6e2286fbfa5595cb2247d0
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-06-14 (Fri, 14 Jun 2013)

Changed paths:
M contrib/completion/git-prompt.sh

Log Message:
-----------
prompt: squelch error output from cat

The files $g/rebase-{merge,apply}/{head-name,msgnum,end} are not
guaranteed to exist. When attempting to cat them, squelch the error
output.

In addition to guarding against stray directories, this patch addresses
a real problem:

# on terminal 1
$ git rebase -i master
# ignore editor, and switch to terminal 2
cat: .git/rebase-merge/msgnum: No such file or directory
cat: .git/rebase-merge/end: No such file or directory
$

Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 91d34bc47ba6ed51a35fa3bb84d674b624d3f447
https://github.com/msysgit/git/commit/91d34bc47ba6ed51a35fa3bb84d674b624d3f447
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-14 (Fri, 14 Jun 2013)

Changed paths:
R contrib/blameview/README
R contrib/blameview/blameview.perl
R contrib/continuous/cidaemon
R contrib/continuous/post-receive-cinotify
R contrib/patches/docbook-xsl-manpages-charmap.patch

Log Message:
-----------
Merge branch 'rr/remove-contrib-some'

Remove stale contrib/ material.

* rr/remove-contrib-some:
contrib: drop blameview/ directory
contrib: remove continuous/ and patches/


Commit: b27a79d16b21be064c0ac3634928a91e3eee5c01
https://github.com/msysgit/git/commit/b27a79d16b21be064c0ac3634928a91e3eee5c01
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-14 (Fri, 14 Jun 2013)

Changed paths:
M Documentation/rev-list-options.txt
M decorate.c
M revision.c
M revision.h
M t/t6012-rev-list-simplify.sh
M t/t6019-rev-list-ancestry-path.sh
A t/t6111-rev-list-treesame.sh

Log Message:
-----------
Merge branch 'kb/full-history-compute-treesame-carefully-2'

Major update to the revision traversal logic to improve culling of
irrelevant parents while traversing a mergy history.

* kb/full-history-compute-treesame-carefully-2:
revision.c: make default history consider bottom commits
revision.c: don't show all merges for --parents
revision.c: discount side branches when computing TREESAME
revision.c: add BOTTOM flag for commits
simplify-merges: drop merge from irrelevant side branch
simplify-merges: never remove all TREESAME parents
t6012: update test for tweaked full-history traversal
revision.c: Make --full-history consider more merges
Documentation: avoid "uninteresting"
rev-list-options.txt: correct TREESAME for P
t6111: add parents to tests
t6111: allow checking the parents as well
t6111: new TREESAME test set
t6019: test file dropped in -s ours merge
decorate.c: compact table when growing


Commit: ede63a195c53d31207d694258bd8bc740dbc87a7
https://github.com/msysgit/git/commit/ede63a195c53d31207d694258bd8bc740dbc87a7
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-14 (Fri, 14 Jun 2013)

Changed paths:
M bisect.c
M builtin/describe.c
M builtin/diff.c
M builtin/fetch.c
M builtin/fsck.c
M builtin/show-ref.c
M bundle.c
M http-backend.c
M notes.c
M object.c
M object.h
M refs.h
M revision.c
M revision.h
M submodule.c

Log Message:
-----------
Merge branch 'mh/reflife'

Define memory ownership and lifetime rules for what for-each-ref
feeds to its callbacks (in short, "you do not own it, so make a
copy if you want to keep it").

* mh/reflife: (25 commits)
refs: document the lifetime of the args passed to each_ref_fn
register_ref(): make a copy of the bad reference SHA-1
exclude_existing(): set existing_refs.strdup_strings
string_list_add_refs_by_glob(): add a comment about memory management
string_list_add_one_ref(): rename first parameter to "refname"
show_head_ref(): rename first parameter to "refname"
show_head_ref(): do not shadow name of argument
add_existing(): do not retain a reference to sha1
do_fetch(): clean up existing_refs before exiting
do_fetch(): reduce scope of peer_item
object_array_entry: fix memory handling of the name field
find_first_merges(): remove unnecessary code
find_first_merges(): initialize merges variable using initializer
fsck: don't put a void*-shaped peg in a char*-shaped hole
object_array_remove_duplicates(): rewrite to reduce copying
revision: use object_array_filter() in implementation of gc_boundary()
object_array: add function object_array_filter()
revision: split some overly-long lines
cmd_diff(): make it obvious which cases are exclusive of each other
cmd_diff(): rename local variable "list" -> "entry"
...


Commit: 7a9cc7b064f18ac1f798a8840f15b561d09f6a20
https://github.com/msysgit/git/commit/7a9cc7b064f18ac1f798a8840f15b561d09f6a20
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-14 (Fri, 14 Jun 2013)

Changed paths:
M contrib/mw-to-git/git-remote-mediawiki.perl

Log Message:
-----------
Merge branch 'bp/mediawiki-credential'

The bridge to MediaWiki has been updated to use the credential
helper interface in Git.pm, losing its own and the original
implementation the former was based on.

* bp/mediawiki-credential:
git-remote-mediawiki: use Git.pm functions for credentials


Commit: 908b3601e67e21996c1df5807761f42dcd72c2c5
https://github.com/msysgit/git/commit/908b3601e67e21996c1df5807761f42dcd72c2c5
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-14 (Fri, 14 Jun 2013)

Changed paths:
M git-send-email.perl
M t/t9001-send-email.sh

Log Message:
-----------
Merge branch 'mt/send-email-cc-match-fix'

Logic git-send-email used to suppress cc mishandled names like "A
U. Thor" <***@example.xz>, where the human readable part needs
to be quoted (the user input may not have the double quotes around
the name, and comparison was done between quoted and unquoted
strings).

* mt/send-email-cc-match-fix:
test-send-email: test for pre-sanitized self name
t/send-email: test suppress-cc=self with non-ascii
t/send-email: add test with quoted sender
send-email: make --suppress-cc=self sanitize input
t/send-email: test suppress-cc=self on cccmd
send-email: fix suppress-cc=self on cccmd
t/send-email.sh: add test for suppress-cc=self


Commit: bdff0e3a374617dce784f801b97500d9ba2e4705
https://github.com/msysgit/git/commit/bdff0e3a374617dce784f801b97500d9ba2e4705
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-14 (Fri, 14 Jun 2013)

Changed paths:
M contrib/completion/git-completion.bash

Log Message:
-----------
Merge branch 'rr/complete-difftool-fixup'

"git difftool" can take both revs to be compared and pathspecs.
"git show" takes revs, revs:path and pathspecs.

* rr/complete-difftool-fixup:
completion: show can take both revlist and paths
completion: difftool takes both revs and files


Commit: 05d4c7b1c46b7a6cbc8f4c0403a6e208aea1c63c
https://github.com/msysgit/git/commit/05d4c7b1c46b7a6cbc8f4c0403a6e208aea1c63c
Author: Célestin Matte <***@ensimag.fr>
Date: 2013-06-14 (Fri, 14 Jun 2013)

Changed paths:
M contrib/mw-to-git/git-remote-mediawiki.perl

Log Message:
-----------
git-remote-mediawiki: make a regexp clearer

Perl's split function takes a regex pattern argument. You can also
feed it an expression, which is then compiled into a regex at runtime.
It therefore works to pass your pattern via single quotes, but it is
much less obvious to a reader that the argument is meant to be a
regex, not a static string. Using the traditional slash-delimiters
makes this easier to read.

Signed-off-by: Célestin Matte <***@ensimag.fr>
Signed-off-by: Matthieu Moy <***@grenoble-inp.fr>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 668eec6f74b69f3a376edb5a32c4d0d2cc127e72
https://github.com/msysgit/git/commit/668eec6f74b69f3a376edb5a32c4d0d2cc127e72
Author: Célestin Matte <***@ensimag.fr>
Date: 2013-06-14 (Fri, 14 Jun 2013)

Changed paths:
M contrib/mw-to-git/git-remote-mediawiki.perl

Log Message:
-----------
git-remote-mediawiki: move "use warnings;" before any instruction

Signed-off-by: Célestin Matte <***@ensimag.fr>
Signed-off-by: Matthieu Moy <***@grenoble-inp.fr>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 6a504a3f45ed2de1922ea486851b49e14eac6108
https://github.com/msysgit/git/commit/6a504a3f45ed2de1922ea486851b49e14eac6108
Author: Célestin Matte <***@ensimag.fr>
Date: 2013-06-14 (Fri, 14 Jun 2013)

Changed paths:
M contrib/mw-to-git/git-remote-mediawiki.perl

Log Message:
-----------
git-remote-mediawiki: replace :utf8 by :encoding(UTF-8)

Follow perlcritic's InputOutput::RequireEncodingWithUTF8Layer policy

Signed-off-by: Célestin Matte <***@ensimag.fr>
Signed-off-by: Matthieu Moy <***@grenoble-inp.fr>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 1aff8c627baf7f313820b5e5629266b48a6e4576
https://github.com/msysgit/git/commit/1aff8c627baf7f313820b5e5629266b48a6e4576
Author: Célestin Matte <***@ensimag.fr>
Date: 2013-06-14 (Fri, 14 Jun 2013)

Changed paths:
M contrib/mw-to-git/git-remote-mediawiki.perl

Log Message:
-----------
git-remote-mediawiki: always end a subroutine with a return

Follow Subroutines::RequireFinalReturn

Signed-off-by: Célestin Matte <***@ensimag.fr>
Signed-off-by: Matthieu Moy <***@grenoble-inp.fr>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 0afd29e2d353e58cad5b7ad90705e829d5815d45
https://github.com/msysgit/git/commit/0afd29e2d353e58cad5b7ad90705e829d5815d45
Author: Célestin Matte <***@ensimag.fr>
Date: 2013-06-14 (Fri, 14 Jun 2013)

Changed paths:
M contrib/mw-to-git/git-remote-mediawiki.perl

Log Message:
-----------
git-remote-mediawiki: move a variable declaration at the top of the code

%basetimestamps declaration was lost in the middle of subroutines

Signed-off-by: Célestin Matte <***@ensimag.fr>
Signed-off-by: Matthieu Moy <***@grenoble-inp.fr>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 81f6a7a43d8c0b1310ffc2df6f9e8d607799249c
https://github.com/msysgit/git/commit/81f6a7a43d8c0b1310ffc2df6f9e8d607799249c
Author: Célestin Matte <***@ensimag.fr>
Date: 2013-06-14 (Fri, 14 Jun 2013)

Changed paths:
M contrib/mw-to-git/git-remote-mediawiki.perl

Log Message:
-----------
git-remote-mediawiki: change syntax of map calls

Put first parameter of map inside a block, for better readability.
Follow BuiltinFunctions::RequireBlockMap

Signed-off-by: Célestin Matte <***@ensimag.fr>
Signed-off-by: Matthieu Moy <***@grenoble-inp.fr>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 6c2fbe25fb8883da7925567a582dacda679e29dc
https://github.com/msysgit/git/commit/6c2fbe25fb8883da7925567a582dacda679e29dc
Author: Célestin Matte <***@ensimag.fr>
Date: 2013-06-14 (Fri, 14 Jun 2013)

Changed paths:
M contrib/mw-to-git/git-remote-mediawiki.perl

Log Message:
-----------
git-remote-mediawiki: rewrite unclear line of instructions

Subroutines' parameters should be assigned to variable before doing anything
else
Besides, existing instruction affected a variable inside a "if", which break
Git's coding style

Signed-off-by: Célestin Matte <***@ensimag.fr>
Signed-off-by: Matthieu Moy <***@grenoble-inp.fr>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: eb96b750394a78d9317f0a9224689f1ef50f04ec
https://github.com/msysgit/git/commit/eb96b750394a78d9317f0a9224689f1ef50f04ec
Author: Célestin Matte <***@ensimag.fr>
Date: 2013-06-14 (Fri, 14 Jun 2013)

Changed paths:
M contrib/mw-to-git/git-remote-mediawiki.perl

Log Message:
-----------
git-remote-mediawiki: remove useless regexp modifier (m)

m// and // is used randomly. It is better to use the m modifier only when
needed, e.g., when the regexp uses another separator than //.

Signed-off-by: Célestin Matte <***@ensimag.fr>
Signed-off-by: Matthieu Moy <***@grenoble-inp.fr>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 1149957368ef29b6a05ad5cf93f6c62352136bcd
https://github.com/msysgit/git/commit/1149957368ef29b6a05ad5cf93f6c62352136bcd
Author: Célestin Matte <***@ensimag.fr>
Date: 2013-06-14 (Fri, 14 Jun 2013)

Changed paths:
M contrib/mw-to-git/git-remote-mediawiki.perl

Log Message:
-----------
git-remote-mediawiki: change the behaviour of a split

A "split ' '" is turned into a "split / /", which changes its behaviour: the
old method matched a run of whitespaces (/\s*/), while the new one will match a
single space, which is what we want here. Indeed, in other contexts,
changing split(' ') to split(/ /) could potentially be a regression, however,
here, when parsing the output of "rev-list --parents", whose output SHA-1's are
each separated by a single space, splitting on a single space is perfectly
correct.

Signed-off-by: Célestin Matte <***@ensimag.fr>
Signed-off-by: Matthieu Moy <***@grenoble-inp.fr>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 857f21a3c12667cc1f5b6ebcfff9aa550217e189
https://github.com/msysgit/git/commit/857f21a3c12667cc1f5b6ebcfff9aa550217e189
Author: Célestin Matte <***@ensimag.fr>
Date: 2013-06-14 (Fri, 14 Jun 2013)

Changed paths:
M contrib/mw-to-git/git-remote-mediawiki.perl

Log Message:
-----------
git-remote-mediawiki: change separator of some regexps

Use {}{} instead of /// when slashes are used inside the regexp so as not to
escape it.

Signed-off-by: Célestin Matte <***@ensimag.fr>
Signed-off-by: Matthieu Moy <***@grenoble-inp.fr>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 6b825a46229daffc6f70b37cb7a21193214f508b
https://github.com/msysgit/git/commit/6b825a46229daffc6f70b37cb7a21193214f508b
Author: Célestin Matte <***@ensimag.fr>
Date: 2013-06-14 (Fri, 14 Jun 2013)

Changed paths:
M contrib/mw-to-git/git-remote-mediawiki.perl

Log Message:
-----------
git-remote-mediawiki: change style in a regexp

In this regexp, ' |\n' is used, whereas its equivalent '[ \n]', which is
clearer, is used elsewhere. Make the style coherent.

Signed-off-by: Célestin Matte <***@ensimag.fr>
Signed-off-by: Matthieu Moy <***@grenoble-inp.fr>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 477d4d4235490065a718764fd241d77edd6904cd
https://github.com/msysgit/git/commit/477d4d4235490065a718764fd241d77edd6904cd
Author: Célestin Matte <***@ensimag.fr>
Date: 2013-06-14 (Fri, 14 Jun 2013)

Changed paths:
M contrib/mw-to-git/git-remote-mediawiki.perl

Log Message:
-----------
git-remote-mediawiki: change style in a regexp

Change '[\n]' to '\n': brackets are useless here.

Signed-off-by: Célestin Matte <***@ensimag.fr>
Signed-off-by: Matthieu Moy <***@grenoble-inp.fr>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 8a43b36ac225304f31730465c9c8e8ba77695a7d
https://github.com/msysgit/git/commit/8a43b36ac225304f31730465c9c8e8ba77695a7d
Author: Célestin Matte <***@ensimag.fr>
Date: 2013-06-14 (Fri, 14 Jun 2013)

Changed paths:
M contrib/mw-to-git/git-remote-mediawiki.perl

Log Message:
-----------
git-remote-mediawiki: add newline in the end of die() error messages

Signed-off-by: Célestin Matte <***@ensimag.fr>
Signed-off-by: Matthieu Moy <***@grenoble-inp.fr>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 8f04f7ddd35331821666f7892c86956b6752de90
https://github.com/msysgit/git/commit/8f04f7ddd35331821666f7892c86956b6752de90
Author: Célestin Matte <***@ensimag.fr>
Date: 2013-06-14 (Fri, 14 Jun 2013)

Changed paths:
M contrib/mw-to-git/git-remote-mediawiki.perl

Log Message:
-----------
git-remote-mediawiki: change the name of a variable

Local variable $url has the same name as a global variable. Changing the name
of the local variable prevents future possible misunderstanding.

Signed-off-by: Célestin Matte <***@ensimag.fr>
Signed-off-by: Matthieu Moy <***@grenoble-inp.fr>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 267055f8609ff3e3134765395569b87269699c0a
https://github.com/msysgit/git/commit/267055f8609ff3e3134765395569b87269699c0a
Author: Célestin Matte <***@ensimag.fr>
Date: 2013-06-14 (Fri, 14 Jun 2013)

Changed paths:
M contrib/mw-to-git/git-remote-mediawiki.perl

Log Message:
-----------
git-remote-mediawiki: turn double-negated expressions into simple expressions

Signed-off-by: Célestin Matte <***@ensimag.fr>
Signed-off-by: Matthieu Moy <***@grenoble-inp.fr>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 3eb4ee99fb2acad118861a27a2c4dddbf1735d8c
https://github.com/msysgit/git/commit/3eb4ee99fb2acad118861a27a2c4dddbf1735d8c
Author: Célestin Matte <***@ensimag.fr>
Date: 2013-06-14 (Fri, 14 Jun 2013)

Changed paths:
M contrib/mw-to-git/git-remote-mediawiki.perl

Log Message:
-----------
git-remote-mediawiki: remove unused variable $entry

Signed-off-by: Célestin Matte <***@ensimag.fr>
Signed-off-by: Matthieu Moy <***@grenoble-inp.fr>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: b835baf65c10c2511a0bb9600b09ac3c7a53e818
https://github.com/msysgit/git/commit/b835baf65c10c2511a0bb9600b09ac3c7a53e818
Author: Célestin Matte <***@ensimag.fr>
Date: 2013-06-14 (Fri, 14 Jun 2013)

Changed paths:
M contrib/mw-to-git/git-remote-mediawiki.perl

Log Message:
-----------
git-remote-mediawiki: rename a variable ($last) which has the name of a keyword

Signed-off-by: Célestin Matte <***@ensimag.fr>
Signed-off-by: Matthieu Moy <***@grenoble-inp.fr>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 4f1b7883bc9b614f3a91eff7aa46cfdc85156ceb
https://github.com/msysgit/git/commit/4f1b7883bc9b614f3a91eff7aa46cfdc85156ceb
Author: Célestin Matte <***@ensimag.fr>
Date: 2013-06-14 (Fri, 14 Jun 2013)

Changed paths:
M contrib/mw-to-git/git-remote-mediawiki.perl

Log Message:
-----------
git-remote-mediawiki: assign a variable as undef and make proper indentation

Explicitly assign local variable $/ as undef and make a proper
one-instruction-by-line indentation

Signed-off-by: Célestin Matte <***@ensimag.fr>
Signed-off-by: Matthieu Moy <***@grenoble-inp.fr>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: ee25ff2c978799519b7705ce1f1d786618ead8d8
https://github.com/msysgit/git/commit/ee25ff2c978799519b7705ce1f1d786618ead8d8
Author: Célestin Matte <***@ensimag.fr>
Date: 2013-06-14 (Fri, 14 Jun 2013)

Changed paths:
M contrib/mw-to-git/git-remote-mediawiki.perl

Log Message:
-----------
git-remote-mediawiki: check return value of open

Signed-off-by: Célestin Matte <***@ensimag.fr>
Signed-off-by: Matthieu Moy <***@grenoble-inp.fr>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 42e91929ae4c4eb8c5d74d6d72d9ff31111828d0
https://github.com/msysgit/git/commit/42e91929ae4c4eb8c5d74d6d72d9ff31111828d0
Author: Célestin Matte <***@ensimag.fr>
Date: 2013-06-14 (Fri, 14 Jun 2013)

Changed paths:
M contrib/mw-to-git/git-remote-mediawiki.perl

Log Message:
-----------
git-remote-mediawiki: remove import of unused open2

Signed-off-by: Célestin Matte <***@ensimag.fr>
Signed-off-by: Matthieu Moy <***@grenoble-inp.fr>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 6a316beeeecc76d19ff60fda62e00a7e2e041137
https://github.com/msysgit/git/commit/6a316beeeecc76d19ff60fda62e00a7e2e041137
Author: Célestin Matte <***@ensimag.fr>
Date: 2013-06-14 (Fri, 14 Jun 2013)

Changed paths:
M contrib/mw-to-git/git-remote-mediawiki.perl

Log Message:
-----------
git-remote-mediawiki: put long code into a subroutine

Signed-off-by: Célestin Matte <***@ensimag.fr>
Signed-off-by: Matthieu Moy <***@grenoble-inp.fr>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 86e95ef2d4803c0fd2cac1afdd66c702ee2bafc1
https://github.com/msysgit/git/commit/86e95ef2d4803c0fd2cac1afdd66c702ee2bafc1
Author: Célestin Matte <***@ensimag.fr>
Date: 2013-06-14 (Fri, 14 Jun 2013)

Changed paths:
M contrib/mw-to-git/git-remote-mediawiki.perl

Log Message:
-----------
git-remote-mediawiki: modify strings for a better coding-style

- strings which don't need interpolation are single-quoted for more clarity and
slight gain of performance
- interpolation is preferred over concatenation in many cases, for more clarity
- variables are always used with the ${} operator inside strings
- strings including double-quotes are written with qq() so that the quotes do
not have to be escaped

Signed-off-by: Célestin Matte <***@ensimag.fr>
Signed-off-by: Matthieu Moy <***@grenoble-inp.fr>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: e83d36b66fc578d8aa965be15037bc1155f163cd
https://github.com/msysgit/git/commit/e83d36b66fc578d8aa965be15037bc1155f163cd
Author: Célestin Matte <***@ensimag.fr>
Date: 2013-06-14 (Fri, 14 Jun 2013)

Changed paths:
M contrib/mw-to-git/git-remote-mediawiki.perl

Log Message:
-----------
git-remote-mediawiki: brace file handles for print for more clarity

This follows the following rule:
InputOutput::RequireBracedFileHandleWithPrint (Severity: 1)
The `print' and `printf' functions have a unique syntax that supports an
optional file handle argument. Conway suggests wrapping this argument in
braces to make it visually stand out from the other arguments. When you
put braces around any of the special package-level file handles like
`STDOUT', `STDERR', and `DATA', you must the `'*'' sigil or else it
won't compile under `use strict 'subs''.

print $FH "Mary had a little lamb\n"; #not ok
print {$FH} "Mary had a little lamb\n"; #ok

print STDERR $foo, $bar, $baz; #not ok
print {STDERR} $foo, $bar, $baz; #won't compile under 'strict'
print {*STDERR} $foo, $bar, $baz; #perfect!

Signed-off-by: Célestin Matte <***@ensimag.fr>
Signed-off-by: Matthieu Moy <***@grenoble-inp.fr>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: b8b4e1b385f058695e7860748d959cb01eecc330
https://github.com/msysgit/git/commit/b8b4e1b385f058695e7860748d959cb01eecc330
Author: Célestin Matte <***@ensimag.fr>
Date: 2013-06-14 (Fri, 14 Jun 2013)

Changed paths:
M contrib/mw-to-git/git-remote-mediawiki.perl

Log Message:
-----------
git-remote-mediawiki: replace "unless" statements with negated "if" statements

Signed-off-by: Célestin Matte <***@ensimag.fr>
Signed-off-by: Matthieu Moy <***@grenoble-inp.fr>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: aeb95eeaff625dc9d5450e180a6e7a7e024efd23
https://github.com/msysgit/git/commit/aeb95eeaff625dc9d5450e180a6e7a7e024efd23
Author: Célestin Matte <***@ensimag.fr>
Date: 2013-06-14 (Fri, 14 Jun 2013)

Changed paths:
M contrib/mw-to-git/git-remote-mediawiki.perl

Log Message:
-----------
git-remote-mediawiki: don't use quotes for empty strings

Empty strings are replaced by an $EMPTY constant.

Signed-off-by: Célestin Matte <***@ensimag.fr>
Signed-off-by: Matthieu Moy <***@grenoble-inp.fr>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: fed56c06ae86f671e3319c6d60130ed4802137f1
https://github.com/msysgit/git/commit/fed56c06ae86f671e3319c6d60130ed4802137f1
Author: Célestin Matte <***@ensimag.fr>
Date: 2013-06-14 (Fri, 14 Jun 2013)

Changed paths:
M contrib/mw-to-git/git-remote-mediawiki.perl

Log Message:
-----------
git-remote-mediawiki: put non-trivial numeric values in constants.

Non-trivial numeric values (e.g., different from 0, 1 and 2) are placed in
constants at the top of the code to be easily modifiable and to make more sense

Signed-off-by: Célestin Matte <***@ensimag.fr>
Signed-off-by: Matthieu Moy <***@grenoble-inp.fr>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 7c475837936cdf92054194e19a990d8563b1a058
https://github.com/msysgit/git/commit/7c475837936cdf92054194e19a990d8563b1a058
Author: Célestin Matte <***@ensimag.fr>
Date: 2013-06-14 (Fri, 14 Jun 2013)

Changed paths:
M contrib/mw-to-git/git-remote-mediawiki.perl

Log Message:
-----------
git-remote-mediawiki: fix a typo ("mediwiki" instead of "mediawiki")

Signed-off-by: Célestin Matte <***@ensimag.fr>
Signed-off-by: Matthieu Moy <***@grenoble-inp.fr>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: d49a038451e86a207eee6b8f0fb2a022410900cc
https://github.com/msysgit/git/commit/d49a038451e86a207eee6b8f0fb2a022410900cc
Author: Célestin Matte <***@ensimag.fr>
Date: 2013-06-14 (Fri, 14 Jun 2013)

Changed paths:
M contrib/mw-to-git/git-remote-mediawiki.perl

Log Message:
-----------
git-remote-mediawiki: clearly rewrite double dereference

@$var structures are re-written in the following way: @{$var}
It makes them more readable.

Signed-off-by: Célestin Matte <***@ensimag.fr>
Signed-off-by: Matthieu Moy <***@grenoble-inp.fr>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: b5cda5b3132a56e87caad5d8a541f09733f1ed33
https://github.com/msysgit/git/commit/b5cda5b3132a56e87caad5d8a541f09733f1ed33
Author: Célestin Matte <***@ensimag.fr>
Date: 2013-06-14 (Fri, 14 Jun 2013)

Changed paths:
A contrib/mw-to-git/.perlcriticrc

Log Message:
-----------
git-remote-mediawiki: add a .perlcriticrc file

Such a file allows to configure perlcritic.
Here, it is used to remove many unwanted rules and configure one to
remove unwanted warnings.

Signed-off-by: Célestin Matte <***@ensimag.fr>
Signed-off-by: Matthieu Moy <***@grenoble-inp.fr>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: e3e7d34513a8802ab936bf9047f142c9aa1a6e5a
https://github.com/msysgit/git/commit/e3e7d34513a8802ab936bf9047f142c9aa1a6e5a
Author: Célestin Matte <***@ensimag.fr>
Date: 2013-06-14 (Fri, 14 Jun 2013)

Changed paths:
M contrib/mw-to-git/Makefile

Log Message:
-----------
git-remote-mediawiki: add a perlcritic rule in Makefile

Option "-2" launches perlcritic with level 2. Levels go from 5 (most pertinent)
to 1. Rules of level 1 are mostly a question of style, and are therefore
ignored.

Signed-off-by: Célestin Matte <***@ensimag.fr>
Signed-off-by: Matthieu Moy <***@grenoble-inp.fr>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: d8e7c67e13e0687ba01ea53522db2615ea897f96
https://github.com/msysgit/git/commit/d8e7c67e13e0687ba01ea53522db2615ea897f96
Author: Célestin Matte <***@ensimag.fr>
Date: 2013-06-14 (Fri, 14 Jun 2013)

Changed paths:
M contrib/mw-to-git/git-remote-mediawiki.perl

Log Message:
-----------
git-remote-mediawiki: make error message more precise

In subroutine parse_command, error messages were not correct. For the "import"
function, having too much or incorrect arguments displayed both
"invalid arguments", while it displayed "too many arguments" for the "option"
functions under the same conditions.
Separate the two error messages in both cases.

Signed-off-by: Célestin Matte <***@ensimag.fr>
Signed-off-by: Matthieu Moy <***@grenoble-inp.fr>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 6567dc05a34948b959864b12fcd59a35543273f7
https://github.com/msysgit/git/commit/6567dc05a34948b959864b12fcd59a35543273f7
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-06-14 (Fri, 14 Jun 2013)

Changed paths:
M t/t3400-rebase.sh
M t/t3404-rebase-interactive.sh

Log Message:
-----------
t/rebase: add failing tests for a peculiar revision

The following commands fail, even if :/quuxery and :/foomery resolve to
perfectly valid commits:

$ git rebase [-i] --onto :/quuxery :/foomery

This is because rebase [-i] attempts to rev-parse ${REV}^0 to verify
that the given revision resolves to a commit. Add tests to document
these failures.

Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: bac1ddd0f86bc5955c24f89e402de80d2844efb5
https://github.com/msysgit/git/commit/bac1ddd0f86bc5955c24f89e402de80d2844efb5
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-06-14 (Fri, 14 Jun 2013)

Changed paths:
M git-sh-setup.sh

Log Message:
-----------
sh-setup: add new peel_committish() helper

The normal way to check whether a certain revision resolves to a valid
commit is:

$ git rev-parse --verify $REV^0

Unfortunately, this does not work when $REV is of the type :/quuxery.
Write a helper to work around this limitation.

Suggested-by: Junio C Hamano <***@pobox.com>
Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 2e6e276decde2a9f04fc29bce734a49d3ba8f484
https://github.com/msysgit/git/commit/2e6e276decde2a9f04fc29bce734a49d3ba8f484
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-06-14 (Fri, 14 Jun 2013)

Changed paths:
M git-rebase.sh
M t/t3400-rebase.sh
M t/t3404-rebase-interactive.sh

Log Message:
-----------
rebase: use peel_committish() where appropriate

The revisions specified on the command-line as <onto> and <upstream>
arguments could be of the form :/quuxery; so, use peel_committish() to
resolve them. The failing tests in t/rebase and t/rebase-interactive
now pass.

Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 0442743810c6f6c14386a5a9d6bf8e4d69adbc51
https://github.com/msysgit/git/commit/0442743810c6f6c14386a5a9d6bf8e4d69adbc51
Author: Jeff King <***@peff.net>
Date: 2013-06-14 (Fri, 14 Jun 2013)

Changed paths:
M t/lib-httpd/apache.conf

Log Message:
-----------
t/lib-httpd/apache.conf: do not use LockFile in apache >= 2.4

The LockFile directive from earlier versions of apache has
been replaced by the Mutex directive. The latter seems to
give sane defaults and does not need any specific
customization, so we can get away with just adding a version
check to the use of LockFile.

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


Commit: a8adcc4730339c69d173ea4f10c06d7af4a456b4
https://github.com/msysgit/git/commit/a8adcc4730339c69d173ea4f10c06d7af4a456b4
Author: Jeff King <***@peff.net>
Date: 2013-06-14 (Fri, 14 Jun 2013)

Changed paths:
M t/lib-httpd/apache.conf

Log Message:
-----------
t/lib-httpd/apache.conf: load extra auth modules in apache 2.4

In apache 2.4, the "Auth*" and "Require" directives have
moved into the authn_core and authz_core modules,
respectively.

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


Commit: bb3f7ccadb5270e060cfbbb44f9c80a8c65cc449
https://github.com/msysgit/git/commit/bb3f7ccadb5270e060cfbbb44f9c80a8c65cc449
Author: Jeff King <***@peff.net>
Date: 2013-06-14 (Fri, 14 Jun 2013)

Changed paths:
M t/lib-httpd/apache.conf

Log Message:
-----------
t/lib-httpd/apache.conf: load compat access module in apache 2.4

In apache 2.4, the "Order" directive has gone away in favor
of a new system in mod_authz_host. However, since we want
our config file to remain compatible across multiple Apache
versions, we can use mod_access_compat to keep using the
older style.

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


Commit: 296f0b3ea9b904982780522215a9c71d4a7bd02c
https://github.com/msysgit/git/commit/296f0b3ea9b904982780522215a9c71d4a7bd02c
Author: Jeff King <***@peff.net>
Date: 2013-06-14 (Fri, 14 Jun 2013)

Changed paths:
M t/lib-httpd/apache.conf

Log Message:
-----------
t/lib-httpd/apache.conf: configure an MPM module for apache 2.4

Versions of Apache before 2.4 always had a "MultiProcessing
Module" (MPM) statically built in, which manages the worker
threads/processes. We do not care which one, as it is
largely a performance issue, and we put only a light load on
the server during our testing.

As of Apache 2.4, the MPM module is loadable just like any
other module, but exactly one such module must be loaded. On
a system where the MPMs are compiled dynamically (e.g.,
Debian unstable), this means that our test Apache server
will not start unless we provide the appropriate
configuration.

Unfortunately, we do not actually know which MPM modules are
available or appropriate for the system on which the tests
are running. This patch picks the "prefork" module, as it
is likely to be available on all Unix-like systems.

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


Commit: 3e3d5fd276d636e24e97e5ee361dc940ee490137
https://github.com/msysgit/git/commit/3e3d5fd276d636e24e97e5ee361dc940ee490137
Author: Benoit Person <***@ensimag.fr>
Date: 2013-06-14 (Fri, 14 Jun 2013)

Changed paths:
M contrib/mw-to-git/t/test-gitmw-lib.sh
M contrib/mw-to-git/t/test.config

Log Message:
-----------
git-remote-mediawiki: remove hardcoded version number in the test suite

Updates the code to make it more easy to switch mediawiki version when
testing. Before that, the version number was partly hardcoded, partly
in a var.

Signed-off-by: Benoit Person <***@ensimag.fr>
Signed-off-by: Matthieu Moy <***@grenoble-inp.fr>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 50b72ede0592b16cb62e1b92d52bdccc4cee9b20
https://github.com/msysgit/git/commit/50b72ede0592b16cb62e1b92d52bdccc4cee9b20
Author: Jeff King <***@peff.net>
Date: 2013-06-14 (Fri, 14 Jun 2013)

Changed paths:
M t/t5303-pack-corruption-resilience.sh

Log Message:
-----------
t5303: drop "count=1" from corruption dd

This test corrupts pack objects by using "dd" with a seek
command. It passes "count=1 bs=1" to munge just a single
byte. However, the test added in commit b3118bdc wants to
munge two bytes, and the second byte of corruption is
silently ignored.

This turned out not to impact the test, however. The idea
was to reduce the "size of this entry" part of the header so
that zlib runs out of input bytes while inflating the entry.
That header is two bytes long, and the test reduced the
value of both bytes; since we experience the problem if we
are off by even 1 byte, it is sufficient to munge only the
first one.

Even though the test would have worked with only a single
byte munged, and we could simply tweak the test to use a
single byte, it makes sense to lift this 1-byte restriction
from do_corrupt_object. It will allow future tests that do
need to change multiple bytes to do so.

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


Commit: 1ee886c1f08f4dd672a342b7811191b02291a597
https://github.com/msysgit/git/commit/1ee886c1f08f4dd672a342b7811191b02291a597
Author: Jeff King <***@peff.net>
Date: 2013-06-14 (Fri, 14 Jun 2013)

Changed paths:
M sha1_file.c
M t/t5303-pack-corruption-resilience.sh

Log Message:
-----------
unpack_entry: do not die when we fail to apply a delta

When we try to load an object from disk and fail, our
general strategy is to see if we can get it from somewhere
else (e.g., a loose object). That lets users fix corruption
problems by copying known-good versions of objects into the
object database.

We already handle the case where we were not able to read
the delta from disk. However, when we find that the delta we
read does not apply, we simply die. This case is harder to
trigger, as corruption in the delta data itself would
trigger a crc error from zlib. However, a corruption that
pointed us at the wrong delta base might cause it.

We can do the same "fail and try to find the object
elsewhere" trick instead of dying. This not only gives us a
chance to recover, but also puts us on code paths that will
alert the user to the problem (with the current message,
they do not even know which sha1 caused the problem).

Note that unlike some other pack corruptions, we do not
recover automatically from this case when doing a repack.
There is nothing apparently wrong with the delta, as it
points to a valid, accessible object, and we realize the
error only when the resulting size does not match up. And in
theory, one could even have a case where the corrupted size
is the same, and the problem would only be noticed by
recomputing the sha1.

We can get around this by recomputing the deltas with
--no-reuse-delta, which our test does (and this is probably
good advice for anyone recovering from pack corruption).

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


Commit: 5c37033edf7963616038ff8b980047d5671e168e
https://github.com/msysgit/git/commit/5c37033edf7963616038ff8b980047d5671e168e
Author: Pat Thoyts <***@users.sourceforge.net>
Date: 2013-06-15 (Sat, 15 Jun 2013)

Changed paths:
M lib/remote.tcl

Log Message:
-----------
git-gui: avoid an error message when removing the last remote

When the last remote is removed on a system that has tearoff menu items
the code that adjusts the fetch and prune menus may raise an error when
probing the menu entry for a non-existing -label option.
Check the entry type to avoid this fault.

Reported-by: Vedran Miletić <***@gmail.com>
Signed-off-by: Pat Thoyts <***@users.sourceforge.net>


Commit: 8a383db4b28059becc3ebfd1b402299e34c3151f
https://github.com/msysgit/git/commit/8a383db4b28059becc3ebfd1b402299e34c3151f
Author: Pat Thoyts <***@users.sourceforge.net>
Date: 2013-06-15 (Sat, 15 Jun 2013)

Changed paths:
M GIT-VERSION-GEN

Log Message:
-----------
git-gui 0.18

Signed-off-by: Pat Thoyts <***@users.sourceforge.net>


Commit: 0dbd81251dbc516bb3bf07862c369fc582a4e5e0
https://github.com/msysgit/git/commit/0dbd81251dbc516bb3bf07862c369fc582a4e5e0
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-15 (Sat, 15 Jun 2013)

Changed paths:
M Documentation/RelNotes/1.8.4.txt

Log Message:
-----------
Update draft release notes to 1.8.4

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


Commit: 0e254bbd22ba3f62c0bbf5055c307391a5920eaa
https://github.com/msysgit/git/commit/0e254bbd22ba3f62c0bbf5055c307391a5920eaa
Author: Jorge Juan Garcia Garcia <Jorge-Juan.Garcia-***@ensimag.imag.fr>
Date: 2013-06-15 (Sat, 15 Jun 2013)

Changed paths:
M Documentation/config.txt
M builtin/commit.c
M t/t7508-status.sh

Log Message:
-----------
status: introduce status.branch to enable --branch by default

Some people often run 'git status -b'.
The config variable status.branch allows to set it by default.

Signed-off-by: Jorge Juan Garcia Garcia <Jorge-Juan.Garcia-***@ensimag.imag.fr>
Signed-off-by: Mathieu Lienard--Mayor <Mathieu.Lienard--***@ensimag.imag.fr>
Reviewed-by: Matthieu Moy <***@grenoble-inp.fr>
Signed-off-by: Matthieu Moy <***@grenoble-inp.fr>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: fb7dfaa710da6f9ebb854f70ffc1c78668a1e70c
https://github.com/msysgit/git/commit/fb7dfaa710da6f9ebb854f70ffc1c78668a1e70c
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-16 (Sun, 16 Jun 2013)

Changed paths:
M git-gui/GIT-VERSION-GEN
M git-gui/Makefile
M git-gui/git-gui.sh
M git-gui/lib/choose_repository.tcl
M git-gui/lib/diff.tcl
M git-gui/lib/mergetool.tcl
M git-gui/lib/remote.tcl
M git-gui/po/fr.po

Log Message:
-----------
Merge tag 'gitgui-0.18.0' of git://repo.or.cz/git-gui

git-gui 0.18.0

* tag 'gitgui-0.18.0' of git://repo.or.cz/git-gui:
git-gui 0.18
git-gui: avoid an error message when removing the last remote
git-gui: fix file name handling with non-empty prefix
git-gui: bring wish process to front on Mac
git-gui: change dialog button positions for Windows to suit platform.
git-gui: allow "\ No newline at end of file" for linewise staging
git-gui: fix the mergetool launcher for the Beyond Compare tool.
Makefile: replace "echo 1>..." with "echo >..."
French translation: copy -> copie.
git-gui: Fix parsing of <rev> <path-which-not-present-in-worktree>


Commit: b141f3c9d3220e1e63ca2195df85c392d475baaf
https://github.com/msysgit/git/commit/b141f3c9d3220e1e63ca2195df85c392d475baaf
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-06-17 (Mon, 17 Jun 2013)

Changed paths:
M git-am.sh
M t/t4150-am.sh

Log Message:
-----------
am: handle stray $dotest directory

The following bug has been observed:

$ git am # no input file
^C
$ git am --abort
Resolve operation not in progress, we are not resuming.

This happens because the following test fails:

test -d "$dotest" && test -f "$dotest/last" && test -f "$dotest/next"

and the codepath for an "am in-progress" is not executed. It falls back
to the codepath that treats this as a "fresh execution". Before
rr/rebase-autostash, this condition was

test -d "$dotest"

It would incorrectly execute the "normal" am --abort codepath:

git read-tree --reset -u HEAD ORIG_HEAD
git reset ORIG_HEAD

by incorrectly assuming that an am is "in progress" (i.e. ORIG_HEAD
etc. was written during the previous execution).

Notice that

$ git am
^C

executes nothing of significance, is equivalent to

$ mkdir .git/rebase-apply

Therefore, the correct solution is to treat .git/rebase-apply as a
"stray directory" and remove it on --abort in the fresh-execution
codepath. Also ensure that we're not called with --rebasing from
git-rebase--am.sh; in that case, it is the responsibility of the caller
to handle and stray directories.

While at it, tell the user to run "git am --abort" to get rid of the
stray $dotest directory, if she attempts anything else.

Reported-by: Junio C Hamano <***@pobox.com>
Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 61e0eb9de268cab90ea2563957b4c74c77e82b48
https://github.com/msysgit/git/commit/61e0eb9de268cab90ea2563957b4c74c77e82b48
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-06-17 (Mon, 17 Jun 2013)

Changed paths:
M t/t4150-am.sh

Log Message:
-----------
t/am: use test_path_is_missing() where appropriate

Replace instances of ! test -d with test_path_is_missing.

Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 2be43516dd23fde3c0096429b9711638a33581dc
https://github.com/msysgit/git/commit/2be43516dd23fde3c0096429b9711638a33581dc
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-06-17 (Mon, 17 Jun 2013)

Changed paths:
M Documentation/git-stash.txt

Log Message:
-----------
stash doc: add a warning about using create

Add a note saying that the user probably wants "save" in the create
description. While at it, document that it can optionally take a
message in the synopsis.

Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: aa7e722dfee957e89476d0467427a5a32d0040f7
https://github.com/msysgit/git/commit/aa7e722dfee957e89476d0467427a5a32d0040f7
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-06-17 (Mon, 17 Jun 2013)

Changed paths:
M Documentation/git-stash.txt

Log Message:
-----------
stash doc: document short form -p in synopsis

'git stash save' can take -p, the short form of --patch, as an option.
Document this.

Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 0719f300870cb573dcb526c7ab0cdffc5ee54324
https://github.com/msysgit/git/commit/0719f300870cb573dcb526c7ab0cdffc5ee54324
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-06-17 (Mon, 17 Jun 2013)

Changed paths:
M git-stash.sh

Log Message:
-----------
stash: simplify option parser for create

The option parser for create unnecessarily checks "$1" inside a case
statement that matches "$1" in the first place.

Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 603d249853981d81d1f8cf561b18d77cb1b55923
https://github.com/msysgit/git/commit/603d249853981d81d1f8cf561b18d77cb1b55923
Author: René Scharfe <***@lsrfire.ath.cx>
Date: 2013-06-17 (Mon, 17 Jun 2013)

Changed paths:
M tree-walk.h
M unpack-trees.c

Log Message:
-----------
unpack-trees: don't shift conflicts left and right

If o->merge is set, the struct traverse_info member conflicts is shifted
left in unpack_callback, then passed through traverse_trees_recursive
to unpack_nondirectories, where it is shifted right before use. Stop
the shifting and just pass the conflict bit mask as is. Rename the
member to df_conflicts to prove that it isn't used anywhere else.

Signed-off-by: René Scharfe <***@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 46ab7d46ca8ae98411450f077b3023e0b7e03ea9
https://github.com/msysgit/git/commit/46ab7d46ca8ae98411450f077b3023e0b7e03ea9
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-17 (Mon, 17 Jun 2013)

Changed paths:
M t/t7512-status-help.sh

Log Message:
-----------
t7512: test "detached from" as well

b397ea4863a1 (status: show more info than "currently not on any
branch", 2013-03-13) wanted to make sure that after a checkout to
detach HEAD, the user can see where the HEAD was originally detached
from. The last test added by that commit to t7512 shows one
example, immediately after HEAD is detached. Enhance that test to
show "detached HEAD from" form that should be shown when the user
further resetted to another commit.

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


Commit: ce23d493b479d754321c9d835039a93e7fde9671
https://github.com/msysgit/git/commit/ce23d493b479d754321c9d835039a93e7fde9671
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-06-17 (Mon, 17 Jun 2013)

Changed paths:
M wt-status.c

Log Message:
-----------
wt-status: remove unused field in grab_1st_switch_cbdata

The struct grab_1st_switch_cbdata has the field "found", which is
set in grab_1st_switch() when a match is found. This information is
redundant and unused by any code. The return value of the function
serves to communicate this information anyway.

Remove the field.

Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 89f2fea49a246e9ac4fa94cb43a7e992a8a4a144
https://github.com/msysgit/git/commit/89f2fea49a246e9ac4fa94cb43a7e992a8a4a144
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-06-17 (Mon, 17 Jun 2013)

Changed paths:
M t/t2012-checkout-last.sh

Log Message:
-----------
t/t2021-checkout-last: "checkout -" should work after a rebase finishes

$ git checkout -

does not work as expected after a rebase. This is because the
reflog records "checkout" made by "rebase" as its implementation
detail the same way as end-user initiated "checkout", and makes it
count as the branch that was previously checked out.

Add four failing tests documenting this bug: two for a normal rebase,
and another two for an interactive rebase.

Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: ec5063106449aa8c6623abbdcca862dd1516c920
https://github.com/msysgit/git/commit/ec5063106449aa8c6623abbdcca862dd1516c920
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-06-17 (Mon, 17 Jun 2013)

Changed paths:
M t/t7512-status-help.sh
M wt-status.c

Log Message:
-----------
status: do not depend on rebase reflog messages

b397ea4 (status: show more info than "currently not on any branch",
2013-03-13) attempted to make the output of 'git status' richer in
the case of a detached HEAD. Before this patch, with a detached
HEAD, we saw:

$ git status
# Not currently on any branch.

But after the patch, we see:

$ git checkout v1.8.2
$ git status
# HEAD detached at v1.8.2.

It works by digging the reflog for the most recent message of the
form "checkout: moving from xxxx to yyyy". It then asserts that
HEAD and "yyyy" are the same, and displays this message. When they
aren't equal, it displays:

$ git status
# HEAD detached from fe11db.

so that the user can see where the HEAD was first detached.

In case of a rebase [-i] operation in progress, this message depends
on the implementation of rebase writing "checkout: " messages to the
reflog, but that is an implementation detail of "rebase". To remove
this dependency so that rebase can be updated to write better reflog
messages, replace this "HEAD detached from" message with:

# rebase in progress; onto $ONTO

Changes to the commit object name in the expected output for some of
the tests shows that what the test expected "status" to show during
"rebase -i" was not consistent with the output during a vanilla
"rebase", which showed on top of what commit the series is being
replayed. Now we consistently expect something meaningful to the
end user.

Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 3bed291a3b121408b4de83f4fa3cc0f1d98c676e
https://github.com/msysgit/git/commit/3bed291a3b121408b4de83f4fa3cc0f1d98c676e
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-06-17 (Mon, 17 Jun 2013)

Changed paths:
M builtin/checkout.c
M t/t2012-checkout-last.sh

Log Message:
-----------
checkout: respect GIT_REFLOG_ACTION

GIT_REFLOG_ACTION is an environment variable specifying the reflog
message to write after an action is completed. Several other commands
including merge, reset, and commit respect it.

Fix the failing tests in t/checkout-last by making checkout respect it
too. You can now expect

$ git checkout -

to work as expected after any operation that internally uses "checkout"
as its implementation detail, e.g. "rebase".

Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: bd514cada4bb1a396a58d408c3ec08526a8be742
https://github.com/msysgit/git/commit/bd514cada4bb1a396a58d408c3ec08526a8be742
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-06-17 (Mon, 17 Jun 2013)

Changed paths:
M Documentation/git-stash.txt
M git-stash.sh
M t/t3903-stash.sh

Log Message:
-----------
stash: introduce 'git stash store'

save_stash() contains the logic for doing two potentially independent
operations; the first is preparing the stash merge commit, and the
second is updating the stash ref/ reflog accordingly. While the first
operation is abstracted out into a create_stash() for callers to access
via 'git stash create', the second one is not. Fix this by factoring
out the logic for storing the stash into a store_stash() that callers
can access via 'git stash store'.

Like create, store is not intended for end user interactive use, but for
callers in other scripts. We can simplify the logic in the
rebase.autostash feature using this new subcommand.

Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 20351bb06bf4d32ef3d1a6849d01636f6593339f
https://github.com/msysgit/git/commit/20351bb06bf4d32ef3d1a6849d01636f6593339f
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-06-17 (Mon, 17 Jun 2013)

Changed paths:
M git-rebase.sh

Log Message:
-----------
rebase: use 'git stash store' to simplify logic

rebase has no reason to know about the implementation of the stash. In
the case when applying the autostash results in conflicts, replace the
relevant code in finish_rebase () to simply call 'git stash store'.

Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: d77fd050ab8579558d3e8e4e5467a9300546ef2c
https://github.com/msysgit/git/commit/d77fd050ab8579558d3e8e4e5467a9300546ef2c
Author: Dennis Kaarsemaker <***@kaarsemaker.net>
Date: 2013-06-17 (Mon, 17 Jun 2013)

Changed paths:
M t/t5150-request-pull.sh

Log Message:
-----------
tests: allow sha1's as part of the path

When running 'make test' from a path such as
.../daily-build/***@bdff0e3a374617dce784f801b97500d9ba2e4705, the
logic in fuzz.sed as generated by t5105-request-pull.sh was backwards,
replacing object names before replacing urls, making the test fail.

Signed-off-by: Dennis Kaarsemaker <***@kaarsemaker.net>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 05a950630e67f3acf7a349b579d28eebe9143a72
https://github.com/msysgit/git/commit/05a950630e67f3acf7a349b579d28eebe9143a72
Author: Dennis Kaarsemaker <***@kaarsemaker.net>
Date: 2013-06-17 (Mon, 17 Jun 2013)

Changed paths:
M GIT-VERSION-GEN

Log Message:
-----------
GIT-VERSION-GEN: support non-standard $GIT_DIR path

make and make test both work when $GIT_DIR isn't .git, but make dist
included a bogus GIT-VERSION-FILE.

Signed-off-by: Dennis Kaarsemaker <***@kaarsemaker.net>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 692cfd6b2b467db00f39a7bae89a7743b5b57575
https://github.com/msysgit/git/commit/692cfd6b2b467db00f39a7bae89a7743b5b57575
Author: John Keeping <***@keeping.me.uk>
Date: 2013-06-17 (Mon, 17 Jun 2013)

Changed paths:
M Documentation/Makefile

Log Message:
-----------
Documentation/Makefile: fix spaces around assignments

A simple style fix; no functional change.

Signed-off-by: John Keeping <***@keeping.me.uk>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: e21db2c6ad136a723bed389feb3298b5b4ee1ae4
https://github.com/msysgit/git/commit/e21db2c6ad136a723bed389feb3298b5b4ee1ae4
Author: John Keeping <***@keeping.me.uk>
Date: 2013-06-17 (Mon, 17 Jun 2013)

Changed paths:
M Documentation/Makefile

Log Message:
-----------
Documentation/Makefile: move infodir to be with other '*dir's

Signed-off-by: John Keeping <***@keeping.me.uk>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: d2512fc94fe75d8836a6fc965951d8180dbddbe6
https://github.com/msysgit/git/commit/d2512fc94fe75d8836a6fc965951d8180dbddbe6
Author: John Keeping <***@keeping.me.uk>
Date: 2013-06-17 (Mon, 17 Jun 2013)

Changed paths:
M git-mergetool--lib.sh

Log Message:
-----------
mergetool--lib: refactor {diff,merge}_cmd logic

Instead of needing a wrapper to call the diff/merge command, simply
provide the diff_cmd and merge_cmd functions for user-specified tools in
the same way as we do for built-in tools.

Signed-off-by: John Keeping <***@keeping.me.uk>
Acked-by: David Aguilar <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: b95e66f507967fdfbf7275a94729fe09aa4b20ca
https://github.com/msysgit/git/commit/b95e66f507967fdfbf7275a94729fe09aa4b20ca
Author: Ralf Thielow <***@gmail.com>
Date: 2013-06-17 (Mon, 17 Jun 2013)

Changed paths:
M t/t7512-status-help.sh
M wt-status.c

Log Message:
-----------
wt-status: give better advice when cherry-pick is in progress

When cherry-pick is in progress, 'git status' gives the advice to
run "git commit" to finish the cherry-pick.

However, this won't continue the sequencer, when picking a range of
commits.

Advise users to run "git cherry-pick --continue/--abort"; they work
when picking a single commit as well.

Signed-off-by: Ralf Thielow <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: b545cd15af873fe15e692daaa6e804b191b451cc
https://github.com/msysgit/git/commit/b545cd15af873fe15e692daaa6e804b191b451cc
Author: Fredrik Gustafsson <***@iveqy.com>
Date: 2013-06-17 (Mon, 17 Jun 2013)

Changed paths:
M git-submodule.sh

Log Message:
-----------
git-submodule.sh: remove duplicate call to set_rev_name

set_rev_name is a possiblly expensive operation. If a submodule has
changes in it, set_rev_name was called twice.

Move call to set_rev_name so it's only called once, no matter which
codepath is taken.

Signed-off-by: Fredrik Gustafsson <***@iveqy.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 560d4b86abc547dfb10b116ab99c800d68ae8849
https://github.com/msysgit/git/commit/560d4b86abc547dfb10b116ab99c800d68ae8849
Author: Namhyung Kim <***@gmail.com>
Date: 2013-06-17 (Mon, 17 Jun 2013)

Changed paths:
M Documentation/git-config.txt

Log Message:
-----------
config: Add description of --local option

It was missed in the option list while mentioned from the general
description. Add it for completeness.

Signed-off-by: Namhyung Kim <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: a57397b0d6709d75ab23145fd4fea5ce65dc1054
https://github.com/msysgit/git/commit/a57397b0d6709d75ab23145fd4fea5ce65dc1054
Author: Thomas Rast <***@inf.ethz.ch>
Date: 2013-06-17 (Mon, 17 Jun 2013)

Changed paths:
M t/test-lib.sh

Log Message:
-----------
test-lib: enable MALLOC_* for the actual tests

1b3185f (MALLOC_CHECK: various clean-ups, 2012-09-14) moved around the
MALLOC_CHECK_ and MALLOC_PERTURB_ assignments, intending to limit
their effect to only the test runs. However, they were actually
enabled only during test cleanup. Call setup/teardown_malloc_check
also around the evaluation of the actual test snippet.

Signed-off-by: Thomas Rast <***@inf.ethz.ch>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 8120e421bb832a4fb82807f40f5dae558f004a92
https://github.com/msysgit/git/commit/8120e421bb832a4fb82807f40f5dae558f004a92
Author: John Keeping <***@keeping.me.uk>
Date: 2013-06-17 (Mon, 17 Jun 2013)

Changed paths:
M t/t7401-submodule-summary.sh

Log Message:
-----------
t7401: make indentation consistent

Only leading whitespace is changed in this patch.

Signed-off-by: John Keeping <***@keeping.me.uk>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 031129cbe07f34c735ce598b0f9cf68b4fda9023
https://github.com/msysgit/git/commit/031129cbe07f34c735ce598b0f9cf68b4fda9023
Author: John Keeping <***@keeping.me.uk>
Date: 2013-06-17 (Mon, 17 Jun 2013)

Changed paths:
M t/t7403-submodule-sync.sh

Log Message:
-----------
t7403: modernize style

Change the indentation to use tabs consistently and start content on the
line after the paren opening a subshell.

Also don't put a space in ">file" and remove ":" from ": >file" to be
consistent with the majority of tests elsewhere.

Signed-off-by: John Keeping <***@keeping.me.uk>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: a82af0543a016e341f1efd689a60617b1029ae00
https://github.com/msysgit/git/commit/a82af0543a016e341f1efd689a60617b1029ae00
Author: John Keeping <***@keeping.me.uk>
Date: 2013-06-17 (Mon, 17 Jun 2013)

Changed paths:
M t/t7403-submodule-sync.sh

Log Message:
-----------
t7403: add missing && chaining

Signed-off-by: John Keeping <***@keeping.me.uk>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 1ae2e19a32729e21778b74f61794369203b58a1d
https://github.com/msysgit/git/commit/1ae2e19a32729e21778b74f61794369203b58a1d
Author: John Keeping <***@keeping.me.uk>
Date: 2013-06-17 (Mon, 17 Jun 2013)

Changed paths:
M git-submodule.sh

Log Message:
-----------
submodule: show full path in error message

When --recursive was added to "submodule foreach" in commit 15fc56a (git
submodule foreach: Add --recursive to recurse into nested submodules,
2009-08-19), the error message when the script returns a non-zero status
was not updated to contain $prefix to show the full path. Fix this.

Signed-off-by: John Keeping <***@keeping.me.uk>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 12b9d32790b40bf3ea49134095619700191abf1f
https://github.com/msysgit/git/commit/12b9d32790b40bf3ea49134095619700191abf1f
Author: John Keeping <***@keeping.me.uk>
Date: 2013-06-17 (Mon, 17 Jun 2013)

Changed paths:
M Documentation/git-rev-parse.txt
M builtin/rev-parse.c
A t/t1513-rev-parse-prefix.sh

Log Message:
-----------
rev-parse: add --prefix option

This makes 'git rev-parse' behave as if it were invoked from the
specified subdirectory of a repository, with the difference that any
file paths which it prints are prefixed with the full path from the top
of the working tree.

This is useful for shell scripts where we may want to cd to the top of
the working tree but need to handle relative paths given by the user on
the command line.

Signed-off-by: John Keeping <***@keeping.me.uk>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 091a6eb0feed820a43663ca63dc2bc0bb247bbae
https://github.com/msysgit/git/commit/091a6eb0feed820a43663ca63dc2bc0bb247bbae
Author: John Keeping <***@keeping.me.uk>
Date: 2013-06-17 (Mon, 17 Jun 2013)

Changed paths:
M git-submodule.sh
M t/t7400-submodule-basic.sh
M t/t7401-submodule-summary.sh
M t/t7403-submodule-sync.sh
M t/t7406-submodule-update.sh
M t/t7407-submodule-foreach.sh

Log Message:
-----------
submodule: drop the top-level requirement

Use the new rev-parse --prefix option to process all paths given to the
submodule command, dropping the requirement that it be run from the
top-level of the repository.

Since the interpretation of a relative submodule URL depends on whether
or not "remote.origin.url" is configured, explicitly block relative URLs
in "git submodule add" when not at the top level of the working tree.

Signed-off-by: John Keeping <***@keeping.me.uk>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 2c4842023205b4b2cf7eac973cd7dc2fca263327
https://github.com/msysgit/git/commit/2c4842023205b4b2cf7eac973cd7dc2fca263327
Author: Brandon Casey <***@gmail.com>
Date: 2013-06-18 (Tue, 18 Jun 2013)

Changed paths:
M builtin/checkout.c

Log Message:
-----------
builtin/checkout.c: don't leak memory in check_tracking_name

remote_find_tracking() populates the query struct with an allocated
string in the dst member. So, we do not need to xstrdup() the string,
since we can transfer ownership from the query struct (which will go
out of scope at the end of this function) to our callback struct, but
we must free the string if it will not be used so we will not leak
memory.

Let's do so.

Signed-off-by: Brandon Casey <***@gmail.com>
Reviewed-by: Jeff King <***@peff.net>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 70495b556f5685afe0e41988e42d48b2331d77a0
https://github.com/msysgit/git/commit/70495b556f5685afe0e41988e42d48b2331d77a0
Author: Matthieu Moy <***@imag.fr>
Date: 2013-06-18 (Tue, 18 Jun 2013)

Changed paths:
M Documentation/git-push.txt

Log Message:
-----------
Documentation/git-push.txt: explain better cases where --force is dangerous

The behavior of "git push --force" is rather clear when it updates only
one remote ref, but running it when pushing several branches can really
be dangerous. Warn the users a bit more and give them the alternative to
push only one branch.

Signed-off-by: Matthieu Moy <***@imag.fr>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 984f78d278dd456b12874da1bdf3763e72db8dae
https://github.com/msysgit/git/commit/984f78d278dd456b12874da1bdf3763e72db8dae
Author: Johannes Sixt <***@kdbg.org>
Date: 2013-06-18 (Tue, 18 Jun 2013)

Changed paths:
M t/t3421-rebase-topology-linear.sh
M t/t3425-rebase-topology-merges.sh

Log Message:
-----------
rebase topology tests: fix commit names on case-insensitive file systems

The recently introduced tests used uppercase letters to denote
cherry-picks of commits having the corresponding lowercase letter names.
The helper functions also set up tags with the names of the commits.

But this constellation fails on case-insensitive file systems because
there cannot be distinct tags with names that differ only in case.

Use a less subtle convention for the names of cherry-picked commits.

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


Commit: 9d58c4a3e3ce3a40262b7ff3cc39ce3b9a93d527
https://github.com/msysgit/git/commit/9d58c4a3e3ce3a40262b7ff3cc39ce3b9a93d527
Author: Brandon Casey <***@gmail.com>
Date: 2013-06-18 (Tue, 18 Jun 2013)

Changed paths:
M t/t9802-git-p4-filetype.sh

Log Message:
-----------
t/t9802: explicitly name the upstream branch to use as a base

Prior to commit fa83a33b, the 'git checkout' DWIMery would create a
new local branch if the specified branch name did not exist and it
matched exactly one ref in the "remotes" namespace. It searched
the "remotes" namespace for matching refs using a simple comparison
of the trailing portion of the remote ref names. This approach
could sometimes produce false positives or negatives.

Since fa83a33b, the DWIMery more strictly excludes the remote name
from the ref comparison by iterating through the remotes that are
configured in the .gitconfig file. This has the side-effect that
any refs that exist in the "remotes" namespace, but do not match
the destination side of any remote refspec, will not be used by
the DWIMery.

This change in behavior breaks the tests in t9802 which relied on
the old behavior of searching all refs in the remotes namespace,
since the git-p4 script does not configure any remotes in the
.gitconfig. Let's work around this in these tests by explicitly
naming the upstream branch to base the new local branch on when
calling 'git checkout'.

Signed-off-by: Brandon Casey <***@gmail.com>
Acked-by: Pete Wyckoff <***@padd.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 76b80cdf17807ba4a773562df2218980ffa27e4f
https://github.com/msysgit/git/commit/76b80cdf17807ba4a773562df2218980ffa27e4f
Author: Matthieu Moy <***@imag.fr>
Date: 2013-06-18 (Tue, 18 Jun 2013)

Changed paths:
M Documentation/git-merge.txt

Log Message:
-----------
Documentation/git-merge.txt: weaken warning about uncommited changes

Commit 35d2fffd introduced 'git merge --abort' as a synonym to 'git reset
--merge', and added some failing tests in t7611-merge-abort.sh (search
'###' in this file) showing that 'git merge --abort' could not always
recover the pre-merge state.

Still, in many cases, 'git merge --abort' just works, and it is usually
considered that the ability to start a merge with uncommited changes is
an important property of Git.

Weaken the warning by discouraging only merge with /non-trivial/
uncommited changes.

Signed-off-by: Matthieu Moy <***@imag.fr>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: d7747bd5bcba5eaeda690d7d5897462580f3c0e4
https://github.com/msysgit/git/commit/d7747bd5bcba5eaeda690d7d5897462580f3c0e4
Author: Kevin Bracey <***@bracey.fi>
Date: 2013-06-18 (Tue, 18 Jun 2013)

Changed paths:
M Documentation/git-diff.txt

Log Message:
-----------
Documentation: Move "git diff <blob> <blob>"

The section describing "git diff <blob> <blob>" had been placed in a
position that disrupted the statement "This is synonymous to the
previous form".

Reorder to place this form after all the <commit>-using forms, and the
note applying to them. Also mention this form in the initial description
paragraph.

Signed-off-by: Kevin Bracey <***@bracey.fi>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 09b7e2204a8e41307192c800162e438ec09ddd2c
https://github.com/msysgit/git/commit/09b7e2204a8e41307192c800162e438ec09ddd2c
Author: Phil Hord <***@cisco.com>
Date: 2013-06-18 (Tue, 18 Jun 2013)

Changed paths:
M Documentation/git-log.txt
M Documentation/technical/api-builtin.txt
M Documentation/technical/api-parse-options.txt
M Documentation/user-manual.txt
M builtin/help.c
M builtin/notes.c
M builtin/replace.c
M transport.c
M transport.h

Log Message:
-----------
fix "builtin-*" references to be "builtin/*"

Documentation and some comments still refer to files in builtin/
as 'builtin-*.[cho]'. Update these to show the correct location.

Signed-off-by: Phil Hord <***@cisco.com>
Reviewed-by: Jonathan Nieder <***@gmail.com>
Assisted-by: Junio C Hamano <***@pobox.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: e6a6ddc93a89862319c7876536d79d6d3538de5a
https://github.com/msysgit/git/commit/e6a6ddc93a89862319c7876536d79d6d3538de5a
Author: Thomas Rast <***@inf.ethz.ch>
Date: 2013-06-18 (Tue, 18 Jun 2013)

Changed paths:
M t/test-lib.sh

Log Message:
-----------
test-lib: refactor $GIT_SKIP_TESTS matching

It's already used twice, and we will have more of the same kind of
matching in a minute.

Helped-by: Johannes Sixt <***@kdbg.org>
Signed-off-by: Thomas Rast <***@inf.ethz.ch>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: ae75342cff145a326b2213128cca453023521400
https://github.com/msysgit/git/commit/ae75342cff145a326b2213128cca453023521400
Author: Thomas Rast <***@inf.ethz.ch>
Date: 2013-06-18 (Tue, 18 Jun 2013)

Changed paths:
M t/test-lib-functions.sh
M t/test-lib.sh

Log Message:
-----------
test-lib: rearrange start/end of test_expect_* and test_skip

This moves

* the early setup part from test_skip to a new function test_start_

* the final common parts of test_expect_* to a new function
test_finish_

to make the next commit more obvious.

Signed-off-by: Thomas Rast <***@inf.ethz.ch>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 98c5c4ad01551b7764c9c8d8f67abfa9c5e595fe
https://github.com/msysgit/git/commit/98c5c4ad01551b7764c9c8d8f67abfa9c5e595fe
Author: Namhyung Kim <***@lge.com>
Date: 2013-06-18 (Tue, 18 Jun 2013)

Changed paths:
M Documentation/git-name-rev.txt
M builtin/name-rev.c

Log Message:
-----------
name-rev: allow to specify a subpath for --refs option

When an user wants to filter specific ref using the --refs option,
the pattern needs to match the full ref, e.g. --refs=refs/tags/v1.*.

It'd be convenient to specify a subpath of ref pattern. For
example, --refs=origin/* can find refs/remotes/origin/master by
searching the pattern against its substrings in turn:

refs/remotes/origin/master
remotes/origin/master
origin/master

If it finds a match in a subpath, unambigous part of the ref path will
be removed in the output.

Signed-off-by: Namhyung Kim <***@lge.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: a94cf2cb7e77c27ce5c3d648e37c1aa75cd5e56e
https://github.com/msysgit/git/commit/a94cf2cb7e77c27ce5c3d648e37c1aa75cd5e56e
Author: Brandon Casey <***@gmail.com>
Date: 2013-06-19 (Wed, 19 Jun 2013)

Changed paths:
M http.c

Log Message:
-----------
http.c: don't rewrite the user:passwd string multiple times

Curl older than 7.17 (RHEL 4.X provides 7.12 and RHEL 5.X provides
7.15) requires that we manage any strings that we pass to it as
pointers. So, we really shouldn't be modifying this strbuf after we
have passed it to curl.

Our interaction with curl is currently safe (before or after this
patch) since the pointer that is passed to curl is never invalidated;
it is repeatedly rewritten with the same sequence of characters but
the strbuf functions never need to allocate a larger string, so the
same memory buffer is reused.

This "guarantee" of safety is somewhat subtle and could be overlooked
by someone who may want to add a more complex handling of the username
and password. So, let's stop modifying this strbuf after we have
passed it to curl, but also leave a note to describe the assumptions
that have been made about username/password lifetime and to draw
attention to the code.

Signed-off-by: Brandon Casey <***@gmail.com>
Acked-by: Jeff King <***@peff.net>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 47f534bf92300c2e48c39999bc89e941ebc5d0c8
https://github.com/msysgit/git/commit/47f534bf92300c2e48c39999bc89e941ebc5d0c8
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-06-19 (Wed, 19 Jun 2013)

Changed paths:
M refs.c

Log Message:
-----------
resolve_ref_unsafe(): extract function handle_missing_loose_ref()

The nesting was getting a bit out of hand, and it's about to get
worse.

Signed-off-by: Michael Haggerty <***@alum.mit.edu>
Reviewed-by: Jeff King <***@peff.net>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 2884c06ae78e569a513701c2d43f4ed79bd252ce
https://github.com/msysgit/git/commit/2884c06ae78e569a513701c2d43f4ed79bd252ce
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-06-19 (Wed, 19 Jun 2013)

Changed paths:
M refs.c

Log Message:
-----------
resolve_ref_unsafe(): handle the case of an SHA-1 within loop

There is only one "break" statement within the loop, which jumps to
the code after the loop that handles the case of a file that holds a
SHA-1. So move that code from below the loop into the if statement
where the break was previously located. This makes the logic flow
more local.

Signed-off-by: Michael Haggerty <***@alum.mit.edu>
Reviewed-by: Jeff King <***@peff.net>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: fcb7c76274570e74fd9a9ac429095b07c2f34c64
https://github.com/msysgit/git/commit/fcb7c76274570e74fd9a9ac429095b07c2f34c64
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-06-19 (Wed, 19 Jun 2013)

Changed paths:
M refs.c

Log Message:
-----------
resolve_ref_unsafe(): close race condition reading loose refs

We read loose references in two steps. The code is roughly:

lstat()
if error ENOENT:
loose ref is missing; look for corresponding packed ref
else if S_ISLNK:
readlink()
if error:
report failure
else if S_ISDIR:
report failure
else
open()
if error:
report failure
read()

The problem is that the first filesystem call, to lstat(), is not
atomic with the second filesystem call, to readlink() or open().
Therefore it is possible for another process to change the file
between our two calls, for example:

* If the other process deletes the file, our second call will fail
with ENOENT, which we *should* interpret as "loose ref is missing;
look for corresponding packed ref". This can arise if the other
process is pack-refs; it might have just written a new packed-refs
file containing the old contents of the reference then deleted the
loose ref.

* If the other process changes a symlink into a plain file, our call
to readlink() will fail with EINVAL, which we *should* respond to by
trying to open() and read() the file.

The old code treats the reference as missing in both of these cases,
which is incorrect.

So instead, handle errors more selectively: if the result of
readline()/open() is a failure that is inconsistent with the result of
the previous lstat(), then something is fishy. In this case jump back
and start over again with a fresh call to lstat().

One race is still possible and undetected: another process could
change the file from a regular file into a symlink between the call to
lstat and the call to open(). The open() call would silently follow
the symlink and not know that something is wrong. This situation
could be detected in two ways:

* On systems that support O_NOFOLLOW, pass that option to the open().

* On other systems, call fstat() on the fd returned by open() and make
sure that it agrees with the stat info from the original lstat().

However, we don't use symlinks anymore, so this situation is unlikely.
Moreover, it doesn't appear that treating a symlink as a regular file
would have grave consequences; after all, this is exactly how the code
handles non-relative symlinks. So this commit leaves that race
unaddressed.

Note that this solves only the part of the race within
resolve_ref_unsafe. In the situation described above, we may still be
depending on a cached view of the packed-refs file; that race will be
dealt with in a future patch.

This problem was reported and diagnosed by Jeff King <***@peff.net>,
and this solution is derived from his patch.

Signed-off-by: Michael Haggerty <***@alum.mit.edu>
Reviewed-by: Jeff King <***@peff.net>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: eb4be1cbe2e50c9bfaa09839564723de257869fc
https://github.com/msysgit/git/commit/eb4be1cbe2e50c9bfaa09839564723de257869fc
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-06-19 (Wed, 19 Jun 2013)

Changed paths:
M sequencer.c

Log Message:
-----------
sequencer: write useful reflog message for fast-forward

The following command

$ git cherry-pick --ff b8bb3f

writes the following uninformative message to the reflog

cherry-pick

Improve it to

cherry-pick: fast-forward

Avoid hard-coding "cherry-pick" in fast_forward_to(), so the sequencer
is generic enough to support future actions.

Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: f7e604ed390cec7b20471f9c03bbc507ebfe41c0
https://github.com/msysgit/git/commit/f7e604ed390cec7b20471f9c03bbc507ebfe41c0
Author: Veres Lajos <***@gmail.com>
Date: 2013-06-19 (Wed, 19 Jun 2013)

Changed paths:
M git-p4.py
M git-svn.perl
M t/t7600-merge.sh

Log Message:
-----------
random typofixes (committed missing a 't', successful missing an 's')

Signed-off-by: Veres Lajos <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 36617af7ed594d1928554356d809bd611c642dd2
https://github.com/msysgit/git/commit/36617af7ed594d1928554356d809bd611c642dd2
Author: Antoine Pelisse <***@gmail.com>
Date: 2013-06-19 (Wed, 19 Jun 2013)

Changed paths:
M Documentation/diff-options.txt
M diff.c
M t/t4015-diff-whitespace.sh
M xdiff/xdiff.h
M xdiff/xdiffi.c
M xdiff/xdiffi.h
M xdiff/xemit.c
M xdiff/xemit.h
M xdiff/xutils.c
M xdiff/xutils.h

Log Message:
-----------
diff: add --ignore-blank-lines option

The goal of the patch is to introduce the GNU diff
-B/--ignore-blank-lines as closely as possible. The short option is not
available because it's already used for "break-rewrites".

When this option is used, git-diff will not create hunks that simply
add or remove empty lines, but will still show empty lines
addition/suppression if they are close enough to "valuable" changes.

There are two differences between this option and GNU diff -B option:
- GNU diff doesn't have "--inter-hunk-context", so this must be handled
- The following sequence looks like a bug (context is displayed twice):

$ seq 5 >file1
$ cat <<EOF >file2
change
1
2

3
4
5
change
EOF
$ diff -u -B file1 file2
--- file1 2013-06-08 22:13:04.471517834 +0200
+++ file2 2013-06-08 22:13:23.275517855 +0200
@@ -1,5 +1,7 @@
+change
1
2
+
3
4
5
@@ -3,3 +5,4 @@
3
4
5
+change

So here is a more thorough description of the option:
- real changes are interesting
- blank lines that are close enough (less than context size) to
interesting changes are considered interesting (recursive definition)
- "context" lines are used around each hunk of interesting changes
- If two hunks are separated by less than "inter-hunk-context", they
will be merged into one.

The implementation does the "interesting changes selection" in a single
pass.

Signed-off-by: Antoine Pelisse <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 3cb8a5ff1756f11fe60b9c6ed3f9fe593e9c6d62
https://github.com/msysgit/git/commit/3cb8a5ff1756f11fe60b9c6ed3f9fe593e9c6d62
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-06-19 (Wed, 19 Jun 2013)

Changed paths:
M t/t5528-push-default.sh

Log Message:
-----------
t/t5528-push-default: remove redundant test_config lines

The line

test_config push.default upstream

appears unnecessarily in two tests, as the final test_push_failure sets
push.default before pushing anyway.

Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: f07075c297d8a9b58b693176b6ae73dbabcdb103
https://github.com/msysgit/git/commit/f07075c297d8a9b58b693176b6ae73dbabcdb103
Author: Michael S. Tsirkin <***@redhat.com>
Date: 2013-06-20 (Thu, 20 Jun 2013)

Changed paths:
M t/t9001-send-email.sh

Log Message:
-----------
send-email: add test for duplicate utf8 name

Verify that author name is not duplicated if it matches sender, even
if it is in utf8 (the test expects a failure that will be fixed in
the next patch).

Signed-off-by: Michael S. Tsirkin <***@redhat.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 4cb46bddeb7d21241f8ac5e46eb3d1cee468ea14
https://github.com/msysgit/git/commit/4cb46bddeb7d21241f8ac5e46eb3d1cee468ea14
Author: Michael S. Tsirkin <***@redhat.com>
Date: 2013-06-20 (Thu, 20 Jun 2013)

Changed paths:
M git-send-email.perl
M t/t9001-send-email.sh

Log Message:
-----------
send-email: sanitize author when writing From line

sender is now sanitized, but we didn't sanitize author when checking
whether From: line is needed in the message body.

As a result git started writing duplicate From: lines when author
matched sender and has utf8 characters.

Reported-by: SZEDER Gábor <***@ira.uka.de>
Signed-off-by: Michael S. Tsirkin <***@redhat.com>
Tested-by: SZEDER Gábor <***@ira.uka.de>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: bed947048919d0ed8b8eece38eb18b15f99e313f
https://github.com/msysgit/git/commit/bed947048919d0ed8b8eece38eb18b15f99e313f
Author: Torsten Bögershausen <***@web.de>
Date: 2013-06-20 (Thu, 20 Jun 2013)

Changed paths:
M t/t7400-submodule-basic.sh

Log Message:
-----------
t7400: test of UTF-8 submodule names pass under Mac OS

submodules with names using UTF-8 need core.precomposeunicode true
under Mac OS X, set it in the test case.

Improve the portability:

- Not all shells on all OS may understand literal UTF-8 strings.
- Use a help variable filled by printf, as we do it in e.g. t0050.

"strange names" can be called UTF-8, rephrase the heading.

While at it, unbreak &&-chain in the test, and use test_config.

Signed-off-by: Torsten Bögershausen <***@web.de>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 7b40d3963835699e138d21f6040a60c07e797853
https://github.com/msysgit/git/commit/7b40d3963835699e138d21f6040a60c07e797853
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-06-20 (Thu, 20 Jun 2013)

Changed paths:
M refs.c

Log Message:
-----------
repack_without_ref(): split list curation and entry writing

The repack_without_ref() function first removes the deleted ref from
the internal packed-refs list, then writes the packed-refs list to
disk, omitting any broken or stale entries. This patch splits that
second step into multiple passes:

* collect the list of refnames that should be deleted from packed_refs

* delete those refnames from the cache

* write the remainder to the packed-refs file

The purpose of this change is to make the "write the remainder" part
reusable.

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


Commit: 267f9a8cc8192e120a6476fc55590e288e08b459
https://github.com/msysgit/git/commit/267f9a8cc8192e120a6476fc55590e288e08b459
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-06-20 (Thu, 20 Jun 2013)

Changed paths:
M refs.c

Log Message:
-----------
pack_refs(): split creation of packed refs and entry writing

Split pack_refs() into multiple passes:

* Iterate over loose refs. For each one that can be turned into a
packed ref, create a corresponding entry in the packed refs cache.

* Write the packed refs to the packed-refs file.

This change isolates the mutation of the packed-refs file to a single
place.

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


Commit: 2fff7812902abd0afe05ae1e9ef334fcd26f0389
https://github.com/msysgit/git/commit/2fff7812902abd0afe05ae1e9ef334fcd26f0389
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-06-20 (Thu, 20 Jun 2013)

Changed paths:
M refs.c

Log Message:
-----------
refs: wrap the packed refs cache in a level of indirection

As we know, we can solve any problem in this manner. In this case,
the problem is to avoid freeing a packed refs cache while somebody is
using it. So add a level of indirection as a prelude to
reference-counting the packed refs cache.

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


Commit: 9f69d297703bff37c5506276c2565c721347e03f
https://github.com/msysgit/git/commit/9f69d297703bff37c5506276c2565c721347e03f
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-06-20 (Thu, 20 Jun 2013)

Changed paths:
M builtin/clone.c
M refs.c
M refs.h

Log Message:
-----------
refs: implement simple transactions for the packed-refs file

Handle simple transactions for the packed-refs file at the
packed_ref_cache level via new functions lock_packed_refs(),
commit_packed_refs(), and rollback_packed_refs().

Only allow the packed ref cache to be modified (via add_packed_ref())
while the packed refs file is locked.

Change clone to add the new references within a transaction.

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


Commit: 5f5e2a8868e2b5792bf467799339e3288282e91e
https://github.com/msysgit/git/commit/5f5e2a8868e2b5792bf467799339e3288282e91e
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-06-20 (Thu, 20 Jun 2013)

Changed paths:
M refs.c

Log Message:
-----------
refs: manage lifetime of packed refs cache via reference counting

In struct packed_ref_cache, keep a count of the number of users of the
data structure. Only free the packed ref cache when the reference
count goes to zero rather than when the packed ref cache is cleared.
This mechanism will be used to prevent the cache data structure from
being freed while it is being iterated over.

So far, only the reference in struct ref_cache::packed is counted;
other users will be adjusted in separate commits.

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


Commit: 8baf2bb99a22f8265a26d97f706a27e39911f69e
https://github.com/msysgit/git/commit/8baf2bb99a22f8265a26d97f706a27e39911f69e
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-06-20 (Thu, 20 Jun 2013)

Changed paths:
M refs.c

Log Message:
-----------
do_for_each_entry(): increment the packed refs cache refcount

This function calls a user-supplied callback function which could do
something that causes the packed refs cache to be invalidated. So
acquire a reference count on the data structure to prevent our copy
from being freed while we are iterating over it.

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


Commit: 4f6b83e3708943c3b3f4ac911da7d0c30019c20a
https://github.com/msysgit/git/commit/4f6b83e3708943c3b3f4ac911da7d0c30019c20a
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-06-20 (Thu, 20 Jun 2013)

Changed paths:
M refs.c

Log Message:
-----------
packed_ref_cache: increment refcount when locked

Increment the packed_ref_cache reference count while it is locked to
prevent its being freed.

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


Commit: c21d39d7c7eb07eed0be301a72856bff65201256
https://github.com/msysgit/git/commit/c21d39d7c7eb07eed0be301a72856bff65201256
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-06-20 (Thu, 20 Jun 2013)

Changed paths:
M builtin/ls-files.c
M cache.h
M read-cache.c

Log Message:
-----------
Extract a struct stat_data from cache_entry

Add public functions fill_stat_data() and match_stat_data() to work
with it. This infrastructure will later be used to check the validity
of other types of file.

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


Commit: 38612532240ecbe1b12e54ca859fed8410ae6de1
https://github.com/msysgit/git/commit/38612532240ecbe1b12e54ca859fed8410ae6de1
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-06-20 (Thu, 20 Jun 2013)

Changed paths:
M cache.h
M read-cache.c

Log Message:
-----------
add a stat_validity struct

It can sometimes be useful to know whether a path in the
filesystem has been updated without going to the work of
opening and re-reading its content. We trust the stat()
information on disk already to handle index updates, and we
can use the same trick here.

This patch introduces a "stat_validity" struct which
encapsulates the concept of checking the stat-freshness of a
file. It is implemented on top of "struct stat_data" to
reuse the logic about which stat entries to trust for a
particular platform, but hides the complexity behind two
simple functions: check and update.

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


Commit: ca9199300eb0d485f5e03961bbbd9aff3484a1fa
https://github.com/msysgit/git/commit/ca9199300eb0d485f5e03961bbbd9aff3484a1fa
Author: Jeff King <***@peff.net>
Date: 2013-06-20 (Thu, 20 Jun 2013)

Changed paths:
M refs.c

Log Message:
-----------
get_packed_ref_cache: reload packed-refs file when it changes

Once we read the packed-refs file into memory, we cache it
to save work on future ref lookups. However, our cache may
be out of date with respect to what is on disk if another
process is simultaneously packing the refs. Normally it
is acceptable for us to be a little out of date, since there
is no guarantee whether we read the file before or after the
simultaneous update. However, there is an important special
case: our packed-refs file must be up to date with respect
to any loose refs we read. Otherwise, we risk the following
race condition:

0. There exists a loose ref refs/heads/master.

1. Process A starts and looks up the ref "master". It
first checks $GIT_DIR/master, which does not exist. It
then loads (and caches) the packed-refs file to see if
"master" exists in it, which it does not.

2. Meanwhile, process B runs "pack-refs --all --prune". It
creates a new packed-refs file which contains
refs/heads/master, and removes the loose copy at
$GIT_DIR/refs/heads/master.

3. Process A continues its lookup, and eventually tries
$GIT_DIR/refs/heads/master. It sees that the loose ref
is missing, and falls back to the packed-refs file. But
it examines its cached version, which does not have
refs/heads/master. After trying a few other prefixes,
it reports master as a non-existent ref.

There are many variants (e.g., step 1 may involve process A
looking up another ref entirely, so even a fully qualified
refname can fail). One of the most interesting ones is if
"refs/heads/master" is already packed. In that case process
A will not see it as missing, but rather will report
whatever value happened to be in the packed-refs file before
process B repacked (which might be an arbitrarily old
value).

We can fix this by making sure we reload the packed-refs
file from disk after looking at any loose refs. That's
unacceptably slow, so we can check its stat()-validity as a
proxy, and read it only when it appears to have changed.

Reading the packed-refs file after performing any loose-ref
system calls is sufficient because we know the ordering of
the pack-refs process: it always makes sure the newly
written packed-refs file is installed into place before
pruning any loose refs. As long as those operations by B
appear in their executed order to process A, by the time A
sees the missing loose ref, the new packed-refs file must be
in place.

Signed-off-by: Michael Haggerty <***@alum.mit.edu>
Signed-off-by: Jeff King <***@peff.net>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 98eeb09e8acb6cbe0b0da3b1772b6676fe6d167f
https://github.com/msysgit/git/commit/98eeb09e8acb6cbe0b0da3b1772b6676fe6d167f
Author: Jeff King <***@peff.net>
Date: 2013-06-20 (Thu, 20 Jun 2013)

Changed paths:
M refs.c

Log Message:
-----------
for_each_ref: load all loose refs before packed refs

If we are iterating through the refs using for_each_ref (or
any of its sister functions), we can get into a race
condition with a simultaneous "pack-refs --prune" that looks
like this:

0. We have a large number of loose refs, and a few packed
refs. refs/heads/z/foo is loose, with no matching entry
in the packed-refs file.

1. Process A starts iterating through the refs. It loads
the packed-refs file from disk, then starts lazily
traversing through the loose ref directories.

2. Process B, running "pack-refs --prune", writes out the
new packed-refs file. It then deletes the newly packed
refs, including refs/heads/z/foo.

3. Meanwhile, process A has finally gotten to
refs/heads/z (it traverses alphabetically). It
descends, but finds nothing there. It checks its
cached view of the packed-refs file, but it does not
mention anything in "refs/heads/z/" at all (it predates
the new file written by B in step 2).

The traversal completes successfully without mentioning
refs/heads/z/foo at all (the name, of course, isn't
important; but the more refs you have and the farther down
the alphabetical list a ref is, the more likely it is to hit
the race). If refs/heads/z/foo did exist in the packed refs
file at state 0, we would see an entry for it, but it would
show whatever sha1 the ref had the last time it was packed
(which could be an arbitrarily long time ago).

This can be especially dangerous when process A is "git
prune", as it means our set of reachable tips will be
incomplete, and we may erroneously prune objects reachable
from that tip (the same thing can happen if "repack -ad" is
used, as it simply drops unreachable objects that are
packed).

This patch solves it by loading all of the loose refs for
our traversal into our in-memory cache, and then refreshing
the packed-refs cache. Because a pack-refs writer will
always put the new packed-refs file into place before
starting the prune, we know that any loose refs we fail to
see will either truly be missing, or will have already been
put in the packed-refs file by the time we refresh.

Signed-off-by: Michael Haggerty <***@alum.mit.edu>
Signed-off-by: Jeff King <***@peff.net>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 5d478f5ca1792e7576ac13aaf75f09099ce99afb
https://github.com/msysgit/git/commit/5d478f5ca1792e7576ac13aaf75f09099ce99afb
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-06-20 (Thu, 20 Jun 2013)

Changed paths:
M refs.c

Log Message:
-----------
refs: do not invalidate the packed-refs cache unnecessarily

Now that we keep track of the packed-refs file metadata, we can detect
when the packed-refs file has been modified since we last read it, and
we do so automatically every time that get_packed_ref_cache() is
called. So there is no need to invalidate the cache automatically
when lock_packed_refs() is called; usually the old copy will still be
valid.

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


Commit: 9f48f2bd9ae8db8cdce3a8e2c9b6dc33b2a55ee1
https://github.com/msysgit/git/commit/9f48f2bd9ae8db8cdce3a8e2c9b6dc33b2a55ee1
Author: Jeff King <***@peff.net>
Date: 2013-06-20 (Thu, 20 Jun 2013)

Changed paths:
M git-pull.sh

Log Message:
-----------
pull: update unborn branch tip after index

When commit d09e79c taught git to pull into an unborn
branch, it first updated the unborn branch to point at the
pulled commit, and then used read-tree to update the index
and working tree. That ordering made sense, since any
failure of the latter step would be due to filesystem
errors, and one could then recover with "git reset --hard".

Later, commit 4b3ffe5 added extra safety for existing files
in the working tree by asking read-tree to bail out when it
would overwrite such a file. This error mode is much less
"your pull failed due to random errors" and more like "we
reject this pull because it would lose data". In that case,
it makes sense not to update the HEAD ref, just as a regular
rejected merge would do.

This patch reverses the order of the update-ref and
read-tree calls, so that we do not touch the HEAD ref at all if a
merge is rejected. This also means that we would not update
HEAD in case of a transient filesystem error, but those are
presumably less rare (and one can still recover by repeating
the pull, or by accessing FETCH_HEAD directly).

While we're reorganizing the code, we can drop the "exit 1"
from the end of our command chain. We exit immediately
either way, and just calling exit without an argument will
use the exit code from the last command.

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


Commit: b4dc085a8dc2ec2fb5f6366fa672222b807ed655
https://github.com/msysgit/git/commit/b4dc085a8dc2ec2fb5f6366fa672222b807ed655
Author: Thomas Rast <***@inf.ethz.ch>
Date: 2013-06-20 (Thu, 20 Jun 2013)

Changed paths:
M git-pull.sh
M t/t5520-pull.sh

Log Message:
-----------
pull: merge into unborn by fast-forwarding from empty tree

The logic for pulling into an unborn branch was originally
designed to be used on a newly-initialized repository
(d09e79c, git-pull: allow pulling into an empty repository,
2006-11-16). It thus did not initially deal with
uncommitted changes in the unborn branch. The case of an
_unstaged_ untracked file was fixed by 4b3ffe5 (pull: do not
clobber untracked files on initial pull, 2011-03-25).
However, it still clobbered existing staged files, both when
the file exists in the merged commit (it will be
overwritten), and when it does not (it will be deleted).

We fix this by doing a two-way merge, where the "current"
side of the merge is an empty tree, and the "target" side is
HEAD (already updated to FETCH_HEAD at this point). This
amounts to claiming that all work in the index was done vs.
an empty tree, and thus all content of the index is
precious.

Note that this use of read-tree just gives us protection
against overwriting index and working tree changes. It will
not actually result in a 3-way merge conflict in the index.
This is fine, as this is a rare situation, and the conflict
would not be interesting anyway (it must, by definition, be
an add/add conflict with the whole content conflicting). And
it makes it simpler for the user to recover, as they have no
HEAD to "git reset" back to.

Reported-by: Stefan Schüßler <***@stefanschuessler.de>
Signed-off-by: Thomas Rast <***@inf.ethz.ch>
Signed-off-by: Jeff King <***@peff.net>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 6aeb74ec89272be317f66869fde7c5144d528d5e
https://github.com/msysgit/git/commit/6aeb74ec89272be317f66869fde7c5144d528d5e
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-20 (Thu, 20 Jun 2013)

Changed paths:
M Makefile

Log Message:
-----------
Merge branch 'nd/make-wildmatch-default'

* nd/make-wildmatch-default:
Makefile: promote wildmatch to be the default fnmatch implementation


Commit: c0266ed2759fa1838384c37faa6d7264edaaf04b
https://github.com/msysgit/git/commit/c0266ed2759fa1838384c37faa6d7264edaaf04b
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-20 (Thu, 20 Jun 2013)

Changed paths:
M t/README
M t/t0000-basic.sh
M t/t1004-read-tree-m-u-wf.sh
M t/t2001-checkout-cache-clash.sh
M t/t2004-checkout-cache-temp.sh
M t/t2007-checkout-symlink.sh
M t/t2021-checkout-overwrite.sh
M t/t2200-add-update.sh
M t/t3010-ls-files-killed-modified.sh
M t/t3030-merge-recursive.sh
M t/t3100-ls-tree-restrict.sh
M t/t3509-cherry-pick-merge-df.sh
M t/t3700-add.sh
M t/t3903-stash.sh
M t/t4008-diff-break-rewrite.sh
M t/t4011-diff-symlink.sh
M t/t4023-diff-rename-typechange.sh
M t/t4030-diff-textconv.sh
M t/t4114-apply-typechange.sh
M t/t4115-apply-symlink.sh
M t/t4122-apply-symlink-inside.sh
M t/t6035-merge-dir-to-symlink.sh
M t/t7001-mv.sh
M t/t7607-merge-overwrite.sh
M t/t8006-blame-textconv.sh
M t/t8007-cat-file-textconv.sh
M t/t9350-fast-export.sh
M t/t9500-gitweb-standalone-no-errors.sh
M t/test-lib-functions.sh
M test-chmtime.c

Log Message:
-----------
Merge branch 'js/test-ln-s-add'

Many tests that check the behaviour of symbolic links stored in the
index or the tree objects do not have to be skipped on a filesystem
that lack symbolic link support.

* js/test-ln-s-add:
t4011: remove SYMLINKS prerequisite
t6035: use test_ln_s_add to remove SYMLINKS prerequisite
t3509, t4023, t4114: use test_ln_s_add to remove SYMLINKS prerequisite
t3100: use test_ln_s_add to remove SYMLINKS prerequisite
t3030: use test_ln_s_add to remove SYMLINKS prerequisite
t0000: use test_ln_s_add to remove SYMLINKS prerequisite
tests: use test_ln_s_add to remove SYMLINKS prerequisite (trivial cases)
tests: introduce test_ln_s_add
t3010: modernize style
test-chmtime: Fix exit code on Windows


Commit: 0846fe1a8357b0a99b9d547a4d97844048ae2101
https://github.com/msysgit/git/commit/0846fe1a8357b0a99b9d547a4d97844048ae2101
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-20 (Thu, 20 Jun 2013)

Changed paths:
M Makefile

Log Message:
-----------
Merge branch 'fc/makefile'

Makefile simplification.

* fc/makefile:
Makefile: use $^ to avoid listing prerequisites on the command line
build: do not install git-remote-testgit
build: generate and clean test scripts


Commit: 01c0615dceb433a5498c7160d67f77a6cc9197bb
https://github.com/msysgit/git/commit/01c0615dceb433a5498c7160d67f77a6cc9197bb
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-20 (Thu, 20 Jun 2013)

Changed paths:
M t/t0040-parse-options.sh
M t/t3400-rebase.sh
M t/t3903-stash.sh
M t/t5521-pull-options.sh
M t/t5702-clone-options.sh
M t/t7102-reset.sh
M t/t7400-submodule-basic.sh
M t/t9402-git-cvsserver-refs.sh
M t/test-lib-functions.sh

Log Message:
-----------
Merge branch 'fc/show-non-empty-errors-in-test'

* fc/show-non-empty-errors-in-test:
test: test_must_be_empty helper


Commit: 8f0c843aab226225b8ef43e9b2e317bda5ea8f6d
https://github.com/msysgit/git/commit/8f0c843aab226225b8ef43e9b2e317bda5ea8f6d
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-20 (Thu, 20 Jun 2013)

Changed paths:
M Documentation/git.txt
M cache.h
M config.c
M environment.c
M sha1_file.c

Log Message:
-----------
Merge branch 'nd/traces'

* nd/traces:
git.txt: document GIT_TRACE_PACKET
core: use env variable instead of config var to turn on logging pack access


Commit: 08bcd774f497af594f16e545a04e2ad767cc850d
https://github.com/msysgit/git/commit/08bcd774f497af594f16e545a04e2ad767cc850d
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-20 (Thu, 20 Jun 2013)

Changed paths:
M .gitignore
M Makefile
M read-cache.c
A t/perf/p0002-read-cache.sh
A test-read-cache.c

Log Message:
-----------
Merge branch 'rs/discard-index-discard-array'

* rs/discard-index-discard-array:
read-cache: free cache in discard_index
read-cache: add simple performance test


Commit: 73018c0f0b2fa9d771a6991f18f9e9eb2c10e14d
https://github.com/msysgit/git/commit/73018c0f0b2fa9d771a6991f18f9e9eb2c10e14d
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-20 (Thu, 20 Jun 2013)

Changed paths:
M Documentation/config.txt
M builtin/config.c
M color.c

Log Message:
-----------
Merge branch 'mm/color-auto-default'

Flip the default for color.ui to 'auto', which is what many
tutorials recommend new users to do.

* mm/color-auto-default:
make color.ui default to 'auto'
config: refactor management of color.ui's default value


Commit: 02dfccfa407032b8d5aa4d883ba986ef10775a50
https://github.com/msysgit/git/commit/02dfccfa407032b8d5aa4d883ba986ef10775a50
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-20 (Thu, 20 Jun 2013)

Changed paths:
M builtin/apply.c
M builtin/ls-files.c
M builtin/merge-base.c

Log Message:
-----------
Merge branch 'rs/logical-vs-binary-or'

Code cleanup.

* rs/logical-vs-binary-or:
use logical OR (||) instead of binary OR (|) in logical context


Commit: 50f69099292de53431ef29d3adc115d04a4fd92a
https://github.com/msysgit/git/commit/50f69099292de53431ef29d3adc115d04a4fd92a
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-20 (Thu, 20 Jun 2013)

Changed paths:
M match-trees.c

Log Message:
-----------
Merge branch 'rs/match-trees-refactor'

Code cleanup.

* rs/match-trees-refactor:
match-trees: factor out fill_tree_desc_strict


Commit: 0c36f3a198fab35c694a1e38c57227989c98e48e
https://github.com/msysgit/git/commit/0c36f3a198fab35c694a1e38c57227989c98e48e
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-20 (Thu, 20 Jun 2013)

Changed paths:
M contrib/mw-to-git/git-remote-mediawiki.perl

Log Message:
-----------
Merge branch 'cm/remote-mediawiki'

* cm/remote-mediawiki:
git-remote-mediawiki: display message when launched directly


Commit: 21ff9151e811059f5576ca906c519ee5bb5b925e
https://github.com/msysgit/git/commit/21ff9151e811059f5576ca906c519ee5bb5b925e
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-20 (Thu, 20 Jun 2013)

Changed paths:
M Documentation/RelNotes/1.8.4.txt

Log Message:
-----------
Update draft release notes to 1.8.4


Commit: 212eb96a96e256933a76e48d85fa4f500bed0dee
https://github.com/msysgit/git/commit/212eb96a96e256933a76e48d85fa4f500bed0dee
Author: Thomas Rast <***@inf.ethz.ch>
Date: 2013-06-21 (Fri, 21 Jun 2013)

Changed paths:
M builtin/apply.c
M t/t4111-apply-subdir.sh

Log Message:
-----------
apply: carefully strdup a possibly-NULL name

2901bbe (apply: free patch->{def,old,new}_name fields, 2012-03-21)
cleaned up the memory management of filenames in the patches, but
forgot that find_name_traditional() can return NULL as a way of saying
"I couldn't find a name".

That NULL unfortunately gets passed into xstrdup() next, resulting in
a segfault. Use null_strdup() so as to safely propagate the null,
which will let us emit the correct error message.

Reported-by: DevHC on #git
Signed-off-by: Thomas Rast <***@inf.ethz.ch>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: c0add3073a5bd0e295cdaea76e5c9b7805f8a047
https://github.com/msysgit/git/commit/c0add3073a5bd0e295cdaea76e5c9b7805f8a047
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-06-21 (Fri, 21 Jun 2013)

Changed paths:
M contrib/completion/git-completion.bash

Log Message:
-----------
completion: complete diff --word-diff

Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 266f1fdfa99f5d29ca7ce455966e7960c00a82e4
https://github.com/msysgit/git/commit/266f1fdfa99f5d29ca7ce455966e7960c00a82e4
Author: Jeff King <***@peff.net>
Date: 2013-06-21 (Fri, 21 Jun 2013)

Changed paths:
M t/t5801-remote-helpers.sh
M transport-helper.c

Log Message:
-----------
transport-helper: be quiet on read errors from helpers

Prior to commit 81d340d4, we did not print any error message
if a remote transport helper died unexpectedly. If a helper
did not print any error message (e.g., because it crashed),
the user could be left confused. That commit tried to
rectify the situation by printing a note that the helper
exited unexpectedly.

However, this makes a much more common case worse: when a
helper does die with a useful message, we print the extra
"Reading from 'git-remote-foo failed" message. This can also
end up confusing users, as they may not even know what
remote helpers are (e.g., the fact that http support comes
through git-remote-https is purely an implementation detail
that most users do not know or care about).

Since we do not have a good way of knowing whether the
helper printed a useful error, and since the common failure
mode is for it to do so, let's default to remaining quiet.
Debuggers can dig further by setting GIT_TRANSPORT_HELPER_DEBUG.

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


Commit: cc2f6b686575e2b7664d22d1266fc55197bc7e81
https://github.com/msysgit/git/commit/cc2f6b686575e2b7664d22d1266fc55197bc7e81
Author: Yaakov Selkowitz <***@users.sourceforge.net>
Date: 2013-06-21 (Fri, 21 Jun 2013)

Changed paths:
M Documentation/git-web--browse.txt
M git-web--browse.sh

Log Message:
-----------
web--browse: support /usr/bin/cygstart on Cygwin

While both GUI and console Cygwin browsers do exist, anecdotal evidence
suggests most users rely on their native Windows browser. cygstart,
which is a long-standing part of the base Cygwin installation, will
cause the page to be opened in the default Windows browser (the one
registered to open .html files).

Signed-off-by: Yaakov Selkowitz <***@users.sourceforge.net>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 50e5a252225137f0fbb18a0ff72a0ae052e09d24
https://github.com/msysgit/git/commit/50e5a252225137f0fbb18a0ff72a0ae052e09d24
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-21 (Fri, 21 Jun 2013)

Changed paths:
M t/lib-t6000.sh

Log Message:
-----------
t/lib-t6000: style fixes

Mostly fixes to initial indentation with 8-SP (they should be HT)
and wrapping long lines.

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


Commit: 841dc6935ea0f2ecfc778501edc66dc2c828d333
https://github.com/msysgit/git/commit/841dc6935ea0f2ecfc778501edc66dc2c828d333
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-21 (Fri, 21 Jun 2013)

Changed paths:
M t/lib-t6000.sh
M t/t6002-rev-list-bisect.sh
M t/t6003-rev-list-topo-order.sh

Log Message:
-----------
topology tests: teach a helper to take abbreviated timestamps

The on_committer_date helper in t/lib-t6000 is used in t6002 and
t6003 with timestamps on a single day within a single minute
(i.e. 1971-08-16 00:00) and the tests repeat this over and over.

The actual value of the timestamp, however, does not matter very
much; only their relative ordering does.

Introduce another helper to expand only the suffix of the timestamp
to a full timestamp to make the lines shorter, and use it in this
helper. Also, because all the commits in the test are made with
specific GIT_COMMITTER_DATE, stop unsetting it at the end of the
helper.

We'll be specifying the author timestamp to these test commits in a
later patch, which will be helped with this change.

Also remove a test that was commented-out from t6003; it used to
test a commit with the same parent listed twice, which was allowed
by mistake but was fixed long time ago.

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


Commit: b9f80fdaea3a35fa156807e42e52d875bf6ad301
https://github.com/msysgit/git/commit/b9f80fdaea3a35fa156807e42e52d875bf6ad301
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-21 (Fri, 21 Jun 2013)

Changed paths:
M t/t6003-rev-list-topo-order.sh

Log Message:
-----------
t6003: add --date-order test

The "--date-order" output is a slight twist of "--topo-order" in
that commits from parallel histories are shown in their committer
date order without an attempt to clump commits from a single line
of history together like --topo-order does.

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


Commit: 11667316d0dc455131b3898fdd29fe080b5ae4e0
https://github.com/msysgit/git/commit/11667316d0dc455131b3898fdd29fe080b5ae4e0
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-21 (Fri, 21 Jun 2013)

Changed paths:
M t/lib-t6000.sh
M t/t6003-rev-list-topo-order.sh

Log Message:
-----------
topology tests: teach a helper to set author dates as well

Introduce on_dates helper that is similar to on_committer_date but
also sets the author date, not just the committer date.

At this step, just set the same timestamp to the author date as the
committer date, as no test looks at author date yet.

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


Commit: aff2e7c0677d882690213d7ddea4a868f8b18325
https://github.com/msysgit/git/commit/aff2e7c0677d882690213d7ddea4a868f8b18325
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-21 (Fri, 21 Jun 2013)

Changed paths:
M t/t6003-rev-list-topo-order.sh

Log Message:
-----------
t6003: add --author-date-order test

Tweak the --topo/date-order test vector a bit and mark the author
dates of two commits (a2 and a3) earlier than their own committer
dates, making them much older than other commits that are made on
parallel branches to simulate the case where a long running topic
was rebased recently.

They will show up as recent in the --date-order output due to their
timestamps, but they appear a lot later in the --author-date-order
output, even though their committer timestamp says otherwise.

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


Commit: 3e7a5b489e45ae8a3a0b222893d58b172d883136
https://github.com/msysgit/git/commit/3e7a5b489e45ae8a3a0b222893d58b172d883136
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-21 (Fri, 21 Jun 2013)

Changed paths:
M contrib/completion/git-completion.bash

Log Message:
-----------
Sync with maint

* maint:
completion: complete diff --word-diff


Commit: 5bdc47eb55aabef3720039181fc360499081a29f
https://github.com/msysgit/git/commit/5bdc47eb55aabef3720039181fc360499081a29f
Author: Jeff King <***@peff.net>
Date: 2013-06-21 (Fri, 21 Jun 2013)

Changed paths:
M t/lib-httpd/apache.conf

Log Message:
-----------
lib-httpd/apache.conf: check version only after mod_version loads

Commit 0442743 introduced an <IfVersion> directive near the
top of the apache config file. However, at that point we
have not yet checked for and loaded the mod_version module.
This means that the directive will behave oddly if
mod_version is dynamically loaded, failing to match when it
should.

We can fix this by moving the whole block below the
LoadModule directive for mod_version.

Reported-by: Brian Gernhardt <***@gernhardtsoftware.com>
Signed-off-by: Jeff King <***@peff.net>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 8c8fc53c7d3daf07f690c1d88ce45849663e6fa4
https://github.com/msysgit/git/commit/8c8fc53c7d3daf07f690c1d88ce45849663e6fa4
Author: W. Trevor King <***@tremily.us>
Date: 2013-06-22 (Sat, 22 Jun 2013)

Changed paths:
M Documentation/git-clone.txt

Log Message:
-----------
doc/clone: Remove the '--bare -l -s' example

There are other examples in git-clone.txt demonstrating both '--bare'
and '-l -s'.

Signed-off-by: W. Trevor King <***@tremily.us>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: f22a6543d17d615068652d0f94397f558158d91a
https://github.com/msysgit/git/commit/f22a6543d17d615068652d0f94397f558158d91a
Author: W. Trevor King <***@tremily.us>
Date: 2013-06-22 (Sat, 22 Jun 2013)

Changed paths:
M Documentation/git-clone.txt

Log Message:
-----------
doc/clone: Pick more compelling paths for the --reference example

There may be times when using one of your local repositories as a
reference for a new clone make sense, but the implied version-bump in
the old example isn't one of them. I think a more intuitive example
is multi-user system with a central reference clone, and the new paths
hint at this use case.

Signed-off-by: W. Trevor King <***@tremily.us>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 34a25d4c9004fd17ce8cbd648d29600caccfd9b6
https://github.com/msysgit/git/commit/34a25d4c9004fd17ce8cbd648d29600caccfd9b6
Author: W. Trevor King <***@tremily.us>
Date: 2013-06-22 (Sat, 22 Jun 2013)

Changed paths:
M Documentation/git-remote.txt
M Documentation/user-manual.txt

Log Message:
-----------
Documentation: Update the NFS remote examples to use the staging repo

linux-nfs.org seems to have restructured their repository layout since
8391c60 (git-remote.txt: fix example url, 2007-11-02), and Bruce's
repo is now at git://git.linux-nfs.org/projects/bfields/linux.git.
Bruce also has a more richer internal branch structure (master,
everything, for-3.1, ...), so updating the existing example to use his
current repo may be confusing.

To simplify, I've replaced the NFS repo with Greg's staging repo.
I've also updated the output of the surrounding commands to match the
output of a current run through.

Signed-off-by: W. Trevor King <***@tremily.us>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 283efb010806d26967a1865d81d6538507c04acf
https://github.com/msysgit/git/commit/283efb010806d26967a1865d81d6538507c04acf
Author: W. Trevor King <***@tremily.us>
Date: 2013-06-22 (Sat, 22 Jun 2013)

Changed paths:
M Documentation/git-clone.txt
M Documentation/git-fast-export.txt
M Documentation/technical/racy-git.txt
M Documentation/user-manual.txt
M t/perf/README

Log Message:
-----------
Documentation: Update 'linux-2.6.git' -> 'linux.git'

The 3.x tree has been out for a while now. The -2.6 repository name
survived the initial release [1], but kernel.org now only lists
'linux.git' (for aegl as well as torvalds) [2].

[1]: http://article.gmane.org/gmane.linux.kernel/1147422
... yes, that means that my git tree is still called
"linux-2.6.git" on kernel.org.
[2]: http://git.kernel.org/cgit/

Signed-off-by: W. Trevor King <***@tremily.us>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 9b9439afd8e08a2370d008af2836198ff9008179
https://github.com/msysgit/git/commit/9b9439afd8e08a2370d008af2836198ff9008179
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-06-23 (Sun, 23 Jun 2013)

Changed paths:
M t/t5505-remote.sh

Log Message:
-----------
t/t5505-remote: modernize style

Modernize the style of all tests throughout the file:

- Remove spurious blank lines.

- Indent the test body.

- Make sure that all lines end with &&, to make it easier to spot
breaks in the chain.

- When executing something in a subshell, put the parenthesis on
separate lines and indent the body. Also make sure that the
first statement in the subshell is a 'cd'.

- When redirecting input or output, do not use SP between
redirection operator and the target filename.

- Use the <<-\EOF and <<-EOF forms of heredoc, not <<EOF, when the
command is indented and the heredoc text itself does not have to
have a leading tab.

Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 294547f5647688c6ee565811f9762a34e521e746
https://github.com/msysgit/git/commit/294547f5647688c6ee565811f9762a34e521e746
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-06-23 (Sun, 23 Jun 2013)

Changed paths:
M t/t5505-remote.sh

Log Message:
-----------
t/t5505-remote: test push-refspec in branches-file

The test "migrate a remote from named file in $GIT_DIR/branches" reads
the branches-file, but only checks that the url and fetch-refspec are
set correctly. Check that the push-refspec is also set correctly.

Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: fe3c1956e2289f083cf6777b3ff22fe628c92951
https://github.com/msysgit/git/commit/fe3c1956e2289f083cf6777b3ff22fe628c92951
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-06-23 (Sun, 23 Jun 2013)

Changed paths:
M t/t5505-remote.sh

Log Message:
-----------
t/t5505-remote: use test_path_is_missing

Replace instances of ! test -f with test_path_is_missing.

Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 55cfde251b4bee36f64f2067cccc4ba346aaf1b0
https://github.com/msysgit/git/commit/55cfde251b4bee36f64f2067cccc4ba346aaf1b0
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-06-23 (Sun, 23 Jun 2013)

Changed paths:
M remote.c

Log Message:
-----------
remote: remove dead code in read_branches_file()

The first line of the function checks that the remote-name contains a
slash ('/'), and sets the "slash" variable accordingly. The only caller
of read_branches_file() is remote_get_1(); the calling codepath is
guarded by valid_remote_nick(), which checks that the remote does not
contain a slash. Therefore, the "slash" variable can never be set:
remove the dead code that assumes otherwise.

Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 1f9a5e905e56502097eb9097a6ea2e9b9cb2e168
https://github.com/msysgit/git/commit/1f9a5e905e56502097eb9097a6ea2e9b9cb2e168
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-06-23 (Sun, 23 Jun 2013)

Changed paths:
M t/t5505-remote.sh

Log Message:
-----------
t/t5505-remote: test url-with-# in branches-file

Add one more test similar to "migrate a remote from named file in
$GIT_DIR/branches" to check that a url with a # can be used to specify
the branch name (as opposed to the constant "master").

Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 6077d3629964d0ba03798a82fd69b745574142ed
https://github.com/msysgit/git/commit/6077d3629964d0ba03798a82fd69b745574142ed
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-06-23 (Sun, 23 Jun 2013)

Changed paths:
M Documentation/git-ls-remote.txt

Log Message:
-----------
ls-remote doc: fix example invocation on git.git

Under the EXAMPLES section, there is one invocation on the git.git
repository that attempts to list the refs master, pu, and rc. The ref
rc does not exist in today's repository, so remove it. Among other
things, this example demonstrates that the "<refs>..." argument is
simply a filter; requesting a non-existent ref is not an error.

Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 88e36141d0b3025637960f45c08033c949ae26fb
https://github.com/msysgit/git/commit/88e36141d0b3025637960f45c08033c949ae26fb
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-06-23 (Sun, 23 Jun 2013)

Changed paths:
M Documentation/git-ls-remote.txt

Log Message:
-----------
ls-remote doc: rewrite <repository> paragraph

Replace the <repository> paragraph containing specific references to
$GIT_DIR/branches and "." with a generic urls-or-remotes paragraph
referencing the relevant sections in the git-fetch(1) manpage.

Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: f0779aef8e9178a8abbadba2eed6b80d8d67e94d
https://github.com/msysgit/git/commit/f0779aef8e9178a8abbadba2eed6b80d8d67e94d
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-06-23 (Sun, 23 Jun 2013)

Changed paths:
M Documentation/git-ls-remote.txt

Log Message:
-----------
ls-remote doc: don't encourage use of branches-file

One outdated example encourages the use of $GIT_DIR/branches files.
Replace it with an equivalent example using a remote.

Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: f0f249d18617848f98aee0b9b9bb90cfb2ecdb68
https://github.com/msysgit/git/commit/f0f249d18617848f98aee0b9b9bb90cfb2ecdb68
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-06-23 (Sun, 23 Jun 2013)

Changed paths:
M t/t5505-remote.sh

Log Message:
-----------
t/t5505-remote: test multiple push/pull in remotes-file

Extend the test "migrate a remote from named file in $GIT_DIR/remotes"
to test that multiple "Push:" and "Pull:" lines in the remotes-file
works as expected.

Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 4b9ced278cbfd57402c3e9875f4ddf1c31438af8
https://github.com/msysgit/git/commit/4b9ced278cbfd57402c3e9875f4ddf1c31438af8
Author: W. Trevor King <***@tremily.us>
Date: 2013-06-23 (Sun, 23 Jun 2013)

Changed paths:
M Documentation/user-manual.txt

Log Message:
-----------
user-manual: Update download size for Git and the kernel

They've grown since d19fbc3 (Documentation: add git user's manual,
2007-01-07) when the stats were initially added. I've rounded
download sizes up to the nearest multiple of ten MiB to decrease the
precision and give a bit of growing room. Exact sizes:

$ git clone git://git.kernel.org/pub/scm/git/git.git
Initialized empty Git repository in /tmp/git/.git/
remote: Counting objects: 156872, done.
remote: Compressing objects: 100% (40826/40826), done.
remote: Total 156872 (delta 115322), reused 155492 (delta 114094)
Receiving objects: 100% (156872/156872), 37.29 MiB | 7.54 MiB/s, done.
Resolving deltas: 100% (115322/115322), done.

$ git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
Initialized empty Git repository in /tmp/linux/.git/
remote: Counting objects: 3057404, done.
remote: Compressing objects: 100% (474769/474769), done.
Receiving objects: 100% (3057404/3057404), 634.33 MiB | 27.95 MiB/s, done.
remote: Total 3057404 (delta 2570385), reused 3040910 (delta 2554408)
Resolving deltas: 100% (2570385/2570385), done.
Checking out files: 100% (43012/43012), done.

Signed-off-by: W. Trevor King <***@tremily.us>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 517cd55fd51ebf4c6c20597055ff191fefe5dda0
https://github.com/msysgit/git/commit/517cd55fd51ebf4c6c20597055ff191fefe5dda0
Author: Thomas Rast <***@inf.ethz.ch>
Date: 2013-06-23 (Sun, 23 Jun 2013)

Changed paths:
M t/t0000-basic.sh
M t/test-lib.sh

Log Message:
-----------
test-lib: self-test that --verbose works

t0000 contains some light self-tests of test-lib.sh, but --verbose was
not covered. Add a test.

The only catch is that the presence of a test harness influences the
output (specifically, the presence of some empty lines). So we need
to unset TEST_HARNESS or set it to a known value. Leaving it unset
leads to spurious test failures in the final summary, which come from
the subtest. So we always set it.

Signed-off-by: Thomas Rast <***@inf.ethz.ch>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: ff09af3fb8f5bede0de523723bbd00d6ef2ab71e
https://github.com/msysgit/git/commit/ff09af3fb8f5bede0de523723bbd00d6ef2ab71e
Author: Thomas Rast <***@inf.ethz.ch>
Date: 2013-06-23 (Sun, 23 Jun 2013)

Changed paths:
M t/README
M t/t0000-basic.sh
M t/test-lib.sh

Log Message:
-----------
test-lib: verbose mode for only tests matching a pattern

With the new --verbose-only=<pattern> option, one can enable --verbose
at a per-test granularity. The pattern is matched against the test
number, e.g.

./t0000-basic.sh --verbose-only='2[0-2]'

to see only the full output of test 20-22, while showing the rest in the
one-liner format.

As suggested by Jeff King, this takes care to wrap the entire
test_expect_* block, but nothing else, in the verbose toggling. We
can use the test_start/end functions from the previous commit for the
purpose.

This is arguably not *too* useful on its own, but makes the next patch
easier to follow.

Helped-by: Jeff King <***@peff.net>
Signed-off-by: Thomas Rast <***@inf.ethz.ch>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 5dfc368f5ec4c448cf3c76908b4c0e77cb4b902a
https://github.com/msysgit/git/commit/5dfc368f5ec4c448cf3c76908b4c0e77cb4b902a
Author: Thomas Rast <***@inf.ethz.ch>
Date: 2013-06-23 (Sun, 23 Jun 2013)

Changed paths:
M t/README
M t/test-lib.sh
M t/valgrind/valgrind.sh

Log Message:
-----------
test-lib: valgrind for only tests matching a pattern

With the new --valgrind-only=<pattern> option, one can enable
--valgrind at a per-test granularity, exactly analogous to
--verbose-only from the previous commit.

The options are wired such that --valgrind implies --verbose (as
before), but --valgrind-only=<pattern> implies
--verbose-only=<pattern> unless --verbose is also in effect.

Signed-off-by: Thomas Rast <***@inf.ethz.ch>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: e939e15d241e942662b9f88f6127ab470ab0a0b9
https://github.com/msysgit/git/commit/e939e15d241e942662b9f88f6127ab470ab0a0b9
Author: Thomas Rast <***@inf.ethz.ch>
Date: 2013-06-23 (Sun, 23 Jun 2013)

Changed paths:
M t/test-lib.sh

Log Message:
-----------
test-lib: allow prefixing a custom string before "ok N" etc.

This is not really meant for external use, and thus not documented. It
allows the next commit to neatly distinguish between sub-tests and the
main run.

The format is intentionally not valid TAP. The use in the next commit
would not result in anything valid either way, and it seems better to
make it obvious.

Signed-off-by: Thomas Rast <***@inf.ethz.ch>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: ad0e6233320b004f0d686f6887c803e508607bd2
https://github.com/msysgit/git/commit/ad0e6233320b004f0d686f6887c803e508607bd2
Author: Thomas Rast <***@inf.ethz.ch>
Date: 2013-06-23 (Sun, 23 Jun 2013)

Changed paths:
M t/test-lib.sh

Log Message:
-----------
test-lib: support running tests under valgrind in parallel

With the new --valgrind-parallel=<n> option, we support running the
tests in a single test script under valgrind in parallel using 'n'
processes.

This really follows the dumbest approach possible, as follows:

* We spawn the test script 'n' times, using a throw-away
TEST_OUTPUT_DIRECTORY. Each of the instances is given options that
ensures that it only runs every n-th test under valgrind, but
together they cover the entire range.

* We add up the numbers from the individual tests, and provide the
usual output.

This is really a gross hack at this point, and should be improved. In
particular we should keep the actual outputs somewhere more easily
discoverable, and summarize them to the user.

Nevertheless, this is already workable and gives a speedup of more
than 2 on a dual-core (hyperthreaded) machine, using n=4. This is
expected since the overhead of valgrind is so big (on the order of 20x
under good conditions, and a large startup overhead at every git
invocation) that redundantly running the non-valgrind tests in between
is not that expensive.

Helped-by: Jeff King <***@peff.net>
Signed-off-by: Thomas Rast <***@inf.ethz.ch>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: e5c29097826be86e2f18139491cdf9c830c7fa3e
https://github.com/msysgit/git/commit/e5c29097826be86e2f18139491cdf9c830c7fa3e
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-23 (Sun, 23 Jun 2013)

Changed paths:
M git-add--interactive.perl

Log Message:
-----------
add -i: add extra options at the right place in "diff" command line

Appending "--diff-algorithm=histogram" at the end of canned command
line for various modes of "diff" is correct for most of them but not
for "stash" that has a non-option already wired in, like so:

'stash' => {
DIFF => 'diff-index -p HEAD',

Appending an extra option after non-option may happen to work due to
overly lax command line parser, but that is not something we should
rely on. Instead, splice in the extra argument immediately after the
command name (i.e. 'diff-index', 'diff-files', etc.).

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


Commit: 1a22bd31f0a5130ce6c934951a5526ceb774c2be
https://github.com/msysgit/git/commit/1a22bd31f0a5130ce6c934951a5526ceb774c2be
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-23 (Sun, 23 Jun 2013)

Changed paths:
M Documentation/config.txt
M builtin/commit.c
M t/t7508-status.sh

Log Message:
-----------
Merge branch 'jg/status-config'

"git status" learned status.branch and status.short configuration
variables to use --branch and --short options by default (override
with --no-branch and --no-short options from the command line).

* jg/status-config:
status: introduce status.branch to enable --branch by default
status: introduce status.short to enable --short by default


Commit: 352e86e5431509b6834b6d22d139356b6ba6e1b9
https://github.com/msysgit/git/commit/352e86e5431509b6834b6d22d139356b6ba6e1b9
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-23 (Sun, 23 Jun 2013)

Changed paths:
M contrib/completion/git-prompt.sh

Log Message:
-----------
Merge branch 'rr/prompt-rebase-breakage-fix'

* rr/prompt-rebase-breakage-fix:
prompt: squelch error output from cat


Commit: afaa2a479d4994b0e98847f95754f8c3536a662a
https://github.com/msysgit/git/commit/afaa2a479d4994b0e98847f95754f8c3536a662a
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-23 (Sun, 23 Jun 2013)

Changed paths:
M git-rebase.sh
M t/t3420-rebase-autostash.sh

Log Message:
-----------
Merge branch 'rr/rebase-autostash'

* rr/rebase-autostash:
rebase: finish_rebase() in noop rebase
rebase: finish_rebase() in fast-forward rebase
rebase: guard against missing files in read_basic_state()


Commit: 7f031ed5aba17d2abdfaadf89c6da6ba74137a21
https://github.com/msysgit/git/commit/7f031ed5aba17d2abdfaadf89c6da6ba74137a21
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-23 (Sun, 23 Jun 2013)

Changed paths:
M contrib/mw-to-git/t/test-gitmw-lib.sh
M contrib/mw-to-git/t/test.config

Log Message:
-----------
Merge branch 'bp/remote-mw-tests'

* bp/remote-mw-tests:
git-remote-mediawiki: remove hardcoded version number in the test suite


Commit: 39abbd38d82104e3873af478e7ba509fca3e08af
https://github.com/msysgit/git/commit/39abbd38d82104e3873af478e7ba509fca3e08af
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-23 (Sun, 23 Jun 2013)

Changed paths:
A contrib/mw-to-git/.perlcriticrc
M contrib/mw-to-git/Makefile
M contrib/mw-to-git/git-remote-mediawiki.perl

Log Message:
-----------
Merge branch 'cm/remote-mediawiki-perlcritique'

* cm/remote-mediawiki-perlcritique: (31 commits)
git-remote-mediawiki: make error message more precise
git-remote-mediawiki: add a perlcritic rule in Makefile
git-remote-mediawiki: add a .perlcriticrc file
git-remote-mediawiki: clearly rewrite double dereference
git-remote-mediawiki: fix a typo ("mediwiki" instead of "mediawiki")
git-remote-mediawiki: put non-trivial numeric values in constants.
git-remote-mediawiki: don't use quotes for empty strings
git-remote-mediawiki: replace "unless" statements with negated "if" statements
git-remote-mediawiki: brace file handles for print for more clarity
git-remote-mediawiki: modify strings for a better coding-style
git-remote-mediawiki: put long code into a subroutine
git-remote-mediawiki: remove import of unused open2
git-remote-mediawiki: check return value of open
git-remote-mediawiki: assign a variable as undef and make proper indentation
git-remote-mediawiki: rename a variable ($last) which has the name of a keyword
git-remote-mediawiki: remove unused variable $entry
git-remote-mediawiki: turn double-negated expressions into simple expressions
git-remote-mediawiki: change the name of a variable
git-remote-mediawiki: add newline in the end of die() error messages
git-remote-mediawiki: change style in a regexp
...


Commit: 23983a473dc889cfba8a64f040942298a6f5f99a
https://github.com/msysgit/git/commit/23983a473dc889cfba8a64f040942298a6f5f99a
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-23 (Sun, 23 Jun 2013)

Changed paths:
M t/lib-httpd/apache.conf

Log Message:
-----------
Merge branch 'jk/apache-test-for-2.4'

* jk/apache-test-for-2.4:
lib-httpd/apache.conf: check version only after mod_version loads
t/lib-httpd/apache.conf: configure an MPM module for apache 2.4
t/lib-httpd/apache.conf: load compat access module in apache 2.4
t/lib-httpd/apache.conf: load extra auth modules in apache 2.4
t/lib-httpd/apache.conf: do not use LockFile in apache >= 2.4


Commit: ee64e345b1ac13cbb9c6a2343453fa3fc798367a
https://github.com/msysgit/git/commit/ee64e345b1ac13cbb9c6a2343453fa3fc798367a
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-23 (Sun, 23 Jun 2013)

Changed paths:
M sha1_file.c
M t/t5303-pack-corruption-resilience.sh

Log Message:
-----------
Merge branch 'jk/unpack-entry-fallback-to-another'

* jk/unpack-entry-fallback-to-another:
unpack_entry: do not die when we fail to apply a delta
t5303: drop "count=1" from corruption dd


Commit: 8ff80a2f0514080a741c19532a094f1fa79dc8e2
https://github.com/msysgit/git/commit/8ff80a2f0514080a741c19532a094f1fa79dc8e2
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-23 (Sun, 23 Jun 2013)

Changed paths:
M t/lib-rebase.sh
M t/t3400-rebase.sh
R t/t3401-rebase-partial.sh
M t/t3404-rebase-interactive.sh
M t/t3406-rebase-message.sh
M t/t3409-rebase-preserve-merges.sh
A t/t3421-rebase-topology-linear.sh
A t/t3425-rebase-topology-merges.sh

Log Message:
-----------
Merge branch 'mz/rebase-tests'

* mz/rebase-tests:
rebase topology tests: fix commit names on case-insensitive file systems
tests: move test for rebase messages from t3400 to t3406
t3406: modernize style
add tests for rebasing merged history
add tests for rebasing root
add tests for rebasing of empty commits
add tests for rebasing with patch-equivalence present
add simple tests of consistency across rebase types


Commit: 1f3a412dfaf2d12583e3286c6d20b403da8cc963
https://github.com/msysgit/git/commit/1f3a412dfaf2d12583e3286c6d20b403da8cc963
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-23 (Sun, 23 Jun 2013)

Changed paths:
M Documentation/RelNotes/1.8.4.txt

Log Message:
-----------
Update draft release notes to 1.8.4

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


Commit: 4fe00b4f0ab148de78db18790955d5e381377b14
https://github.com/msysgit/git/commit/4fe00b4f0ab148de78db18790955d5e381377b14
Author: SZEDER Gábor <***@ira.uka.de>
Date: 2013-06-23 (Sun, 23 Jun 2013)

Changed paths:
M t/t9903-bash-prompt.sh

Log Message:
-----------
bash prompt: fix redirection coding style in tests

Use '>file' instead of '> file', in accordance with the coding
guidelines.

Signed-off-by: SZEDER Gábor <***@ira.uka.de>


Commit: 7412290cc4b5aa0efc205f81e4775dd7df9ea9d5
https://github.com/msysgit/git/commit/7412290cc4b5aa0efc205f81e4775dd7df9ea9d5
Author: SZEDER Gábor <***@ira.uka.de>
Date: 2013-06-23 (Sun, 23 Jun 2013)

Changed paths:
M t/t9903-bash-prompt.sh

Log Message:
-----------
bash prompt: use 'write_script' helper in interactive rebase test

Helped-by: Jeff King <***@peff.net>
Signed-off-by: SZEDER Gábor <***@ira.uka.de>


Commit: 87a70e4ce8bb3bdbb3048a5eb837f6b5b2eff8f9
https://github.com/msysgit/git/commit/87a70e4ce8bb3bdbb3048a5eb837f6b5b2eff8f9
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-06-23 (Sun, 23 Jun 2013)

Changed paths:
M Documentation/config.txt

Log Message:
-----------
config doc: rewrite push.default section

4d35924e (Merge branch 'rr/triangle', 2013-04-07) introduced support
for triangular workflows, but the push.default values still assume
central workflows.

Rewrite the descriptions of `nothing`, `current`, `upstream` and
`matching` for greater clarity, and explicitly explain how they
should behave in triangular workflows.

Leave `simple` as it is for the moment, as we plan to change its
meaning to accommodate triangular workflows in a later patch.

Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 4b03df210f77ac84ebed324c5d031f32872aaf0b
https://github.com/msysgit/git/commit/4b03df210f77ac84ebed324c5d031f32872aaf0b
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-06-23 (Sun, 23 Jun 2013)

Changed paths:
M git-rebase.sh

Log Message:
-----------
rebase: use a better reflog message

Now that the "checkout" invoked internally from "rebase" knows to
honor GIT_REFLOG_ACTION, we can start to use it to write a better
reflog message when "rebase anotherbranch", "rebase --onto branch",
etc. internally checks out the new fork point. We will write:

rebase: checkout master

instead of the old

rebase

Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 26cd160cb15635afd1c2937a3c15cfb256758323
https://github.com/msysgit/git/commit/26cd160cb15635afd1c2937a3c15cfb256758323
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-06-23 (Sun, 23 Jun 2013)

Changed paths:
M git-rebase--interactive.sh
M t/t3404-rebase-interactive.sh

Log Message:
-----------
rebase -i: use a better reflog message

Now that the "checkout" invoked internally from "rebase -i" knows to
honor GIT_REFLOG_ACTION, we can start to use it to write a better
reflog message when "rebase anotherbranch", "rebase --onto branch",
etc. internally checks out the new fork point. We will write:

rebase -i: checkout master

instead of the old

rebase -i

As all the calls git-rebase--interactive make to underlying git
commands that leave reflog messages are preceded by the internal
comment_for_reflog helper function, which uses the original value of
the GIT_REFLOG_ACTION variable it saw when it first started, the new
assignments to GIT_REFLOG_ACTION actively contaminate the value of
the variable, knowing that it will be reset to a sane value before
it is used again. This does not generally hold true but it should
suffice for now.

Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 908a0e6b98e5a7c4b299b3643823bdefb4fa512e
https://github.com/msysgit/git/commit/908a0e6b98e5a7c4b299b3643823bdefb4fa512e
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-24 (Mon, 24 Jun 2013)

Changed paths:
M Documentation/config.txt
M builtin/commit.c
M t/t7508-status.sh

Log Message:
-----------
Revert "Merge branch 'jg/status-config'"

This reverts commit 1a22bd31f0a5130ce6c934951a5526ceb774c2be, reversing
changes made to 3e7a5b489e45ae8a3a0b222893d58b172d883136.

It makes it impossible to "git commit" when status.short is set, and
also "git status --porcelain" output is affected by status.branch.


Commit: c9a102e81ffedde3fed4b88199ea13a3a5ee5f5d
https://github.com/msysgit/git/commit/c9a102e81ffedde3fed4b88199ea13a3a5ee5f5d
Author: SZEDER Gábor <***@ira.uka.de>
Date: 2013-06-24 (Mon, 24 Jun 2013)

Changed paths:
M t/t9902-completion.sh
M t/t9903-bash-prompt.sh

Log Message:
-----------
completion, bash prompt: move __gitdir() tests to completion test suite

Currently __gitdir() is duplicated in the git completion and prompt
scripts, while its tests are in the prompt test suite. This patch
series is about to change __git_ps1() in a way that it won't need
__gitdir() anymore and __gitdir() will be removed from the prompt
script.

So move all __gitdir() tests from the prompt test suite over to the
completion test suite. Update the setup tests so that they perform
only those steps that are necessary for each test suite.

Signed-off-by: SZEDER Gábor <***@ira.uka.de>


Commit: 868dc1acecdb8b661e415c6c5f09db5370b35fa7
https://github.com/msysgit/git/commit/868dc1acecdb8b661e415c6c5f09db5370b35fa7
Author: SZEDER Gábor <***@ira.uka.de>
Date: 2013-06-24 (Mon, 24 Jun 2013)

Changed paths:
M t/t9903-bash-prompt.sh

Log Message:
-----------
bash prompt: add a test for symbolic link symbolic refs

Signed-off-by: SZEDER Gábor <***@ira.uka.de>


Commit: e8f21caf94287d838cfffe8301b28fdc45480ac8
https://github.com/msysgit/git/commit/e8f21caf94287d838cfffe8301b28fdc45480ac8
Author: SZEDER Gábor <***@ira.uka.de>
Date: 2013-06-24 (Mon, 24 Jun 2013)

Changed paths:
M contrib/completion/git-prompt.sh
M t/t9903-bash-prompt.sh

Log Message:
-----------
bash prompt: print unique detached HEAD abbreviated object name

When describing a detached HEAD according to the $GIT_PS1_DESCRIBE
environment variable fails, __git_ps1() runs 'cut -c1-7 .git/HEAD' to
show the 7 hexdigits abbreviated commit object name in the prompt.
Obviously, this neither respects core.abbrev nor produces a unique
object name.

Fix this by using 'git rev-parse --short HEAD' instead and adjust the
corresponding test to use non-standard number of hexdigits.

Signed-off-by: SZEDER Gábor <***@ira.uka.de>


Commit: 96ea404757ac3f97335277062a7d7c6e8975cc4f
https://github.com/msysgit/git/commit/96ea404757ac3f97335277062a7d7c6e8975cc4f
Author: SZEDER Gábor <***@ira.uka.de>
Date: 2013-06-24 (Mon, 24 Jun 2013)

Changed paths:
M contrib/completion/git-prompt.sh

Log Message:
-----------
bash prompt: return early from __git_ps1() when not in a git repository

... to gain one level of indentation for the bulk of the function.

(The patch looks quite unreadable, you'd better check it with 'git
diff -w'.)

Signed-off-by: SZEDER Gábor <***@ira.uka.de>


Commit: 511ad159049fc64a13ef3e9565cc9634acb6404b
https://github.com/msysgit/git/commit/511ad159049fc64a13ef3e9565cc9634acb6404b
Author: SZEDER Gábor <***@ira.uka.de>
Date: 2013-06-24 (Mon, 24 Jun 2013)

Changed paths:
M contrib/completion/git-completion.bash
M contrib/completion/git-prompt.sh

Log Message:
-----------
bash prompt: run 'git rev-parse --git-dir' directly instead of __gitdir()

__git_ps1() finds out the path to the repository by using the
__gitdir() helper function. __gitdir() is basically just a wrapper
around 'git rev-parse --git-dir', extended with support for
recognizing a remote repository given as argument, to use the path
given on the command line, and with a few shortcuts to recognize a git
repository in cwd or at $GIT_DIR quickly without actually running 'git
rev-parse'. However, the former two is only necessary for the
completion script but makes no sense for the bash prompt, while the
latter shortcuts are performance optimizations __git_ps1() can do
without (they just avoid the overhead of fork()+exec()ing a git
process).

Run 'git rev-parse --git-dir' directly in __git_ps1(), because it will
allow this patch series to combine several $(git rev-parse ...)
command substitutions in the main code path, and the overall
performance benefit will far outweigh the loss of those few shortcuts
in __gitdir(). Furthermore, since __gitdir() is not needed anymore
for the prompt, remove it from the prompt script finally eliminating
its duplication between the prompt and completion scripts. Also
remove the comment from the completion script warning about this code
duplication.

Signed-off-by: SZEDER Gábor <***@ira.uka.de>


Commit: b91b935f04e8dcb1cc9f247627fbd0346ce949f4
https://github.com/msysgit/git/commit/b91b935f04e8dcb1cc9f247627fbd0346ce949f4
Author: SZEDER Gábor <***@ira.uka.de>
Date: 2013-06-24 (Mon, 24 Jun 2013)

Changed paths:
M contrib/completion/git-prompt.sh

Log Message:
-----------
bash prompt: use bash builtins to find out rebase state

During an ongoing interactive rebase __git_ps1() finds out the name of
the rebased branch, the total number of patches and the number of the
current patch by executing a '$(cat .git/rebase-merge/<FILE>)' command
substitution for each. That is not quite the most efficient way to
read single line single word files, because it imposes the overhead of
fork()ing a subshell and fork()+exec()ing 'cat' several times.

Use the 'read' bash builtin instead to avoid those overheads.

Signed-off-by: SZEDER Gábor <***@ira.uka.de>


Commit: 3a43c4b5bd19528229ef36b28d648d5ac98f15f1
https://github.com/msysgit/git/commit/3a43c4b5bd19528229ef36b28d648d5ac98f15f1
Author: SZEDER Gábor <***@ira.uka.de>
Date: 2013-06-24 (Mon, 24 Jun 2013)

Changed paths:
M contrib/completion/git-prompt.sh

Log Message:
-----------
bash prompt: use bash builtins to find out current branch

__git_ps1() runs the '$(git symbolic-ref HEAD)' command substitution
to find out whether we are on a branch and to find out the name of
that branch. This imposes the overhead of fork()ing a subshell and
fork()+exec()ing a git process.

Since HEAD is in most cases a single-line file and the symbolic ref
format is quite simple to recognize and parse, read and parse it using
only bash builtins, thereby sparing all that fork()+exec() overhead.
Don't display the git prompt if reading HEAD fails, because a readable
HEAD is required for a git repository. HEAD can also be a symlink
symbolic ref (due to 'core.preferSymlinkRefs'), so use bash builtins
for reading HEAD only when HEAD is not a symlink.

Signed-off-by: SZEDER Gábor <***@ira.uka.de>


Commit: efaa0c153297f551a42fd1e21f28f51f4924f316
https://github.com/msysgit/git/commit/efaa0c153297f551a42fd1e21f28f51f4924f316
Author: SZEDER Gábor <***@ira.uka.de>
Date: 2013-06-24 (Mon, 24 Jun 2013)

Changed paths:
M contrib/completion/git-prompt.sh

Log Message:
-----------
bash prompt: combine 'git rev-parse' executions in the main code path

There are a couple of '$(git rev-parse --<opt>)' command substitutions
in __git_ps1() and three of them are executed in the main code path:

- the first to get the path to the .git directory ('--git-dir'),
- the second to check whether we're inside the .git directory
('--is-inside-git-dir'),
- and the last, depending on the results of the second, either
* to check whether it's a bare repo ('--is-bare-repository'), or
* to check whether inside a work tree ('--is-inside-work-tree').

Naturally, this imposes the overhead of fork()ing three subshells and
fork()+exec()ing three git commands.

Combine these four 'git rev-parse' queries into a single one and use
bash parameter expansions to parse the combined output, i.e. to
separate the path to the .git directory from the true/false of
'--is-inside-git-dir', etc. This way we can eliminate two of the
three subshells and git commands.

Signed-off-by: SZEDER Gábor <***@ira.uka.de>


Commit: e3e0b9378b6e51ea50c023d92d4d2a1f4d4cc676
https://github.com/msysgit/git/commit/e3e0b9378b6e51ea50c023d92d4d2a1f4d4cc676
Author: SZEDER Gábor <***@ira.uka.de>
Date: 2013-06-24 (Mon, 24 Jun 2013)

Changed paths:
M contrib/completion/git-prompt.sh
M t/t9903-bash-prompt.sh

Log Message:
-----------
bash prompt: combine 'git rev-parse' for detached head

When describing a detached HEAD according to the $GIT_PS1_DESCRIBE
environment variable fails, __git_ps1() now runs the '$(git rev-parse
--short HEAD)' command substitution to get the abbreviated detached
HEAD commit object name. This imposes the overhead of fork()ing a
subshell and fork()+exec()ing a git process.

Avoid this overhead by combining this command substitution with the
"main" 'git rev-parse' execution for getting the path to the .git
directory & co. This means that we'll look for the abbreviated commit
object name even when it's not necessary, because we're on a branch or
the detached HEAD can be described. It doesn't matter, however,
because once 'git rev-parse' is up and running to fulfill all those
other queries, the additional overhead of looking for the abbreviated
commit object name is not measurable because it's lost in the noise.

There is a caveat, however, when we are on an unborn branch, because
in that case HEAD doesn't point to a valid commit, hence the query for
the abbreviated commit object name fails. Therefore, '--short HEAD'
must be the last options to 'git rev-parse' in order to get all the
other necessary information for the prompt even on an unborn branch.
Furthermore, in that case, and in that case only, 'git rev-parse'
doesn't output the last line containing the abbreviated commit object
name, obviously, so we have to take care to only parse it if 'git
rev-parse' exited without any error.

Although there are tests already excercising __git_ps1() on unborn
branches, they all do so implicitly. Add a test that checks this
explicitly.

Signed-off-by: SZEDER Gábor <***@ira.uka.de>


Commit: 0f37c125814afc8ad2fa43fecd8b200216ebfab5
https://github.com/msysgit/git/commit/0f37c125814afc8ad2fa43fecd8b200216ebfab5
Author: SZEDER Gábor <***@ira.uka.de>
Date: 2013-06-24 (Mon, 24 Jun 2013)

Changed paths:
M contrib/completion/git-prompt.sh

Log Message:
-----------
bash prompt: use bash builtins to check for unborn branch for dirty state

When the dirty work tree and index status indicator is enabled,
__git_ps1() checks for changes in the index by running 'git diff-index
--cached --quiet HEAD --' and looking at its exit code. However, that
makes sense only when HEAD points to a valid commit: on an unborn
branch the failure of said command would be caused by the invalid
HEAD, not by changes in the index. Therefore, __git_ps1() first
checks for a valid HEAD by running 'git rev-parse --quiet --verify
HEAD'.

Since the previous patch we implicitly check HEAD's validity by
running 'git rev-parse ... --short HEAD', making the dirty status
indicator's 'git rev-parse' check redundant. It's sufficient to check
for non-emptyness of the variable holding the abbreviated commit
object name, thereby sparing the overhead of fork()+exec()ing a git
process.

Signed-off-by: SZEDER Gábor <***@ira.uka.de>


Commit: dd0b72cbd9e64c782a31c6acfca2ba9cf2ffb266
https://github.com/msysgit/git/commit/dd0b72cbd9e64c782a31c6acfca2ba9cf2ffb266
Author: SZEDER Gábor <***@ira.uka.de>
Date: 2013-06-24 (Mon, 24 Jun 2013)

Changed paths:
M contrib/completion/git-prompt.sh
M t/t9903-bash-prompt.sh

Log Message:
-----------
bash prompt: use bash builtins to check stash state

When the environment variable $GIT_PS1_SHOWSTASHSTATE is set
__git_ps1() checks the presence of stashes by running 'git rev-parse
--verify refs/stash'. This command not only checks that the
'refs/stash' ref exists but also, well, verifies that it's a valid
ref.

However, we don't need to be that thorough for the bash prompt. We
can omit that verification and only check whether 'refs/stash' exists
or not. Since 'git pack-refs' never packs 'refs/stash', it's a matter
of checking the existence of a ref file. Perform this check using
only bash builtins to spare the overhead of fork()+exec()ing a git
process.

Also run 'git pack-refs --all' in the corresponding test to document
that the prompt script depends on 'git pack-refs' not packing
'refs/stash' and to catch possible breakages should this behavior ever
change.

Signed-off-by: SZEDER Gábor <***@ira.uka.de>


Commit: 14d7649748265fe9fe991439ca6ae0c9db7a27ab
https://github.com/msysgit/git/commit/14d7649748265fe9fe991439ca6ae0c9db7a27ab
Author: SZEDER Gábor <***@ira.uka.de>
Date: 2013-06-24 (Mon, 24 Jun 2013)

Changed paths:
M contrib/completion/git-prompt.sh

Log Message:
-----------
bash prompt: avoid command substitution when checking for untracked files

When enabled, the bash prompt can indicate the presence of untracked
files with a '%' sign. __git_ps1() checks for untracked files by running the
'$(git ls-files --others --exclude-standard)' command substitution,
and displays the indicator when there is no output.

Avoid this command substitution by additionally passing
'--error-unmatch *', and checking the command's return value.

Signed-off-by: SZEDER Gábor <***@ira.uka.de>


Commit: 69a8141a5d81925b7e08cb228535e9ea4a7a02e3
https://github.com/msysgit/git/commit/69a8141a5d81925b7e08cb228535e9ea4a7a02e3
Author: SZEDER Gábor <***@ira.uka.de>
Date: 2013-06-24 (Mon, 24 Jun 2013)

Changed paths:
M contrib/completion/git-prompt.sh

Log Message:
-----------
bash prompt: avoid command substitution when finalizing gitstring

Before setting $PS1, __git_ps1() uses a command substitution to
redirect the output from a printf into a variable. Spare the overhead
of fork()ing a subshell by using 'printf -v <var>' to directly assign
the output to that variable.

zsh's printf doesn't support the '-v <var>' option, so stick with the
command substitution when under zsh.

Signed-off-by: SZEDER Gábor <***@ira.uka.de>


Commit: a694258457e51f20e92854075914c8d3a4593367
https://github.com/msysgit/git/commit/a694258457e51f20e92854075914c8d3a4593367
Author: SZEDER Gábor <***@ira.uka.de>
Date: 2013-06-24 (Mon, 24 Jun 2013)

Changed paths:
M contrib/completion/git-prompt.sh

Log Message:
-----------
bash prompt: mention that PROMPT_COMMAND mode is faster

__git_ps1() is usually added to the prompt inside a command
substitution, imposing the overhead of fork()ing a subshell. Using
__git_ps1() for $PROMPT_COMMAND is slightly faster, because it avoids
that command substitution.

Mention this in the comments about setting up the git prompt.

The whole series speeds up the bash prompt on Windows/MSysGit
considerably. Here are some timing results in three scenarios, each
repeated 10 times:

At the top of the work tree, before:

$ time for i in {0..9} ; do prompt="$(__git_ps1)" ; done

real 0m1.716s
user 0m0.301s
sys 0m0.772s

After:

real 0m0.687s
user 0m0.075s
sys 0m0.396s

After, from $PROMPT_COMMAND:

$ time for i in {0..9} ; do __git_ps1 '\h:\w' '$ ' ; done

real 0m0.546s
user 0m0.075s
sys 0m0.181s

At the top of the work tree, detached head, before:

real 0m2.574s
user 0m0.376s
sys 0m1.207s

After:

real 0m1.139s
user 0m0.151s
sys 0m0.500s

After, from $PROMPT_COMMAND:

real 0m1.030s
user 0m0.245s
sys 0m0.336s

In a subdirectory, during rebase, stash status indicator enabled,
before:

real 0m3.557s
user 0m0.495s
sys 0m1.767s

After:

real 0m0.717s
user 0m0.120s
sys 0m0.300s

After, from $PROMPT_COMMAND:

real 0m0.577s
user 0m0.047s
sys 0m0.258s

On Linux the speedup ratio is comparable to Windows, but overall it
was about an order of magnitude faster to begin with. The last case
from above, repeated 100 times, before:

$ time for i in {0..99} ; do prompt="$(__git_ps1)" ; done

real 0m2.806s
user 0m0.180s
sys 0m0.264s

After:

real 0m0.857s
user 0m0.020s
sys 0m0.028s

Signed-off-by: SZEDER Gábor <***@ira.uka.de>


Commit: ed2b18292bfeedc98c9e2b6bd8a35d8001dab2fc
https://github.com/msysgit/git/commit/ed2b18292bfeedc98c9e2b6bd8a35d8001dab2fc
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-06-24 (Mon, 24 Jun 2013)

Changed paths:
M Documentation/config.txt
M builtin/push.c

Log Message:
-----------
push: change `simple` to accommodate triangular workflows

When remote.pushdefault or branch.<name>.pushremote is set to a
remote that is different from where you usually fetch from (i.e. a
triangular workflow), master@{u} != origin, and push.default is set
to `upstream` or `simple` would fail with this error:

$ git push
fatal: You are pushing to remote 'origin', which is not the upstream of
your current branch 'master', without telling me what to push
to update which remote branch.

The very name of "upstream" indicates that it is only suitable for
use in central workflows; let us not even attempt to give it a new
meaning in triangular workflows, and error out as before.

However, the `simple` does not have to share this error. It is
poised to be the default for Git 2.0, and we would like it to do
something sensible in triangular workflows.

Redefine "simple" as "safer upstream" for centralized workflow as
before, but work as "current" for triangular workflow.

We may want to make it "safer current", but that is a separate
issue.

Reported-by: Leandro Lucarella <***@sociomantic.com>
Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 396243fa479cd27bef1ced2ea5a9e4cf20f85a4b
https://github.com/msysgit/git/commit/396243fa479cd27bef1ced2ea5a9e4cf20f85a4b
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-06-24 (Mon, 24 Jun 2013)

Changed paths:
M t/t5528-push-default.sh

Log Message:
-----------
t/t5528-push-default: generalize test_push_*

The setup creates two bare repositories: repo1 and repo2, but
test_push_commit() hard-codes checking in repo1 for the actual output.
Generalize it and its caller, test_push_success(), to optionally accept
a third argument to specify the name of the repository to check for
actual output. We will use this in the next patch.

Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 6e1696b7c46f02310a882b4e761a29d3a0cf278f
https://github.com/msysgit/git/commit/6e1696b7c46f02310a882b4e761a29d3a0cf278f
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-06-24 (Mon, 24 Jun 2013)

Changed paths:
M t/t5528-push-default.sh

Log Message:
-----------
t/t5528-push-default: test pushdefault workflows

Introduce test_pushdefault_workflows(), and test that all push.default
modes work with central and triangular workflows as expected.

Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 4fb5166ab5e1b83ee6211ac77d76173f881ebfdb
https://github.com/msysgit/git/commit/4fb5166ab5e1b83ee6211ac77d76173f881ebfdb
Author: Jorge Juan Garcia Garcia <Jorge-Juan.Garcia-***@ensimag.imag.fr>
Date: 2013-06-24 (Mon, 24 Jun 2013)

Changed paths:
M Documentation/config.txt
M builtin/commit.c
M t/t7508-status.sh

Log Message:
-----------
status: introduce status.short to enable --short by default

Some people always run 'git status -s'.
The configuration variable status.short allows to set it by default.

Signed-off-by: Jorge Juan Garcia Garcia <Jorge-Juan.Garcia-***@ensimag.imag.fr>
Signed-off-by: Mathieu Lienard--Mayor <Mathieu.Lienard--***@ensimag.imag.fr>
Reviewed-by: Matthieu Moy <***@grenoble-inp.fr>
Signed-off-by: Matthieu Moy <***@grenoble-inp.fr>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: ec85d0700faac679ec27eeacad2bcaa6d9bc8322
https://github.com/msysgit/git/commit/ec85d0700faac679ec27eeacad2bcaa6d9bc8322
Author: Jorge Juan Garcia Garcia <Jorge-Juan.Garcia-***@ensimag.imag.fr>
Date: 2013-06-24 (Mon, 24 Jun 2013)

Changed paths:
M Documentation/config.txt
M builtin/commit.c
M t/t7508-status.sh

Log Message:
-----------
status: introduce status.branch to enable --branch by default

Some people often run 'git status -b'.
The config variable status.branch allows to set it by default.

Signed-off-by: Jorge Juan Garcia Garcia <Jorge-Juan.Garcia-***@ensimag.imag.fr>
Signed-off-by: Mathieu Lienard--Mayor <Mathieu.Lienard--***@ensimag.imag.fr>
Reviewed-by: Matthieu Moy <***@grenoble-inp.fr>
Signed-off-by: Matthieu Moy <***@grenoble-inp.fr>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: f0915cbaf476d63f72c284057680809ed24fbe0d
https://github.com/msysgit/git/commit/f0915cbaf476d63f72c284057680809ed24fbe0d
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-06-24 (Mon, 24 Jun 2013)

Changed paths:
M builtin/commit.c

Log Message:
-----------
commit: make it work with status.short

With "status.short" set, it is now impossible to commit with
status.short set, because it acts like "git commit --short", and it
is impossible to differentiate between a status_format set by the
command-line option parser versus that set by the config parser.

To alleviate this problem, clear status_format as soon as the config
parser has finished its work.

Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 84b4202d804c7faec76f3eab22744b6288c63481
https://github.com/msysgit/git/commit/84b4202d804c7faec76f3eab22744b6288c63481
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-24 (Mon, 24 Jun 2013)

Changed paths:
M builtin/commit.c
M t/t7508-status.sh
M wt-status.c

Log Message:
-----------
status/commit: make sure --porcelain is not affected by user-facing config

The recent addition of status.branch started affecting what is shown
when "git status --porcelain" is run by mistake. Identify the
configuration items that should be ignored under "--porcelain"
option, introduce a "deferred config" mechanism to keep the values
read from the configuration, and decide what value to use only after
we read both from configuration and command line.

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


Commit: 0039d60c3fdf0e01ad7e6fce59b2522764f2edc8
https://github.com/msysgit/git/commit/0039d60c3fdf0e01ad7e6fce59b2522764f2edc8
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-24 (Mon, 24 Jun 2013)

Changed paths:
M sequencer.c

Log Message:
-----------
Merge branch 'fc/sequencer-plug-leak'

Plug a small leak in an error codepath.

* fc/sequencer-plug-leak:
sequencer: avoid leaking message buffer when refusing to create an empty commit
sequencer: remove useless indentation


Commit: 22d94a72b3c4fa7989c4827e84ebc364a200cd76
https://github.com/msysgit/git/commit/22d94a72b3c4fa7989c4827e84ebc364a200cd76
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-24 (Mon, 24 Jun 2013)

Changed paths:
M Makefile
M builtin.h
M builtin/commit.c
M builtin/notes.c
M notes-merge.c
M notes-merge.h
A notes-utils.c
A notes-utils.h

Log Message:
-----------
Merge branch 'jh/libify-note-handling'

Make it possible to call into copy-notes API from the sequencer code.

* jh/libify-note-handling:
Move create_notes_commit() from notes-merge.c into notes-utils.c
Move copy_note_for_rewrite + friends from builtin/notes.c to notes-utils.c
finish_copy_notes_for_rewrite(): Let caller provide commit message


Commit: 8d8975aca7c2b031a2386cd8f266109a8c6e1973
https://github.com/msysgit/git/commit/8d8975aca7c2b031a2386cd8f266109a8c6e1973
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-24 (Mon, 24 Jun 2013)

Changed paths:
M Documentation/config.txt
M advice.c
M advice.h
M builtin/rm.c
M t/t3600-rm.sh

Log Message:
-----------
Merge branch 'mm/rm-coalesce-errors'

Give a single message followed by list of paths from "git rm" to
report multiple paths that cannot be removed.

* mm/rm-coalesce-errors:
rm: introduce advice.rmHints to shorten messages
rm: better error message on failure for multiple files


Commit: bc918acf708a839bbc350e014d599fdd458319ca
https://github.com/msysgit/git/commit/bc918acf708a839bbc350e014d599fdd458319ca
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-24 (Mon, 24 Jun 2013)

Changed paths:
M git-rebase.sh
M git-sh-setup.sh
M t/t3400-rebase.sh
M t/t3404-rebase-interactive.sh

Log Message:
-----------
Merge branch 'rr/rebase-sha1-by-string-query'

Allow various commit objects to be given to "git rebase" by ':/look
for this string' syntax, e.g. "git rebase --onto ':/there'".

* rr/rebase-sha1-by-string-query:
rebase: use peel_committish() where appropriate
sh-setup: add new peel_committish() helper
t/rebase: add failing tests for a peculiar revision


Commit: bd21822572d2852917abd71d030c8b2e789eb4de
https://github.com/msysgit/git/commit/bd21822572d2852917abd71d030c8b2e789eb4de
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-24 (Mon, 24 Jun 2013)

Changed paths:
M tree-walk.h
M unpack-trees.c

Log Message:
-----------
Merge branch 'rs/unpack-trees-tree-walk-conflict-field'

Code clean-up.

* rs/unpack-trees-tree-walk-conflict-field:
unpack-trees: don't shift conflicts left and right


Commit: 9a3f5986f7da15d490e8aa3977dd7384f1eef9dd
https://github.com/msysgit/git/commit/9a3f5986f7da15d490e8aa3977dd7384f1eef9dd
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-24 (Mon, 24 Jun 2013)

Changed paths:
M t/t5150-request-pull.sh

Log Message:
-----------
Merge branch 'dk/maint-t5150-dirname'

Fix a test script.

* dk/maint-t5150-dirname:
tests: allow sha1's as part of the path


Commit: 9f19e0c31043f15ad51c08a8660a3b6fb32646a1
https://github.com/msysgit/git/commit/9f19e0c31043f15ad51c08a8660a3b6fb32646a1
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-24 (Mon, 24 Jun 2013)

Changed paths:
M GIT-VERSION-GEN

Log Message:
-----------
Merge branch 'dk/version-gen-gitdir'

Allow packaging a tarball in a working tree with $GIT_DIR set elsewhere.

* dk/version-gen-gitdir:
GIT-VERSION-GEN: support non-standard $GIT_DIR path


Commit: 515cded0fbdcdd13f1190ed5bf65c296e7dcf8fe
https://github.com/msysgit/git/commit/515cded0fbdcdd13f1190ed5bf65c296e7dcf8fe
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-24 (Mon, 24 Jun 2013)

Changed paths:
M git-submodule.sh

Log Message:
-----------
Merge branch 'fg/submodule-fixup'

Code cleanup.

* fg/submodule-fixup:
git-submodule.sh: remove duplicate call to set_rev_name


Commit: c47d4380c7972bf94bd5ee425c3806398e00cb4d
https://github.com/msysgit/git/commit/c47d4380c7972bf94bd5ee425c3806398e00cb4d
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-24 (Mon, 24 Jun 2013)

Changed paths:
M Documentation/Makefile

Log Message:
-----------
Merge branch 'jk/doc-build-move-infordir-def'

Makefile cleanup.

* jk/doc-build-move-infordir-def:
Documentation/Makefile: move infodir to be with other '*dir's
Documentation/Makefile: fix spaces around assignments


Commit: 6f37238747002b8118d92bc0ec6c986a5d7e56ad
https://github.com/msysgit/git/commit/6f37238747002b8118d92bc0ec6c986a5d7e56ad
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-24 (Mon, 24 Jun 2013)

Changed paths:
M git-mergetool--lib.sh

Log Message:
-----------
Merge branch 'jk/mergetool-lib-refactor'

Code cleanup.

* jk/mergetool-lib-refactor:
mergetool--lib: refactor {diff,merge}_cmd logic


Commit: 869577e5fe8d4307dd39d2751cf3c5a1896d3426
https://github.com/msysgit/git/commit/869577e5fe8d4307dd39d2751cf3c5a1896d3426
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-24 (Mon, 24 Jun 2013)

Changed paths:
M Documentation/git-config.txt

Log Message:
-----------
Merge branch 'nk/config-local-doc'

* nk/config-local-doc:
config: Add description of --local option


Commit: 001d1160541a6dcfceb82a0a900478e315a129eb
https://github.com/msysgit/git/commit/001d1160541a6dcfceb82a0a900478e315a129eb
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-24 (Mon, 24 Jun 2013)

Changed paths:
M t/t7512-status-help.sh
M wt-status.c

Log Message:
-----------
Merge branch 'rt/cherry-pick-continue-advice-in-status'

* rt/cherry-pick-continue-advice-in-status:
wt-status: give better advice when cherry-pick is in progress


Commit: 76689ab83b65636a01dd34ecfb9c1382aa6e959a
https://github.com/msysgit/git/commit/76689ab83b65636a01dd34ecfb9c1382aa6e959a
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-24 (Mon, 24 Jun 2013)

Changed paths:
M git-am.sh
M t/t4150-am.sh

Log Message:
-----------
Merge branch 'rr/am-quit-empty-then-abort-fix'

Recent "rebase --autostash" update made it impossible to recover
with "git am --abort" from a repository where "git am" without mbox
was run by mistake and then was killed with "^C".

* rr/am-quit-empty-then-abort-fix:
t/am: use test_path_is_missing() where appropriate
am: handle stray $dotest directory


Commit: 9832cb9d4dc969fbfacfd1f8940fcbdec18bb930
https://github.com/msysgit/git/commit/9832cb9d4dc969fbfacfd1f8940fcbdec18bb930
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-24 (Mon, 24 Jun 2013)

Changed paths:
M Documentation/RelNotes/1.8.4.txt

Log Message:
-----------
Update draft release notes to 1.8.4

For now, comment out the description on two "git status" UI
configuration, until the reverted topic can be resurrected.

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


Commit: 5430bb283b478991a979437a79e10dcbb6f20e28
https://github.com/msysgit/git/commit/5430bb283b478991a979437a79e10dcbb6f20e28
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-25 (Tue, 25 Jun 2013)

Changed paths:
M diff.c
M t/t0020-crlf.sh

Log Message:
-----------
diff: demote core.safecrlf=true to core.safecrlf=warn

Otherwise the user will not be able to start to guess where in the
contents in the working tree the offending unsafe CR lies.

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


Commit: 15dd5ffb543848c914c2f3dabfedb1816bd2474d
https://github.com/msysgit/git/commit/15dd5ffb543848c914c2f3dabfedb1816bd2474d
Author: Stefan Beller <***@googlemail.com>
Date: 2013-06-25 (Tue, 25 Jun 2013)

Changed paths:
M .mailmap

Log Message:
-----------
.mailmap: Map "H.Merijn Brand" to "H. Merijn Brand"

This patch was created by searching for duplicates of email addresses
in the shortlog by
git shortlog -sne |awk '{ print $NF }' |sort |uniq -d

This will yield all email addresses, which are found multiple times within
the shortlog. We can assume that commiters having the same email address
are indeed the same person.

Signed-off-by: Stefan Beller <***@googlemail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 5e62cc14c36fa1d10a057ebe6fd2bba504422573
https://github.com/msysgit/git/commit/5e62cc14c36fa1d10a057ebe6fd2bba504422573
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-06-26 (Wed, 26 Jun 2013)

Changed paths:
M Documentation/config.txt

Log Message:
-----------
column doc: rewrite documentation for column.ui

The configuration option column.ui is very poorly documented, and it is
unclear what the defaults are, and what option can be combined with
what. Rewrite it by splitting up the options into three sections
clearly showing how COL_ENABLED, COL_LAYOUT_MASK, and COL_DENSE work.

Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 203439b2840c4c384060df2fa192994e4b6740ed
https://github.com/msysgit/git/commit/203439b2840c4c384060df2fa192994e4b6740ed
Author: Jiang Xin <***@gmail.com>
Date: 2013-06-26 (Wed, 26 Jun 2013)

Changed paths:
M t/t0060-path-utils.sh
M test-path-utils.c

Log Message:
-----------
test: add test cases for relative_path

Add subcommand "relative_path" in test-path-utils, and add test cases
in t0060.

Johannes tested an earlier version of this patch on Windows, and
found that some relative_path tests should be skipped on
Windows. This is because the bash on Windows rewrites arguments of
regular Windows programs, such as git and the test helpers, if the
arguments look like absolute POSIX paths. As a consequence, the
actual tests performed are not what the tests scripts expect.

The tests that need *not* be skipped are those where the two paths passed
to 'test-path-utils relative_path' have the same prefix and the result is
expected to be a relative path. This is because the rewriting changes
"/a/b" to "D:/Src/MSysGit/a/b", and when both inputs are extended the same
way, this just cancels out in the relative path computation.

Signed-off-by: Jiang Xin <***@gmail.com>
Helped-by: Johannes Sixt <***@kdbg.org>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: e02ca72f70ed8f0268a81f72cb3230c72e538e77
https://github.com/msysgit/git/commit/e02ca72f70ed8f0268a81f72cb3230c72e538e77
Author: Jiang Xin <***@gmail.com>
Date: 2013-06-26 (Wed, 26 Jun 2013)

Changed paths:
M cache.h
M path.c
M setup.c
M t/t0060-path-utils.sh
M test-path-utils.c

Log Message:
-----------
path.c: refactor relative_path(), not only strip prefix

Original design of relative_path() is simple, just strip the prefix
(*base) from the absolute path (*abs).

In most cases, we need a real relative path, such as: ../foo,
../../bar. That's why there is another reimplementation
(path_relative()) in quote.c.

Borrow some codes from path_relative() in quote.c to refactor
relative_path() in path.c, so that it could return real relative
path, and user can reuse this function without reimplementing
his/her own. The function path_relative() in quote.c will be
substituted, and I would use the new relative_path() function when
implementing the interactive git-clean later.

Different results for relative_path() before and after this refactor:

abs path base path relative (original) relative (refactor)
======== ========= =================== ===================
/a/b /a/b . ./
/a/b/ /a/b . ./
/a /a/b/ /a ../
/ /a/b/ / ../../
/a/c /a/b/ /a/c ../c
/x/y /a/b/ /x/y ../../x/y

a/b/ a/b/ . ./
a/b/ a/b . ./
a a/b a ../
x/y a/b/ x/y ../../x/y
a/c a/b a/c ../c

(empty) (null) (empty) ./
(empty) (empty) (empty) ./
(empty) /a/b (empty) ./
(null) (null) (null) ./
(null) (empty) (null) ./
(null) /a/b (segfault) ./

You may notice that return value "." has been changed to "./".
It is because:

* Function quote_path_relative() in quote.c will show the relative
path as "./" if abs(in) and base(prefix) are the same.

* Function relative_path() is called only once (in setup.c), and
it will be OK for the return value as "./" instead of ".".

Signed-off-by: Jiang Xin <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: ad66df2df14991e7436474d266cc6db823e6ae78
https://github.com/msysgit/git/commit/ad66df2df14991e7436474d266cc6db823e6ae78
Author: Jiang Xin <***@gmail.com>
Date: 2013-06-26 (Wed, 26 Jun 2013)

Changed paths:
M builtin/ls-files.c
M quote.c

Log Message:
-----------
quote.c: substitute path_relative with relative_path

Substitute the function path_relative in quote.c with the function
relative_path. Function relative_path can be treated as an enhanced
and more robust version of path_relative.

Outputs of path_relative and it's replacement (relative_path) are the
same for the following cases:

path prefix output of path_relative output of relative_path
======== ========= ======================= =======================
/a/b/c/ /a/b/ c/ c/
/a/b/c /a/b/ c c
/a/ /a/b/ ../ ../
/ /a/b/ ../../ ../../
/a/c /a/b/ ../c ../c
/x/y /a/b/ ../../x/y ../../x/y
a/b/c/ a/b/ c/ c/
a/ a/b/ ../ ../
x/y a/b/ ../../x/y ../../x/y
/a/b (empty) /a/b /a/b
/a/b (null) /a/b /a/b
a/b (empty) a/b a/b
a/b (null) a/b a/b

But if both of the path and the prefix are the same, or the returned
relative path should be the current directory, the outputs of both
functions are different. Function relative_path returns "./", while
function path_relative returns empty string.

path prefix output of path_relative output of relative_path
======== ========= ======================= =======================
/a/b/ /a/b/ (empty) ./
a/b/ a/b/ (empty) ./
(empty) (null) (empty) ./
(empty) (empty) (empty) ./

But the callers of path_relative can handle such cases, or never
encounter this issue at all, because:

* In function quote_path_relative, if the output of path_relative is
empty, append "./" to it, like:
if (!out->len)
strbuf_addstr(out, "./");

* Another caller is write_name_quoted_relative, which is only used
by builtin/ls-files.c. git-ls-files only show files, so path of
files will never be identical with the prefix of a directory.

The following differences show that path_relative does not handle
extra slashes properly:

path prefix output of path_relative output of relative_path
======== ========= ======================= =======================
/a//b//c/ //a/b// ../../../../a//b//c/ c/
a/b//c a//b ../b//c c

And if prefix has no trailing slash, path_relative does not work
properly either. But since prefix always has a trailing slash, it's
not a problem.

path prefix output of path_relative output of relative_path
======== ========= ======================= =======================
/a/b/c/ /a/b b/c/ c/
/a/b /a/b b ./
/a/b/ /a/b b/ ./
/a /a/b/ ../../a ../
a/b/c/ a/b b/c/ c/
a/b/ a/b b/ ./
a a/b ../a ../
x/y a/b/ ../x/y ../../x/y
a/c a/b c ../c
/a/ /a/b (empty) ../
(empty) /a/b ../../ ./

One tricky part in this conversion is write_name() function in
ls-files.c. It takes a counted string, <name, len>, that is to be
made relative to <prefix, prefix_len> and then quoted. Because
write_name_quoted_relative() still takes these two parameters as
counted string, but ignores the count and treat these two as
NUL-terminated strings, this conversion needs to be audited for its
callers:

- For <name, len>, all three callers of write_name() passes a
NUL-terminated string and its true length, so this patch makes
"len" unused.

- For <prefix, prefix_len>, prefix could be a string that is longer
than empty while prefix_len could be 0 when "--full-name" option
is used. This is fixed by checking prefix_len in write_name()
and calling write_name_quoted_relative() with NULL when
prefix_len is set to 0. Again, this makes "prefix_len" given to
write_name_quoted_relative() unused, without introducing a bug.

Signed-off-by: Jiang Xin <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 39598f9983f759b5e38b9e762c695bad6c89a1b3
https://github.com/msysgit/git/commit/39598f9983f759b5e38b9e762c695bad6c89a1b3
Author: Jiang Xin <***@gmail.com>
Date: 2013-06-26 (Wed, 26 Jun 2013)

Changed paths:
M builtin/clean.c
M builtin/grep.c
M builtin/ls-files.c
M quote.c
M quote.h
M wt-status.c

Log Message:
-----------
quote_path_relative(): remove redundant parameter

quote_path_relative() used to take a counted string as its parameter
(the string to be quoted). With an earlier change, it now uses
relative_path() that does not take a counted string, and we have
been passing only the pointer to the string since then.

Remove the length parameter from quote_path_relative() to show that
this parameter was redundant. All the changed lines show that the
caller passed either -1 (to ask the function run strlen() on the
string), or the length of the string, so the earlier conversion was
safe.

All the callers of quote_path_relative() that used to take counted string
have been audited to make sure that they are passing length of the actual
string (or -1 to ask the callee run strlen())

Signed-off-by: Jiang Xin <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: e9a820cefde2170840fbcdf7c4b74369988869dc
https://github.com/msysgit/git/commit/e9a820cefde2170840fbcdf7c4b74369988869dc
Author: Jiang Xin <***@gmail.com>
Date: 2013-06-26 (Wed, 26 Jun 2013)

Changed paths:
M builtin/ls-files.c
M quote.c
M quote.h

Log Message:
-----------
write_name{_quoted_relative,}(): remove redundant parameters

After substitute path_relative() in quote.c with relative_path()
from path.c, parameters (such as len and prefix_len) are redundant
in function write_name() and write_name_quoted_relative(). The
callers have already been audited that the strings they pass are
properly NUL terminated and the length they give are the length of
the string (or -1 that asks the length to be counted by the callee).

Remove these now-redundant parameters.

Signed-off-by: Jiang Xin <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 396049e5fb62ea921379d02133e1ff00cc47bb3f
https://github.com/msysgit/git/commit/396049e5fb62ea921379d02133e1ff00cc47bb3f
Author: Jiang Xin <***@gmail.com>
Date: 2013-06-26 (Wed, 26 Jun 2013)

Changed paths:
M builtin/clean.c

Log Message:
-----------
git-clean: refactor git-clean into two phases

Before introducing interactive git-clean, refactor git-clean operations
into two phases:

* hold cleaning items in del_list,
* and remove them in a separate loop at the end.

We will introduce interactive git-clean between the two phases. The
interactive git-clean will show what would be done and must confirm
before do real cleaning.

Signed-off-by: Jiang Xin <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 17696002086e8c6b9e998543d212e707c7d511ab
https://github.com/msysgit/git/commit/17696002086e8c6b9e998543d212e707c7d511ab
Author: Jiang Xin <***@gmail.com>
Date: 2013-06-26 (Wed, 26 Jun 2013)

Changed paths:
M Documentation/git-clean.txt
M builtin/clean.c

Log Message:
-----------
git-clean: add support for -i/--interactive

Show what would be done and the user must confirm before actually
cleaning.

Would remove ...
Would remove ...
Would remove ...

Remove [y/n]?

Press "y" to start cleaning, and press "n" if you want to abort.

Signed-off-by: Jiang Xin <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 1b8fd46732fc2e4e8300c11057a7fa9a8c2bc1b4
https://github.com/msysgit/git/commit/1b8fd46732fc2e4e8300c11057a7fa9a8c2bc1b4
Author: Jiang Xin <***@gmail.com>
Date: 2013-06-26 (Wed, 26 Jun 2013)

Changed paths:
M Documentation/config.txt
M builtin/clean.c

Log Message:
-----------
git-clean: show items of del_list in columns

When there are lots of items to be cleaned, it is hard to see them all
in one screen. Show them in columns will solve this problem.

Signed-off-by: Jiang Xin <***@gmail.com>
Comments-by: Matthieu Moy <***@imag.fr>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 7a9b0b802ecf5a09502b46de27c07ff05f55b247
https://github.com/msysgit/git/commit/7a9b0b802ecf5a09502b46de27c07ff05f55b247
Author: Jiang Xin <***@gmail.com>
Date: 2013-06-26 (Wed, 26 Jun 2013)

Changed paths:
M Documentation/config.txt
M builtin/clean.c

Log Message:
-----------
git-clean: add colors to interactive git-clean

Show header, help, error messages, and prompt in colors for interactive
git-clean. Re-use config variables, such as "color.interactive" and
"color.interactive.<slot>" for command `git-add--interactive`.

Signed-off-by: Jiang Xin <***@gmail.com>
Comments-by: Matthieu Moy <***@imag.fr>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 9f93e4611f72577306e369a64d0a4da847be9751
https://github.com/msysgit/git/commit/9f93e4611f72577306e369a64d0a4da847be9751
Author: Jiang Xin <***@gmail.com>
Date: 2013-06-26 (Wed, 26 Jun 2013)

Changed paths:
M builtin/clean.c

Log Message:
-----------
git-clean: use a git-add-interactive compatible UI

Rewrite menu using a new method `list_and_choose`, which is borrowed
from `git-add--interactive.perl`. We will use this framework to add
new actions for interactive git-clean later.

Please NOTE:

* Method `list_and_choose` return an array of integers, and
* it is up to you to free the allocated memory of the array.
* The array ends with EOF.
* If user pressed CTRL-D (i.e. EOF), no selection returned.

Signed-off-by: Jiang Xin <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: d1239264f2786d7ea15543b980c6bf6afbc4701a
https://github.com/msysgit/git/commit/d1239264f2786d7ea15543b980c6bf6afbc4701a
Author: Jiang Xin <***@gmail.com>
Date: 2013-06-26 (Wed, 26 Jun 2013)

Changed paths:
M builtin/clean.c

Log Message:
-----------
git-clean: add filter by pattern interactive action

Add a new action for interactive git-clean: filter by pattern. When the
user chooses this action, user can input space-separated patterns (the
same syntax as gitignore), and each clean candidate that matches with
one of the patterns will be excluded from cleaning. When the user feels
it's OK, presses ENTER and backs to the confirmation dialog.

Signed-off-by: Jiang Xin <***@gmail.com>
Suggested-by: Junio C Hamano <***@pobox.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: c1f1d24aa5c72821096e2a31aaf4175329ca0260
https://github.com/msysgit/git/commit/c1f1d24aa5c72821096e2a31aaf4175329ca0260
Author: Jiang Xin <***@gmail.com>
Date: 2013-06-26 (Wed, 26 Jun 2013)

Changed paths:
M builtin/clean.c

Log Message:
-----------
git-clean: add select by numbers interactive action

Draw a multiple choice menu using `list_and_choose` to select items
to be deleted by numbers.

User can input:

* 1,5-7 : select 1,5,6,7 items to be deleted
* * : select all items to be deleted
* -* : unselect all, nothing will be deleted
* : (empty) finish selecting, and return back to main menu

Signed-off-by: Jiang Xin <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 96a799b6d1d4a63dccfe8b5dcabd2d738fa6c26e
https://github.com/msysgit/git/commit/96a799b6d1d4a63dccfe8b5dcabd2d738fa6c26e
Author: Jiang Xin <***@gmail.com>
Date: 2013-06-26 (Wed, 26 Jun 2013)

Changed paths:
M builtin/clean.c

Log Message:
-----------
git-clean: add ask each interactive action

Add a new action for interactive git-clean: ask each. It's just like
the "rm -i" command, that the user must confirm one by one for each
file or directory to be cleaned.

Signed-off-by: Jiang Xin <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: c0be6b4c8a1d16a92efad00d73683075cf2da60d
https://github.com/msysgit/git/commit/c0be6b4c8a1d16a92efad00d73683075cf2da60d
Author: Jiang Xin <***@gmail.com>
Date: 2013-06-26 (Wed, 26 Jun 2013)

Changed paths:
M Documentation/git-clean.txt

Log Message:
-----------
git-clean: add documentation for interactive git-clean

Add new section "Interactive mode" for documentation of interactive
git-clean.

Signed-off-by: Jiang Xin <***@gmail.com>
Helped-by: Eric Sunshine <***@sunshineco.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: db627fd568410499c47d764937c3d7a10bbadffa
https://github.com/msysgit/git/commit/db627fd568410499c47d764937c3d7a10bbadffa
Author: Jiang Xin <***@gmail.com>
Date: 2013-06-26 (Wed, 26 Jun 2013)

Changed paths:
A t/t7301-clean-interactive.sh

Log Message:
-----------
test: add t7301 for git-clean--interactive

Add test cases for git-clean--interactive.

Signed-off-by: Jiang Xin <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: abd4284bc62127a2db69c8c81501a56bb29284c8
https://github.com/msysgit/git/commit/abd4284bc62127a2db69c8c81501a56bb29284c8
Author: Jiang Xin <***@gmail.com>
Date: 2013-06-26 (Wed, 26 Jun 2013)

Changed paths:
M t/t0060-path-utils.sh
M test-path-utils.c

Log Message:
-----------
test: run testcases with POSIX absolute paths on Windows

Some test cases are skipped on Windows by marking with POSIX prereq.
This is because arguments look like absolute paths (such as /a/b)
for regular Windows programs (*.exe executables, no bash scripts)
are changed to Windows paths (like C:/msysgit/a/b).

There is no cygpath nor equivalent on msysGit, but it is easy to
write one. New subcommand "mingw_path" is added in test-path-utils,
so that we can get the expected absolute paths on Windows. E.g.

COMMAND LINE Linux output Windows output
================================== ============ ===============
test-path-utils mingw_path / / C:/msysgit
test-path-utils mingw_path /a/b/ /a/b/ C:/msysgit/a/b/

With this utility, most skipped test cases in t0060 can be turned on
to be tested correctly on Windows.

Signed-off-by: Jiang Xin <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 77a6815d7d5be7031324788f9935587bdb00de60
https://github.com/msysgit/git/commit/77a6815d7d5be7031324788f9935587bdb00de60
Author: Alexey Shumkin <***@gmail.com>
Date: 2013-06-26 (Wed, 26 Jun 2013)

Changed paths:
M t/t6006-rev-list-format.sh

Log Message:
-----------
t6006 (rev-list-format): don't hardcode SHA-1 in expected outputs

The expected SHA-1 digests are always available in variables. Use
them instead of hardcoding.

Signed-off-by: Alexey Shumkin <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 375775bb1289a0b78f26b8ec08627fd133920ab9
https://github.com/msysgit/git/commit/375775bb1289a0b78f26b8ec08627fd133920ab9
Author: Alexey Shumkin <***@gmail.com>
Date: 2013-06-26 (Wed, 26 Jun 2013)

Changed paths:
M t/t7102-reset.sh

Log Message:
-----------
t7102 (reset): don't hardcode SHA-1 in expected outputs

The expected SHA-1 digests are always available in variables. Use
them instead of hardcoding.

Signed-off-by: Alexey Shumkin <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: a742f2a0a7e57bb7d3f55cb8312c3f4cc4dc68fb
https://github.com/msysgit/git/commit/a742f2a0a7e57bb7d3f55cb8312c3f4cc4dc68fb
Author: Alexey Shumkin <***@gmail.com>
Date: 2013-06-26 (Wed, 26 Jun 2013)

Changed paths:
M t/t4205-log-pretty-formats.sh

Log Message:
-----------
t4205 (log-pretty-formats): don't hardcode SHA-1 in expected outputs

The expected SHA-1 digests are always available in variables. Use
them instead of hardcoding.

Signed-off-by: Alexey Shumkin <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: de6029a2d7734a93a9e27b9c4471862a47dd8123
https://github.com/msysgit/git/commit/de6029a2d7734a93a9e27b9c4471862a47dd8123
Author: Alexey Shumkin <***@gmail.com>
Date: 2013-06-26 (Wed, 26 Jun 2013)

Changed paths:
M t/t4041-diff-submodule-option.sh
M t/t4205-log-pretty-formats.sh
M t/t6006-rev-list-format.sh
M t/t7102-reset.sh

Log Message:
-----------
pretty: Add failing tests: --format output should honor logOutputEncoding

One can set an alias
$ git config alias.lg "log --graph --pretty=format:'%Cred%h%Creset
-%C(yellow)%d%Creset %s %Cgreen(%cd) %C(bold blue)<%an>%Creset'
--abbrev-commit --date=local"

to see the log as a pretty tree (like *gitk* but in a terminal).

However, log messages written in an encoding i18n.commitEncoding which differs
from terminal encoding are shown corrupted even when i18n.logOutputEncoding
and terminal encoding are the same (e.g. log messages committed on a Cygwin box
with Windows-1251 encoding seen on a Linux box with a UTF-8 encoding and vice versa).

To simplify an example we can say the following two commands are expected
to give the same output to a terminal:

$ git log --oneline --no-color
$ git log --pretty=format:'%h %s'

However, the former pays attention to i18n.logOutputEncoding
configuration, while the latter does not when it formats "%s".

The same corruption is true for
$ git diff --submodule=log
and
$ git rev-list --pretty=format:%s HEAD
and
$ git reset --hard

This patch adds failing tests for the next patch that fixes them.

Signed-off-by: Alexey Shumkin <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: ecaee8050cec23eb4cf082512e907e3e52c20b57
https://github.com/msysgit/git/commit/ecaee8050cec23eb4cf082512e907e3e52c20b57
Author: Alexey Shumkin <***@gmail.com>
Date: 2013-06-26 (Wed, 26 Jun 2013)

Changed paths:
M builtin/reset.c
M builtin/rev-list.c
M builtin/shortlog.c
M log-tree.c
M submodule.c
M t/t4041-diff-submodule-option.sh
M t/t4205-log-pretty-formats.sh
M t/t6006-rev-list-format.sh
M t/t7102-reset.sh

Log Message:
-----------
pretty: --format output should honor logOutputEncoding

One can set an alias
$ git config [--global] alias.lg "log --graph --pretty=format:'%Cred%h%Creset
-%C(yellow)%d%Creset %s %Cgreen(%cd) %C(bold blue)<%an>%Creset'
--abbrev-commit --date=local"

to see the log as a pretty tree (like *gitk* but in a terminal).

However, log messages written in an encoding i18n.commitEncoding which differs
from terminal encoding are shown corrupted even when i18n.logOutputEncoding
and terminal encoding are the same (e.g. log messages committed on a Cygwin box
with Windows-1251 encoding seen on a Linux box with a UTF-8 encoding and vice versa).

To simplify an example we can say the following two commands are expected
to give the same output to a terminal:

$ git log --oneline --no-color
$ git log --pretty=format:'%h %s'

However, the former pays attention to i18n.logOutputEncoding
configuration, while the latter does not when it formats "%s".

The same corruption is true for
$ git diff --submodule=log
and
$ git rev-list --pretty=format:%s HEAD
and
$ git reset --hard

This patch makes pretty --format honor logOutputEncoding when it formats
log message.

Signed-off-by: Alexey Shumkin <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 1572e18e60e0702561d1d59d140615ab7ff54295
https://github.com/msysgit/git/commit/1572e18e60e0702561d1d59d140615ab7ff54295
Author: Eduardo R. D'Avila <***@gmail.com>
Date: 2013-06-26 (Wed, 26 Jun 2013)

Changed paths:
M t/t9903-bash-prompt.sh

Log Message:
-----------
t9903: add tests for git-prompt pcmode

git-prompt.sh lacks tests for PROMPT_COMMAND mode.

Add tests for:
* pcmode prompt without colors
* pcmode prompt with colors for bash
* pcmode prompt with colors for zsh

Having these tests enables an upcoming refactor in
a safe way.

Signed-off-by: Eduardo R. D'Avila <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 7fe9031920be5c98a7e58eea6be34442390392ec
https://github.com/msysgit/git/commit/7fe9031920be5c98a7e58eea6be34442390392ec
Author: Eduardo R. D'Avila <***@gmail.com>
Date: 2013-06-26 (Wed, 26 Jun 2013)

Changed paths:
M contrib/completion/git-prompt.sh

Log Message:
-----------
git-prompt.sh: refactor colored prompt code

__git_ps1_colorize_gitstring() sets color codes and
builds the prompt gitstring. It has duplicated code
to handle color codes for bash and zsh shells.
__git_ps1() also has duplicated logic to build the
prompt gitstring.

Remove duplication of logic to build gitstring in
__git_ps1_colorize_gitstring() and __git_ps1().

Leave in __git_ps1_colorize_gitstring() only logic
to set color codes.

Signed-off-by: Eduardo R. D'Avila <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: f3bd62d02ff189c42d404f9a0b347499e016cc23
https://github.com/msysgit/git/commit/f3bd62d02ff189c42d404f9a0b347499e016cc23
Author: Eduardo R. D'Avila <***@gmail.com>
Date: 2013-06-26 (Wed, 26 Jun 2013)

Changed paths:
M t/t9903-bash-prompt.sh

Log Message:
-----------
t9903: remove redundant tests

After refactoring __git_ps1_colorize_gitstring, codepaths for bash and zsh
became mostly common and tests for bash and zsh became redundant.

Remove tests for zsh. Keep one minimal test that stress the difference
in codepaths for bash and zsh.

Suggested-by: SZEDER Gábor <***@ira.uka.de>
Signed-off-by: Eduardo R. D'Avila <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 15981f4eec9c6a7c12b9c0fbe98e68228c46edb7
https://github.com/msysgit/git/commit/15981f4eec9c6a7c12b9c0fbe98e68228c46edb7
Author: Eduardo R. D'Avila <***@gmail.com>
Date: 2013-06-26 (Wed, 26 Jun 2013)

Changed paths:
M contrib/completion/git-prompt.sh
M t/t9903-bash-prompt.sh

Log Message:
-----------
git-prompt.sh: do not print duplicate clean color code

Do not print a duplicate clean color code when there
is no other indicators other than the current branch
in colored prompt.

Acked-by: SZEDER Gábor <***@ira.uka.de>
Signed-off-by: Eduardo R. D'Avila <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: cf4cac4cfc13326920bdbf3d51236e2065f5ba2f
https://github.com/msysgit/git/commit/cf4cac4cfc13326920bdbf3d51236e2065f5ba2f
Author: Eduardo R. D'Avila <***@gmail.com>
Date: 2013-06-26 (Wed, 26 Jun 2013)

Changed paths:
M contrib/completion/git-prompt.sh

Log Message:
-----------
git-prompt.sh: add missing information in comments

Mention that the command below is needed for prompt
in ZSH with PS1:
setopt PROMPT_SUBST

Rephrase some parts that mention only the "current branch name"
being displayed in the prompt. Replace it by stating that
the "repository status" is displayed.

Make it clear that colored prompt is only available
in PROMPT_COMMAND/precmd mode.

With-suggestions-by: SZEDER Gábor <***@ira.uka.de>
Signed-off-by: Eduardo R. D'Avila <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 20618016df1255a2adebe900af7d66f88ef7a33b
https://github.com/msysgit/git/commit/20618016df1255a2adebe900af7d66f88ef7a33b
Author: Fraser Tweedale <***@frase.id.au>
Date: 2013-06-26 (Wed, 26 Jun 2013)

Changed paths:
M Documentation/urls.txt

Log Message:
-----------
documentation: add git:// transport security notice

The fact that the git:// transport does no authentication is easily
overlooked. For example, DNS poisoning may result in fetching from
somewhere that was not intended.

Add a brief security notice to the "GIT URLS" section
of the documentation stating that the git transport should be used
with caution on unsecured networks.

Signed-off-by: Fraser Tweedale <***@frase.id.au>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 4f9ec8dd23ca463c4da782c11cea7a18ec111e15
https://github.com/msysgit/git/commit/4f9ec8dd23ca463c4da782c11cea7a18ec111e15
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-26 (Wed, 26 Jun 2013)

Changed paths:
M git-submodule.sh
M t/t7400-submodule-basic.sh

Log Message:
-----------
Merge branch 'fg/submodule-non-ascii-path'

Many "git submodule" operations do not work on a submodule at a
path whose name is not in ASCII.

* fg/submodule-non-ascii-path:
t7400: test of UTF-8 submodule names pass under Mac OS
handle multibyte characters in name


Commit: 14c6ee99aeefe4420afeb89b725e05dde806ec60
https://github.com/msysgit/git/commit/14c6ee99aeefe4420afeb89b725e05dde806ec60
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-26 (Wed, 26 Jun 2013)

Changed paths:
M Documentation/git-push.txt

Log Message:
-----------
Merge branch 'mm/push-force-is-dangerous'

* mm/push-force-is-dangerous:
Documentation/git-push.txt: explain better cases where --force is dangerous


Commit: a036e4ebbf75e7f06fe88d8889f33b84ef5c8b4d
https://github.com/msysgit/git/commit/a036e4ebbf75e7f06fe88d8889f33b84ef5c8b4d
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-26 (Wed, 26 Jun 2013)

Changed paths:
M Documentation/git-diff.txt

Log Message:
-----------
Merge branch 'kb/diff-blob-blob-doc'

* kb/diff-blob-blob-doc:
Documentation: Move "git diff <blob> <blob>"


Commit: 9a17e9ad15f77b739a33da703f695ad924cd825a
https://github.com/msysgit/git/commit/9a17e9ad15f77b739a33da703f695ad924cd825a
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-26 (Wed, 26 Jun 2013)

Changed paths:
M Documentation/git-merge.txt

Log Message:
-----------
Merge branch 'mm/merge-in-dirty-worktree-doc'

* mm/merge-in-dirty-worktree-doc:
Documentation/git-merge.txt: weaken warning about uncommited changes


Commit: 2ddc898bc0d0c3f03b4aeeb34c33f652d95f2807
https://github.com/msysgit/git/commit/2ddc898bc0d0c3f03b4aeeb34c33f652d95f2807
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-26 (Wed, 26 Jun 2013)

Changed paths:
M Documentation/git-log.txt
M Documentation/technical/api-builtin.txt
M Documentation/technical/api-parse-options.txt
M Documentation/user-manual.txt
M builtin/help.c
M builtin/notes.c
M builtin/replace.c
M transport.c
M transport.h

Log Message:
-----------
Merge branch 'ph/builtin-srcs-are-in-subdir-these-days'

* ph/builtin-srcs-are-in-subdir-these-days:
fix "builtin-*" references to be "builtin/*"


Commit: eac9a1a1953bcd89678f649a1efbc8d1a7de9f40
https://github.com/msysgit/git/commit/eac9a1a1953bcd89678f649a1efbc8d1a7de9f40
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-26 (Wed, 26 Jun 2013)

Changed paths:
M git-p4.py
M git-svn.perl
M t/t7600-merge.sh

Log Message:
-----------
Merge branch 'vl/typofix'

* vl/typofix:
random typofixes (committed missing a 't', successful missing an 's')


Commit: 0784466657d9d728a37c006ee96fac273ef31dbb
https://github.com/msysgit/git/commit/0784466657d9d728a37c006ee96fac273ef31dbb
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-26 (Wed, 26 Jun 2013)

Changed paths:
M Documentation/user-manual.txt

Log Message:
-----------
Merge branch 'wk/doc-git-has-grown'

* wk/doc-git-has-grown:
user-manual: Update download size for Git and the kernel


Commit: 12dd2f69337e29254e743aa6fb3b04937f302209
https://github.com/msysgit/git/commit/12dd2f69337e29254e743aa6fb3b04937f302209
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-26 (Wed, 26 Jun 2013)

Changed paths:
M Documentation/git-web--browse.txt
M git-web--browse.sh

Log Message:
-----------
Merge branch 'ys/cygstart'

On Cygwin, recognize "cygstart" as a possible way to start a web
browser (used in "help -w" and "instaweb" among others).

* ys/cygstart:
web--browse: support /usr/bin/cygstart on Cygwin


Commit: ad76feb55eb7645661421e213796129efcbb7d56
https://github.com/msysgit/git/commit/ad76feb55eb7645661421e213796129efcbb7d56
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-26 (Wed, 26 Jun 2013)

Changed paths:
M builtin/apply.c
M t/t4111-apply-subdir.sh

Log Message:
-----------
Merge branch 'tr/maint-apply-non-git-patch-parsefix'

Fix for the codepath to parse patches that add new files, generated
by programs other than Git. THis is an old breakage in v1.7.11 and
will need to be merged down to the maintanance tracks.

* tr/maint-apply-non-git-patch-parsefix:
apply: carefully strdup a possibly-NULL name


Commit: 85318f521f6c0b9843d6da12abf67f2de7608431
https://github.com/msysgit/git/commit/85318f521f6c0b9843d6da12abf67f2de7608431
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-26 (Wed, 26 Jun 2013)

Changed paths:
M Documentation/RelNotes/1.8.4.txt

Log Message:
-----------
Update draft release notes to 1.8.4

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


Commit: 8ceb6fbd63e2b3b82bbca0139a1696955aa753c6
https://github.com/msysgit/git/commit/8ceb6fbd63e2b3b82bbca0139a1696955aa753c6
Author: Kevin Bracey <***@bracey.fi>
Date: 2013-06-27 (Thu, 27 Jun 2013)

Changed paths:
M Documentation/git-am.txt
M Documentation/user-manual.txt
M git-am.sh
M t/t7512-status-help.sh
M wt-status.c

Log Message:
-----------
am: replace uses of --resolved with --continue

git am was previously modified to provide --continue for consistency
with rebase, merge etc, and the documentation changed to showing
--continue as the primary form.

Complete the work by replacing remaining uses of --resolved by
--continue, most notably in suggested command reminders.

Signed-off-by: Kevin Bracey <***@bracey.fi>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 22c5b136363c7aa427667876e787db832548a038
https://github.com/msysgit/git/commit/22c5b136363c7aa427667876e787db832548a038
Author: Andrew Pimlott <***@pimlott.net>
Date: 2013-06-27 (Thu, 27 Jun 2013)

Changed paths:
M Documentation/git-rebase.txt
M git-rebase--interactive.sh
M t/lib-rebase.sh
M t/t3415-rebase-autosquash.sh

Log Message:
-----------
rebase -i: handle fixup! fixup! in --autosquash

In rebase -i --autosquash, ignore all "fixup! " or "squash! " after the
first. This supports the case when a git commit --fixup/--squash referred
to an earlier fixup/squash instead of the original commit (whether
intentionally, as when the user expressly meant to note that the commit
fixes an earlier fixup; or inadvertently, as when the user meant to refer to
the original commit with :/msg; or out of laziness, as when the user could
remember how to refer to the fixup but not the original).

In the todo list, the full commit message is preserved, in case it provides
useful cues to the user. A test helper set_cat_todo_editor is introduced to
check this.

Helped-by: Thomas Rast <***@inf.ethz.ch>
Helped-by: Junio C Hamano <***@pobox.com>
Signed-off-by: Andrew Pimlott <***@pimlott.net>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: fa4bf9edb9300da2688da8a920c506376a14de0a
https://github.com/msysgit/git/commit/fa4bf9edb9300da2688da8a920c506376a14de0a
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-27 (Thu, 27 Jun 2013)

Changed paths:
M Documentation/git-stash.txt
M git-rebase.sh
M git-stash.sh
M t/t3903-stash.sh

Log Message:
-----------
Merge branch 'rr/rebase-stash-store'

Finishing touches for the "git rebase --autostash" feature
introduced earlier.

* rr/rebase-stash-store:
rebase: use 'git stash store' to simplify logic
stash: introduce 'git stash store'
stash: simplify option parser for create
stash doc: document short form -p in synopsis
stash doc: add a warning about using create


Commit: 9df9bdda3a2450fe97ba4db61ce4d46c81fbfc16
https://github.com/msysgit/git/commit/9df9bdda3a2450fe97ba4db61ce4d46c81fbfc16
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-27 (Thu, 27 Jun 2013)

Changed paths:
M builtin/checkout.c
M t/t9802-git-p4-filetype.sh

Log Message:
-----------
Merge branch 'bc/checkout-tracking-name-plug-leak'

Plug a small leak in checkout.

* bc/checkout-tracking-name-plug-leak:
t/t9802: explicitly name the upstream branch to use as a base
builtin/checkout.c: don't leak memory in check_tracking_name


Commit: dc2ed04c23e59bf2ea93021fdb3660d7ded1f46c
https://github.com/msysgit/git/commit/dc2ed04c23e59bf2ea93021fdb3660d7ded1f46c
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-27 (Thu, 27 Jun 2013)

Changed paths:
M http.c

Log Message:
-----------
Merge branch 'bc/http-keep-memory-given-to-curl'

Older cURL wanted piece of memory we call it with to be stable, but
we updated the auth material after handing it to a call.

* bc/http-keep-memory-given-to-curl:
http.c: don't rewrite the user:passwd string multiple times


Commit: 833cd7fc9fed8568a3612e9b1b204290b0f0e15d
https://github.com/msysgit/git/commit/833cd7fc9fed8568a3612e9b1b204290b0f0e15d
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-27 (Thu, 27 Jun 2013)

Changed paths:
M git-pull.sh
M t/t5520-pull.sh

Log Message:
-----------
Merge branch 'jk/pull-into-dirty-unborn'

"git pull" into nothing trashed "local changes" that were in the
index, and this avoids it.

* jk/pull-into-dirty-unborn:
pull: merge into unborn by fast-forwarding from empty tree
pull: update unborn branch tip after index


Commit: b29dc5c671150ff0c4afa41cdd8fec9c86ffe6eb
https://github.com/msysgit/git/commit/b29dc5c671150ff0c4afa41cdd8fec9c86ffe6eb
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-27 (Thu, 27 Jun 2013)

Changed paths:
M git-send-email.perl
M t/t9001-send-email.sh

Log Message:
-----------
Merge branch 'mt/send-email-cc-match-fix'

Logic used by git-send-email to suppress cc mishandled names that
need RFC2047 quoting.

* mt/send-email-cc-match-fix:
send-email: sanitize author when writing From line
send-email: add test for duplicate utf8 name


Commit: 644daa9428323ecdef08dfce589aa386bd2d97d4
https://github.com/msysgit/git/commit/644daa9428323ecdef08dfce589aa386bd2d97d4
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-27 (Thu, 27 Jun 2013)

Changed paths:
M sequencer.c

Log Message:
-----------
Merge branch 'rr/cherry-pick-fast-forward-reflog-message'

The reflog message created when "git cherry-pick" fast-forwarded
did not say anything but "cherry-pick", but it now says
"cherry-pick: fast-forward".

* rr/cherry-pick-fast-forward-reflog-message:
sequencer: write useful reflog message for fast-forward


Commit: 91fc159745eccb0830c9719642d07617c8100b41
https://github.com/msysgit/git/commit/91fc159745eccb0830c9719642d07617c8100b41
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-27 (Thu, 27 Jun 2013)

Changed paths:
M git-add--interactive.perl

Log Message:
-----------
Merge branch 'jk/add-i-custom-diff-algo'

* jk/add-i-custom-diff-algo:
add -i: add extra options at the right place in "diff" command line
add--interactive: respect diff.algorithm


Commit: a75f9f053d459fb35a52fd223677812099fa6476
https://github.com/msysgit/git/commit/a75f9f053d459fb35a52fd223677812099fa6476
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-27 (Thu, 27 Jun 2013)

Changed paths:
M Documentation/RelNotes/1.8.4.txt

Log Message:
-----------
Update draft release notes to 1.8.4

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


Commit: 11fbc0b1e1d5435f482af7bf391fd0d679955ba6
https://github.com/msysgit/git/commit/11fbc0b1e1d5435f482af7bf391fd0d679955ba6
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-27 (Thu, 27 Jun 2013)

Changed paths:
M Documentation/git-checkout.txt
M Documentation/glossary-content.txt
M branch.c
M builtin/checkout.c
A t/t2024-checkout-dwim.sh
M t/t3200-branch.sh
M t/t7201-co.sh
M t/t9114-git-svn-dcommit-merge.sh

Log Message:
-----------
Merge branch 'jh/checkout-auto-tracking' into maint

* jh/checkout-auto-tracking:
glossary: Update and rephrase the definition of a remote-tracking branch
branch.c: Validate tracking branches with refspecs instead of refs/remotes/*
t9114.2: Don't use --track option against "svn-remote"-tracking branches
t7201.24: Add refspec to keep --track working
t3200.39: tracking setup should fail if there is no matching refspec.
checkout: Use remote refspecs when DWIMming tracking branches
t2024: Show failure to use refspec when DWIMming remote branch names
t2024: Add tests verifying current DWIM behavior of 'git checkout <branch>'


Commit: 0fb2c97c206958a13e8979187b7b3cc31d389126
https://github.com/msysgit/git/commit/0fb2c97c206958a13e8979187b7b3cc31d389126
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-27 (Thu, 27 Jun 2013)

Changed paths:
M Documentation/technical/pack-protocol.txt
M t/t5500-fetch-pack.sh
M upload-pack.c

Log Message:
-----------
Merge branch 'mh/fetch-into-shallow' into maint

* mh/fetch-into-shallow:
t5500: add test for fetching with an unknown 'shallow'
upload-pack: ignore 'shallow' lines with unknown obj-ids


Commit: 7f3447cce83ebe80c498a4455c03b0c8f37ac938
https://github.com/msysgit/git/commit/7f3447cce83ebe80c498a4455c03b0c8f37ac938
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-27 (Thu, 27 Jun 2013)

Changed paths:
M contrib/subtree/git-subtree.sh

Log Message:
-----------
Merge branch 'jk/subtree-do-not-push-if-split-fails' into maint

* jk/subtree-do-not-push-if-split-fails:
contrib/subtree: don't delete remote branches if split fails


Commit: 81de16a5d5d1efffb472eac9d2a7f373cdcd906b
https://github.com/msysgit/git/commit/81de16a5d5d1efffb472eac9d2a7f373cdcd906b
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-27 (Thu, 27 Jun 2013)

Changed paths:
M revision.c
M revision.h
M t/t6019-rev-list-ancestry-path.sh

Log Message:
-----------
Merge branch 'kb/ancestry-path-threedots' into maint

* kb/ancestry-path-threedots:
revision.c: treat A...B merge bases as if manually specified
t6019: demonstrate --ancestry-path A...B breakage


Commit: a0bf40ddc94d8ec57c2422b29ba82f3450211300
https://github.com/msysgit/git/commit/a0bf40ddc94d8ec57c2422b29ba82f3450211300
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-27 (Thu, 27 Jun 2013)

Changed paths:
M combine-diff.c
M t/t4038-diff-combined.sh

Log Message:
-----------
Merge branch 'mk/combine-diff-context-horizon-fix' into maint

* mk/combine-diff-context-horizon-fix:
combine-diff.c: Fix output when changes are exactly 3 lines apart


Commit: 872f5bfb08b16057fdc02bb758abedcc6e4379ca
https://github.com/msysgit/git/commit/872f5bfb08b16057fdc02bb758abedcc6e4379ca
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-27 (Thu, 27 Jun 2013)

Changed paths:
M sha1_name.c
M t/t0100-previous.sh

Log Message:
-----------
Merge branch 'jc/strbuf-branchname-fix' into maint

* jc/strbuf-branchname-fix:
strbuf_branchname(): do not double-expand @{-1}~22


Commit: ee1a1ddf38a791e6464a71814de0b74c57098eb2
https://github.com/msysgit/git/commit/ee1a1ddf38a791e6464a71814de0b74c57098eb2
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-27 (Thu, 27 Jun 2013)

Changed paths:
M builtin/commit.c
M t/t7502-commit.sh

Log Message:
-----------
Merge branch 'rs/commit-m-no-edit' into maint

* rs/commit-m-no-edit:
commit: don't start editor if empty message is given with -m


Commit: 1ec379fff8ea033a9d48a4e8006fc0f7aa8830a5
https://github.com/msysgit/git/commit/1ec379fff8ea033a9d48a4e8006fc0f7aa8830a5
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-27 (Thu, 27 Jun 2013)

Changed paths:
M Documentation/git-push.txt

Log Message:
-----------
Merge branch 'tr/push-no-verify-doc' into maint

* tr/push-no-verify-doc:
Document push --no-verify


Commit: fc78791b7c2cb17a461e7881ee4585b3eafda4b6
https://github.com/msysgit/git/commit/fc78791b7c2cb17a461e7881ee4585b3eafda4b6
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-27 (Thu, 27 Jun 2013)

Changed paths:
M Documentation/urls.txt

Log Message:
-----------
Merge branch 'nd/urls-doc-no-file-hyperlink-fix' into maint

* nd/urls-doc-no-file-hyperlink-fix:
urls.txt: avoid auto converting to hyperlink


Commit: f79467ef364eb06ee9b49344cdec02e2bd1f2cc7
https://github.com/msysgit/git/commit/f79467ef364eb06ee9b49344cdec02e2bd1f2cc7
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-27 (Thu, 27 Jun 2013)

Changed paths:
M contrib/completion/git-prompt.sh

Log Message:
-----------
Merge branch 'tg/maint-zsh-svn-remote-prompt' into maint

* tg/maint-zsh-svn-remote-prompt:
prompt: fix show upstream with svn and zsh


Commit: c9cae1e28a050f115d7591ce1a68674c2067b54b
https://github.com/msysgit/git/commit/c9cae1e28a050f115d7591ce1a68674c2067b54b
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-27 (Thu, 27 Jun 2013)

Changed paths:
M contrib/completion/git-prompt.sh
M t/t9903-bash-prompt.sh

Log Message:
-----------
Merge branch 'fc/show-branch-in-rebase-am' into maint

* fc/show-branch-in-rebase-am:
prompt: fix for simple rebase


Commit: 6be17ec5828386c3ae17af26fac66f65f1c817ec
https://github.com/msysgit/git/commit/6be17ec5828386c3ae17af26fac66f65f1c817ec
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-27 (Thu, 27 Jun 2013)

Changed paths:
M builtin/push.c

Log Message:
-----------
Merge branch 'rr/push-head' into maint

* rr/push-head:
push: make push.default = current use resolved HEAD
push: fail early with detached HEAD and current
push: factor out the detached HEAD error message


Commit: 88f90f8286e9e456ea332e00f87ad39892103544
https://github.com/msysgit/git/commit/88f90f8286e9e456ea332e00f87ad39892103544
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-27 (Thu, 27 Jun 2013)

Changed paths:
M git-difftool.perl
M t/t7800-difftool.sh

Log Message:
-----------
Merge branch 'ks/difftool-dir-diff-copy-fix' into maint

* ks/difftool-dir-diff-copy-fix:
difftool --dir-diff: allow changing any clean working tree file


Commit: e2652c0bcfdeee88f416c6e2c34163545ea30047
https://github.com/msysgit/git/commit/e2652c0bcfdeee88f416c6e2c34163545ea30047
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-27 (Thu, 27 Jun 2013)

Changed paths:
A Documentation/RelNotes/1.8.3.2.txt
M RelNotes

Log Message:
-----------
Start preparing for 1.8.3.2

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


Commit: ebeea528709abf5ee0a0f3e8ad706f7bacc36c05
https://github.com/msysgit/git/commit/ebeea528709abf5ee0a0f3e8ad706f7bacc36c05
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-27 (Thu, 27 Jun 2013)

Changed paths:
A Documentation/RelNotes/1.8.3.2.txt

Log Message:
-----------
Merge branch 'maint'

* maint:
Start preparing for 1.8.3.2


Commit: 6653aa9ecd955faccb0ace6f2d8c374b8ea7daaa
https://github.com/msysgit/git/commit/6653aa9ecd955faccb0ace6f2d8c374b8ea7daaa
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-28 (Fri, 28 Jun 2013)

Changed paths:
M builtin/clone.c
M commit.h
M fetch-pack.c
M git.c
M shallow.c
M t/t5500-fetch-pack.sh

Log Message:
-----------
Merge branch 'nd/clone-connectivity-shortcut' (early part) into maint

Cloning with "git clone --depth N" while fetch.fsckobjects (or
transfer.fsckobjects) is set to true did not tell the cut-off points
of the shallow history to the process that validates the objects and
the history received, causing the validation to fail.

* 'nd/clone-connectivity-shortcut' (early part):
fetch-pack: prepare updated shallow file before fetching the pack
clone: let the user know when check_everything_connected is run


Commit: 94b540479aba44cfe64c7a5e051dc490179cefff
https://github.com/msysgit/git/commit/94b540479aba44cfe64c7a5e051dc490179cefff
Author: Stefano Lattarini <***@gmail.com>
Date: 2013-06-28 (Fri, 28 Jun 2013)

Changed paths:
M configure.ac

Log Message:
-----------
configure: fix option help message for --disable-pthreads

The configure option to disable threading is '--disable-pthreads',
not '--without-pthreads'.

Signed-off-by: Stefano Lattarini <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 3a461832c5ca4f140e41fdc34f86c90868aea33b
https://github.com/msysgit/git/commit/3a461832c5ca4f140e41fdc34f86c90868aea33b
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-28 (Fri, 28 Jun 2013)

Changed paths:
M Documentation/RelNotes/1.8.3.2.txt
M Documentation/git.txt
M GIT-VERSION-GEN

Log Message:
-----------
Git 1.8.3.2

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


Commit: 3c36e8a40d4763af65f108dcdef2fab1597741bf
https://github.com/msysgit/git/commit/3c36e8a40d4763af65f108dcdef2fab1597741bf
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-28 (Fri, 28 Jun 2013)

Changed paths:
M Documentation/RelNotes/1.8.3.2.txt
M Documentation/git.txt
M configure.ac

Log Message:
-----------
Sync with 1.8.3.2


Commit: 62a23c9f5823171319bd01a924338dfc8e2c0679
https://github.com/msysgit/git/commit/62a23c9f5823171319bd01a924338dfc8e2c0679
Author: Thomas Gummerer <***@gmail.com>
Date: 2013-06-29 (Sat, 29 Jun 2013)

Changed paths:
M t/perf/perf-lib.sh

Log Message:
-----------
perf-lib: fix start/stop of perf tests

ae75342 test-lib: rearrange start/end of test_expect_* and test_skip
changed the way tests are started/stopped, but did not update the perf
tests. They were therefore giving the wrong output, because of the
wrong test count. Fix this by starting and stopping the tests
correctly.

Signed-off-by: Thomas Gummerer <***@gmail.com>
Acked-by: Thomas Rast <***@inf.ethz.ch>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 5155c7f37a7422cd14884ee9a7e8e2a79508aea2
https://github.com/msysgit/git/commit/5155c7f37a7422cd14884ee9a7e8e2a79508aea2
Author: SZEDER Gábor <***@ira.uka.de>
Date: 2013-06-30 (Sun, 30 Jun 2013)

Changed paths:
M t/t7011-skip-worktree-reading.sh

Log Message:
-----------
test: spell 'ls-files --delete' option correctly in test descriptions

The option is spelled '--deleted'.

Signed-off-by: SZEDER Gábor <***@ira.uka.de>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 5a87e92232c5468ff8d9a7139dd02a7969c8bbf6
https://github.com/msysgit/git/commit/5a87e92232c5468ff8d9a7139dd02a7969c8bbf6
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-06-30 (Sun, 30 Jun 2013)

Changed paths:
M Documentation/git-check-ignore.txt

Log Message:
-----------
check-ignore doc: fix broken link to ls-files page

Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 91863750cd09c3da93368d8fc6d3caeaabf1d66a
https://github.com/msysgit/git/commit/91863750cd09c3da93368d8fc6d3caeaabf1d66a
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-30 (Sun, 30 Jun 2013)

Changed paths:
M Makefile
M imap-send.c

Log Message:
-----------
Merge branch 'da/darwin' into maint

Newer MacOS X encourages the programs to compile and link with their
CommonCrypto, not with OpenSSL.

* da/darwin:
imap-send: eliminate HMAC deprecation warnings on Mac OS X
cache.h: eliminate SHA-1 deprecation warnings on Mac OS X
Makefile: add support for Apple CommonCrypto facility
Makefile: fix default regex settings on Darwin


Commit: c6c4250eb605a502e1b5128d224561cf71272798
https://github.com/msysgit/git/commit/c6c4250eb605a502e1b5128d224561cf71272798
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-30 (Sun, 30 Jun 2013)

Changed paths:
M Makefile
A compat/clipped-write.c
M config.mak.uname
M git-compat-util.h

Log Message:
-----------
Merge branch 'fc/macos-x-clipped-write' into maint

Mac OS X does not like to write(2) more than INT_MAX number of
bytes; work it around by chopping write(2) into smaller pieces.

* fc/macos-x-clipped-write:
compate/clipped-write.c: large write(2) fails on Mac OS X/XNU


Commit: 43d11f4492ebafdabd3fb0c9bcab49d2731e4676
https://github.com/msysgit/git/commit/43d11f4492ebafdabd3fb0c9bcab49d2731e4676
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-30 (Sun, 30 Jun 2013)

Changed paths:
A Documentation/RelNotes/1.8.3.3.txt
M RelNotes

Log Message:
-----------
Start preparing for 1.8.3.3

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


Commit: d9857bfd4de097d662d40481664ef30577f120f5
https://github.com/msysgit/git/commit/d9857bfd4de097d662d40481664ef30577f120f5
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-30 (Sun, 30 Jun 2013)

Changed paths:
M Documentation/git-rev-parse.txt
M builtin/rev-parse.c
M git-submodule.sh
A t/t1513-rev-parse-prefix.sh
M t/t7400-submodule-basic.sh
M t/t7401-submodule-summary.sh
M t/t7403-submodule-sync.sh
M t/t7406-submodule-update.sh
M t/t7407-submodule-foreach.sh

Log Message:
-----------
Merge branch 'jk/submodule-subdirectory-ok'

Allow various subcommands of "git submodule" to be run not from the
top of the working tree of the superproject.

* jk/submodule-subdirectory-ok:
submodule: drop the top-level requirement
rev-parse: add --prefix option
submodule: show full path in error message
t7403: add missing && chaining
t7403: modernize style
t7401: make indentation consistent


Commit: 96ffd4ca937616c4a419cb9e2ef80b3156acaf80
https://github.com/msysgit/git/commit/96ffd4ca937616c4a419cb9e2ef80b3156acaf80
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-30 (Sun, 30 Jun 2013)

Changed paths:
M Documentation/git-name-rev.txt
M builtin/name-rev.c

Log Message:
-----------
Merge branch 'nk/name-rev-abbreviated-refs'

"git name-rev --refs=tags/v*" were forbidden, which was a bit
inconvenient (you had to give a pattern to match refs fully, like
--refs=refs/tags/v*).

* nk/name-rev-abbreviated-refs:
name-rev: allow to specify a subpath for --refs option


Commit: d1314826935392d38e3bb2df754762a402d0af00
https://github.com/msysgit/git/commit/d1314826935392d38e3bb2df754762a402d0af00
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-30 (Sun, 30 Jun 2013)

Changed paths:
M refs.c

Log Message:
-----------
Merge branch 'mh/loose-refs-race-with-pack-ref'

We read loose and packed rerferences in two steps, but after
deciding to read a loose ref but before actually opening it to read
it, another process racing with us can unlink it, which would cause
us to barf. Update the codepath to retry when such a race is
detected.

* mh/loose-refs-race-with-pack-ref:
resolve_ref_unsafe(): close race condition reading loose refs
resolve_ref_unsafe(): handle the case of an SHA-1 within loop
resolve_ref_unsafe(): extract function handle_missing_loose_ref()


Commit: 08585fd48d2d3d8facce9bdc366cfd896329a4b8
https://github.com/msysgit/git/commit/08585fd48d2d3d8facce9bdc366cfd896329a4b8
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-30 (Sun, 30 Jun 2013)

Changed paths:
M Documentation/diff-options.txt
M diff.c
M t/t4015-diff-whitespace.sh
M xdiff/xdiff.h
M xdiff/xdiffi.c
M xdiff/xdiffi.h
M xdiff/xemit.c
M xdiff/xemit.h
M xdiff/xutils.c
M xdiff/xutils.h

Log Message:
-----------
Merge branch 'ap/diff-ignore-blank-lines'

"git diff" learned a mode that ignores hunks whose change consists
only of additions and removals of blank lines, which is the same as
"diff -B" (ignore blank lines) of GNU diff.

* ap/diff-ignore-blank-lines:
diff: add --ignore-blank-lines option


Commit: 079424a2cffa9c5a96c958ec50bb5a865a9305cf
https://github.com/msysgit/git/commit/079424a2cffa9c5a96c958ec50bb5a865a9305cf
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-30 (Sun, 30 Jun 2013)

Changed paths:
M builtin/clone.c
M builtin/ls-files.c
M cache.h
M read-cache.c
M refs.c
M refs.h

Log Message:
-----------
Merge branch 'mh/ref-races'

"git pack-refs" that races with new ref creation or deletion have
been susceptible to lossage of refs under right conditions, which
has been tightened up.

* mh/ref-races:
for_each_ref: load all loose refs before packed refs
get_packed_ref_cache: reload packed-refs file when it changes
add a stat_validity struct
Extract a struct stat_data from cache_entry
packed_ref_cache: increment refcount when locked
do_for_each_entry(): increment the packed refs cache refcount
refs: manage lifetime of packed refs cache via reference counting
refs: implement simple transactions for the packed-refs file
refs: wrap the packed refs cache in a level of indirection
pack_refs(): split creation of packed refs and entry writing
repack_without_ref(): split list curation and entry writing


Commit: c1182d9297c2486d36bf7a49a31bb3d7c2f98a9b
https://github.com/msysgit/git/commit/c1182d9297c2486d36bf7a49a31bb3d7c2f98a9b
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-30 (Sun, 30 Jun 2013)

Changed paths:
M Documentation/RelNotes/1.8.4.txt

Log Message:
-----------
Update draft release notes to 1.8.4

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


Commit: 7a3187eb788854ed3a20fee30b27e68430f753b7
https://github.com/msysgit/git/commit/7a3187eb788854ed3a20fee30b27e68430f753b7
Author: Junio C Hamano <***@pobox.com>
Date: 2013-06-30 (Sun, 30 Jun 2013)

Changed paths:
A Documentation/RelNotes/1.8.3.3.txt
M Documentation/git-check-ignore.txt
M t/t7011-skip-worktree-reading.sh

Log Message:
-----------
Merge branch 'maint'

* maint:
Start preparing for 1.8.3.3
check-ignore doc: fix broken link to ls-files page
test: spell 'ls-files --delete' option correctly in test descriptions


Commit: 776009d1b2bcfbd001767758fea0c2ff0e74383d
https://github.com/msysgit/git/commit/776009d1b2bcfbd001767758fea0c2ff0e74383d
Author: John Keeping <***@keeping.me.uk>
Date: 2013-06-30 (Sun, 30 Jun 2013)

Changed paths:
M contrib/completion/git-completion.bash

Log Message:
-----------
completion: handle unstuck form of base git options

git-completion.bash's parsing of the command name relies on everything
preceding it starting with '-' unless it is the "-c" option. This
allows users to use the stuck form of "--work-tree=<path>" and
"--namespace=<path>" but not the unstuck forms "--work-tree <path>" and
"--namespace <path>". Fix this.

Similarly, the completion only handles the stuck form "--git-dir=<path>"
and not "--git-dir <path>", so fix this as well.

Signed-off-by: John Keeping <***@keeping.me.uk>
Acked-by: SZEDER Gábor <***@ira.uka.de>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 66fb37d0c62ef49c9d3506b10d2d7f5b33008484
https://github.com/msysgit/git/commit/66fb37d0c62ef49c9d3506b10d2d7f5b33008484
Author: John Keeping <***@keeping.me.uk>
Date: 2013-06-30 (Sun, 30 Jun 2013)

Changed paths:
M contrib/completion/git-completion.bash
M t/t9902-completion.sh

Log Message:
-----------
completion: learn about --man-path

Signed-off-by: John Keeping <***@keeping.me.uk>
Acked-by: SZEDER Gábor <***@ira.uka.de>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 296fa99334ff9fc0ca1ea01bce5f53d7ae248d5f
https://github.com/msysgit/git/commit/296fa99334ff9fc0ca1ea01bce5f53d7ae248d5f
Author: Andrew Pimlott <***@pimlott.net>
Date: 2013-07-01 (Mon, 01 Jul 2013)

Changed paths:
M t/lib-rebase.sh

Log Message:
-----------
lib-rebase: document exec_ in FAKE_LINES

Signed-off-by: Andrew Pimlott <***@pimlott.net>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: f66d000b0d7d6d3c858f3aacd9a67d4809ac8011
https://github.com/msysgit/git/commit/f66d000b0d7d6d3c858f3aacd9a67d4809ac8011
Author: Andrew Pimlott <***@pimlott.net>
Date: 2013-07-01 (Mon, 01 Jul 2013)

Changed paths:
M t/t7500-commit.sh

Log Message:
-----------
t7500: fix flipped actual/expect

Signed-off-by: Andrew Pimlott <***@pimlott.net>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: a49528155b8a35b34d00d0c2ace528e72c1fef06
https://github.com/msysgit/git/commit/a49528155b8a35b34d00d0c2ace528e72c1fef06
Author: Andrew Pimlott <***@pimlott.net>
Date: 2013-07-01 (Mon, 01 Jul 2013)

Changed paths:
M t/lib-rebase.sh

Log Message:
-----------
lib-rebase: style: use write_script, <<-\EOF

Signed-off-by: Andrew Pimlott <***@pimlott.net>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 7c37521487332fd700e2fa58bd2547d275e4f4d2
https://github.com/msysgit/git/commit/7c37521487332fd700e2fa58bd2547d275e4f4d2
Author: Brian Gernhardt <***@gernhardtsoftware.com>
Date: 2013-07-01 (Mon, 01 Jul 2013)

Changed paths:
M t/t4205-log-pretty-formats.sh

Log Message:
-----------
t4205: replace .\+ with ..* in sed commands

OS X's sed only accepts basic regular expressions, which does not
allow the + quantifier. However '..*' (anything, followed by zero or
more anything) is the same as '.\+' (one or more anything) and valid
in any regular expression language.

Signed-off-by: Brian Gernhardt <***@gernhardtsoftware.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 55f34c8d39dac8a90d4944a77cb7614256c62018
https://github.com/msysgit/git/commit/55f34c8d39dac8a90d4944a77cb7614256c62018
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-01 (Mon, 01 Jul 2013)

Changed paths:
A commit-slab.h
M commit.c
M commit.h

Log Message:
-----------
Merge branch 'jk/commit-info-slab'

Allow adding custom information to commit objects in order to
represent unbound number of flag bits etc.

* jk/commit-info-slab:
commit-slab: introduce a macro to define a slab for new type
commit-slab: avoid large realloc
commit: allow associating auxiliary info on-demand


Commit: 534f0e0996c0a5a0bea5bae8ae088a80a929932b
https://github.com/msysgit/git/commit/534f0e0996c0a5a0bea5bae8ae088a80a929932b
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-01 (Mon, 01 Jul 2013)

Changed paths:
M .gitignore
M Documentation/rev-list-options.txt
M Makefile
M builtin/log.c
M builtin/show-branch.c
M commit.c
M commit.h
A prio-queue.c
A prio-queue.h
M revision.c
M revision.h
M t/lib-t6000.sh
A t/t0009-prio-queue.sh
M t/t6002-rev-list-bisect.sh
M t/t6003-rev-list-topo-order.sh
A test-prio-queue.c

Log Message:
-----------
Merge branch 'jc/topo-author-date-sort'

"git log" learned the "--author-date-order" option, with which the
output is topologically sorted and commits in parallel histories
are shown intermixed together based on the author timestamp.

* jc/topo-author-date-sort:
t6003: add --author-date-order test
topology tests: teach a helper to set author dates as well
t6003: add --date-order test
topology tests: teach a helper to take abbreviated timestamps
t/lib-t6000: style fixes
log: --author-date-order
sort-in-topological-order: use prio-queue
prio-queue: priority queue of pointers to structs
toposort: rename "lifo" field


Commit: 0d07e98e741b50dbb4b98d561f7aeb48fb6a7bbc
https://github.com/msysgit/git/commit/0d07e98e741b50dbb4b98d561f7aeb48fb6a7bbc
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-01 (Mon, 01 Jul 2013)

Changed paths:
M Documentation/git-clone.txt
M Documentation/git-fast-export.txt
M Documentation/git-remote.txt
M Documentation/technical/racy-git.txt
M Documentation/user-manual.txt
M t/perf/README

Log Message:
-----------
Merge branch 'wk/doc-in-linux-3.x-era'

Update documentation to match more recent realities.

* wk/doc-in-linux-3.x-era:
Documentation: Update 'linux-2.6.git' -> 'linux.git'
Documentation: Update the NFS remote examples to use the staging repo
doc/clone: Pick more compelling paths for the --reference example
doc/clone: Remove the '--bare -l -s' example


Commit: 693502087e3a3190ffb11886989d52079e05412d
https://github.com/msysgit/git/commit/693502087e3a3190ffb11886989d52079e05412d
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-01 (Mon, 01 Jul 2013)

Changed paths:
M contrib/completion/git-completion.bash
M contrib/completion/git-prompt.sh
M t/t9902-completion.sh
M t/t9903-bash-prompt.sh

Log Message:
-----------
Merge branch 'sg/bash-prompt'

* sg/bash-prompt:
bash prompt: mention that PROMPT_COMMAND mode is faster
bash prompt: avoid command substitution when finalizing gitstring
bash prompt: avoid command substitution when checking for untracked files
bash prompt: use bash builtins to check stash state
bash prompt: use bash builtins to check for unborn branch for dirty state
bash prompt: combine 'git rev-parse' for detached head
bash prompt: combine 'git rev-parse' executions in the main code path
bash prompt: use bash builtins to find out current branch
bash prompt: use bash builtins to find out rebase state
bash prompt: run 'git rev-parse --git-dir' directly instead of __gitdir()
bash prompt: return early from __git_ps1() when not in a git repository
bash prompt: print unique detached HEAD abbreviated object name
bash prompt: add a test for symbolic link symbolic refs
completion, bash prompt: move __gitdir() tests to completion test suite
bash prompt: use 'write_script' helper in interactive rebase test
bash prompt: fix redirection coding style in tests


Commit: 22930a0a8d21bf15a9b2582b262b5de2f3d106a2
https://github.com/msysgit/git/commit/22930a0a8d21bf15a9b2582b262b5de2f3d106a2
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-01 (Mon, 01 Jul 2013)

Changed paths:
M .mailmap

Log Message:
-----------
Merge branch 'sb/mailmap-merijn-brand'

* sb/mailmap-merijn-brand:
.mailmap: Map "H.Merijn Brand" to "H. Merijn Brand"


Commit: 43f25ae7b8e02d224fd150cf365b28d1956cc8cf
https://github.com/msysgit/git/commit/43f25ae7b8e02d224fd150cf365b28d1956cc8cf
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-01 (Mon, 01 Jul 2013)

Changed paths:
M Documentation/urls.txt

Log Message:
-----------
Merge branch 'ft/doc-git-transport'

* ft/doc-git-transport:
documentation: add git:// transport security notice


Commit: 66929c423a83ceb9a81e0a298102bfd155a1689b
https://github.com/msysgit/git/commit/66929c423a83ceb9a81e0a298102bfd155a1689b
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-01 (Mon, 01 Jul 2013)

Changed paths:
M Documentation/config.txt

Log Message:
-----------
Merge branch 'rr/column-doc'

* rr/column-doc:
column doc: rewrite documentation for column.ui


Commit: 4b9a0deddcc643e5082739e7649ab745faf9e7fc
https://github.com/msysgit/git/commit/4b9a0deddcc643e5082739e7649ab745faf9e7fc
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-01 (Mon, 01 Jul 2013)

Changed paths:
M Documentation/git-am.txt
M Documentation/user-manual.txt
M git-am.sh
M t/t7512-status-help.sh
M wt-status.c

Log Message:
-----------
Merge branch 'kb/am-deprecate-resolved'

Promote "git am --continue" over "git am --resolved" for UI
consistency.

* kb/am-deprecate-resolved:
am: replace uses of --resolved with --continue


Commit: eb3a4fc149d1a0d604ea6abf9085b3acfe3e85e6
https://github.com/msysgit/git/commit/eb3a4fc149d1a0d604ea6abf9085b3acfe3e85e6
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-01 (Mon, 01 Jul 2013)

Changed paths:
M Documentation/git-rebase.txt
M git-rebase--interactive.sh
M t/lib-rebase.sh
M t/t3415-rebase-autosquash.sh

Log Message:
-----------
Merge branch 'ap/rebase-multiple-fixups'

Having multiple "fixup!" on a line in the rebase instruction sheet
did not work very well with "git rebase -i --autosquash".

* ap/rebase-multiple-fixups:
lib-rebase: style: use write_script, <<-\EOF
rebase -i: handle fixup! fixup! in --autosquash


Commit: 46b045917c2786b26c80bfb118466fdf373c346a
https://github.com/msysgit/git/commit/46b045917c2786b26c80bfb118466fdf373c346a
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-01 (Mon, 01 Jul 2013)

Changed paths:
M contrib/completion/git-prompt.sh
M t/t9903-bash-prompt.sh

Log Message:
-----------
Merge branch 'ed/color-prompt'

Code clean-up for in-prompt status script (in contrib/).

* ed/color-prompt:
git-prompt.sh: add missing information in comments
git-prompt.sh: do not print duplicate clean color code
t9903: remove redundant tests
git-prompt.sh: refactor colored prompt code
t9903: add tests for git-prompt pcmode


Commit: 7e5ad06f689b13fb1fc484da2bf1a03b603d66c2
https://github.com/msysgit/git/commit/7e5ad06f689b13fb1fc484da2bf1a03b603d66c2
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-01 (Mon, 01 Jul 2013)

Changed paths:
M Documentation/git-ls-remote.txt
M remote.c
M t/t5505-remote.sh

Log Message:
-----------
Merge branch 'rr/remote-branch-config-refresh'

The original way to specify remote repository using .git/branches/
used to have a nifty feature. The code to support the feature was
still in a function but the caller was changed not to call it 5
years ago, breaking that feature and leaving the supporting code
unreachable.

* rr/remote-branch-config-refresh:
t/t5505-remote: test multiple push/pull in remotes-file
ls-remote doc: don't encourage use of branches-file
ls-remote doc: rewrite <repository> paragraph
ls-remote doc: fix example invocation on git.git
t/t5505-remote: test url-with-# in branches-file
remote: remove dead code in read_branches_file()
t/t5505-remote: use test_path_is_missing
t/t5505-remote: test push-refspec in branches-file
t/t5505-remote: modernize style


Commit: 51f11d69b16ab6614b79b3b4c12d35ca2b450a22
https://github.com/msysgit/git/commit/51f11d69b16ab6614b79b3b4c12d35ca2b450a22
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-01 (Mon, 01 Jul 2013)

Changed paths:
M Documentation/RelNotes/1.8.4.txt

Log Message:
-----------
Update draft release notes to 1.8.4

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


Commit: 8c4e4ec3ff053331c845331645a437b01b1f0de6
https://github.com/msysgit/git/commit/8c4e4ec3ff053331c845331645a437b01b1f0de6
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-01 (Mon, 01 Jul 2013)

Changed paths:
M t/lib-rebase.sh
M t/t7500-commit.sh

Log Message:
-----------
Merge branch 'maint'

* maint:
t7500: fix flipped actual/expect
lib-rebase: document exec_ in FAKE_LINES


Commit: 26c986e118523fda4624cec8d14bb8a4a09fdd08
https://github.com/msysgit/git/commit/26c986e118523fda4624cec8d14bb8a4a09fdd08
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-01 (Mon, 01 Jul 2013)

Changed paths:
M dir.c
M t/t3010-ls-files-killed-modified.sh

Log Message:
-----------
treat_directory(): do not declare submodules to be untracked

When the working tree walker encounters a directory, it asks the
function treat_directory() if it should descend into it, show it as
an untracked directory, or do something else. When the directory is
the top of the submodule working tree, we used to say "That is an
untracked directory", which was bogus.

It is an entity that is tracked in the index of the repository we
are looking at, and that is not to be descended into it. Return
path_none, not path_untracked, to report that.

The existing case that path_untracked is returned for a newly
discovered submodule that is not tracked in the index (this only
happens when DIR_NO_GITLINKS option is not used) is unchanged, but
that is exactly because the submodule is not tracked in the index.

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


Commit: a73653130edd6a8977106d45a8092c09040f9132
https://github.com/msysgit/git/commit/a73653130edd6a8977106d45a8092c09040f9132
Author: Petr Baudis <***@ucw.cz>
Date: 2013-07-01 (Mon, 01 Jul 2013)

Changed paths:
M Documentation/git-stash.txt
M git-stash.sh
M t/t3903-stash.sh

Log Message:
-----------
git stash: avoid data loss when "git stash save" kills a directory

"stash save" is about saving the local change to the working tree,
but also about restoring the state of the last commit to the working
tree. When a local change is to turn a non-directory to a directory,
in order to restore the non-directory, everything in the directory
needs to be removed.

Which is fine when running "git stash save --include-untracked",
but without that option, untracked, newly created files in the
directory will have to be discarded, if the state you are restoring
to has a non-directory at the same path as the directory.

Introduce a safety valve to fail the operation in such case, using
the "ls-files --killed" which was designed for this exact purpose.

The "stash save" is stopped when untracked files need to be
discarded because their leading path ceased to be a directory, and
the user is required to pass --force to really have the data
removed.

Signed-off-by: Petr Baudis <***@ucw.cz>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 2c57f7c9a2ae0190c0abe050197f2da6b56ef414
https://github.com/msysgit/git/commit/2c57f7c9a2ae0190c0abe050197f2da6b56ef414
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-01 (Mon, 01 Jul 2013)

Changed paths:
M t/t1512-rev-parse-disambiguation.sh

Log Message:
-----------
t1512: correct leftover constants from earlier edition

The earliest iteration of this test script used a magic string
110282 as the common prefix for ambiguous object names, but the
final edition switched the common prefix to 0000000000 (10 "0"s).

Unfortunately, instances of the original prefix were left in the
comments and a few tests. Replace them with the correct constants.

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


Commit: 94d75d1ed5c03b3c0191221f8e3960d808ba7e23
https://github.com/msysgit/git/commit/94d75d1ed5c03b3c0191221f8e3960d808ba7e23
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-01 (Mon, 01 Jul 2013)

Changed paths:
M sha1_name.c

Log Message:
-----------
get_short_sha1(): correctly disambiguate type-limited abbreviation

One test in t1512 that expects a failure incorrectly passed. The
test prepares a commit whose object name begins with ten "0"s, and
also prepares a tag that points at the commit. The object name of
the tag also begins with ten "0"s. There is no other commit-ish
object in the repository whose name begins with such a prefix.

Ideally, in such a repository:

$ git rev-parse --verify 0000000000^{commit}

should yield that commit. If 0000000000 is taken as the commit
0000000000e4f, peeling it to a commmit yields that commit itself,
and if 0000000000 is taken as the tag 0000000000f8f, peeling it to a
commit also yields the same commit, so in that twisted sense, the
extended SHA-1 expression 0000000000^{commit} is unambigous. The
test that expects a failure is to check the above command.

The reason the test expects a failure is that we did not implement
such a "unification" of two candidate objects. What we did (or at
least, meant to) implement was to recognise that a commit-ish is
required to expand 0000000000, and notice that there are two succh
commit-ish, and diagnose the request as ambiguous.

However, there was a bug in the logic to check the candidate
objects. When the code saw 0000000000f8f (a tag) that shared the
shortened prefix (ten "0"s), it tried to make sure that the tag is a
commit-ish by looking at the tag object. Because it incorrectly
used lookup_object() when the tag has not been parsed, however, we
incorrectly declared that the tag is _not_ a commit-ish, leaving the
sole commit in the repository, 0000000000e4f, that has the required
prefix as "unique match", causing the test to pass when it shouldn't.

This fixes the logic to inspect the type of the object a tag refers
to, to make the test that is expected to fail correctly fail.

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


Commit: 16445242edd7e90dc564b657043d2a5efca68cb0
https://github.com/msysgit/git/commit/16445242edd7e90dc564b657043d2a5efca68cb0
Author: Jeff King <***@peff.net>
Date: 2013-07-02 (Tue, 02 Jul 2013)

Changed paths:
M fetch-pack.c

Log Message:
-----------
fetch-pack: avoid quadratic list insertion in mark_complete

We insert the commit pointed to by each ref one-by-one into
the "complete" commit_list using insert_by_date. Because
each insertion is O(n), we end up with O(n^2) behavior.

This typically doesn't matter, because the number of refs is
reasonably small. And even if there are a lot of refs, they
often point to a smaller set of objects (in which case the
optimization in commit ea5f220 keeps our "n" small).

However, in pathological repositories (hundreds of thousands
of refs, each pointing to a unique commit), this quadratic
behavior can make a difference. Since we do not care about
the list order until we have finished building it, we can
simply keep it unsorted during the insertion phase, then
sort it afterwards.

On a repository like the one described above, this dropped
the time to do a no-op fetch from 2.0s to 1.7s. On normal
repositories, it probably does not matter at all, but it
does not hurt to protect ourselves from pathological cases.

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


Commit: 727377ff65f8b38990d4aa13fc6979d9a8cd6756
https://github.com/msysgit/git/commit/727377ff65f8b38990d4aa13fc6979d9a8cd6756
Author: Jeff King <***@peff.net>
Date: 2013-07-02 (Tue, 02 Jul 2013)

Changed paths:
M commit.c
M commit.h

Log Message:
-----------
commit.c: make compare_commits_by_commit_date global

This helper function was introduced as a prio_queue
comparator to help topological sorting. However, other users
of prio_queue who want to replace commit_list_insert_by_date
will want to use it, too. So let's make it public.

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


Commit: 099327b55275ddad678c27c7501e1babed078aef
https://github.com/msysgit/git/commit/099327b55275ddad678c27c7501e1babed078aef
Author: Jeff King <***@peff.net>
Date: 2013-07-02 (Tue, 02 Jul 2013)

Changed paths:
M fetch-pack.c

Log Message:
-----------
fetch-pack: avoid quadratic behavior in rev_list_push

When we call find_common to start finding common ancestors
with the remote side of a fetch, the first thing we do is
insert the tip of each ref into our rev_list linked list. We
keep the list sorted the whole time with
commit_list_insert_by_date, which means our insertion ends
up doing O(n^2) timestamp comparisons.

We could teach rev_list_push to use an unsorted list, and
then sort it once after we have added each ref. However, in
get_rev, we process the list by popping commits off the
front and adding parents back in timestamp-sorted order. So
that procedure would still operate on the large list.

Instead, we can replace the linked list with a heap-based
priority queue, which can do O(log n) insertion, making the
whole insertion procedure O(n log n).

As a result of switching to the prio_queue struct, we fix
two minor bugs:

1. When we "pop" a commit in get_rev, and when we clear
the rev_list in find_common, we do not take care to
free the "struct commit_list", and just leak its
memory. With the prio_queue implementation, the memory
management is handled for us.

2. In get_rev, we look at the head commit of the list,
possibly push its parents onto the list, and then "pop"
the front of the list off, assuming it is the same
element that we just peeked at. This is typically going
to be the case, but would not be in the face of clock
skew: the parents are inserted by date, and could
potentially be inserted at the head of the list if they
have a timestamp newer than their descendent. In this
case, we would accidentally pop the parent, and never
process it at all.

The new implementation pulls the commit off of the
queue as we examine it, and so does not suffer from
this problem.

With this patch, a fetch of a single commit into a
repository with 50,000 refs went from:

real 0m7.984s
user 0m7.852s
sys 0m0.120s

to:

real 0m2.017s
user 0m1.884s
sys 0m0.124s

Before this patch, a larger case with 370K refs still had
not completed after tens of minutes; with this patch, it
completes in about 12 seconds.

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


Commit: db2b3b820e2b28da268cc88adff076b396392dfe
https://github.com/msysgit/git/commit/db2b3b820e2b28da268cc88adff076b396392dfe
Author: Arnaud Fontaine <***@debian.org>
Date: 2013-07-02 (Tue, 02 Jul 2013)

Changed paths:
M git-rebase--interactive.sh
M t/t3404-rebase-interactive.sh

Log Message:
-----------
Do not ignore merge options in interactive rebase

Merge strategy and its options can be specified in `git rebase`,
but with `--interactive`, they were completely ignored.

Signed-off-by: Arnaud Fontaine <***@debian.org>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: a54841e96b78203598dea6b31b9618f40f107e7b
https://github.com/msysgit/git/commit/a54841e96b78203598dea6b31b9618f40f107e7b
Author: Miklos Vajna <***@suse.cz>
Date: 2013-07-02 (Tue, 02 Jul 2013)

Changed paths:
M builtin/merge.c
M t/t7600-merge.sh

Log Message:
-----------
merge: handle --ff/--no-ff/--ff-only as a tri-state option

These three options mean "favor fast-forwarding when possible,
without creating an unnecessary merge", "never fast-forward and
always create a merge commit even when the commit being merged is a
strict descendant", and "we do not want to create any merge commit;
update only when the merged commit is a strict descendant".

They are "pick one out of these three possibilities" options, and
correspond to "merge.ff" configuration that is tri-state (yes, no
and only).

However, the implementation did not follow the usual convention for
the command line options (later one wins, and command line overrides
what is in the configuration).

Fix this by consolidating two variables (fast_forward_only and
allow_fast_forward) used in the implementation into one enum that
can take one of the three possible values.

Signed-off-by: Miklos Vajna <***@suse.cz>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 6cb5728c43f34a7348e128b44b80d00b9417cb19
https://github.com/msysgit/git/commit/6cb5728c43f34a7348e128b44b80d00b9417cb19
Author: Chris Packham <***@gmail.com>
Date: 2013-07-03 (Wed, 03 Jul 2013)

Changed paths:
M Documentation/git-submodule.txt
M git-submodule.sh
M t/t7406-submodule-update.sh

Log Message:
-----------
submodule update: allow custom command to update submodule working tree

Users can set submodule.$name.update to '!command' which will cause
'command' to be run instead of checkout/merge/rebase. This allows
the user finer-grained control over how the update is done.

The primary motivation for this was interoperability with stgit;
however being able to intercept the submodule update process may
prove useful for integrating with or extending other tools.

Signed-off-by: Chris Packham <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 275cd184d52b5b81cb89e4ec33e540fb2ae61c1f
https://github.com/msysgit/git/commit/275cd184d52b5b81cb89e4ec33e540fb2ae61c1f
Author: Fredrik Gustafsson <***@iveqy.com>
Date: 2013-07-03 (Wed, 03 Jul 2013)

Changed paths:
M Documentation/git-submodule.txt
M git-submodule.sh
M t/t7400-submodule-basic.sh
M t/t7406-submodule-update.sh

Log Message:
-----------
Add --depth to submodule update/add

Add the --depth option to the add and update commands of "git submodule",
which is then passed on to the clone command. This is useful when the
submodule(s) are huge and you're not really interested in anything but
the latest commit.

Tests are added and some indention adjustments were made to conform to the
rest of the testfile on "submodule update can handle symbolic links in pwd".

Signed-off-by: Fredrik Gustafsson <***@iveqy.com>
Acked-by: Jens Lehmann <***@web.de>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 62e91efafd2030b7dc33ac6450b4e9a316e6ecc6
https://github.com/msysgit/git/commit/62e91efafd2030b7dc33ac6450b4e9a316e6ecc6
Author: John Keeping <***@keeping.me.uk>
Date: 2013-07-03 (Wed, 03 Jul 2013)

Changed paths:
M Documentation/git-config.txt

Log Message:
-----------
git-config: update doc for --get with multiple values

Since commit 00b347d (git-config: do not complain about duplicate
entries, 2012-10-23), "git config --get" does not exit with an error if
there are multiple values for the specified key but instead returns the
last value. Update the documentation to reflect this.

Signed-off-by: John Keeping <***@keeping.me.uk>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 0e7c41c0cd14b0d748ce624e49800b63f9b27991
https://github.com/msysgit/git/commit/0e7c41c0cd14b0d748ce624e49800b63f9b27991
Author: Matthieu Moy <***@imag.fr>
Date: 2013-07-03 (Wed, 03 Jul 2013)

Changed paths:
M contrib/mw-to-git/git-remote-mediawiki.perl

Log Message:
-----------
git-remote-mediawiki: un-brace file handles in binmode calls

Commit e83d36b66fc turned "print STDOUT" into "print {*STDOUT}", as
suggested by perlcritic. Unfortunately, it also changed two "binmode
STDOUT" calls the same way, which does not work and yield a "Not a GLOB
reference" error.

Signed-off-by: Matthieu Moy <***@imag.fr>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 10f2fbff6859a22327d04f9eb0c1a38995ff48b1
https://github.com/msysgit/git/commit/10f2fbff6859a22327d04f9eb0c1a38995ff48b1
Author: Jeff King <***@peff.net>
Date: 2013-07-03 (Wed, 03 Jul 2013)

Changed paths:
M commit.h
M pretty.c

Log Message:
-----------
pretty.c: drop const-ness from pretty_print_context

In the current code, callers are expected to fill in the
pretty_print_context, and then the pretty.c functions simply
read from it. This leaves no room for the pretty.c functions
to communicate with each other by manipulating the context
(e.g., data seen while printing the header may impact how we
print the body).

Rather than introduce a new struct to hold modifiable data,
let's just drop the const-ness of the existing context
struct.

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


Commit: a90804752f6ab2b911882d47fafb6c2b78f447c3
https://github.com/msysgit/git/commit/a90804752f6ab2b911882d47fafb6c2b78f447c3
Author: Jeff King <***@peff.net>
Date: 2013-07-03 (Wed, 03 Jul 2013)

Changed paths:
M Documentation/git-format-patch.txt
M builtin/log.c
M commit.h
M log-tree.c
M pretty.c
M revision.h
M t/t4014-format-patch.sh

Log Message:
-----------
teach format-patch to place other authors into in-body "From"

Format-patch generates emails with the "From" address set to the
author of each patch. If you are going to send the emails, however,
you would want to replace the author identity with yours (if they
are not the same), and bump the author identity to an in-body
header.

Normally this is handled by git-send-email, which does the
transformation before sending out the emails. However, some
workflows may not use send-email (e.g., imap-send, or a custom
script which feeds the mbox to a non-git MUA). They could each
implement this feature themselves, but getting it right is
non-trivial (one must canonicalize the identities by reversing any
RFC2047 encoding or RFC822 quoting of the headers, which has caused
many bugs in send-email over the years).

This patch takes a different approach: it teaches format-patch a
"--from" option which handles the ident check and in-body header
while it is writing out the email. It's much simpler to do at this
level (because we haven't done any quoting yet), and any workflow
based on format-patch can easily turn it on.

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


Commit: d6ac1d2120573a9dab5a9502fd1cb1a8e4ad58b5
https://github.com/msysgit/git/commit/d6ac1d2120573a9dab5a9502fd1cb1a8e4ad58b5
Author: Michael Schubert <***@elegosoft.com>
Date: 2013-07-03 (Wed, 03 Jul 2013)

Changed paths:
M Documentation/git-p4.txt
M Documentation/git-submodule.txt
M Documentation/glossary-content.txt
M builtin/clone.c
M builtin/merge.c
M t/t5505-remote.sh

Log Message:
-----------
Change "remote tracking" to "remote-tracking"

Fix a typo ("remote remote-tracking") going back to the big cleanup
in 2010 (8b3f3f84 etc). Also, remove some more occurrences of
"tracking" and "remote tracking" in favor of "remote-tracking".

Signed-off-by: Michael Schubert <***@elegosoft.com>
Reviewed-by: Johan Herland <***@herland.net>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: f59bebb78edb26e4f66c2754bc4d168c5d4ebb4a
https://github.com/msysgit/git/commit/f59bebb78edb26e4f66c2754bc4d168c5d4ebb4a
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-03 (Wed, 03 Jul 2013)

Changed paths:
M Documentation/git-config.txt

Log Message:
-----------
Merge branch 'maint-1.8.1' into maint-1.8.2

* maint-1.8.1:
git-config: update doc for --get with multiple values


Commit: dfc6b040d0f01a1fcec7acce6a3eda22b41a4933
https://github.com/msysgit/git/commit/dfc6b040d0f01a1fcec7acce6a3eda22b41a4933
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-03 (Wed, 03 Jul 2013)

Changed paths:
M Documentation/git-config.txt

Log Message:
-----------
Merge branch 'maint-1.8.2' into maint

* maint-1.8.2:
git-config: update doc for --get with multiple values


Commit: b3bf469bf8d4cff6fbfef7db1c6f74b63906a317
https://github.com/msysgit/git/commit/b3bf469bf8d4cff6fbfef7db1c6f74b63906a317
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-03 (Wed, 03 Jul 2013)

Changed paths:
M sha1_name.c
M t/t1507-rev-parse-upstream.sh

Log Message:
-----------
Merge branch 'rr/die-on-missing-upstream' into maint

When a reflog notation is used for implicit "current branch", we did
not say which branch, and worse said "branch ''".

* rr/die-on-missing-upstream:
sha1_name: fix error message for @{<N>}, @{<date>}
sha1_name: fix error message for @{u}


Commit: 318e758f327c486a606ece48c5dfb5fa6e5d39d5
https://github.com/msysgit/git/commit/318e758f327c486a606ece48c5dfb5fa6e5d39d5
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-03 (Wed, 03 Jul 2013)

Changed paths:
M combine-diff.c
M t/t4202-log.sh

Log Message:
-----------
Merge branch 'cb/log-follow-with-combined' into maint

"git log -c --follow $path" segfaulted upon hitting the commit that
renamed the $path being followed.

* cb/log-follow-with-combined:
fix segfault with git log -c --follow


Commit: 4b0d73f33d88f1b604dad049e7af6a9a94824160
https://github.com/msysgit/git/commit/4b0d73f33d88f1b604dad049e7af6a9a94824160
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-03 (Wed, 03 Jul 2013)

Changed paths:
M t/t3070-wildmatch.sh
M wildmatch.c

Log Message:
-----------
Merge branch 'ar/wildmatch-foldcase' into maint

The wildmatch engine did not honor WM_CASEFOLD option correctly.

* ar/wildmatch-foldcase:
wildmatch: properly fold case everywhere


Commit: 897175f1073dac328bc009bbe79bc3c45c9399c3
https://github.com/msysgit/git/commit/897175f1073dac328bc009bbe79bc3c45c9399c3
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-03 (Wed, 03 Jul 2013)

Changed paths:
M gitweb/gitweb.perl

Log Message:
-----------
Merge branch 'cm/gitweb-project-list-persistent-cgi-fix' into maint

"gitweb" forgot to clear a global variable $search_regexp upon each
request, mistakenly carrying over the previous search to a new one
when used as a persistent CGI.

* cm/gitweb-project-list-persistent-cgi-fix:
gitweb: fix problem causing erroneous project list


Commit: c9d9a2d6b60178d604a2b78886b031d250980e9f
https://github.com/msysgit/git/commit/c9d9a2d6b60178d604a2b78886b031d250980e9f
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-03 (Wed, 03 Jul 2013)

Changed paths:
M Documentation/git-diff-index.txt

Log Message:
-----------
Merge branch 'an/diff-index-doc' into maint

* an/diff-index-doc:
Documentation/diff-index: mention two modes of operation


Commit: 15afe9596c101d00085830c54fdc4c4ad0b7193e
https://github.com/msysgit/git/commit/15afe9596c101d00085830c54fdc4c4ad0b7193e
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-03 (Wed, 03 Jul 2013)

Changed paths:
M Documentation/merge-options.txt

Log Message:
-----------
Merge branch 'rh/merge-options-doc-fix' into maint

* rh/merge-options-doc-fix:
Documentation/merge-options.txt: restore `-e` option


Commit: 250ee16c14c8b37b437fbfc7345313d7db32b95d
https://github.com/msysgit/git/commit/250ee16c14c8b37b437fbfc7345313d7db32b95d
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-03 (Wed, 03 Jul 2013)

Changed paths:
M t/t5004-archive-corner-cases.sh
A t/t5004/empty-with-pax-header.tar

Log Message:
-----------
Merge branch 'rs/empty-archive' into maint

* rs/empty-archive:
t5004: resurrect original empty tar archive test
t5004: avoid using tar for checking emptiness of archive

Conflicts:
t/t5004-archive-corner-cases.sh


Commit: e9fee67fac9c3ae40e348a992059fa092148e7f2
https://github.com/msysgit/git/commit/e9fee67fac9c3ae40e348a992059fa092148e7f2
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-03 (Wed, 03 Jul 2013)

Changed paths:
M builtin/merge.c
M help.c
M help.h

Log Message:
-----------
Merge branch 'vv/help-unknown-ref' into maint

* vv/help-unknown-ref:
merge: use help_unknown_ref()
help: add help_unknown_ref()


Commit: 0bdae5ff7dd4aca3532d9b0336532c23eb2c44ab
https://github.com/msysgit/git/commit/0bdae5ff7dd4aca3532d9b0336532c23eb2c44ab
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-03 (Wed, 03 Jul 2013)

Changed paths:
M t/t5551-http-fetch.sh

Log Message:
-----------
Merge branch 'jc/t5551-posix-sed-bre' into maint

* jc/t5551-posix-sed-bre:
t5551: do not use unportable sed '\+'


Commit: 8dbc03933d0832764fe80576d249d5b9d3b52f20
https://github.com/msysgit/git/commit/8dbc03933d0832764fe80576d249d5b9d3b52f20
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-03 (Wed, 03 Jul 2013)

Changed paths:
M config.c

Log Message:
-----------
Merge branch 'jc/core-checkstat' into maint

* jc/core-checkstat:
deprecate core.statinfo at Git 2.0 boundary


Commit: a256a58081e76858a72c41498e23c6c9e67d5127
https://github.com/msysgit/git/commit/a256a58081e76858a72c41498e23c6c9e67d5127
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-03 (Wed, 03 Jul 2013)

Changed paths:
M contrib/subtree/git-subtree.sh

Log Message:
-----------
Merge branch 'dm/unbash-subtree' into maint

* dm/unbash-subtree:
contrib/git-subtree: Use /bin/sh interpreter instead of /bin/bash


Commit: ac5611a1ccbbb125b65882711e18331a3b91a1ca
https://github.com/msysgit/git/commit/ac5611a1ccbbb125b65882711e18331a3b91a1ca
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-03 (Wed, 03 Jul 2013)

Changed paths:
M read-cache.c

Log Message:
-----------
Merge branch 'fc/do-not-use-the-index-in-add-to-index' into maint

* fc/do-not-use-the-index-in-add-to-index:
read-cache: trivial style cleanups
read-cache: fix wrong 'the_index' usage


Commit: 213d25648ae926d523727f1df06ad7ee4d4ad916
https://github.com/msysgit/git/commit/213d25648ae926d523727f1df06ad7ee4d4ad916
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-03 (Wed, 03 Jul 2013)

Changed paths:
M Documentation/git.txt

Log Message:
-----------
Merge branch 'cr/git-work-tree-sans-git-dir' into maint

* cr/git-work-tree-sans-git-dir:
git.txt: remove stale comment regarding GIT_WORK_TREE


Commit: 4efd16543fe1c0871742dbd33d6adc2acfd11c3c
https://github.com/msysgit/git/commit/4efd16543fe1c0871742dbd33d6adc2acfd11c3c
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-03 (Wed, 03 Jul 2013)

Changed paths:
M Documentation/diff-options.txt
M Documentation/gitdiffcore.txt
M diffcore-pickaxe.c

Log Message:
-----------
Merge branch 'rr/diffcore-pickaxe-doc' into maint

* rr/diffcore-pickaxe-doc:
diffcore-pickaxe doc: document -S and -G properly
diffcore-pickaxe: make error messages more consistent


Commit: 81a199bb1cd483321962a7bfe5db33980bbf0f01
https://github.com/msysgit/git/commit/81a199bb1cd483321962a7bfe5db33980bbf0f01
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-03 (Wed, 03 Jul 2013)

Changed paths:
M Documentation/RelNotes/1.8.3.3.txt

Log Message:
-----------
Update draft release notes to 1.8.3.3

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


Commit: 56df44a98759157a6d729901f0e27b749e23c0d6
https://github.com/msysgit/git/commit/56df44a98759157a6d729901f0e27b749e23c0d6
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-03 (Wed, 03 Jul 2013)

Changed paths:
M Documentation/RelNotes/1.8.3.3.txt
M Documentation/git-config.txt

Log Message:
-----------
Merge branch 'maint'

* maint:
Update draft release notes to 1.8.3.3
git-config: update doc for --get with multiple values


Commit: 531c8dd4fb18e653d6170d367e4b23c3164d5ce0
https://github.com/msysgit/git/commit/531c8dd4fb18e653d6170d367e4b23c3164d5ce0
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-07-03 (Wed, 03 Jul 2013)

Changed paths:
M Makefile
R fixup-builtins

Log Message:
-----------
fixup-builtins: retire an old transition helper script

This script was added in 36e5e70 (Start deprecating "git-command" in
favor of "git command", 2007-06-30) with the intent of aiding the
transition away from dashed forms.

It has already been used to help the transision and served its
purpose, and is no longer very useful for follow-up work, because
the majority of remaining matches it finds are false positives.

Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Reviewed-by: Jeff King <***@peff.net>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 1a741bf73f898e6deb396dcc8b8d2d162798e616
https://github.com/msysgit/git/commit/1a741bf73f898e6deb396dcc8b8d2d162798e616
Author: brian m. carlson <***@crustytoothpaste.net>
Date: 2013-07-04 (Thu, 04 Jul 2013)

Changed paths:
M git-send-email.perl

Log Message:
-----------
send-email: provide port separately from hostname

If the SMTP port is provided as part of the hostname to Net::SMTP, it passes
the combined string to the SASL provider; this causes GSSAPI authentication to
fail since Kerberos does not want the port information. Instead, pass the port
as a separate argument as is done for SSL connections.

Signed-off-by: brian m. carlson <***@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 28110d4bfc613d875231d3d7788500d876136ffc
https://github.com/msysgit/git/commit/28110d4bfc613d875231d3d7788500d876136ffc
Author: brian m. carlson <***@crustytoothpaste.net>
Date: 2013-07-04 (Thu, 04 Jul 2013)

Changed paths:
M commit.c
M t/t3900-i18n-commit.sh

Log Message:
-----------
commit: reject invalid UTF-8 codepoints

The commit code already contains code for validating UTF-8, but it does not
check for invalid values, such as guaranteed non-characters and surrogates. Fix
this by explicitly checking for and rejecting such characters.

Signed-off-by: brian m. carlson <***@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: e82bd6cc70db28dab8d0434e4033013adcd0abfa
https://github.com/msysgit/git/commit/e82bd6cc70db28dab8d0434e4033013adcd0abfa
Author: brian m. carlson <***@crustytoothpaste.net>
Date: 2013-07-04 (Thu, 04 Jul 2013)

Changed paths:
M commit.c
M t/t3900-i18n-commit.sh

Log Message:
-----------
commit: reject overlong UTF-8 sequences

The commit code accepts pseudo-UTF-8 sequences that encode a character with more
bytes than necessary. Reject such sequences, since they are not valid UTF-8.

Signed-off-by: brian m. carlson <***@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: ad9c2e22cade795cf5f3ad3dbd9cf33d2012af77
https://github.com/msysgit/git/commit/ad9c2e22cade795cf5f3ad3dbd9cf33d2012af77
Author: Tony Finch <***@dotat.at>
Date: 2013-07-04 (Thu, 04 Jul 2013)

Changed paths:
M Documentation/gitweb.conf.txt
M gitweb/gitweb.perl

Log Message:
-----------
gitweb: allow extra breadcrumbs to prefix the trail

There are often parent pages logically above the gitweb projects
list, e.g. home pages of the organization and department that host
the gitweb server. This change allows you to include links to those
pages in gitweb's breadcrumb trail.

Signed-off-by: Tony Finch <***@dotat.at>
Reviewed-by: Jonathan Nieder <***@gmail.com>
Acked-by: Jakub Narebski <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 14332bccc1d88e89fa8950b92c034432e1585bd4
https://github.com/msysgit/git/commit/14332bccc1d88e89fa8950b92c034432e1585bd4
Author: Alexey Shumkin <***@gmail.com>
Date: 2013-07-05 (Fri, 05 Jul 2013)

Changed paths:
M t/t4041-diff-submodule-option.sh
M t/t4205-log-pretty-formats.sh
M t/t6006-rev-list-format.sh
M t/t7102-reset.sh

Log Message:
-----------
t4041, t4205, t6006, t7102: use iso8859-1 rather than iso-8859-1

Both "iso8859-1" and "iso-8859-1" are understood as latin-1 by
modern platforms, but the latter is not understood by older
platforms;update tests to use the former.

This is in line with 3994e8a9 (t4201: use ISO8859-1 rather than
ISO-8859-1, 2009-12-03), which did the same.

Signed-off-by: Alexey Shumkin <***@gmail.com>
Reviewed-by: Johannes Sixt <***@kdbg.org>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 9443605b5d795122276b2c35887c9460148e2166
https://github.com/msysgit/git/commit/9443605b5d795122276b2c35887c9460148e2166
Author: Mark Levedahl <***@gmail.com>
Date: 2013-07-05 (Fri, 05 Jul 2013)

Changed paths:
M t/test-lib.sh

Log Message:
-----------
test-lib.sh - cygwin does not have usable FIFOs

Do not use FIFOs on cygwin, they do not work. Cygwin includes
coreutils, so has mkfifo, and that command does something. However,
the resultant named pipe is known (on the Cygwin mailing list at
least) to not work correctly.

This disables PIPE for Cygwin, allowing t0008.sh to complete (all other
tests in that file work correctly).

Signed-off-by: Mark Levedahl <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 04f2ddda8426d3ae46d52d9dcbfc00bd3c52e645
https://github.com/msysgit/git/commit/04f2ddda8426d3ae46d52d9dcbfc00bd3c52e645
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-05 (Fri, 05 Jul 2013)

Changed paths:
M t/README
M t/perf/perf-lib.sh
M t/t0000-basic.sh
M t/test-lib-functions.sh
M t/test-lib.sh
M t/valgrind/valgrind.sh

Log Message:
-----------
Merge branch 'tr/test-v-and-v-subtest-only'

Allows N instances of tests run in parallel, each running 1/N parts
of the test suite under Valgrind, to speed things up.

* tr/test-v-and-v-subtest-only:
perf-lib: fix start/stop of perf tests
test-lib: support running tests under valgrind in parallel
test-lib: allow prefixing a custom string before "ok N" etc.
test-lib: valgrind for only tests matching a pattern
test-lib: verbose mode for only tests matching a pattern
test-lib: self-test that --verbose works
test-lib: rearrange start/end of test_expect_* and test_skip
test-lib: refactor $GIT_SKIP_TESTS matching
test-lib: enable MALLOC_* for the actual tests


Commit: f8abaebab3fe1a1b873f9636ea410ac4007c8fa8
https://github.com/msysgit/git/commit/f8abaebab3fe1a1b873f9636ea410ac4007c8fa8
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-05 (Fri, 05 Jul 2013)

Changed paths:
M Makefile
R fixup-builtins

Log Message:
-----------
Merge branch 'maint'

* maint:
fixup-builtins: retire an old transition helper script


Commit: f3445f781f95ca4a7d59028aa7b7457fa925f577
https://github.com/msysgit/git/commit/f3445f781f95ca4a7d59028aa7b7457fa925f577
Author: Alexey Shumkin <***@gmail.com>
Date: 2013-07-05 (Fri, 05 Jul 2013)

Changed paths:
M t/t4205-log-pretty-formats.sh

Log Message:
-----------
t4205 (log-pretty-formats): revert back single quotes

In previuos commit de6029a (pretty: Add failing tests: --format output
should honor logOutputEncoding, 2013-06-26) single quotes were replaced
with double quotes to make "$(commit_msg)" expression in heredoc to
work. The same effect can be achieved by using "EOF" as a heredoc
delimiter instead of "\EOF".

Signed-off-by: Alexey Shumkin <***@gmail.com>
Suggested-by: Johannes Sixt <***@viscovery.net>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 17cc2ef1c5f160056f5ca8cf4bd795ddd9b76bd3
https://github.com/msysgit/git/commit/17cc2ef1c5f160056f5ca8cf4bd795ddd9b76bd3
Author: Alexey Shumkin <***@gmail.com>
Date: 2013-07-05 (Fri, 05 Jul 2013)

Changed paths:
M t/t4205-log-pretty-formats.sh
M t/t6006-rev-list-format.sh
M t/t7102-reset.sh

Log Message:
-----------
t4205, t6006, t7102: make functions better readable

Function 'test_format' has become harder to read after its change in
de6029a2 (pretty: Add failing tests: --format output should honor
logOutputEncoding, 2013-06-26). Simplify it by moving its "should we
expect it to fail?" parameter to the end.

Note, current code does not use this last parameter as far as there
are no tests expected to fail. We can keep that for future use.

Also, reformat comments.

Signed-off-by: Alexey Shumkin <***@gmail.com>
Improved-by: Johannes Sixt <***@viscovery.net>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 0fe6df3ce8e6373536d1a9016cac9126a1aed0da
https://github.com/msysgit/git/commit/0fe6df3ce8e6373536d1a9016cac9126a1aed0da
Author: Alexey Shumkin <***@gmail.com>
Date: 2013-07-05 (Fri, 05 Jul 2013)

Changed paths:
M t/t6006-rev-list-format.sh

Log Message:
-----------
t6006 (rev-list-format): add tests for "%b" and "%s" for the case i18n.commitEncoding is not set

In de6029a (pretty: Add failing tests: --format output should honor
logOutputEncoding, 2013-06-26) 'complex-subject' test was changed.
Revert it back, because that change actually removed tests for "%b"
and "%s" with i18n.commitEncoding set. Also, add two more tests for
mentioned above "%b" and "%s" to test encoding conversions with no
i18n.commitEncoding set.

Signed-off-by: Alexey Shumkin <***@gmail.com>
Suggested-by: Johannes Sixt <***@viscovery.net>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 37eb772ef3a5da0b28d3759373d714b349306ea4
https://github.com/msysgit/git/commit/37eb772ef3a5da0b28d3759373d714b349306ea4
Author: Alexey Shumkin <***@gmail.com>
Date: 2013-07-05 (Fri, 05 Jul 2013)

Changed paths:
M t/t4205-log-pretty-formats.sh

Log Message:
-----------
t4205 (log-pretty-formats): avoid using `sed`

For testing truncated log messages 'commit_msg' function uses `sed` to
cut a message. On various platforms `sed` behaves differently and
results of its work depend on locales installed. So, avoid using `sed`.
Use predefined expected outputs instead of calculated ones.

Signed-off-by: Alexey Shumkin <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 8240943bd75f1f19a40a0d4634afcab2eadd23d9
https://github.com/msysgit/git/commit/8240943bd75f1f19a40a0d4634afcab2eadd23d9
Author: Fraser Tweedale <***@frase.id.au>
Date: 2013-07-05 (Fri, 05 Jul 2013)

Changed paths:
M Documentation/diff-options.txt

Log Message:
-----------
diff-options: document default similarity index

The default similarity index of 50% is documented in gitdiffcore(7)
but it is worth also mentioning it in the description of the
-M/--find-renames option.

Signed-off-by: Fraser Tweedale <***@frase.id.au>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 3bdb5b9f1fe964dc9ac4aa29b7b80b1e89ba84dc
https://github.com/msysgit/git/commit/3bdb5b9f1fe964dc9ac4aa29b7b80b1e89ba84dc
Author: René Scharfe <***@lsrfire.ath.cx>
Date: 2013-07-07 (Sun, 07 Jul 2013)

Changed paths:
M diffcore-pickaxe.c

Log Message:
-----------
diffcore-pickaxe: simplify has_changes and contains

Halve the number of callsites of contains() to two using temporary
variables, simplifying the code. While at it, get rid of the
diff_options parameter, which became unused with 8fa4b09f.

Signed-off-by: René Scharfe <***@lsrfire.ath.cx>
Acked-by: Jeff King <***@peff.net>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 2fbd4f92fa0d6d59d01cf1b9c800d428cd95143d
https://github.com/msysgit/git/commit/2fbd4f92fa0d6d59d01cf1b9c800d428cd95143d
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-07-07 (Sun, 07 Jul 2013)

Changed paths:
M lockfile.c

Log Message:
-----------
lockfile: fix buffer overflow in path handling

The path of the file to be locked is held in lock_file::filename,
which is a fixed-length buffer of length PATH_MAX. This buffer is
also (temporarily) used to hold the path of the lock file, which is
the path of the file being locked plus ".lock". Because of this, the
path of the file being locked must be less than (PATH_MAX - 5)
characters long (5 chars are needed for ".lock" and one character for
the NUL terminator).

On entry into lock_file(), the path length was only verified to be
less than PATH_MAX characters, not less than (PATH_MAX - 5)
characters.

When and if resolve_symlink() is called, then that function is
correctly told to treat the buffer as (PATH_MAX - 5) characters long.
This part is correct. However:

* If LOCK_NODEREF was specified, then resolve_symlink() is never
called.

* If resolve_symlink() is called but the path is not a symlink, then
the length check is never applied.

So it is possible for a path with length (PATH_MAX - 5 <= len <
PATH_MAX) to make it through the checks. When ".lock" is strcat()ted
to such a path, the lock_file::filename buffer is overflowed.

Fix the problem by adding a check when entering lock_file() that the
original path is less than (PATH_MAX - 5) characters.

[jc: with independent development by Peff]

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


Commit: 7c07385d902f6d8c177d533dc2faa36ef4a52a66
https://github.com/msysgit/git/commit/7c07385d902f6d8c177d533dc2faa36ef4a52a66
Author: Jeff King <***@peff.net>
Date: 2013-07-07 (Sun, 07 Jul 2013)

Changed paths:
M sha1_file.c
M streaming.c

Log Message:
-----------
zero-initialize object_info structs

The sha1_object_info_extended function expects the caller to
provide a "struct object_info" which contains pointers to
"query" items that will be filled in. The purpose of
providing pointers rather than storing the response directly
in the struct is so that callers can choose not to incur the
expense in finding particular fields that they do not care
about.

Right now the only query item is "sizep", and all callers
set it explicitly to choose whether or not to query it; they
can then leave the rest of the struct uninitialized.

However, as we add new query items, each caller will have to
be updated to explicitly turn off the new ones (by setting
them to NULL). Instead, let's teach each caller to
zero-initialize the struct, so that they do not have to
learn about each new query item added.

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


Commit: 161f00e708874bac646da2ac05c66a18ade2c074
https://github.com/msysgit/git/commit/161f00e708874bac646da2ac05c66a18ade2c074
Author: Jeff King <***@peff.net>
Date: 2013-07-07 (Sun, 07 Jul 2013)

Changed paths:
M cache.h
M sha1_file.c

Log Message:
-----------
teach sha1_object_info_extended a "disk_size" query

Using sha1_object_info_extended, a caller can find out the
type of an object, its size, and information about where it
is stored. In addition to the object's "true" size, it can
also be useful to know the size that the object takes on
disk (e.g., to generate statistics about which refs consume
space).

This patch adds a "disk_sizep" field to "struct object_info",
and fills it in during sha1_object_info_extended if it is
non-NULL.

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


Commit: 3087b615abac487a5f52d31c10bc48f2c769654b
https://github.com/msysgit/git/commit/3087b615abac487a5f52d31c10bc48f2c769654b
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-07-07 (Sun, 07 Jul 2013)

Changed paths:
M Documentation/git-name-rev.txt

Log Message:
-----------
name-rev doc: rewrite --stdin paragraph

Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 7da9800fff189b93b46bb5e8763b75101264d940
https://github.com/msysgit/git/commit/7da9800fff189b93b46bb5e8763b75101264d940
Author: John Keeping <***@keeping.me.uk>
Date: 2013-07-07 (Sun, 07 Jul 2013)

Changed paths:
M Documentation/git-config.txt

Log Message:
-----------
git-config(1): clarify precedence of multiple values

In order to clarify which value is used when there are multiple values
defined for a key, re-order the list of file locations so that it runs
from least specific to most specific. Then add a paragraph which simply
says that the last value will be used.

Signed-off-by: John Keeping <***@keeping.me.uk>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: fc6c4e96f13fe595fc8991d91c56f2abbe67dc89
https://github.com/msysgit/git/commit/fc6c4e96f13fe595fc8991d91c56f2abbe67dc89
Author: John Keeping <***@keeping.me.uk>
Date: 2013-07-07 (Sun, 07 Jul 2013)

Changed paths:
M builtin/push.c

Log Message:
-----------
push: avoid suggesting "merging" remote changes

With some workflows, it is more suitable to rebase on top of remote
changes when a push does not fast-forward. Change the advice messages
in git-push to suggest that a user "integrate the remote changes"
instead of "merge the remote changes" to make this slightly clearer.

Also change the suggested 'git pull' to 'git pull ...' to hint to users
that they may want to add other parameters.

Suggested-by: Philip Oakley <***@iee.org>
Signed-off-by: John Keeping <***@keeping.me.uk>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 9608a190c0344a55b1d106c1cca17b17fe276c86
https://github.com/msysgit/git/commit/9608a190c0344a55b1d106c1cca17b17fe276c86
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-07 (Sun, 07 Jul 2013)

Changed paths:
M builtin/name-rev.c

Log Message:
-----------
name-ref: factor out name shortening logic from name_ref()

The logic will be used in a new codepath for showing exact matches.

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


Commit: 125a05fd0b45416558923b753f6418c24208d443
https://github.com/msysgit/git/commit/125a05fd0b45416558923b753f6418c24208d443
Author: Jeff King <***@peff.net>
Date: 2013-07-08 (Mon, 08 Jul 2013)

Changed paths:
M builtin/clone.c
M t/t5710-info-alternate.sh

Log Message:
-----------
clone: drop connectivity check for local clones

Commit 0433ad1 (clone: run check_everything_connected,
2013-03-25) added the same connectivity check to clone that
we use for fetching. The intent was to provide enough safety
checks that "git clone git://..." could be counted on to
detect bit errors and other repo corruption, and not
silently propagate them to the clone.

For local clones, this turns out to be a bad idea, for two
reasons:

1. Local clones use hard linking (or even shared object
stores), and so complete far more quickly. The time
spent on the connectivity check is therefore
proportionally much more painful.

2. Local clones do not actually meet our safety guarantee
anyway. The connectivity check makes sure we have all
of the objects we claim to, but it does not check for
bit errors. We will notice bit errors in commits and
trees, but we do not load blob objects at all. Whereas
over the pack transport, we actually recompute the sha1
of each object in the incoming packfile; bit errors
change the sha1 of the object, which is then caught by
the connectivity check.

This patch drops the connectivity check in the local case.
Note that we have to revert the changes from 0433ad1 to
t5710, as we no longer notice the corruption during clone.

We could go a step further and provide a "verify even local
clones" option, but it is probably not worthwhile. You can
already spell that as "cd foo.git && git fsck && git clone ."
or as "git clone --no-local foo.git".

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


Commit: e66681eb94bf1476e5c7436d777129a56512947f
https://github.com/msysgit/git/commit/e66681eb94bf1476e5c7436d777129a56512947f
Author: Torsten Bögershausen <***@web.de>
Date: 2013-07-08 (Mon, 08 Jul 2013)

Changed paths:
M t/t0000-basic.sh

Log Message:
-----------
t0000: do not use export X=Y

The shell syntax "export X=Y A=B" is not understood by all shells.

Signed-off-by: Torsten Bögershausen <***@web.de>
Acked-by: Thomas Rast <***@inf.ethz.ch>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: e19189060fcfb62410ce8e008720dbb6e7fa0d7b
https://github.com/msysgit/git/commit/e19189060fcfb62410ce8e008720dbb6e7fa0d7b
Author: Benoit Person <***@ensimag.fr>
Date: 2013-07-08 (Mon, 08 Jul 2013)

Changed paths:
A contrib/mw-to-git/Git/Mediawiki.pm
M contrib/mw-to-git/Makefile

Log Message:
-----------
git-remote-mediawiki: introduction of Git::Mediawiki.pm

We would want to allow the user to preview what he has edited locally
before pushing it out (and thus creating a non-removable revision in
the mediawiki's history).

This patch introduces a new perl package in which we will be able to
share code between that new tool and the remote helper:
git-remote-mediawiki.perl.

A perl package offers the best way to handle such case: Each script
can select what should be imported in its namespace. The package
namespacing limits the use of side effects in the shared code.

An alternate solution is to concatenate a "toolset" file with each
*.perl when 'make'-ing the project. In that scheme, everything is
imported in the script's namespace. Plus, files should be renamed in
order to chain to Git's toplevel makefile. Hence, this solution is not
acceptable.

Signed-off-by: Benoit Person <***@ensimag.fr>
Signed-off-by: Matthieu Moy <***@grenoble-inp.fr>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 8bade1e12e2041a21f50009d8baaa11bcb800e8f
https://github.com/msysgit/git/commit/8bade1e12e2041a21f50009d8baaa11bcb800e8f
Author: Benoit Person <***@ensimag.fr>
Date: 2013-07-08 (Mon, 08 Jul 2013)

Changed paths:
M t/test-lib.sh
M wrap-for-bin.sh

Log Message:
-----------
wrap-for-bin: make bin-wrappers chainable

For now, bin-wrappers overwrites GITPERLLIB. If we want to chain to
those scripts and define GITPERLLIB before, our changes will be
discarded.

This patch makes the bin-wrappers prepend their modifications to
GITPERLLIB rather than redefining it. It also unset GITPERLLIB in the
test-suite to prevent broken $GITPERLLIB in the user's configuration
from interfering with the testsuite.

The codes using GIT_TEMPLATE_DIR and GIT_TEXTDOMAINDIR handle only one
path in each of this variable so this new behavior would be useless on
those variables.

Signed-off-by: Benoit Person <***@ensimag.fr>
Signed-off-by: Matthieu Moy <***@grenoble-inp.fr>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 8a7c21514073f25e8262e311c0fa93101da0e6d3
https://github.com/msysgit/git/commit/8a7c21514073f25e8262e311c0fa93101da0e6d3
Author: Benoit Person <***@ensimag.fr>
Date: 2013-07-08 (Mon, 08 Jul 2013)

Changed paths:
M contrib/mw-to-git/Makefile
A contrib/mw-to-git/bin-wrapper/git

Log Message:
-----------
git-remote-mediawiki: add a git bin-wrapper for developement

The introduction of the Git::Mediawiki package makes it impossible to test,
without installation, git-remote-mediawiki and git-mw.

Using a git bin-wrapper enables us to define proper $GITPERLLIB to force the
use of the developement version of the Git::Mediawiki package, bypassing its
installed version if any.

An alternate solution was to 'install' all the files required at each build
but it pollutes the toplevel with untracked files.

Signed-off-by: Benoit Person <***@ensimag.fr>
Signed-off-by: Matthieu Moy <***@grenoble-inp.fr>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: c7956f90844280d477fefb978ebe0682fab006fb
https://github.com/msysgit/git/commit/c7956f90844280d477fefb978ebe0682fab006fb
Author: Benoit Person <***@ensimag.fr>
Date: 2013-07-08 (Mon, 08 Jul 2013)

Changed paths:
M contrib/mw-to-git/t/test-gitmw-lib.sh

Log Message:
-----------
git-remote-mediawiki: update tests to run with the new bin-wrapper

Until now, if git-remote-mediawiki was not installed, the test suite
copied it to the toplevel directory. This solution pollutes the
directory with untracked files. Plus, we would need to copy the new
git-mw.perl file to test it too.

Signed-off-by: Benoit Person <***@ensimag.fr>
Signed-off-by: Matthieu Moy <***@grenoble-inp.fr>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 192f7a080469ea3e7a702f04e08ba7e709c0b3c3
https://github.com/msysgit/git/commit/192f7a080469ea3e7a702f04e08ba7e709c0b3c3
Author: Benoit Person <***@ensimag.fr>
Date: 2013-07-08 (Mon, 08 Jul 2013)

Changed paths:
M contrib/mw-to-git/Git/Mediawiki.pm
M contrib/mw-to-git/git-remote-mediawiki.perl

Log Message:
-----------
git-remote-mediawiki: factoring code between git-remote-mediawiki and Git::Mediawiki

For now, Git::Mediawiki contains nothing.

This first patch moves some of git-remote-mediawiki.perl's factorisable code
into Git::Mediawiki. In the same time, it removes the side effects of that code
and renames the fucntions and constants moved to expose a better API.

Signed-off-by: Benoit Person <***@ensimag.fr>
Signed-off-by: Matthieu Moy <***@grenoble-inp.fr>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 07a263b9056ac7135ed84d64cabf80c5a6b1972e
https://github.com/msysgit/git/commit/07a263b9056ac7135ed84d64cabf80c5a6b1972e
Author: Benoit Person <***@ensimag.fr>
Date: 2013-07-08 (Mon, 08 Jul 2013)

Changed paths:
M contrib/mw-to-git/Makefile
A contrib/mw-to-git/git-mw.perl

Log Message:
-----------
git-remote-mediawiki: add git-mw command

For now, git-remote-mediawiki is only a remote-helper. This patch adds a new
toolset script in which we will be able to build new tools for
git-remote-mediawiki.

This toolset uses a subcommand-mechanism to launch the proper action. For now
only the 'help' subcommand is implemented. It also provides some generic code
for the verbose and help command line options.

Signed-off-by: Benoit Person <***@ensimag.fr>
Signed-off-by: Matthieu Moy <***@grenoble-inp.fr>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 0078a7fa05b3d671739aefba5265da809ea32e55
https://github.com/msysgit/git/commit/0078a7fa05b3d671739aefba5265da809ea32e55
Author: Benoit Person <***@ensimag.fr>
Date: 2013-07-08 (Mon, 08 Jul 2013)

Changed paths:
M contrib/mw-to-git/Git/Mediawiki.pm
M contrib/mw-to-git/git-mw.perl

Log Message:
-----------
git-remote-mediawiki: add preview subcommand into git mw

In the current state, a user of git-remote-mediawiki can edit the markup text
locally, but has to push to the remote wiki to see how the page is rendererd.
Add a new 'git mw preview' command that allows rendering the markup text on
the remote wiki without actually pushing any change on the wiki.

This uses Mediawiki's API to render the markup and inserts it in an actual
HTML page from the wiki so that CSS can be rendered properly. Most links
should work when the page exists on the remote.

Signed-off-by: Benoit Person <***@ensimag.fr>
Signed-off-by: Matthieu Moy <***@grenoble-inp.fr>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: f1bd15ab1553de76f297b8566b5779c43e3bfe2a
https://github.com/msysgit/git/commit/f1bd15ab1553de76f297b8566b5779c43e3bfe2a
Author: Brandon Casey <***@gmail.com>
Date: 2013-07-08 (Mon, 08 Jul 2013)

Changed paths:
M remote.c

Log Message:
-----------
remote.c: avoid O(m*n) behavior in match_push_refs

When pushing using a matching refspec or a pattern refspec, each ref
in the local repository must be paired with a ref advertised by the
remote server. This is accomplished by using the refspec to transform
the name of the local ref into the name it should have in the remote
repository, and then performing a linear search through the list of
remote refs to see if the remote ref was advertised by the remote
system.

Each of these lookups has O(n) complexity and makes match_push_refs()
be an O(m*n) operation, where m is the number of local refs and n is
the number of remote refs. If there are many refs 100,000+, then this
ref matching can take a significant amount of time. Let's prepare an
index of the remote refs to allow searching in O(log n) time and
reduce the complexity of match_push_refs() to O(m log n).

We prepare the index lazily so that it is only created when necessary.
So, there should be no impact when _not_ using a matching or pattern
refspec, i.e. when pushing using only explicit refspecs.

Dry-run push of a repository with 121,913 local and remote refs:
before after
real 1m40.582s 0m0.804s
user 1m39.914s 0m0.515s
sys 0m0.125s 0m0.106s

The creation of the index has overhead. So, if there are very few
local refs, then it could take longer to create the index than it
would have taken to just perform n linear lookups into the remote
ref space. Using the index should provide some improvement when
the number of local refs is roughly greater than the log of the
number of remote refs (i.e. m >= log n). The pathological case is
when there is a single local ref and very many remote refs.

Dry-run push of a repository with 121,913 remote refs and a single
local ref:
before after
real 0m0.525s 0m0.566s
user 0m0.243s 0m0.279s
sys 0m0.075s 0m0.099s

Using an index takes 41 ms longer, or roughly 7.8% longer.

Jeff King measured a no-op push of a single ref into a remote repo
with 370,000 refs:
before after
real 0m1.087s 0m1.156s
user 0m1.344s 0m1.412s
sys 0m0.288s 0m0.284s

Using an index takes 69 ms longer, or roughly 6.3% longer.

None of the measurements above required transferring any objects to
the remote repository. If the push required transferring objects and
updating the refs in the remote repository, the impact of preparing
the search index would be even smaller.

A similar operation is performed in the reverse direction when pruning
using a matching or pattern refspec. Let's avoid O(m*n) behavior in
the same way by lazily preparing an index on the local refs.

Signed-off-by: Brandon Casey <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 38678a15a2bf65580573a46e967c1d8d269965ae
https://github.com/msysgit/git/commit/38678a15a2bf65580573a46e967c1d8d269965ae
Author: Thomas Rast <***@inf.ethz.ch>
Date: 2013-07-08 (Mon, 08 Jul 2013)

Changed paths:
M t/t9902-completion.sh

Log Message:
-----------
t9902: fix 'test A == B' to use = operator

The == operator as an alias to = is not POSIX. This doesn't actually
matter for the execution of the script, because it only runs when the
shell is bash. However, it trips up test-lint, so it's nicer to use
the standard form.

Signed-off-by: Thomas Rast <***@inf.ethz.ch>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 9968ffff0d09b4925f339cceafb5f7e7cd78fb02
https://github.com/msysgit/git/commit/9968ffff0d09b4925f339cceafb5f7e7cd78fb02
Author: Thomas Rast <***@inf.ethz.ch>
Date: 2013-07-08 (Mon, 08 Jul 2013)

Changed paths:
M t/check-non-portable-shell.pl

Log Message:
-----------
test-lint: detect 'export FOO=bar'

Some shells do not understand the one-line construct, and instead need

FOO=bar &&
export FOO

Detect this in the test-lint target.

Signed-off-by: Thomas Rast <***@inf.ethz.ch>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 153d7265ef1277c1c9971780ad035a530e305f78
https://github.com/msysgit/git/commit/153d7265ef1277c1c9971780ad035a530e305f78
Author: John Keeping <***@keeping.me.uk>
Date: 2013-07-08 (Mon, 08 Jul 2013)

Changed paths:
M Documentation/git-pull.txt
M git-pull.sh

Log Message:
-----------
pull: change the description to "integrate" changes

Since git-pull learned the --rebase option it has not just been about
merging changes from a remote repository (where "merge" is in the sense
of "git merge"). Change the description to use "integrate" instead of
"merge" in order to reflect this.

Signed-off-by: John Keeping <***@keeping.me.uk>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: b23e0b9353e38149e791bde0feb1220aa1c8bac1
https://github.com/msysgit/git/commit/b23e0b9353e38149e791bde0feb1220aa1c8bac1
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-09 (Tue, 09 Jul 2013)

Changed paths:
M builtin/name-rev.c

Log Message:
-----------
name-rev: allow converting the exact object name at the tip of a ref

"git name-rev" is supposed to convert given object names into
strings that name the same objects based on refs, that can be fed to
"git rev-parse" to get the same object names back, so the output for
the commit object v1.8.3^0 (i.e. the commit tagged as v1.8.3)

$ git rev-parse v1.8.3 v1.8.3^0 | git name-rev --stdin
8af06057d0c31a24e8737ae846ac2e116e8bafb9
edca4152560522a431a51fc0a06147fc680b5b18 (tags/v1.8.3^0)

has to have "^0" at the end, as "edca41" is a commit, not the tag
that references it. But we do not get anything for the tag object
(8af0605) itself.

This is because the command however did not bother to see if the
object is at the tip of some ref, and failed to convert a tag
object.

Teach it to show this instead:

$ git rev-parse v1.8.3 v1.8.3^0 | git name-rev --stdin
8af06057d0c31a24e8737ae846ac2e116e8bafb9 (tags/v1.8.3)
edca4152560522a431a51fc0a06147fc680b5b18 (tags/v1.8.3^0)

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


Commit: 45bc950b4330ab675724b5079aa1528acde9f404
https://github.com/msysgit/git/commit/45bc950b4330ab675724b5079aa1528acde9f404
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-09 (Tue, 09 Jul 2013)

Changed paths:
M builtin/describe.c

Log Message:
-----------
describe: use argv-array

Instead of using a hand allocated args[] array, use argv-array API
to manage the dynamically created list of arguments when invoking
name-rev.

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


Commit: 81050ac604e27395509b5bffe80692a14d6ad3cd
https://github.com/msysgit/git/commit/81050ac604e27395509b5bffe80692a14d6ad3cd
Author: Peter Krefting <***@softwolves.pp.se>
Date: 2013-07-09 (Tue, 09 Jul 2013)

Changed paths:
M commit.c
M t/t3900-i18n-commit.sh

Log Message:
-----------
commit: reject non-characters

Unicode clause D14 defines all characters U+nFFFE and U+nFFFF (where
0 <= n <= 10h) as well as the range U+FDD0..U+FDEF as non-characters,
reserved for internal use only. Disallow these characters in commit
messages as they are normally not recommended for interchange.

Signed-off-by: Peter Krefting <***@softwolves.pp.se>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 9c5e6c802cde9881785b7f1b3278b97be4aabd82
https://github.com/msysgit/git/commit/9c5e6c802cde9881785b7f1b3278b97be4aabd82
Author: Nguyễn Thái Ngọc Duy <***@gmail.com>
Date: 2013-07-09 (Tue, 09 Jul 2013)

Changed paths:
M builtin/apply.c
M builtin/checkout.c
M builtin/clean.c
M builtin/commit.c
M builtin/grep.c
M builtin/ls-files.c
M builtin/merge-index.c
M builtin/merge.c
M builtin/rm.c
M builtin/update-index.c
M cache-tree.c
M cache-tree.h
M cache.h
M diff.c
M dir.c
M entry.c
M merge-recursive.c
M pathspec.c
M read-cache.c
M rerere.c
M resolve-undo.c
M revision.c
M sequencer.c
M sha1_name.c
M submodule.c
M test-dump-cache-tree.c
M tree.c
M unpack-trees.c
M wt-status.c

Log Message:
-----------
Convert "struct cache_entry *" to "const ..." wherever possible

I attempted to make index_state->cache[] a "const struct cache_entry **"
to find out how existing entries in index are modified and where. The
question I have is what do we do if we really need to keep track of on-disk
changes in the index. The result is

- diff-lib.c: setting CE_UPTODATE

- name-hash.c: setting CE_HASHED

- preload-index.c, read-cache.c, unpack-trees.c and
builtin/update-index: obvious

- entry.c: write_entry() may refresh the checked out entry via
fill_stat_cache_info(). This causes "non-const struct cache_entry
*" in builtin/apply.c, builtin/checkout-index.c and
builtin/checkout.c

- builtin/ls-files.c: --with-tree changes stagemask and may set
CE_UPDATE

Of these, write_entry() and its call sites are probably most
interesting because it modifies on-disk info. But this is stat info
and can be retrieved via refresh, at least for porcelain
commands. Other just uses ce_flags for local purposes.

So, keeping track of "dirty" entries is just a matter of setting a
flag in index modification functions exposed by read-cache.c. Except
unpack-trees, the rest of the code base does not do anything funny
behind read-cache's back.

The actual patch is less valueable than the summary above. But if
anyone wants to re-identify the above sites. Applying this patch, then
this:

diff --git a/cache.h b/cache.h
index 430d021..1692891 100644
--- a/cache.h
+++ b/cache.h
@@ -267,7 +267,7 @@ static inline unsigned int canon_mode(unsigned int mode)
#define cache_entry_size(len) (offsetof(struct cache_entry,name) + (len) + 1)

struct index_state {
- struct cache_entry **cache;
+ const struct cache_entry **cache;
unsigned int version;
unsigned int cache_nr, cache_alloc, cache_changed;
struct string_list *resolve_undo;

will help quickly identify them without bogus warnings.

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


Commit: 18d472db6fe3909537ceb7e0c54cf01fa3466b8f
https://github.com/msysgit/git/commit/18d472db6fe3909537ceb7e0c54cf01fa3466b8f
Author: Eric Sunshine <***@sunshineco.com>
Date: 2013-07-09 (Tue, 09 Jul 2013)

Changed paths:
M t/t4211-line-log.sh
M t/t4211/expect.multiple-superset

Log Message:
-----------
t4211: fix broken test when one -L range is subset of another

t4211 attempts to test multiple git-log -L ranges where one range is a
superset of the other, and falsely succeeds because its "expected"
output is incorrect.

Overlapping -L ranges handed to git-log are coalesced by
line-log.c:sort_and_merge_range_set() into a set of non-overlapping,
disjoint ranges. When one range is a subset of another,
sort_and_merge_range_set() should coalesce both ranges to the superset
range, but instead the coalesced range often is incorrectly truncated to
the end of the subset range. For example, ranges 2-8 and 3-4 are
coalesced incorrectly to 2-4.

One can observe this incorrect behavior with git-log -L using the test
repository created by t4211. The superset/subset ranges t4211 employs
are 4-$ and 8-12 (where $ represents end-of-file). The coalesced range
should be 4-$. Manually invoking git-log with the same ranges the test
employs, we see:

% git log -L 4:a.c simple |
awk '/^commit [0-9a-f]{40}/ { print substr($2,1,7) }'
4659538
100b61a
39b6eb2
a6eb826
f04fb20
de4c48a

% git log -L 8,12:a.c simple | awk ...
f04fb20
de4c48a

% git log -L 4:a.c -L 8,12:a.c simple | awk ...
a6eb826
f04fb20
de4c48a

This last output is incorrect. 8-12 is a subset of 4-$, hence the output
of the coalesced range should be the same as the 4-$ output shown first.
In fact, the above incorrect output is the truncated bogus range 4-12:

% git log -L 4,12:a.c simple | awk ...
a6eb826
f04fb20
de4c48a

Fix the test to correctly fail in the presence of the
sort_and_merge_range_set() coalescing bug. Do so by changing the
"expected" output to the commits mentioned in the 4-$ output above.

Signed-off-by: Eric Sunshine <***@sunshineco.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 3755b53af779ce75fa3ea4581a0e6525bc67278d
https://github.com/msysgit/git/commit/3755b53af779ce75fa3ea4581a0e6525bc67278d
Author: Eric Sunshine <***@sunshineco.com>
Date: 2013-07-09 (Tue, 09 Jul 2013)

Changed paths:
M line-log.c
M t/t4211-line-log.sh

Log Message:
-----------
range_set: fix coalescing bug when range is a subset of another

When coalescing ranges, sort_and_merge_range_set() unconditionally
assumes that the end of a range being folded into a preceding range
should become the end of the coalesced range. This assumption, however,
is invalid when one range is a subset of another. For example, given
ranges 1-5 and 2-3 added via range_set_append_unsafe(),
sort_and_merge_range_set() incorrectly coalesces them to range 1-3
rather than the correct union range 1-5. Fix this bug.

Signed-off-by: Eric Sunshine <***@sunshineco.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 222b1212c105b46e1672934ecb166fa21d47db3a
https://github.com/msysgit/git/commit/222b1212c105b46e1672934ecb166fa21d47db3a
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-09 (Tue, 09 Jul 2013)

Changed paths:
M remote-curl.c

Log Message:
-----------
remote-http: use argv-array

Instead of using a hand-managed argument array, use argv-array API
to manage dynamically formulated command line.

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


Commit: 4621085b7eb2f4cffe16d508988ff9b4a874b4ef
https://github.com/msysgit/git/commit/4621085b7eb2f4cffe16d508988ff9b4a874b4ef
Author: Jeff King <***@peff.net>
Date: 2013-07-09 (Tue, 09 Jul 2013)

Changed paths:
M advice.h
M trace.c
M transport-helper.c
M utf8.h

Log Message:
-----------
add missing "format" function attributes

For most of our functions that take printf-like formats, we
use gcc's __attribute__((format)) to get compiler warnings
when the functions are misused. Let's give a few more
functions the same protection.

In most cases, the annotations do not uncover any actual
bugs; the only code change needed is that we passed a size_t
to transfer_debug, which expected an int. Since we expect
the passed-in value to be a relatively small buffer size
(and cast a similar value to int directly below), we can
just cast away the problem.

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


Commit: eccb614924c9067eeceffa503e4da3683f1c8b6b
https://github.com/msysgit/git/commit/eccb614924c9067eeceffa503e4da3683f1c8b6b
Author: Jeff King <***@peff.net>
Date: 2013-07-09 (Tue, 09 Jul 2013)

Changed paths:
M argv-array.h
M builtin/revert.c
M exec_cmd.h
M run-command.h

Log Message:
-----------
use "sentinel" function attribute for variadic lists

This attribute can help gcc notice when callers forget to
add a NULL sentinel to the end of the function. This is our
first use of the sentinel attribute, but we shouldn't need
to #ifdef for other compilers, as __attribute__ is already a
no-op on non-gcc-compatible compilers.

Suggested-by: Bert Wesarg <***@googlemail.com>
More-Spots-Found-By: Matt Kraai <***@ftbfs.org>
Signed-off-by: Jeff King <***@peff.net>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 8dd0ee823f1829a3aa228c3c73e31de5c89b5317
https://github.com/msysgit/git/commit/8dd0ee823f1829a3aa228c3c73e31de5c89b5317
Author: Jeff King <***@peff.net>
Date: 2013-07-09 (Tue, 09 Jul 2013)

Changed paths:
M wt-status.h

Log Message:
-----------
wt-status: use "format" function attribute for status_printf

These functions could benefit from the added compile-time
safety of having the compiler check printf arguments.

Unfortunately, we also sometimes pass an empty format string,
which will cause false positives with -Wformat-zero-length.
In this case, that warning is wrong because our function is
not a no-op with an empty format: it may be printing
colorized output along with a trailing newline.

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


Commit: 03c893cbf9ad2e9a5be43382bcabdb2af2a49a4a
https://github.com/msysgit/git/commit/03c893cbf9ad2e9a5be43382bcabdb2af2a49a4a
Author: Jeff King <***@peff.net>
Date: 2013-07-11 (Thu, 11 Jul 2013)

Changed paths:
M t/t1006-cat-file.sh

Log Message:
-----------
t1006: modernize output comparisons

In modern tests, we typically put output into a file and
compare it with test_cmp. This is nicer than just comparing
via "test", and much shorter than comparing via "test" and
printing a custom message.

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


Commit: 98e2092b5027fde9dbe68cb49a196ad2184c02c3
https://github.com/msysgit/git/commit/98e2092b5027fde9dbe68cb49a196ad2184c02c3
Author: Jeff King <***@peff.net>
Date: 2013-07-11 (Thu, 11 Jul 2013)

Changed paths:
M builtin/cat-file.c

Log Message:
-----------
cat-file: teach --batch to stream blob objects

The regular "git cat-file -p" and "git cat-file blob" code
paths already learned to stream large blobs. Let's do the
same here.

Note that this means we look up the type and size before
making a decision of whether to load the object into memory
or stream (just like the "-p" code path does). That can lead
to extra work, but it should be dwarfed by the cost of
actually accessing the object itself. In my measurements,
there was a 1-2% slowdown when using "--batch" on a large
number of objects.

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


Commit: b71bd48017981f7257d8c0a5096825321b4fb49b
https://github.com/msysgit/git/commit/b71bd48017981f7257d8c0a5096825321b4fb49b
Author: Jeff King <***@peff.net>
Date: 2013-07-11 (Thu, 11 Jul 2013)

Changed paths:
M builtin/cat-file.c

Log Message:
-----------
cat-file: refactor --batch option parsing

We currently use an int to tell us whether --batch parsing
is on, and if so, whether we should print the full object
contents. Let's instead factor this into a struct, filled in
by callback, which will make further batch-related options
easy to add.

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


Commit: fb58544ec738ecdede58ad9dadb2d4676c544eb9
https://github.com/msysgit/git/commit/fb58544ec738ecdede58ad9dadb2d4676c544eb9
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-11 (Thu, 11 Jul 2013)

Changed paths:
M lockfile.c

Log Message:
-----------
Merge branch 'mh/maint-lockfile-overflow'

* mh/maint-lockfile-overflow:
lockfile: fix buffer overflow in path handling


Commit: 3b8d2765c794ef1f1c7b39a90f72c4e61ce26fbd
https://github.com/msysgit/git/commit/3b8d2765c794ef1f1c7b39a90f72c4e61ce26fbd
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-11 (Thu, 11 Jul 2013)

Changed paths:
M Documentation/config.txt
M builtin/push.c
M t/t5528-push-default.sh

Log Message:
-----------
Merge branch 'jc/triangle-push-fixup'

Earlier remote.pushdefault (and per-branch branch.*.pushremote)
were introduced as an additional mechanism to choose what
repository to push into when "git push" did not say it from the
command line, to help people who push to a repository that is
different from where they fetch from. This attempts to finish that
topic by teaching the default mechanism to choose branch in the
remote repository to be updated by such a push.

The 'current', 'matching' and 'nothing' modes (specified by the
push.default configuration variable) extend to such a "triangular"
workflow naturally, but 'upstream' and 'simple' have to be updated.

. 'upstream' is about pushing back to update the branch in the
remote repository that the current branch fetches from and
integrates with, it errors out in a triangular workflow.

. 'simple' is meant to help new people by avoiding mistakes, and
will be the safe default in Git 2.0.

In a non-triangular workflow, it will continue to act as a cross
between 'upstream' and 'current' in that it pushes to the current
branch's @{upstream} only when it is set to the same name as the
current branch (e.g. your 'master' forks from the 'master' from
the central repository).

In a triangular workflow, this series tentatively defines it as
the same as 'current', but we may have to tighten it to avoid
surprises in some way.

* jc/triangle-push-fixup:
t/t5528-push-default: test pushdefault workflows
t/t5528-push-default: generalize test_push_*
push: change `simple` to accommodate triangular workflows
config doc: rewrite push.default section
t/t5528-push-default: remove redundant test_config lines


Commit: 6af984043f121d2f80aeb837c0b2259ad254a829
https://github.com/msysgit/git/commit/6af984043f121d2f80aeb837c0b2259ad254a829
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-11 (Thu, 11 Jul 2013)

Changed paths:
M builtin/checkout.c
M t/t2012-checkout-last.sh
M t/t7512-status-help.sh
M wt-status.c

Log Message:
-----------
Merge branch 'rr/rebase-checkout-reflog'

Invocations of "git checkout" used internally by "git rebase" were
counted as "checkout", and affected later "git checkout -" to the
the user to an unexpected place.

* rr/rebase-checkout-reflog:
checkout: respect GIT_REFLOG_ACTION
status: do not depend on rebase reflog messages
t/t2021-checkout-last: "checkout -" should work after a rebase finishes
wt-status: remove unused field in grab_1st_switch_cbdata
t7512: test "detached from" as well


Commit: 04ce89389d37097da250c9879bddc9f59443a704
https://github.com/msysgit/git/commit/04ce89389d37097da250c9879bddc9f59443a704
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-11 (Thu, 11 Jul 2013)

Changed paths:
M contrib/completion/git-completion.bash
M t/t9902-completion.sh

Log Message:
-----------
Merge branch 'jk/bash-completion'

* jk/bash-completion:
completion: learn about --man-path
completion: handle unstuck form of base git options


Commit: e29497d28ce1ec9f76493542fcab4a8d61ca5fce
https://github.com/msysgit/git/commit/e29497d28ce1ec9f76493542fcab4a8d61ca5fce
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-11 (Thu, 11 Jul 2013)

Changed paths:
M Documentation/config.txt
M builtin/commit.c
M t/t7508-status.sh
M wt-status.c

Log Message:
-----------
Merge branch 'jg/status-config'

"git status" learned status.branch and status.short configuration
variables to use --branch and --short options by default (override
with --no-branch and --no-short options from the command line).

* jg/status-config:
status/commit: make sure --porcelain is not affected by user-facing config
commit: make it work with status.short
status: introduce status.branch to enable --branch by default
status: introduce status.short to enable --short by default


Commit: 77f3c3f17401a74b9036188a6a6a4fe2c4b53ccb
https://github.com/msysgit/git/commit/77f3c3f17401a74b9036188a6a6a4fe2c4b53ccb
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-11 (Thu, 11 Jul 2013)

Changed paths:
M diff.c
M t/t0020-crlf.sh

Log Message:
-----------
Merge branch 'jc/maint-diff-core-safecrlf'

"git diff" refused to even show difference when core.safecrlf is
set to true (i.e. error out) and there are offending lines in the
working tree files.

* jc/maint-diff-core-safecrlf:
diff: demote core.safecrlf=true to core.safecrlf=warn


Commit: d26792ad69c0d2ea0b197656ae9a562e2c1f900e
https://github.com/msysgit/git/commit/d26792ad69c0d2ea0b197656ae9a562e2c1f900e
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-11 (Thu, 11 Jul 2013)

Changed paths:
M Documentation/git-stash.txt
M dir.c
M git-stash.sh
M t/t3010-ls-files-killed-modified.sh
M t/t3903-stash.sh

Log Message:
-----------
Merge branch 'pb/stash-refuse-to-kill'

"git stash save" is not just about "saving" the local changes, but
also is to restore the working tree state to that of HEAD. If you
changed a non-directory into a directory in the local change, you
may have untracked files in that directory, which have to be killed
while doing so, unless you run it with --include-untracked. Teach
the command to detect and error out before spreading the damage.

This needed a small fix to "ls-files --killed".

* pb/stash-refuse-to-kill:
git stash: avoid data loss when "git stash save" kills a directory
treat_directory(): do not declare submodules to be untracked


Commit: 5b6cd0fe7b876698007c55c577ae2afd49b50c2b
https://github.com/msysgit/git/commit/5b6cd0fe7b876698007c55c577ae2afd49b50c2b
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-11 (Thu, 11 Jul 2013)

Changed paths:
M git-rebase--interactive.sh
M t/t3404-rebase-interactive.sh

Log Message:
-----------
Merge branch 'af/rebase-i-merge-options'

"git rebase -i" now honors --strategy and -X options.

* af/rebase-i-merge-options:
Do not ignore merge options in interactive rebase


Commit: f3930e4389937eccdcaa204b134010e3c34463a4
https://github.com/msysgit/git/commit/f3930e4389937eccdcaa204b134010e3c34463a4
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-11 (Thu, 11 Jul 2013)

Changed paths:
M t/t0000-basic.sh

Log Message:
-----------
Merge branch 'tr/test-v-and-v-subtest-only'

Finishing touches to a topic that is already in master for the
upcoming release.

* tr/test-v-and-v-subtest-only:
t0000: do not use export X=Y


Commit: eb40e51597eb2cd36fcd4a3e56c9ecaa109ddefc
https://github.com/msysgit/git/commit/eb40e51597eb2cd36fcd4a3e56c9ecaa109ddefc
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-11 (Thu, 11 Jul 2013)

Changed paths:
M sha1_name.c
M t/t1512-rev-parse-disambiguation.sh

Log Message:
-----------
Merge branch 'jc/t1512-fix'

A test that should have failed but didn't revealed a bug that needs
to be corrected.

* jc/t1512-fix:
get_short_sha1(): correctly disambiguate type-limited abbreviation
t1512: correct leftover constants from earlier edition


Commit: 911011aacc78dfa8ac81a5e631cb86bb69fd66e1
https://github.com/msysgit/git/commit/911011aacc78dfa8ac81a5e631cb86bb69fd66e1
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-11 (Thu, 11 Jul 2013)

Changed paths:
M Documentation/RelNotes/1.8.4.txt

Log Message:
-----------
Update draft release notes to 1.8.4

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


Commit: 93d2a607ba05fba31442941d0425019120993846
https://github.com/msysgit/git/commit/93d2a607ba05fba31442941d0425019120993846
Author: Jeff King <***@peff.net>
Date: 2013-07-12 (Fri, 12 Jul 2013)

Changed paths:
M Documentation/git-cat-file.txt
M builtin/cat-file.c
M t/t1006-cat-file.sh

Log Message:
-----------
cat-file: add --batch-check=<format>

The `cat-file --batch-check` command can be used to quickly
get information about a large number of objects. However, it
provides a fixed set of information.

This patch adds an optional <format> option to --batch-check
to allow a caller to specify which items they are interested
in, and in which order to output them. This is not very
exciting for now, since we provide the same limited set that
you could already get. However, it opens the door to adding
new format items in the future without breaking backwards
compatibility (or forcing callers to pay the cost to
calculate uninteresting items).

Since the --batch option shares code with --batch-check, it
receives the same feature, though it is less likely to be of
interest there.

The format atom names are chosen to match their counterparts
in for-each-ref. Though we do not (yet) share any code with
for-each-ref's formatter, this keeps the interface as
consistent as possible, and may help later on if the
implementations are unified.

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


Commit: a4ac1061783d25db4253309d2b58b9c2b89401d7
https://github.com/msysgit/git/commit/a4ac1061783d25db4253309d2b58b9c2b89401d7
Author: Jeff King <***@peff.net>
Date: 2013-07-12 (Fri, 12 Jul 2013)

Changed paths:
M Documentation/git-cat-file.txt
M builtin/cat-file.c

Log Message:
-----------
cat-file: add %(objectsize:disk) format atom

This atom is just like %(objectsize), except that it shows
the on-disk size of the object rather than the object's true
size. In other words, it makes the "disk_size" query of
sha1_object_info_extended available via the command-line.

This can be used for rough attribution of disk usage to
particular refs, though see the caveats in the
documentation.

This patch does not include any tests, as the exact numbers
returned are volatile and subject to zlib and packing
decisions. We cannot even reliably guarantee that the
on-disk size is smaller than the object content (though in
general this should be the case for non-trivial objects).

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


Commit: c334b87b30c1464a1ab563fe1fb8de5eaf0e5bac
https://github.com/msysgit/git/commit/c334b87b30c1464a1ab563fe1fb8de5eaf0e5bac
Author: Jeff King <***@peff.net>
Date: 2013-07-12 (Fri, 12 Jul 2013)

Changed paths:
M Documentation/git-cat-file.txt
M builtin/cat-file.c
M t/t1006-cat-file.sh

Log Message:
-----------
cat-file: split --batch input lines on whitespace

If we get an input line to --batch or --batch-check that
looks like "HEAD foo bar", we will currently feed the whole
thing to get_sha1(). This means that to use --batch-check
with `rev-list --objects`, one must pre-process the input,
like:

git rev-list --objects HEAD |
cut -d' ' -f1 |
git cat-file --batch-check

Besides being more typing and slightly less efficient to
invoke `cut`, the result loses information: we no longer
know which path each object was found at.

This patch teaches cat-file to split input lines at the
first whitespace. Everything to the left of the whitespace
is considered an object name, and everything to the right is
made available as the %(reset) atom. So you can now do:

git rev-list --objects HEAD |
git cat-file --batch-check='%(objectsize) %(rest)'

to collect object sizes at particular paths.

Even if %(rest) is not used, we always do the whitespace
split (which means you can simply eliminate the `cut`
command from the first example above).

This whitespace split is backwards compatible for any
reasonable input. Object names cannot contain spaces, so any
input with spaces would have resulted in a "missing" line.
The only input hurt is if somebody really expected input of
the form "HEAD is a fine-looking ref!" to fail; it will now
parse HEAD, and make "is a fine-looking ref!" available as
%(rest).

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


Commit: 012b32bb46459f96509669c2f5be0a93a95a2b43
https://github.com/msysgit/git/commit/012b32bb46459f96509669c2f5be0a93a95a2b43
Author: Jeff King <***@peff.net>
Date: 2013-07-12 (Fri, 12 Jul 2013)

Changed paths:
M pack-revindex.c

Log Message:
-----------
pack-revindex: use unsigned to store number of objects

A packfile may have up to 2^32-1 objects in it, so the
"right" data type to use is uint32_t. We currently use a
signed int, which means that we may behave incorrectly for
packfiles with more than 2^31-1 objects on 32-bit systems.

Nobody has noticed because having 2^31 objects is pretty
insane. The linux.git repo has on the order of 2^22 objects,
which is hundreds of times smaller than necessary to trigger
the bug.

Let's bump this up to an "unsigned". On 32-bit systems, this
gives us the correct data-type, and on 64-bit systems, it is
probably more efficient to use the native "unsigned" than a
true uint32_t.

While we're at it, we can fix the binary search not to
overflow in such a case if our unsigned is 32 bits.

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


Commit: 8b8dfd5132ce91f632b5303c39cda2dfe30790f1
https://github.com/msysgit/git/commit/8b8dfd5132ce91f632b5303c39cda2dfe30790f1
Author: Jeff King <***@peff.net>
Date: 2013-07-12 (Fri, 12 Jul 2013)

Changed paths:
M pack-revindex.c

Log Message:
-----------
pack-revindex: radix-sort the revindex

The pack revindex stores the offsets of the objects in the
pack in sorted order, allowing us to easily find the on-disk
size of each object. To compute it, we populate an array
with the offsets from the sha1-sorted idx file, and then use
qsort to order it by offsets.

That does O(n log n) offset comparisons, and profiling shows
that we spend most of our time in cmp_offset. However, since
we are sorting on a simple off_t, we can use numeric sorts
that perform better. A radix sort can run in O(k*n), where k
is the number of "digits" in our number. For a 64-bit off_t,
using 16-bit "digits" gives us k=4.

On the linux.git repo, with about 3M objects to sort, this
yields a 400% speedup. Here are the best-of-five numbers for
running

echo HEAD | git cat-file --batch-check="%(objectsize:disk)

on a fully packed repository, which is dominated by time
spent building the pack revindex:
before after
real 0m0.834s 0m0.204s
user 0m0.788s 0m0.164s
sys 0m0.040s 0m0.036s

This matches our algorithmic expectations. log(3M) is ~21.5,
so a traditional sort is ~21.5n. Our radix sort runs in k*n,
where k is the number of radix digits. In the worst case,
this is k=4 for a 64-bit off_t, but we can quit early when
the largest value to be sorted is smaller. For any
repository under 4G, k=2. Our algorithm makes two passes
over the list per radix digit, so we end up with 4n. That
should yield ~5.3x speedup. We see 4x here; the difference
is probably due to the extra bucket book-keeping the radix
sort has to do.

On a smaller repo, the difference is less impressive, as
log(n) is smaller. For git.git, with 173K objects (but still
k=2), we see a 2.7x improvement:
before after
real 0m0.046s 0m0.017s
user 0m0.036s 0m0.012s
sys 0m0.008s 0m0.000s

On even tinier repos (e.g., a few hundred objects), the
speedup goes away entirely, as the small advantage of the
radix sort gets erased by the book-keeping costs (and at
those sizes, the cost to generate the the rev-index gets
lost in the noise anyway).

Signed-off-by: Jeff King <***@peff.net>
Reviewed-by: Brandon Casey <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 4783e7ea83e39f19e0ef03372fd721f159d1f1de
https://github.com/msysgit/git/commit/4783e7ea83e39f19e0ef03372fd721f159d1f1de
Author: Jeff King <***@peff.net>
Date: 2013-07-12 (Fri, 12 Jul 2013)

Changed paths:
M t/t0008-ignores.sh

Log Message:
-----------
t0008: avoid SIGPIPE race condition on fifo

To test check-ignore's --stdin feature, we use two fifos to
send and receive data. We carefully keep a descriptor to its
input open so that it does not receive EOF between input
lines. However, we do not do the same for its output. That
means there is a potential race condition in which
check-ignore has opened the output pipe once (when we read
the first line), and then writes the second line before we
have re-opened the pipe.

In that case, check-ignore gets a SIGPIPE and dies. The
outer shell then tries to open the output fifo but blocks
indefinitely, because there is no writer. We can fix it by
keeping a descriptor open through the whole procedure.

This should also help if check-ignore dies for any other
reason (we would already have opened the fifo and would
therefore not block, but just get EOF on read).

However, we are technically still susceptible to
check-ignore dying early, before we have opened the fifo.
This is an unlikely race and shouldn't generally happen in
practice, though, so we can hopefully ignore it.

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


Commit: ca4b5de28bad7d50b882794124ca4e57044a1cba
https://github.com/msysgit/git/commit/ca4b5de28bad7d50b882794124ca4e57044a1cba
Author: Heiko Voigt <***@hvoigt.net>
Date: 2013-07-12 (Fri, 12 Jul 2013)

Changed paths:
M config.c

Log Message:
-----------
config: factor out config file stack management

Because a config callback may start parsing a new file, the
global context regarding the current config file is stored
as a stack. Currently we only need to manage that stack from
git_config_from_file. Let's factor it out to allow new
sources of config data.

Signed-off-by: Heiko Voigt <***@hvoigt.net>
Acked-by: Jeff King <***@peff.net>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: dbb9a8125542be4d57bc71b6d5baf81c7409a68b
https://github.com/msysgit/git/commit/dbb9a8125542be4d57bc71b6d5baf81c7409a68b
Author: Heiko Voigt <***@hvoigt.net>
Date: 2013-07-12 (Fri, 12 Jul 2013)

Changed paths:
M config.c

Log Message:
-----------
config: drop cf validity check in get_next_char()

The global variable cf is set with an initialized value in all codepaths before
calling this function.

The complete call graph looks like this:

git_config_from_file
-> do_config_from
-> git_parse_file
-> get_next_char
-> get_value
-> get_next_char
-> parse_value
-> get_next_char
-> get_base_var
-> get_next_char
-> get_extended_base_var
-> get_next_char

The variable is initialized in do_config_from.

Signed-off-by: Heiko Voigt <***@hvoigt.net>
Acked-by: Jeff King <***@peff.net>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 4d8dd1494e9f3af2e9738edaca40ada096f7bf10
https://github.com/msysgit/git/commit/4d8dd1494e9f3af2e9738edaca40ada096f7bf10
Author: Heiko Voigt <***@hvoigt.net>
Date: 2013-07-12 (Fri, 12 Jul 2013)

Changed paths:
M config.c

Log Message:
-----------
config: make parsing stack struct independent from actual data source

To simplify adding other sources we extract all functions needed for
parsing into a list of callbacks. We implement those callbacks for the
current file parsing. A new source can implement its own set of callbacks.

Instead of storing the concrete FILE pointer for parsing we store a void
pointer. A new source can use this to store its custom data.

Signed-off-by: Heiko Voigt <***@hvoigt.net>
Acked-by: Jeff King <***@peff.net>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 1bc888193e1044db317a45b9a4c8d2b87b998f40
https://github.com/msysgit/git/commit/1bc888193e1044db317a45b9a4c8d2b87b998f40
Author: Heiko Voigt <***@hvoigt.net>
Date: 2013-07-12 (Fri, 12 Jul 2013)

Changed paths:
M Documentation/git-config.txt
M builtin/config.c
M cache.h
M config.c
A t/t1307-config-blob.sh

Log Message:
-----------
teach config --blob option to parse config from database

This can be used to read configuration values directly from git's
database. For example it is useful for reading to be checked out
.gitmodules files directly from the database.

Signed-off-by: Heiko Voigt <***@hvoigt.net>
Acked-by: Jeff King <***@peff.net>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: b2dc09455a9ed5521c2e84fc67d8dacf2c28c39f
https://github.com/msysgit/git/commit/b2dc09455a9ed5521c2e84fc67d8dacf2c28c39f
Author: Heiko Voigt <***@hvoigt.net>
Date: 2013-07-12 (Fri, 12 Jul 2013)

Changed paths:
M config.c

Log Message:
-----------
do not die when error in config parsing of buf occurs

If a config parsing error in a file occurs we can die and let the user
fix the issue. This is different for the buf parsing function since it
can be used to parse blobs of .gitmodules files. If a parsing error
occurs here we should proceed since otherwise a database containing such
an error in a single revision could be rendered unusable.

Signed-off-by: Heiko Voigt <***@hvoigt.net>
Acked-by: Jeff King <***@peff.net>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: ee6e5843c11ca5cba0d5ce964325a3b529299e0d
https://github.com/msysgit/git/commit/ee6e5843c11ca5cba0d5ce964325a3b529299e0d
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-12 (Fri, 12 Jul 2013)

Changed paths:
M advice.c
M advice.h
M sha1_name.c
M t/t1512-rev-parse-disambiguation.sh

Log Message:
-----------
Merge branch 'nd/warn-ambiguous-object-name' into jk/cat-file-batch-optim

* nd/warn-ambiguous-object-name:
get_sha1: warn about full or short object names that look like refs


Commit: 25fba78d36be6297bb17aed5f3e21ed850ce3e03
https://github.com/msysgit/git/commit/25fba78d36be6297bb17aed5f3e21ed850ce3e03
Author: Jeff King <***@peff.net>
Date: 2013-07-12 (Fri, 12 Jul 2013)

Changed paths:
M builtin/cat-file.c
M cache.h
M environment.c
M sha1_name.c

Log Message:
-----------
cat-file: disable object/refname ambiguity check for batch mode

A common use of "cat-file --batch-check" is to feed a list
of objects from "rev-list --objects" or a similar command.
In this instance, all of our input objects are 40-byte sha1
ids. However, cat-file has always allowed arbitrary revision
specifiers, and feeds the result to get_sha1().

Fortunately, get_sha1() recognizes a 40-byte sha1 before
doing any hard work trying to look up refs, meaning this
scenario should end up spending very little time converting
the input into an object sha1. However, since 798c35f
(get_sha1: warn about full or short object names that look
like refs, 2013-05-29), when we encounter this case, we
spend the extra effort to do a refname lookup anyway, just
to print a warning. This is further exacerbated by ca91993
(get_packed_ref_cache: reload packed-refs file when it
changes, 2013-06-20), which makes individual ref lookup more
expensive by requiring a stat() of the packed-refs file for
each missing ref.

With no patches, this is the time it takes to run:

$ git rev-list --objects --all >objects
$ time git cat-file --batch-check='%(objectname)' <objects

on the linux.git repository:

real 1m13.494s
user 0m25.924s
sys 0m47.532s

If we revert ca91993, the packed-refs up-to-date check, it
gets a little better:

real 0m54.697s
user 0m21.692s
sys 0m32.916s

but we are still spending quite a bit of time on ref lookup
(and we would not want to revert that patch, anyway, which
has correctness issues). If we revert 798c35f, disabling
the warning entirely, we get a much more reasonable time:

real 0m7.452s
user 0m6.836s
sys 0m0.608s

This patch does the moral equivalent of this final case (and
gets similar speedups). We introduce a global flag that
callers of get_sha1() can use to avoid paying the price for
the warning.

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


Commit: f2f57e31f671983ef4d6272c082f9fb06daa3429
https://github.com/msysgit/git/commit/f2f57e31f671983ef4d6272c082f9fb06daa3429
Author: Jeff King <***@peff.net>
Date: 2013-07-12 (Fri, 12 Jul 2013)

Changed paths:
M sha1_file.c

Log Message:
-----------
sha1_object_info_extended: rename "status" to "type"

The value we get from each low-level object_info function
(e.g., loose, packed) is actually the object type (or -1 for
error). Let's explicitly call it "type", which will make
further refactorings easier to read.

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


Commit: 052fe5eaca92cac810cdb7f89bd8860fc2d5f0e1
https://github.com/msysgit/git/commit/052fe5eaca92cac810cdb7f89bd8860fc2d5f0e1
Author: Jeff King <***@peff.net>
Date: 2013-07-12 (Fri, 12 Jul 2013)

Changed paths:
M sha1_file.c

Log Message:
-----------
sha1_loose_object_info: make type lookup optional

Until recently, the only items to request from
sha1_object_info_extended were type and size. This meant
that we always had to open a loose object file to determine
one or the other. But with the addition of the disk_size
query, it's possible that we can fulfill the query without
even opening the object file at all. However, since the
function interface always returns the type, we have no way
of knowing whether the caller cares about it or not.

This patch only modified sha1_loose_object_info to make type
lookup optional using an out-parameter, similar to the way
the size is handled (and the return value is "0" or "-1" for
success or error, respectively).

There should be no functional change yet, though, as
sha1_object_info_extended, the only caller, will always ask
for a type.

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


Commit: 90191d37ab08f7c6810fa22804dedb23bade02a1
https://github.com/msysgit/git/commit/90191d37ab08f7c6810fa22804dedb23bade02a1
Author: Jeff King <***@peff.net>
Date: 2013-07-12 (Fri, 12 Jul 2013)

Changed paths:
M sha1_file.c

Log Message:
-----------
packed_object_info: hoist delta type resolution to helper

To calculate the type of a packed object, we must walk down
its delta chain until we hit a true base object with a real
type. Most of the code in packed_object_info is for handling
this case.

Let's hoist it out into a separate helper function, which
will make it easier to make the type-lookup optional in the
future (and keep our indentation level sane).

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


Commit: 412916ee131cf8b0aaac96313ce8686aebe3a47a
https://github.com/msysgit/git/commit/412916ee131cf8b0aaac96313ce8686aebe3a47a
Author: Jeff King <***@peff.net>
Date: 2013-07-12 (Fri, 12 Jul 2013)

Changed paths:
M sha1_file.c

Log Message:
-----------
packed_object_info: make type lookup optional

Currently, packed_object_info can save some work by not
calculating the size or disk_size of the object if the
caller is not interested. However, it always calculates the
true object type, whether the caller cares or not, and only
optionally returns the easy-to-get "representation type".

Let's swap these types. The function will now return the
representation type (or OBJ_BAD on failure), and will only
optionally fill in the true type.

There should be no behavior change yet, as the only caller,
sha1_object_info_extended, will always feed it a type
pointer.

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


Commit: 5b0864070e1e64683e49464c77a72f3c528c8f71
https://github.com/msysgit/git/commit/5b0864070e1e64683e49464c77a72f3c528c8f71
Author: Jeff King <***@peff.net>
Date: 2013-07-12 (Fri, 12 Jul 2013)

Changed paths:
M builtin/cat-file.c
M cache.h
M sha1_file.c
M streaming.c

Log Message:
-----------
sha1_object_info_extended: make type calculation optional

Each caller of sha1_object_info_extended sets up an
object_info struct to tell the function which elements of
the object it wants to get. Until now, getting the type of
the object has always been required (and it is returned via
the return type rather than a pointer in object_info).

This can involve actually opening a loose object file to
determine its type, or following delta chains to determine a
packed file's base type. These effects produce a measurable
slow-down when doing a "cat-file --batch-check" that does
not include %(objecttype).

This patch adds a "typep" query to struct object_info, so
that it can be optionally queried just like size and
disk_size. As a result, the return type of the function is
no longer the object type, but rather 0/-1 for success/error.

As there are only three callers total, we just fix up each
caller rather than keep a compatibility wrapper:

1. The simpler sha1_object_info wrapper continues to
always ask for and return the type field.

2. The istream_source function wants to know the type, and
so always asks for it.

3. The cat-file batch code asks for the type only when
%(objecttype) is part of the format string.

On linux.git, the best-of-five for running:

$ git rev-list --objects --all >objects
$ time git cat-file --batch-check='%(objectsize:disk)'

on a fully packed repository goes from:

real 0m8.680s
user 0m8.160s
sys 0m0.512s

to:

real 0m7.205s
user 0m6.580s
sys 0m0.608s

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


Commit: 23c339c0f262aad2515e48c33ec8f35d476d2ddc
https://github.com/msysgit/git/commit/23c339c0f262aad2515e48c33ec8f35d476d2ddc
Author: Jeff King <***@peff.net>
Date: 2013-07-12 (Fri, 12 Jul 2013)

Changed paths:
M sha1_file.c

Log Message:
-----------
sha1_object_info_extended: pass object_info to helpers

We take in a "struct object_info" which contains pointers to
storage for items the caller cares about. But then rather
than pass the whole object to the low-level loose/packed
helper functions, we pass the individual pointers.

Let's pass the whole struct instead, which will make adding
more items later easier.

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


Commit: a2cb86c1524b7af20e609ca8d3db0b60b5c1d575
https://github.com/msysgit/git/commit/a2cb86c1524b7af20e609ca8d3db0b60b5c1d575
Author: Dale R. Worley <***@alum.mit.edu>
Date: 2013-07-12 (Fri, 12 Jul 2013)

Changed paths:
M wrapper.c

Log Message:
-----------
git_mkstemps: correctly test return value of open()

open() returns -1 on failure, and indeed 0 is a possible success value
if the user closed stdin in our process. Fix the test.

Signed-off-by: Thomas Rast <***@inf.ethz.ch>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: a77f106c7837faf6a712ea3ac720f5c4fa2feb07
https://github.com/msysgit/git/commit/a77f106c7837faf6a712ea3ac720f5c4fa2feb07
Author: Thomas Rast <***@inf.ethz.ch>
Date: 2013-07-12 (Fri, 12 Jul 2013)

Changed paths:
M run-command.c

Log Message:
-----------
run-command: dup_devnull(): guard against syscalls failing

dup_devnull() did not check the return values of open() and dup2().
Fix this omission.

Signed-off-by: Thomas Rast <***@inf.ethz.ch>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: dacd2bcc414e0b7aac36aaa400da0a743c4741cc
https://github.com/msysgit/git/commit/dacd2bcc414e0b7aac36aaa400da0a743c4741cc
Author: Nguyễn Thái Ngọc Duy <***@gmail.com>
Date: 2013-07-12 (Fri, 12 Jul 2013)

Changed paths:
M Documentation/git-clone.txt

Log Message:
-----------
git-clone.txt: remove the restriction on pushing from a shallow clone

The document says one cannot push from a shallow clone. But that is
not true (maybe it was at some point in the past). The client does not
stop such a push nor does it give any indication to the receiver that
this is a shallow push. If the receiver accepts it, it's in.

Since 52fed6e (receive-pack: check connectivity before concluding "git
push" - 2011-09-02), receive-pack is prepared to deal with broken
push, a shallow push can't cause any corruption. Update the document
to reflect that.

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


Commit: 8a6482227ca31bd582aecbd211b85ff76595d0a7
https://github.com/msysgit/git/commit/8a6482227ca31bd582aecbd211b85ff76595d0a7
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-12 (Fri, 12 Jul 2013)

Changed paths:
M builtin/reset.c
M builtin/rev-list.c
M builtin/shortlog.c
M log-tree.c
M submodule.c
M t/t4041-diff-submodule-option.sh
M t/t4205-log-pretty-formats.sh
M t/t6006-rev-list-format.sh
M t/t7102-reset.sh

Log Message:
-----------
Merge branch 'as/log-output-encoding-in-user-format'

"log --format=" did not honor i18n.logoutputencoding configuration
and this attempts to fix it.

* as/log-output-encoding-in-user-format:
t4205 (log-pretty-formats): avoid using `sed`
t6006 (rev-list-format): add tests for "%b" and "%s" for the case i18n.commitEncoding is not set
t4205, t6006, t7102: make functions better readable
t4205 (log-pretty-formats): revert back single quotes
t4041, t4205, t6006, t7102: use iso8859-1 rather than iso-8859-1
t4205: replace .\+ with ..* in sed commands
pretty: --format output should honor logOutputEncoding
pretty: Add failing tests: --format output should honor logOutputEncoding
t4205 (log-pretty-formats): don't hardcode SHA-1 in expected outputs
t7102 (reset): don't hardcode SHA-1 in expected outputs
t6006 (rev-list-format): don't hardcode SHA-1 in expected outputs


Commit: e70aee5c86c508af4a92bd02b688b4aa39c58180
https://github.com/msysgit/git/commit/e70aee5c86c508af4a92bd02b688b4aa39c58180
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-12 (Fri, 12 Jul 2013)

Changed paths:
M Documentation/git-config.txt

Log Message:
-----------
Merge branch 'jk/maint-config-multi-order'

* jk/maint-config-multi-order:
git-config(1): clarify precedence of multiple values


Commit: 5b307e95e880b95eafd36e93251c6638c222dcf4
https://github.com/msysgit/git/commit/5b307e95e880b95eafd36e93251c6638c222dcf4
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-12 (Fri, 12 Jul 2013)

Changed paths:
M Documentation/git-pull.txt
M builtin/push.c
M git-pull.sh

Log Message:
-----------
Merge branch 'jk/pull-to-integrate'

* jk/pull-to-integrate:
pull: change the description to "integrate" changes
push: avoid suggesting "merging" remote changes


Commit: 778e4b890390e90e19b7f835f3b0ffe92e8d5345
https://github.com/msysgit/git/commit/778e4b890390e90e19b7f835f3b0ffe92e8d5345
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-12 (Fri, 12 Jul 2013)

Changed paths:
M Documentation/git-p4.txt
M Documentation/git-submodule.txt
M Documentation/glossary-content.txt
M builtin/clone.c
M builtin/merge.c
M t/t5505-remote.sh

Log Message:
-----------
Merge branch 'ms/remote-tracking-branches-in-doc'

* ms/remote-tracking-branches-in-doc:
Change "remote tracking" to "remote-tracking"


Commit: 784bdd61aeb72635f0e0bc05dfff9f6c9dc53329
https://github.com/msysgit/git/commit/784bdd61aeb72635f0e0bc05dfff9f6c9dc53329
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-12 (Fri, 12 Jul 2013)

Changed paths:
M Documentation/gitweb.conf.txt
M gitweb/gitweb.perl

Log Message:
-----------
Merge branch 'tf/gitweb-extra-breadcrumbs'

An Gitweb installation that is a part of larger site can optionally
show extra links that point at the levels higher than the Gitweb
pages itself in the link hierarchy of pages.

* tf/gitweb-extra-breadcrumbs:
gitweb: allow extra breadcrumbs to prefix the trail


Commit: f1e03522dde7d99d601fbef72cd896f942bd2f5b
https://github.com/msysgit/git/commit/f1e03522dde7d99d601fbef72cd896f942bd2f5b
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-12 (Fri, 12 Jul 2013)

Changed paths:
M t/test-lib.sh

Log Message:
-----------
Merge branch 'ml/cygwin-does-not-have-fifo'

* ml/cygwin-does-not-have-fifo:
test-lib.sh - cygwin does not have usable FIFOs


Commit: 6492deafdd895cbf19034211dceeddce0337669c
https://github.com/msysgit/git/commit/6492deafdd895cbf19034211dceeddce0337669c
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-12 (Fri, 12 Jul 2013)

Changed paths:
M Documentation/diff-options.txt

Log Message:
-----------
Merge branch 'ft/diff-rename-default-score-is-half'

* ft/diff-rename-default-score-is-half:
diff-options: document default similarity index


Commit: 624ec4f99d8c58d17ccf5ca8d42bf329a68b731d
https://github.com/msysgit/git/commit/624ec4f99d8c58d17ccf5ca8d42bf329a68b731d
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-12 (Fri, 12 Jul 2013)

Changed paths:
M Documentation/git-name-rev.txt

Log Message:
-----------
Merge branch 'rr/name-rev-stdin-doc'

* rr/name-rev-stdin-doc:
name-rev doc: rewrite --stdin paragraph


Commit: 533a05f63ac110c17d4b3d6f6472b504a9ec8f92
https://github.com/msysgit/git/commit/533a05f63ac110c17d4b3d6f6472b504a9ec8f92
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-12 (Fri, 12 Jul 2013)

Changed paths:
M t/check-non-portable-shell.pl
M t/t9902-completion.sh

Log Message:
-----------
Merge branch 'tr/test-lint-no-export-assignment-in-shell'

* tr/test-lint-no-export-assignment-in-shell:
test-lint: detect 'export FOO=bar'
t9902: fix 'test A == B' to use = operator


Commit: d5a3897f94dc4a2a77f30eeaf39cf14468061d0d
https://github.com/msysgit/git/commit/d5a3897f94dc4a2a77f30eeaf39cf14468061d0d
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-12 (Fri, 12 Jul 2013)

Changed paths:
M diffcore-pickaxe.c

Log Message:
-----------
Merge branch 'rs/pickaxe-simplify'

* rs/pickaxe-simplify:
diffcore-pickaxe: simplify has_changes and contains


Commit: fb1c85d2e9777f620ba39e4c2552873bfb4b47f0
https://github.com/msysgit/git/commit/fb1c85d2e9777f620ba39e4c2552873bfb4b47f0
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-12 (Fri, 12 Jul 2013)

Changed paths:
M remote-curl.c

Log Message:
-----------
Merge branch 'jc/remote-http-argv-array'

* jc/remote-http-argv-array:
remote-http: use argv-array


Commit: 0da7a53a76b48ea1b2ee6ebe7bd7fbcd7d5c3f9d
https://github.com/msysgit/git/commit/0da7a53a76b48ea1b2ee6ebe7bd7fbcd7d5c3f9d
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-12 (Fri, 12 Jul 2013)

Changed paths:
M Documentation/RelNotes/1.8.4.txt

Log Message:
-----------
Update draft release notes for 1.8.4

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


Commit: 94b410bba864fed964ef2177278432c89d402adc
https://github.com/msysgit/git/commit/94b410bba864fed964ef2177278432c89d402adc
Author: Stefan Beller <***@googlemail.com>
Date: 2013-07-12 (Fri, 12 Jul 2013)

Changed paths:
M .mailmap

Log Message:
-----------
.mailmap: Map email addresses to names

People change email addresses quite often and sometimes forget to
add their entry to the mailmap file. I have contacted lots of
people, whose name occurs multiple times in the short log having
different email addresses. The entries in the mailmap of this patch
are either confirmed by them or are trivial. Trivial means
different capitalisation of the domain (@MIT.EDU and @mit.edu) or
the domain was localhost, (none) or @local.

Additionally to adding (name, email) mappings to the .mailmap file,
it has also been sorted ("LC_ALL=C /usr/bin/sort", byte-value sort).

While the most changes happen at the email addresses, we also have a
name change in here. Karl Hasselström is now known as Karl Wiberg
due to marriage. Congratulations!

To find out whom to contact I used the following small
script:

#!/bin/bash
git shortlog -sne |awk '{ NF--; $1=""; print }' |sort |uniq -d > mailmapdoubles
while read line ; do
# remove leading whitespace
trimmed=$(echo $line | sed -e 's/^ *//g' -e 's/ *$//g')
echo "git shortlog -sne | grep \""$trimmed"\""
done < mailmapdoubles > mailmapdoubles2
sh mailmapdoubles2
rm mailmapdoubles
rm mailmapdoubles2

Also interesting for similar tasks are these snippets:

# Finding out duplicates by comparing email addresses:
git shortlog -sne |awk '{ print $NF }' |sort |uniq -d

# Finding out duplicates by comparing names:
git shortlog -sne |awk '{ NF--; $1=""; print }' |sort |uniq -d

Signed-off-by: Stefan Beller <***@googlemail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 226ad3482ac506af0eadd04e732dda556fda80e4
https://github.com/msysgit/git/commit/226ad3482ac506af0eadd04e732dda556fda80e4
Author: Eric Sunshine <***@sunshineco.com>
Date: 2013-07-13 (Sat, 13 Jul 2013)

Changed paths:
M .gitignore
A Documentation/git-check-mailmap.txt
M Makefile
M builtin.h
A builtin/check-mailmap.c
M command-list.txt
M contrib/completion/git-completion.bash
M git.c

Log Message:
-----------
builtin: add git-check-mailmap command

Introduce command check-mailmap, similar to check-attr and check-ignore,
which allows direct testing of .mailmap configuration.

As plumbing accessible to scripts and other porcelain, check-mailmap
publishes the stable, well-tested .mailmap functionality employed by
built-in Git commands. Consequently, script authors need not
re-implement .mailmap functionality manually, thus avoiding potential
quirks and behavioral differences.

Signed-off-by: Eric Sunshine <***@sunshineco.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: cb5c9521f1e41aa536c2cf64d689e647d035bb90
https://github.com/msysgit/git/commit/cb5c9521f1e41aa536c2cf64d689e647d035bb90
Author: Eric Sunshine <***@sunshineco.com>
Date: 2013-07-13 (Sat, 13 Jul 2013)

Changed paths:
M t/t4203-mailmap.sh

Log Message:
-----------
t4203: test check-mailmap command invocation

Test the command-line interface of check-mailmap.

(Actual .mailmap functionality is already covered by existing tests.)

Signed-off-by: Eric Sunshine <***@sunshineco.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: f4f49e2258a250507baaa2c977a9fd7993ac07ad
https://github.com/msysgit/git/commit/f4f49e2258a250507baaa2c977a9fd7993ac07ad
Author: Stefan Beller <***@googlemail.com>
Date: 2013-07-15 (Mon, 15 Jul 2013)

Changed paths:
M .mailmap

Log Message:
-----------
.mailmap: Combine more (email, name) to individual persons

I got more responses from people regarding the .mailmap file.
All added persons gave permission to add them to the .mailmap file.

It's mostly email mappings again. However we also have Nick Stokoe,
who contributed as Nick Woolley. He changed his name, but kept the email.

Signed-off-by: Stefan Beller <***@googlemail.com>
Reviewed-by: Jonathan Nieder <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 109025b4e1c836fb62752f69f24e8f11403760d5
https://github.com/msysgit/git/commit/109025b4e1c836fb62752f69f24e8f11403760d5
Author: Eric Sunshine <***@sunshineco.com>
Date: 2013-07-15 (Mon, 15 Jul 2013)

Changed paths:
M t/t4203-mailmap.sh

Log Message:
-----------
t4203: demonstrate loss of single-character name in mailmap entry

A bug in mailmap.c:parse_name_and_email() causes it to overlook the
single-character name in "A <***@host>" and parse it only as
"<***@host>". Demonstrate this problem.

Signed-off-by: Eric Sunshine <***@sunshineco.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 8c3811510e2a90f765edbb6dc7f81b0737592c0a
https://github.com/msysgit/git/commit/8c3811510e2a90f765edbb6dc7f81b0737592c0a
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-15 (Mon, 15 Jul 2013)

Changed paths:
M mailmap.c
M t/t4203-mailmap.sh

Log Message:
-----------
mailmap: do not lose single-letter names

In parse_name_and_email() function, there is this line:

*name = (nstart < nend ? nstart : NULL);

When the function is given a buffer "A <***@example.org> <***@x.z>",
nstart scans from the beginning of the buffer, skipping whitespaces
(there isn't any, so nstart points at the buffer), while nend starts
from one byte before the first '<' and skips whitespaces backwards
and stops at the first non-whitespace (i.e. it hits "A" at the
beginning of the buffer). nstart == nend in this case for a
single-letter name, and an off-by-one error makes it fail to pick up
the name, which makes the entry equivalent to

<***@example.org> <***@x.z>

without the name.

Signed-off-by: Junio C Hamano <***@pobox.com>
Signed-off-by: Eric Sunshine <***@sunshineco.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 3aff56ddbebfdb314f123e9a076403459d6a0767
https://github.com/msysgit/git/commit/3aff56ddbebfdb314f123e9a076403459d6a0767
Author: Eric Sunshine <***@sunshineco.com>
Date: 2013-07-15 (Mon, 15 Jul 2013)

Changed paths:
M t/t4203-mailmap.sh

Log Message:
-----------
t4203: demonstrate loss of uppercase characters in canonical email

The email addresses read from .mailmap are downcased before being
inserted into the mailmap data structure, which undesirably loses
information. It is impossible, for instance, to map <***@host>
to <***@host>. Demonstrate this problem.

Signed-off-by: Eric Sunshine <***@sunshineco.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 97e751be7928d17c177b2fe65fb9bacf6ee35643
https://github.com/msysgit/git/commit/97e751be7928d17c177b2fe65fb9bacf6ee35643
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-15 (Mon, 15 Jul 2013)

Changed paths:
M mailmap.c
M t/t4203-mailmap.sh

Log Message:
-----------
mailmap: do not downcase mailmap entries

The email addresses in the records read from the .mailmap file are
downcased very early, and then used to match against e-mail
addresses in the input. Because we do use case insensitive version
of string list to manage these entries, there is no need to do this,
and worse yet, downcasing the rewritten/canonical e-mail read from
the .mailmap file loses information.

Stop doing that, and also make the string list used to keep multiple
names for an mailmap entry case insensitive (the code that uses the
list, lookup_prefix(), expects a case insensitive match).

Signed-off-by: Junio C Hamano <***@pobox.com>
Signed-off-by: Eric Sunshine <***@sunshineco.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: c10be0c6acfe671adf0ed1b3387de45d126f8ab7
https://github.com/msysgit/git/commit/c10be0c6acfe671adf0ed1b3387de45d126f8ab7
Author: Eric Sunshine <***@sunshineco.com>
Date: 2013-07-15 (Mon, 15 Jul 2013)

Changed paths:
M mailmap.c

Log Message:
-----------
mailmap: debug: fix out-of-order fprintf() arguments

Resolve segmentation fault due to arguments passed in wrong order.

Signed-off-by: Eric Sunshine <***@sunshineco.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 0939a242fe95fd2c2a2a4094d827e144382de3d7
https://github.com/msysgit/git/commit/0939a242fe95fd2c2a2a4094d827e144382de3d7
Author: Eric Sunshine <***@sunshineco.com>
Date: 2013-07-15 (Mon, 15 Jul 2013)

Changed paths:
M mailmap.c

Log Message:
-----------
mailmap: debug: fix malformed fprintf() format conversion specification

Resolve segmentation fault due to size_t variable being consumed by
'%s'.

Signed-off-by: Eric Sunshine <***@sunshineco.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: a8002a5f0ee19e2a513483e763b8b4a7cdcaa48d
https://github.com/msysgit/git/commit/a8002a5f0ee19e2a513483e763b8b4a7cdcaa48d
Author: Eric Sunshine <***@sunshineco.com>
Date: 2013-07-15 (Mon, 15 Jul 2013)

Changed paths:
M mailmap.c

Log Message:
-----------
mailmap: debug: eliminate -Wformat field precision type warning

The compiler complains that '*' in fprintf() format "%.*s" should
have type int, but we pass size_t. Fix this.

Signed-off-by: Eric Sunshine <***@sunshineco.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: fbfba7ade0dde36d8911973b1dac248b81ce1375
https://github.com/msysgit/git/commit/fbfba7ade0dde36d8911973b1dac248b81ce1375
Author: Eric Sunshine <***@sunshineco.com>
Date: 2013-07-15 (Mon, 15 Jul 2013)

Changed paths:
M mailmap.c

Log Message:
-----------
mailmap: debug: avoid passing NULL to fprintf() '%s' conversion specification

POSIX does not state the behavior of '%s' conversion when passed a
NULL pointer. Some implementations interpolate literal "(null)";
others may crash.

Callers of debug_mm() often pass NULL as indication of either a
missing name or email address. Instead, let's always supply a
proper string pointer, and make it a bit more descriptive: "(none)"

Signed-off-by: Eric Sunshine <***@sunshineco.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: bd23794552a9d344ddda9fac20d7ee9b7607f6b1
https://github.com/msysgit/git/commit/bd23794552a9d344ddda9fac20d7ee9b7607f6b1
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-15 (Mon, 15 Jul 2013)

Changed paths:
M mailmap.c

Log Message:
-----------
mailmap: style fixes

Wrap overlong lines and format the multi-line comments to match our
coding style.

Signed-off-by: Junio C Hamano <***@pobox.com>
Signed-off-by: Eric Sunshine <***@sunshineco.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 5333f2afc4f5c6365845b25ffc22a91379b84c58
https://github.com/msysgit/git/commit/5333f2afc4f5c6365845b25ffc22a91379b84c58
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-15 (Mon, 15 Jul 2013)

Changed paths:
M Documentation/git-clone.txt

Log Message:
-----------
Revert "git-clone.txt: remove the restriction on pushing from a shallow clone"

This reverts commit dacd2bcc414e0b7aac36aaa400da0a743c4741cc.

"It fails reliably without corrupting the receiving repository when
it should fail" may be better than the situation before the receiving
end was hardened recently, but the fact that sometimes the push does
not go through still remains. It is better to advice the users that
they cannot push from a shallow repository as a limitation before
they decide to use (or not to use) a shallow clone.

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


Commit: 5d9cfa29d27156cc9a00c75eaa31b831107ed0b9
https://github.com/msysgit/git/commit/5d9cfa29d27156cc9a00c75eaa31b831107ed0b9
Author: Stefan Beller <***@googlemail.com>
Date: 2013-07-15 (Mon, 15 Jul 2013)

Changed paths:
M daemon.c

Log Message:
-----------
daemon.c:handle: Remove unneeded check for null pointer.

addr doesn't need to be checked at that line as it it already accessed
7 lines before in the if (addr->sa_family).

Signed-off-by: Stefan Beller <***@googlemail.com>
Reviewed-by: Jonathan Nieder <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 70a0cc9e5c62f7b8ce0acc693e10a9e080f187ef
https://github.com/msysgit/git/commit/70a0cc9e5c62f7b8ce0acc693e10a9e080f187ef
Author: Stefan Beller <***@googlemail.com>
Date: 2013-07-15 (Mon, 15 Jul 2013)

Changed paths:
M builtin/commit.c

Log Message:
-----------
commit: Fix a memory leak in determine_author_info

The date variable is assigned new memory via xmemdupz and 2 lines later
it is assigned new memory again via xmalloc, but the first assignment
is never freed nor used.

Signed-off-by: Stefan Beller <***@googlemail.com>
Reviewed-by: Jonathan Nieder <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: d3c9cf32ca3b088fda54e7be311860f1f06fb11e
https://github.com/msysgit/git/commit/d3c9cf32ca3b088fda54e7be311860f1f06fb11e
Author: Stefan Beller <***@googlemail.com>
Date: 2013-07-15 (Mon, 15 Jul 2013)

Changed paths:
M diff.c

Log Message:
-----------
diff.c: Do not initialize a variable, which gets reassigned anyway.

Signed-off-by: Stefan Beller <***@googlemail.com>
Reviewed-by: Jonathan Nieder <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 27b6e17a6d84a18861f05fd7c684ab443bf15244
https://github.com/msysgit/git/commit/27b6e17a6d84a18861f05fd7c684ab443bf15244
Author: Richard Hartmann <***@gmail.com>
Date: 2013-07-15 (Mon, 15 Jul 2013)

Changed paths:
M templates/hooks--pre-commit.sample

Log Message:
-----------
templates: Use heredoc in pre-commit hook

This way, it is easier to see how the text we give the end users
would look like, and it will allow us to use (near) full width
of the source file.

Signed-off-by: Richard Hartmann <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: b1d5a570fc0176c77a52896e3b59174baa95e8bf
https://github.com/msysgit/git/commit/b1d5a570fc0176c77a52896e3b59174baa95e8bf
Author: Richard Hartmann <***@gmail.com>
Date: 2013-07-15 (Mon, 15 Jul 2013)

Changed paths:
M templates/hooks--pre-commit.sample

Log Message:
-----------
templates: Reformat pre-commit hook's message

Now that we're using heredoc, the message can span the full 80 chars.

Signed-off-by: Richard Hartmann <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 7b3742fa466401574a2ff380d5d121b2ac5cea45
https://github.com/msysgit/git/commit/7b3742fa466401574a2ff380d5d121b2ac5cea45
Author: Richard Hartmann <***@gmail.com>
Date: 2013-07-15 (Mon, 15 Jul 2013)

Changed paths:
M templates/hooks--pre-commit.sample

Log Message:
-----------
templates: spell ASCII in uppercase in pre-commit hook

The name of the encoding is ASCII, not ascii.

Signed-off-by: Richard Hartmann <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: dd28abca6ab1b8c4b55fdcadeaae092fc897c063
https://github.com/msysgit/git/commit/dd28abca6ab1b8c4b55fdcadeaae092fc897c063
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-15 (Mon, 15 Jul 2013)

Changed paths:
M commit.c
M commit.h
M fetch-pack.c

Log Message:
-----------
Merge branch 'jk/fetch-pack-many-refs'

Fetching between repositories with many refs employed O(n^2)
algorithm to match up the common objects, which has been corrected.

* jk/fetch-pack-many-refs:
fetch-pack: avoid quadratic behavior in rev_list_push
commit.c: make compare_commits_by_commit_date global
fetch-pack: avoid quadratic list insertion in mark_complete


Commit: 9678ee7ba30a76b0b5c613126e659dcb1a206091
https://github.com/msysgit/git/commit/9678ee7ba30a76b0b5c613126e659dcb1a206091
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-15 (Mon, 15 Jul 2013)

Changed paths:
M builtin/merge.c
M t/t7600-merge.sh

Log Message:
-----------
Merge branch 'mv/merge-ff-tristate'

The configuration variable "merge.ff" was cleary a tri-state to
choose one from "favor fast-forward when possible", "always create
a merge even when the history could fast-forward" and "do not
create any merge, only update when the history fast-forwards", but
the command line parser did not implement the usual convention of
"last one wins, and command line overrides the configuration"
correctly.

* mv/merge-ff-tristate:
merge: handle --ff/--no-ff/--ff-only as a tri-state option


Commit: 22fcbc420e7948cadb42c923810609a5e4b730a4
https://github.com/msysgit/git/commit/22fcbc420e7948cadb42c923810609a5e4b730a4
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-15 (Mon, 15 Jul 2013)

Changed paths:
M Documentation/git-format-patch.txt
M builtin/log.c
M commit.h
M log-tree.c
M pretty.c
M revision.h
M t/t4014-format-patch.sh

Log Message:
-----------
Merge branch 'jk/format-patch-from'

"git format-patch" learned "--from[=whom]" option, which sets the
"From: " header to the specified person (or the person who runs the
command, if "=whom" part is missing) and move the original author
information to an in-body From: header as necessary.

* jk/format-patch-from:
teach format-patch to place other authors into in-body "From"
pretty.c: drop const-ness from pretty_print_context


Commit: 3bb6149186ea6bed5e6fd7b2f830fb499a1a8658
https://github.com/msysgit/git/commit/3bb6149186ea6bed5e6fd7b2f830fb499a1a8658
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-15 (Mon, 15 Jul 2013)

Changed paths:
M Documentation/git-submodule.txt
M git-submodule.sh
M t/t7406-submodule-update.sh

Log Message:
-----------
Merge branch 'cp/submodule-custom-update'

In addition to the choice from "rebase, merge, or checkout-detach",
allow a custom command to be used in "submodule update" to update
the working tree of submodules.

* cp/submodule-custom-update:
submodule update: allow custom command to update submodule working tree


Commit: 2bb7aface663f4d9f01d08282ee38cf8f636df0d
https://github.com/msysgit/git/commit/2bb7aface663f4d9f01d08282ee38cf8f636df0d
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-15 (Mon, 15 Jul 2013)

Changed paths:
M Documentation/git-submodule.txt
M git-submodule.sh
M t/t7400-submodule-basic.sh
M t/t7406-submodule-update.sh

Log Message:
-----------
Merge branch 'fg/submodule-clone-depth'

Allow shallow-cloning of submodules with "git submodule update".

* fg/submodule-clone-depth:
Add --depth to submodule update/add


Commit: f23777cda979f4bfb9fe36bf7c7ef75e955791b8
https://github.com/msysgit/git/commit/f23777cda979f4bfb9fe36bf7c7ef75e955791b8
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-15 (Mon, 15 Jul 2013)

Changed paths:
M git-send-email.perl

Log Message:
-----------
Merge branch 'bc/send-email-use-port-as-separate-param'

Pass port number as a separate argument when send-email initializes
Net::SMTP, instead of as a part of the hostname, i.e. host:port.
This allows GSSAPI codepath to match with the hostname given.

* bc/send-email-use-port-as-separate-param:
send-email: provide port separately from hostname


Commit: 8ca36db01371b67293f85ca66d8a022f4a8477a3
https://github.com/msysgit/git/commit/8ca36db01371b67293f85ca66d8a022f4a8477a3
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-15 (Mon, 15 Jul 2013)

Changed paths:
M git-send-email.perl
M t/t9001-send-email.sh

Log Message:
-----------
Merge branch 'mt/send-email-cc-match-fix' into maint

Logic used by git-send-email to suppress cc mishandled names like "A
U. Thor" <***@example.xz>, where the human readable part needs to
be quoted (the user input may not have the double quotes around the
name, and comparison was done between quoted and unquoted strings).
It also mishandled names that need RFC2047 quoting.

* mt/send-email-cc-match-fix:
send-email: sanitize author when writing From line
send-email: add test for duplicate utf8 name
test-send-email: test for pre-sanitized self name
t/send-email: test suppress-cc=self with non-ascii
t/send-email: add test with quoted sender
send-email: make --suppress-cc=self sanitize input
t/send-email: test suppress-cc=self on cccmd
send-email: fix suppress-cc=self on cccmd
t/send-email.sh: add test for suppress-cc=self


Commit: 1b790212efc238bc7c94417d4b19a5b11e3dd541
https://github.com/msysgit/git/commit/1b790212efc238bc7c94417d4b19a5b11e3dd541
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-15 (Mon, 15 Jul 2013)

Changed paths:
M sequencer.c

Log Message:
-----------
Merge branch 'fc/sequencer-plug-leak' into maint

"cherry-pick" had a small leak in its error codepath.

* fc/sequencer-plug-leak:
sequencer: avoid leaking message buffer when refusing to create an empty commit
sequencer: remove useless indentation


Commit: 1f101bf6507bdc786666beac6d9a7480066a020f
https://github.com/msysgit/git/commit/1f101bf6507bdc786666beac6d9a7480066a020f
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-15 (Mon, 15 Jul 2013)

Changed paths:
M git-submodule.sh
M t/t7400-submodule-basic.sh

Log Message:
-----------
Merge branch 'fg/submodule-non-ascii-path' into maint

Many "git submodule" operations did not work on a submodule at a
path whose name is not in ASCII.

* fg/submodule-non-ascii-path:
t7400: test of UTF-8 submodule names pass under Mac OS
handle multibyte characters in name


Commit: d2db8f78c469f4b346a048b5deed7c6fdd4b8d05
https://github.com/msysgit/git/commit/d2db8f78c469f4b346a048b5deed7c6fdd4b8d05
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-15 (Mon, 15 Jul 2013)

Changed paths:
M git-pull.sh
M t/t5520-pull.sh

Log Message:
-----------
Merge branch 'jk/pull-into-dirty-unborn' into maint

"git pull" into nothing trashed "local changes" that were in the
index.

* jk/pull-into-dirty-unborn:
pull: merge into unborn by fast-forwarding from empty tree
pull: update unborn branch tip after index


Commit: 29b2f0565a1e3fdd6ef40d6e12e211757071ef56
https://github.com/msysgit/git/commit/29b2f0565a1e3fdd6ef40d6e12e211757071ef56
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-15 (Mon, 15 Jul 2013)

Changed paths:
M http.c

Log Message:
-----------
Merge branch 'bc/http-keep-memory-given-to-curl' into maint

Older cURL wanted piece of memory we call it with to be stable, but
we updated the auth material after handing it to a call.

* bc/http-keep-memory-given-to-curl:
http.c: don't rewrite the user:passwd string multiple times


Commit: 90360c710c4105e3bce74fc2d746c4fa48bf07e7
https://github.com/msysgit/git/commit/90360c710c4105e3bce74fc2d746c4fa48bf07e7
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-15 (Mon, 15 Jul 2013)

Changed paths:
M builtin/apply.c
M t/t4111-apply-subdir.sh

Log Message:
-----------
Merge branch 'tr/maint-apply-non-git-patch-parsefix' into maint

"git apply" parsed patches that add new files, generated by programs
other than Git, incorrectly. This is an old breakage in v1.7.11.

* tr/maint-apply-non-git-patch-parsefix:
apply: carefully strdup a possibly-NULL name


Commit: 5addd1c7531cc644787cd562a3c22a3b714c7d77
https://github.com/msysgit/git/commit/5addd1c7531cc644787cd562a3c22a3b714c7d77
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-15 (Mon, 15 Jul 2013)

Changed paths:
M Documentation/RelNotes/1.8.3.3.txt
M Documentation/git.txt
M GIT-VERSION-GEN

Log Message:
-----------
Git 1.8.3.3

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


Commit: dbc96a77a4e699e356a54f85a93ac29a27c0780e
https://github.com/msysgit/git/commit/dbc96a77a4e699e356a54f85a93ac29a27c0780e
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-15 (Mon, 15 Jul 2013)

Changed paths:
M Documentation/RelNotes/1.8.3.3.txt
M Documentation/git.txt

Log Message:
-----------
Sync with 1.8.3.3

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


Commit: 9c3c367b265d0844c5d3c03c7d0b737b92db731c
https://github.com/msysgit/git/commit/9c3c367b265d0844c5d3c03c7d0b737b92db731c
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-15 (Mon, 15 Jul 2013)

Changed paths:
M Documentation/RelNotes/1.8.4.txt

Log Message:
-----------
Update draft release notes to 1.8.4

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


Commit: 4b796951ffca7c0aa9e05d62d6d16a3c689b7f25
https://github.com/msysgit/git/commit/4b796951ffca7c0aa9e05d62d6d16a3c689b7f25
Author: Matthijs Kooijman <***@stdin.nl>
Date: 2013-07-15 (Mon, 15 Jul 2013)

Changed paths:
M shallow.c

Log Message:
-----------
upload-pack: remove a piece of dead code

Commit 682c7d2 (upload-pack: fix off-by-one depth calculation in shallow
clone) introduced a new check in get_shallow_commits to decide when to
stop traversing the history and mark the current commit as a shallow
root.

With this new check in place, the old check can no longer be true, since
the first check always fires first. This commit removes that check,
making the code a bit more simple again.

Signed-off-by: Matthijs Kooijman <***@stdin.nl>
Acked-by: Duy Nguyen <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: bc501f69fc6d697968d472afbabe6af97a758b12
https://github.com/msysgit/git/commit/bc501f69fc6d697968d472afbabe6af97a758b12
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-07-15 (Mon, 15 Jul 2013)

Changed paths:
A contrib/hooks/multimail/README
A contrib/hooks/multimail/README.Git
A contrib/hooks/multimail/README.migrate-from-post-receive-email
A contrib/hooks/multimail/git_multimail.py
A contrib/hooks/multimail/migrate-mailhook-config
A contrib/hooks/multimail/post-receive

Log Message:
-----------
git-multimail: an improved replacement for post-receive-email

Add git-multimail, a tool for generating notification emails for
pushes to a Git repository. It is largely plug-in compatible with
post-receive-email, and is proposed to eventually replace that script.
The advantages of git-multimail relative to post-receive-email are
described in README.migrate-from-post-receive-email.

git-multimail is organized in a directory contrib/hooks/multimail.
The directory contains:

* git_multimail.py -- a Python module that can generate notification
emails for pushes to a Git repository. The file can be used
directly as a post-receive script (configured via git config
settings), or it can be imported as a Python module and configured
via arbitrary Python code.

* README -- user-level documentation for configuring and using
git-multimail.

* post-receive -- an example of building a post-receive script that
imports git_multimail.py as a Python module, with an example of how
to change the email templates.

* README.migrate-from-post-receive-email -- documentation targeted at
current users of post-receive-email, explaining the differences and
how to migrate a post-receive-email configuration to git-multimail.

* migrate-mailhook-config -- a script that can migrate a user's
post-receive-email configuration options to the equivalent
git-multimail options.

* README.Git -- a short explanation of the relationship between
git-multimail and the rest of the Git project, plus the exact date
and revision when this version was taken from the upstream project.

All but the last file are taken verbatim from the upstream
git-multimail project.

git-multimail is originally derived from post-receive-email and also
incorporates suggestions from the mailing list as well as patches by
the people listed below.

Signed-off-by: Michael Haggerty <***@alum.mit.edu>
Contributions-by: Matthieu Moy <***@imag.fr>
Contributions-by: Ramkumar Ramachandra <***@gmail.com>
Contributions-by: Chris Hiestand <***@gmail.com>
Contributions-by: Michiel Holtkamp <***@elfstone.nl>
Contributions-by: Ævar Arnfjörð Bjarmason <***@gmail.com>
Reviewed-by: Jonathan Nieder <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: ace33bf991f8f6643e58a3642962ed244ba36b5b
https://github.com/msysgit/git/commit/ace33bf991f8f6643e58a3642962ed244ba36b5b
Author: Dirk Wallenstein <***@t-online.de>
Date: 2013-07-17 (Wed, 17 Jul 2013)

Changed paths:
M git-request-pull.sh

Log Message:
-----------
request-pull: improve error message for invalid revision args

Currently, when an invalid revision is specified, the error message is:

fatal: Needed a single revision

This is misleading because, you might think there is something wrong
with the command line as a whole.

Now the user gets a more meaningful error message, showing the invalid
revision.

Signed-off-by: Dirk Wallenstein <***@t-online.de>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 1d999ddd1daa6da2779d21b293ea9b275780bff8
https://github.com/msysgit/git/commit/1d999ddd1daa6da2779d21b293ea9b275780bff8
Author: Thomas Rast <***@inf.ethz.ch>
Date: 2013-07-17 (Wed, 17 Jul 2013)

Changed paths:
M cache.h
M daemon.c
M setup.c
M shell.c

Log Message:
-----------
daemon/shell: refactor redirection of 0/1/2 from /dev/null

Both daemon.c and shell.c contain logic to open FDs 0/1/2 from
/dev/null if they are not already open. Move the function in daemon.c
to setup.c and use it in shell.c, too.

While there, remove a 'not' that inverted the meaning of the comment.
The point is indeed to *avoid* messing up.

Signed-off-by: Thomas Rast <***@inf.ethz.ch>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: a11c39646c14600d588ca55fcfe3c244b66047c7
https://github.com/msysgit/git/commit/a11c39646c14600d588ca55fcfe3c244b66047c7
Author: Thomas Rast <***@inf.ethz.ch>
Date: 2013-07-17 (Wed, 17 Jul 2013)

Changed paths:
M git.c

Log Message:
-----------
git: ensure 0/1/2 are open in main()

Not having an open FD in the 0--2 range can lead to strange results,
for example, a subsequent open() may return 2 (stderr) and then a
die() would clobber this file.

git-daemon and git-shell already guarded against this, but apparently
users also manage to trip over it in other git commands. So we call
sanitize_stdfds() during main git startup.

Since these FDs are inherited, this covers all use of 'git foo ...',
and all internal C commands when called directly. It does not fix
shell/perl commands called directly.

Signed-off-by: Thomas Rast <***@inf.ethz.ch>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 001b0976afe6f41bff46aa3eaad0285b641a50ea
https://github.com/msysgit/git/commit/001b0976afe6f41bff46aa3eaad0285b641a50ea
Author: Eric Sunshine <***@sunshineco.com>
Date: 2013-07-17 (Wed, 17 Jul 2013)

Changed paths:
M Documentation/git-log.txt

Log Message:
-----------
git-log.txt: fix typesetting of example "git-log -L" invocation

All surrounding examples are typeset as monospaced text. Follow suit.

Signed-off-by: Eric Sunshine <***@sunshineco.com>
Acked-by: Thomas Rast <***@inf.ethz.ch>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 8ade9b140f099540bcdec5bcf660faaf05b5e3ee
https://github.com/msysgit/git/commit/8ade9b140f099540bcdec5bcf660faaf05b5e3ee
Author: Matthieu Moy <***@imag.fr>
Date: 2013-07-17 (Wed, 17 Jul 2013)

Changed paths:
M t/t4000-diff-format.sh

Log Message:
-----------
t4000-diff-format.sh: modernize style

Signed-off-by: Matthieu Moy <***@imag.fr>
Reviewed-by: Jonathan Nieder <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: d09cd15d19de23aca532a85f6d27a71b2baceb3f
https://github.com/msysgit/git/commit/d09cd15d19de23aca532a85f6d27a71b2baceb3f
Author: Matthieu Moy <***@imag.fr>
Date: 2013-07-17 (Wed, 17 Jul 2013)

Changed paths:
M Documentation/rev-list-options.txt
M diff.c
M t/t4000-diff-format.sh

Log Message:
-----------
diff: allow --no-patch as synonym for -s

This follows the usual convention of having a --no-foo option to negate
--foo.

Signed-off-by: Matthieu Moy <***@imag.fr>
Reviewed-by: Jonathan Nieder <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 71482d389d0b214d2cfc2adf788ba1011a7dcb18
https://github.com/msysgit/git/commit/71482d389d0b214d2cfc2adf788ba1011a7dcb18
Author: Matthieu Moy <***@imag.fr>
Date: 2013-07-17 (Wed, 17 Jul 2013)

Changed paths:
M diff.c
M t/t4000-diff-format.sh

Log Message:
-----------
diff: allow --patch & cie to override -s/--no-patch

All options that trigger a patch output now override --no-patch.

The case of --binary deserves extra attention: the name may suggest that
it turns a normal patch into a binary patch, but it actually already
enables patch output when normally disabled (e.g. "git log --binary"
displays a patch), hence it makes sense for "git show --no-patch
--binary" to display the binary patch.

Signed-off-by: Matthieu Moy <***@imag.fr>
Reviewed-by: Jonathan Nieder <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 0791ab02c2e81e3d3c6815ce36085072d2c4cb4d
https://github.com/msysgit/git/commit/0791ab02c2e81e3d3c6815ce36085072d2c4cb4d
Author: Matthieu Moy <***@imag.fr>
Date: 2013-07-17 (Wed, 17 Jul 2013)

Changed paths:
M Documentation/git-show.txt

Log Message:
-----------
Documentation/git-show.txt: include common diff options, like git-log.txt

Signed-off-by: Matthieu Moy <***@imag.fr>
Reviewed-by: Jonathan Nieder <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 7b02c834638f6bea4cf14e4981702103b478ff4d
https://github.com/msysgit/git/commit/7b02c834638f6bea4cf14e4981702103b478ff4d
Author: Matthieu Moy <***@imag.fr>
Date: 2013-07-17 (Wed, 17 Jul 2013)

Changed paths:
M Documentation/diff-options.txt
M Documentation/rev-list-options.txt

Log Message:
-----------
Documentation: move description of -s, --no-patch to diff-options.txt

Technically, "-s, --no-patch" is implemented in diff.c ("git diff
--no-patch" is essentially useless, but valid). From the user point of
view, this allows the documentation to show up in "git show --help",
which is one of the most useful use of the option.

While we're there, add a sentence explaining why the option can be
useful.

Signed-off-by: Matthieu Moy <***@imag.fr>
Reviewed-by: Jonathan Nieder <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 4ba258b7e1020e8e3f321ca2df01e34cd71bee88
https://github.com/msysgit/git/commit/4ba258b7e1020e8e3f321ca2df01e34cd71bee88
Author: Matthieu Moy <***@imag.fr>
Date: 2013-07-17 (Wed, 17 Jul 2013)

Changed paths:
M Documentation/git-log.txt

Log Message:
-----------
Documentation/git-log.txt: capitalize section names

This is the convention in most other files and even at the beginning of
git-log.txt

Signed-off-by: Matthieu Moy <***@imag.fr>
Reviewed-by: Jonathan Nieder <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 3f3d0cea61aba6ac2fef16736ef55e04bb735e02
https://github.com/msysgit/git/commit/3f3d0cea61aba6ac2fef16736ef55e04bb735e02
Author: Doug Bell <***@gmail.com>
Date: 2013-07-17 (Wed, 17 Jul 2013)

Changed paths:
M Documentation/git-show-ref.txt
M builtin/show-ref.c
A t/t1403-show-ref.sh

Log Message:
-----------
show-ref: make --head always show the HEAD ref

The docs seem to say that doing

git show-ref --head --tags

would show both the HEAD ref and all the tag refs. However, doing
both --head and either of --tags or --heads would filter out the HEAD
ref.

Also update the documentation to describe the new behavior and add
tests for the show-ref command.

[jc: Doug did proofread the tests, but it was done by me and bugs in
it are mine].

Signed-off-by: Doug Bell <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 76053e77efb3097cfb4cdaf2eb76ce4ee65ff58b
https://github.com/msysgit/git/commit/76053e77efb3097cfb4cdaf2eb76ce4ee65ff58b
Author: René Scharfe <***@web.de>
Date: 2013-07-17 (Wed, 17 Jul 2013)

Changed paths:
M .mailmap

Log Message:
-----------
.mailmap: René Scharfe has a new email address

Signed-off-by: René Scharfe <***@web.de>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 3bf65f9e62d25089ca50eb348844d21cdbb53019
https://github.com/msysgit/git/commit/3bf65f9e62d25089ca50eb348844d21cdbb53019
Author: Eric Sunshine <***@sunshineco.com>
Date: 2013-07-17 (Wed, 17 Jul 2013)

Changed paths:
M line-range.c

Log Message:
-----------
line-range: fix "blame -L X,-N" regression

"blame -L X,-N" is documented as blaming "N lines ending at X". In
practice, the behavior is achieved by swapping the two range endpoints
if the second is less than the first. 25ed3412 (Refactor parse_loc;
2013-03-28) broke this interpretation by removing the swapping code from
blame.c and failing to add it to line-range.c along with other code
relocated from blame.c. Thus, such a range is effectively treated as
empty. Fix this regression.

Signed-off-by: Eric Sunshine <***@sunshineco.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: e37f39c134c3621f26fdcdbc22a6b2e4e00de2e5
https://github.com/msysgit/git/commit/e37f39c134c3621f26fdcdbc22a6b2e4e00de2e5
Author: Eric Sunshine <***@sunshineco.com>
Date: 2013-07-17 (Wed, 17 Jul 2013)

Changed paths:
M t/annotate-tests.sh
M t/t8001-annotate.sh
M t/t8002-blame.sh

Log Message:
-----------
t8001/t8002 (blame): modernize style

In particular,

- indent with tabs
- cuddle test description and opening body quote with test_expect_foo
- normalize test descriptions and case
- remove whitepsace following redirection operator
- use standardized filenames (such as "actual", "expected")

Signed-off-by: Eric Sunshine <***@sunshineco.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 03e15fc0b61450d6d7388e7514a67e1a9e7b72bd
https://github.com/msysgit/git/commit/03e15fc0b61450d6d7388e7514a67e1a9e7b72bd
Author: Eric Sunshine <***@sunshineco.com>
Date: 2013-07-17 (Wed, 17 Jul 2013)

Changed paths:
M t/annotate-tests.sh

Log Message:
-----------
t8001/t8002 (blame): add blame -L tests

With the exception of a couple "corner case" checks in t8003 (and some
indirect tests in t4211 of -L parsing code shared by log -L), there is
no systematic checking of blame -L. Add tests to check blame -L
directly.

Signed-off-by: Eric Sunshine <***@sunshineco.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 5a9830cb718ce13fcbad39384dd365bb895a1b21
https://github.com/msysgit/git/commit/5a9830cb718ce13fcbad39384dd365bb895a1b21
Author: Eric Sunshine <***@sunshineco.com>
Date: 2013-07-17 (Wed, 17 Jul 2013)

Changed paths:
M t/annotate-tests.sh

Log Message:
-----------
t8001/t8002 (blame): add blame -L :funcname tests

git-blame inherited "-L :funcname" support when "-L :funcname:file" was
implemented for git-log. Add tests.

Signed-off-by: Eric Sunshine <***@sunshineco.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: e6d2b9f6e7670e64e1d79b95205fe2fb32f990c2
https://github.com/msysgit/git/commit/e6d2b9f6e7670e64e1d79b95205fe2fb32f990c2
Author: Eric Sunshine <***@sunshineco.com>
Date: 2013-07-17 (Wed, 17 Jul 2013)

Changed paths:
M Documentation/blame-options.txt

Log Message:
-----------
blame-options.txt: place each -L option variation on its own line

Standard practice in Git documentation is for each variation of an
option (such as: -p / --porcelain) to be placed on its own line in the
OPTIONS table. The -L option does not follow suit. It cuddles
"-L <start>,<end>" and "-L :<regex>", separated by a comma. This is
inconsistent and potentially confusing since the comma separating them
is typeset the same as the comma in "<start>,<end>". Fix this by placing
each variation on its own line.

Signed-off-by: Eric Sunshine <***@sunshineco.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: df83d5cf6759541d6f3d94b29a91fd0d3e5dbcd5
https://github.com/msysgit/git/commit/df83d5cf6759541d6f3d94b29a91fd0d3e5dbcd5
Author: Eric Sunshine <***@sunshineco.com>
Date: 2013-07-17 (Wed, 17 Jul 2013)

Changed paths:
M Documentation/blame-options.txt

Log Message:
-----------
blame-options.txt: explain that -L <start> and <end> are optional

The ability to omit either end of the -L range is a handy but
undocumented shortcut, and is thus not easily discovered. Fix this
shortcoming.

Signed-off-by: Eric Sunshine <***@sunshineco.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 8e92e8f2422a5805916e5e14c6bebfd82467e044
https://github.com/msysgit/git/commit/8e92e8f2422a5805916e5e14c6bebfd82467e044
Author: Stefan Beller <***@googlemail.com>
Date: 2013-07-17 (Wed, 17 Jul 2013)

Changed paths:
M object.c

Log Message:
-----------
parse_object_buffer: correct freeing the buffer

If we exit early in the function parse_object_buffer, we did not
write to *eaten_p. Then the calling function parse_object, which looks
like the following with respect to the eaten variable, cannot rely on a
proper value set in eaten, hence the freeing of the buffer depends
on random values in memory.

struct object *parse_object(const unsigned char *sha1)
{
int eaten;
...
obj = parse_object_buffer(sha1, type, size, buffer, &eaten);
if (!eaten)
free(buffer);
}

This change makes sure, the buffer freeing condition is deterministic.

Signed-off-by: Stefan Beller <***@googlemail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: c07a6bc57255a2d00b41333f570b64cc36c70cfb
https://github.com/msysgit/git/commit/c07a6bc57255a2d00b41333f570b64cc36c70cfb
Author: Stefan Beller <***@googlemail.com>
Date: 2013-07-17 (Wed, 17 Jul 2013)

Changed paths:
M .mailmap

Log Message:
-----------
.mailmap: combine more (email, name) to individual persons

I got more responses from people regarding the .mailmap file.
All added persons gave permission to add them to the .mailmap file.

Signed-off-by: Stefan Beller <***@googlemail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: d0cf51e9401b6486aaecfea5dc3b01c3bb00f271
https://github.com/msysgit/git/commit/d0cf51e9401b6486aaecfea5dc3b01c3bb00f271
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-07-17 (Wed, 17 Jul 2013)

Changed paths:
M refs.c

Log Message:
-----------
do_one_ref(): save and restore value of current_ref

If do_one_ref() is called recursively, then the inner call should not
permanently overwrite the value stored in current_ref by the outer
call. Aside from the tiny optimization loss, peel_ref() expects the
value of current_ref not to change across a call to peel_entry(). But
in the presence of replace references that assumption could be
violated by a recursive call to do_one_ref:

do_for_each_entry()
do_one_ref()
builtin/describe.c:get_name()
peel_ref()
peel_entry()
peel_object ()
deref_tag_noverify()
parse_object()
lookup_replace_object()
do_lookup_replace_object()
prepare_replace_object()
do_for_each_ref()
do_for_each_entry()
do_for_each_entry_in_dir()
do_one_ref()

The inner call to do_one_ref() was unconditionally setting current_ref
to NULL when it was done, causing peel_ref() to perform an invalid
memory access.

So change do_one_ref() to save the old value of current_ref before
overwriting it, and restore the old value afterward rather than
setting it to NULL.

Reported-by: Mantas Mikulėnas <***@gmail.com>
Signed-off-by: Michael Haggerty <***@alum.mit.edu>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: f66450ae94f28a565226c3e443df5433722c5672
https://github.com/msysgit/git/commit/f66450ae94f28a565226c3e443df5433722c5672
Author: Ramsay Jones <***@ramsay1.demon.co.uk>
Date: 2013-07-18 (Thu, 18 Jul 2013)

Changed paths:
M Documentation/config.txt
M Makefile
R compat/cygwin.c
R compat/cygwin.h
M config.mak.uname
M contrib/completion/git-completion.bash
M git-compat-util.h
M help.c
M path.c

Log Message:
-----------
cygwin: Remove the Win32 l/stat() implementation

Commit adbc0b6b ("cygwin: Use native Win32 API for stat", 30-09-2008)
added a Win32 specific implementation of the stat functions. In order
to handle absolute paths, cygwin mount points and symbolic links, this
implementation may fall back on the standard cygwin l/stat() functions.
Also, the choice of cygwin or Win32 functions is made lazily (by the
first call(s) to l/stat) based on the state of some config variables.

Unfortunately, this "schizophrenic stat" implementation has been the
source of many problems ever since. For example, see commits 7faee6b8,
79748439, 452993c2, 085479e7, b8a97333, 924aaf3e, 05bab3ea and 0117c2f0.

In order to avoid further problems, such as the issue raised by the new
reference handling API, remove the Win32 l/stat() implementation.

Signed-off-by: Ramsay Jones <***@ramsay1.demon.co.uk>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 42063f95a0f285382458f357bd256df252000ef1
https://github.com/msysgit/git/commit/42063f95a0f285382458f357bd256df252000ef1
Author: Thomas Rast <***@inf.ethz.ch>
Date: 2013-07-18 (Thu, 18 Jul 2013)

Changed paths:
M builtin/apply.c
M entry.c

Log Message:
-----------
apply, entry: speak of submodules instead of subprojects

There are only four (with some generous rounding) instances in the
current source code where we speak of "subproject" instead of
"submodule". They are as follows:

* one error message in git-apply and two in entry.c

* the patch format for submodule changes

The latter was introduced in 0478675 (Expose subprojects as special
files to "git diff" machinery, 2007-04-15), apparently before the
terminology was settled. We can of course not change the patch
format.

Let's at least change the error messages to consistently call them
"submodule".

Signed-off-by: Thomas Rast <***@inf.ethz.ch>
Reviewed-by: Jonathan Nieder <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 465cf8ce453dc3e266171ece2ea886acd8c7d714
https://github.com/msysgit/git/commit/465cf8ce453dc3e266171ece2ea886acd8c7d714
Author: Thomas Rast <***@inf.ethz.ch>
Date: 2013-07-18 (Thu, 18 Jul 2013)

Changed paths:
M builtin/show-branch.c

Log Message:
-----------
show-branch: fix description of --date-order

The existing description reads as if it somehow applies a filter.
Change it to explain that it is merely about the ordering.

Message-proposed-by: Jonathan Nieder <***@gmail.com>
Signed-off-by: Thomas Rast <***@inf.ethz.ch>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: afbfcaa98396de66e42dc3c845f396c5ba508ced
https://github.com/msysgit/git/commit/afbfcaa98396de66e42dc3c845f396c5ba508ced
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-18 (Thu, 18 Jul 2013)

Changed paths:
M git-rebase--interactive.sh
M git-rebase.sh
M t/t3404-rebase-interactive.sh

Log Message:
-----------
Merge branch 'rr/rebase-reflog-message-reword'

"git rebase [-i]" used to leave just "rebase" as its reflog message
for some operations. This rewords them to be more informative.

* rr/rebase-reflog-message-reword:
rebase -i: use a better reflog message
rebase: use a better reflog message


Commit: db1a848421fe05482e36fcba76f019299ae93b25
https://github.com/msysgit/git/commit/db1a848421fe05482e36fcba76f019299ae93b25
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-18 (Thu, 18 Jul 2013)

Changed paths:
M remote.c

Log Message:
-----------
Merge branch 'bc/push-match-many-refs'

Pushing to repositories with many refs employed O(m*n) algorithm
where n is the number of refs on the receiving end.

* bc/push-match-many-refs:
remote.c: avoid O(m*n) behavior in match_push_refs


Commit: 45ed4afabee57a2583f4b88828f598573f7cd239
https://github.com/msysgit/git/commit/45ed4afabee57a2583f4b88828f598573f7cd239
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-18 (Thu, 18 Jul 2013)

Changed paths:
M builtin/clone.c
M t/t5710-info-alternate.sh

Log Message:
-----------
Merge branch 'jk/maint-clone-shared-no-connectivity-validation'

"git clone -s/-l" is a filesystem level copy and does not offer any
protection against source repository being corrupt. While the
connectivity validation checks commits and trees being readable, it
made the otherwise instantaneous local modes of clone much more
expensive, without protecting blob data from bitflips.

* jk/maint-clone-shared-no-connectivity-validation:
clone: drop connectivity check for local clones


Commit: 0d64cdf8e2d7a24bfa6d7246a75c5f207e088164
https://github.com/msysgit/git/commit/0d64cdf8e2d7a24bfa6d7246a75c5f207e088164
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-18 (Thu, 18 Jul 2013)

Changed paths:
M line-log.c
M t/t4211/expect.multiple-superset

Log Message:
-----------
Merge branch 'es/overlapping-range-set'

* es/overlapping-range-set:
range_set: fix coalescing bug when range is a subset of another
t4211: fix broken test when one -L range is subset of another


Commit: 73f4c9a104ada33a06d38767404a04bbd4f86672
https://github.com/msysgit/git/commit/73f4c9a104ada33a06d38767404a04bbd4f86672
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-18 (Thu, 18 Jul 2013)

Changed paths:
M commit.c
M t/t3900-i18n-commit.sh

Log Message:
-----------
Merge branch 'bc/commit-invalid-utf8'

Logic to auto-detect character encodings in the commit log message
did not reject overlong and invalid UTF-8 characters.

* bc/commit-invalid-utf8:
commit: reject non-characters
commit: reject overlong UTF-8 sequences
commit: reject invalid UTF-8 codepoints


Commit: b12aecda2cbdc7264ce969e28a351a78ea3cb77f
https://github.com/msysgit/git/commit/b12aecda2cbdc7264ce969e28a351a78ea3cb77f
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-18 (Thu, 18 Jul 2013)

Changed paths:
A contrib/mw-to-git/Git/Mediawiki.pm
M contrib/mw-to-git/Makefile
A contrib/mw-to-git/bin-wrapper/git
A contrib/mw-to-git/git-mw.perl
M contrib/mw-to-git/git-remote-mediawiki.perl
M contrib/mw-to-git/t/test-gitmw-lib.sh
M t/test-lib.sh
M wrap-for-bin.sh

Log Message:
-----------
Merge branch 'bp/mediawiki-preview'

Add a command to allow previewing the contents locally before
pushing it out, when working with a MediaWiki remote.

I personally do not think this belongs to Git. If you are working
on a set of AsciiDoc source files, you sure do want to locally
format to preview what you will be pushing out, and if you are
working on a set of C or Java source files, you do want to test it
before pushing it out, too. That kind of thing belongs to your
build script, not to your SCM.

But I'll let it pass, as this is only a contrib/ thing.

* bp/mediawiki-preview:
git-remote-mediawiki: add preview subcommand into git mw
git-remote-mediawiki: add git-mw command
git-remote-mediawiki: factoring code between git-remote-mediawiki and Git::Mediawiki
git-remote-mediawiki: update tests to run with the new bin-wrapper
git-remote-mediawiki: add a git bin-wrapper for developement
wrap-for-bin: make bin-wrappers chainable
git-remote-mediawiki: introduction of Git::Mediawiki.pm


Commit: 802f878b86332a7841dab89dfe29e3e6c90979ab
https://github.com/msysgit/git/commit/802f878b86332a7841dab89dfe29e3e6c90979ab
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-18 (Thu, 18 Jul 2013)

Changed paths:
M Documentation/git-cat-file.txt
M builtin/cat-file.c
M cache.h
M pack-revindex.c
M sha1_file.c
M streaming.c
M t/t1006-cat-file.sh

Log Message:
-----------
Merge branch 'jk/in-pack-size-measurement'

"git cat-file --batch-check=<format>" is added, primarily to allow
on-disk footprint of objects in packfiles (often they are a lot
smaller than their true size, when expressed as deltas) to be
reported.

* jk/in-pack-size-measurement:
pack-revindex: radix-sort the revindex
pack-revindex: use unsigned to store number of objects
cat-file: split --batch input lines on whitespace
cat-file: add %(objectsize:disk) format atom
cat-file: add --batch-check=<format>
cat-file: refactor --batch option parsing
cat-file: teach --batch to stream blob objects
t1006: modernize output comparisons
teach sha1_object_info_extended a "disk_size" query
zero-initialize object_info structs


Commit: ec1b80b9c49652d0f1ad4b5f4e1a2efc4ed20029
https://github.com/msysgit/git/commit/ec1b80b9c49652d0f1ad4b5f4e1a2efc4ed20029
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-18 (Thu, 18 Jul 2013)

Changed paths:
M .mailmap

Log Message:
-----------
Merge branch 'sb/mailmap-updates'

* sb/mailmap-updates:
.mailmap: combine more (email, name) to individual persons
.mailmap: Combine more (email, name) to individual persons
.mailmap: Map email addresses to names


Commit: cbc7fdf81dee94333f11e775ab47b7e7b35ea81c
https://github.com/msysgit/git/commit/cbc7fdf81dee94333f11e775ab47b7e7b35ea81c
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-18 (Thu, 18 Jul 2013)

Changed paths:
M .mailmap

Log Message:
-----------
Merge branch 'rs/mailmap-himself'

* rs/mailmap-himself:
.mailmap: René Scharfe has a new email address


Commit: 30f7ad08e69561e638a0e95345b74aa2806331dc
https://github.com/msysgit/git/commit/30f7ad08e69561e638a0e95345b74aa2806331dc
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-18 (Thu, 18 Jul 2013)

Changed paths:
M Documentation/git-clone.txt

Log Message:
-----------
Merge branch 'jc/revert-clone-doc-update-for-push-from-shallow'

* jc/revert-clone-doc-update-for-push-from-shallow:
Revert "git-clone.txt: remove the restriction on pushing from a shallow clone"


Commit: b72c6161f1f34985e4a13f8c4c9ba9e55b3d1496
https://github.com/msysgit/git/commit/b72c6161f1f34985e4a13f8c4c9ba9e55b3d1496
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-18 (Thu, 18 Jul 2013)

Changed paths:
M Documentation/RelNotes/1.8.4.txt

Log Message:
-----------
Update draft release notes to 1.8.4

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


Commit: 118aa4acff6afae733c206df7049ea54f7e0b282
https://github.com/msysgit/git/commit/118aa4acff6afae733c206df7049ea54f7e0b282
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-18 (Thu, 18 Jul 2013)

Changed paths:
M builtin/name-rev.c
M t/t6120-describe.sh

Log Message:
-----------
name-rev: differentiate between tags and commits they point at

"git name-rev --stdin" has been fixed to convert an object name that
points at a tag to a refname of the tag. The codepath to handle its
command line arguments, however, fed the commit that the tag points
at to the underlying naming machinery.

With this fix, you will get this:

$ git name-rev --refs=tags/\* --name-only $(git rev-parse v1.8.3 v1.8.3^0)
v1.8.3
v1.8.3^0

which is the same as what you would get from the fixed "--stdin" variant:

$ git rev-parse v1.8.3 v1.8.3^0 | git name-rev --refs=tags/\* --name-only
v1.8.3
v1.8.3^0

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


Commit: adfc1857bdb090786fd9d22c1acec39371c76048
https://github.com/msysgit/git/commit/adfc1857bdb090786fd9d22c1acec39371c76048
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-18 (Thu, 18 Jul 2013)

Changed paths:
M builtin/describe.c
M builtin/name-rev.c
M t/t6120-describe.sh

Log Message:
-----------
describe: fix --contains when a tag is given as input

"git describe" takes a commit and gives it a name based on tags in
its neighbourhood. The command does take a commit-ish but when
given a tag that points at a commit, it should dereference the tag
before computing the name for the commit.

As the whole processing is internally delegated to name-rev, if we
unwrap tags down to the underlying commit when invoking name-rev, it
will make the name-rev issue an error message based on the unwrapped
object name (i.e. either 40-hex object name, or "$tag^0") that is
different from what the end-user gave to the command when the commit
cannot be described. Introduce an internal option --peel-tag to the
name-rev to tell it to unwrap a tag in its input from the command
line.

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


Commit: 35035bbf074d1a4c59cd5f99282c12197105da08
https://github.com/msysgit/git/commit/35035bbf074d1a4c59cd5f99282c12197105da08
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-07-18 (Thu, 18 Jul 2013)

Changed paths:
M Documentation/config.txt
M Documentation/git-send-email.txt
M git-send-email.perl

Log Message:
-----------
send-email: be explicit with SSL certificate verification

When initiating an SSL connection without explicitly specifying the
SSL certificate verification mode, Net::SMTP::SSL defaults to no
verification, but recent versions of the module gives a warning
against this use of the default.

Enable certificate verification by default, using /etc/ssl/certs as
the default path for certificates of certificate authorities. This
path can be overriden by the --smtp-ssl-cert-path command line
option and the sendemail.smtpSSLCertPath configuration variable.

Passing an empty string as the path for CA certificates path disables
the SSL certificate verification explicitly, which does not trigger
the warning from recent versions of Net::SMTP::SSL.

Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Helped-by: Brian M. Carlson <***@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 4a81bfa1d97ed5d1952f5b94dd7eeedddc21d457
https://github.com/msysgit/git/commit/4a81bfa1d97ed5d1952f5b94dd7eeedddc21d457
Author: Jonathon Mah <***@JonathonMah.com>
Date: 2013-07-18 (Thu, 18 Jul 2013)

Changed paths:
M Documentation/git-pack-refs.txt

Log Message:
-----------
Documentation: remove --prune from pack-refs examples

The option has been the default for a while, and doesn't otherwise
appear in the page.

Signed-off-by: Jonathon Mah <***@JonathonMah.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 8c3ca72623121684e39be085588b9ef7c6306caa
https://github.com/msysgit/git/commit/8c3ca72623121684e39be085588b9ef7c6306caa
Author: Jonathon Mah <***@JonathonMah.com>
Date: 2013-07-18 (Thu, 18 Jul 2013)

Changed paths:
M Documentation/git-prune.txt

Log Message:
-----------
Documentation: fix git-prune example usage

Signed-off-by: Jonathon Mah <***@JonathonMah.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: d099b7173dabdeeb1f339151ac2169b3a91bf631
https://github.com/msysgit/git/commit/d099b7173dabdeeb1f339151ac2169b3a91bf631
Author: Ramsay Jones <***@ramsay1.demon.co.uk>
Date: 2013-07-18 (Thu, 18 Jul 2013)

Changed paths:
M sha1_file.c
M streaming.c

Log Message:
-----------
Fix some sparse warnings

Sparse issues some "Using plain integer as NULL pointer" warnings.
Each warning relates to the use of an '{0}' initialiser expression
in the declaration of an 'struct object_info'. The first field of
this structure has pointer type. Thus, in order to suppress these
warnings, we replace the initialiser expression with '{NULL}'.

Signed-off-by: Ramsay Jones <***@ramsay1.demon.co.uk>
Acked-by: Jeff King <***@peff.net>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 97669eed109f5dea7dffe771d8f6aba4acf84b27
https://github.com/msysgit/git/commit/97669eed109f5dea7dffe771d8f6aba4acf84b27
Author: Mark Levedahl <***@gmail.com>
Date: 2013-07-18 (Thu, 18 Jul 2013)

Changed paths:
M t/t3032-merge-recursive-options.sh
M t/t5560-http-backend-noserver.sh
M t/test-lib.sh

Log Message:
-----------
test-lib.sh - define and use GREP_STRIPS_CR

Define a common macro for grep needing -U to allow tests to not need
to inquire of specific platforms needing this option. Change
t3032 and t5560 to use this rather than testing explicitly for mingw.
This fixes these two tests on Cygwin.

Signed-off-by: Mark Levedahl <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 9fe3edc47f1f17a53272671c572c90ba71eb4f74
https://github.com/msysgit/git/commit/9fe3edc47f1f17a53272671c572c90ba71eb4f74
Author: Ramsay Jones <***@ramsay1.demon.co.uk>
Date: 2013-07-19 (Fri, 19 Jul 2013)

Changed paths:
M argv-array.h
M builtin/revert.c
M exec_cmd.h
M git-compat-util.h
M run-command.h

Log Message:
-----------
Add the LAST_ARG_MUST_BE_NULL macro

The sentinel function attribute is not understood by versions of
the gcc compiler prior to v4.0. At present, for earlier versions
of gcc, the build issues 108 warnings related to the unknown
attribute. In order to suppress the warnings, we conditionally
define the LAST_ARG_MUST_BE_NULL macro to provide the sentinel attribute
for gcc v4.0 and newer.

Signed-off-by: Ramsay Jones <***@ramsay1.demon.co.uk>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: debecc55583aa498dbc64a1d45b8abba324a2dae
https://github.com/msysgit/git/commit/debecc55583aa498dbc64a1d45b8abba324a2dae
Author: Stefan Beller <***@googlemail.com>
Date: 2013-07-19 (Fri, 19 Jul 2013)

Changed paths:
M Documentation/git-reset.txt

Log Message:
-----------
Documentation: "git reset <tree-ish> <pathspec>" takes a tree-ish, not tree-sh

Reported-By: Ibrahim M. Ghazal <***@gmail.com>
Signed-off-by: Stefan Beller <***@googlemail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 7f05e4a6173e65220c11ed2ff42fa3d64ccd98a4
https://github.com/msysgit/git/commit/7f05e4a6173e65220c11ed2ff42fa3d64ccd98a4
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-19 (Fri, 19 Jul 2013)

Changed paths:
M Makefile

Log Message:
-----------
Merge branch 'tr/coverage' into maint

The test coverage framework was left broken for some time.

* tr/coverage:
coverage: build coverage-untested-functions by default
coverage: set DEFAULT_TEST_TARGET to avoid using prove
coverage: do not delete .gcno files before building
coverage: split build target into compile and test


Commit: 65ed8684c4ef5a36f2d172f1cb8b88d993c0e4ec
https://github.com/msysgit/git/commit/65ed8684c4ef5a36f2d172f1cb8b88d993c0e4ec
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-19 (Fri, 19 Jul 2013)

Changed paths:
M .gitignore
M Makefile
M read-cache.c
A t/perf/p0002-read-cache.sh
A test-read-cache.c

Log Message:
-----------
Merge branch 'rs/discard-index-discard-array' into maint

* rs/discard-index-discard-array:
read-cache: free cache in discard_index
read-cache: add simple performance test


Commit: 439b55b37c215da67aedd4bce8c6d471de4246e1
https://github.com/msysgit/git/commit/439b55b37c215da67aedd4bce8c6d471de4246e1
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-19 (Fri, 19 Jul 2013)

Changed paths:
M Documentation/config.txt

Log Message:
-----------
Merge branch 'rr/column-doc' into maint

* rr/column-doc:
column doc: rewrite documentation for column.ui


Commit: afebd687f86352b32ee2f386d8059de130137767
https://github.com/msysgit/git/commit/afebd687f86352b32ee2f386d8059de130137767
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-19 (Fri, 19 Jul 2013)

Changed paths:
M t/t5000-tar-tree.sh
A t/t5000/pax.tar
M t/t5003-archive-zip.sh

Log Message:
-----------
Merge branch 'rs/tar-tests' into maint

* rs/tar-tests:
t5000: test long filenames
t5000: simplify tar-tree tests
t5000: use check_tar for prefix test
t5000: factor out check_tar
t5000, t5003: create directories for extracted files lazily
t5000: integrate export-subst tests into regular tests


Commit: 6741edcc501288e0b1bff0773e39c0844d083af8
https://github.com/msysgit/git/commit/6741edcc501288e0b1bff0773e39c0844d083af8
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-19 (Fri, 19 Jul 2013)

Changed paths:
M git-bisect.sh

Log Message:
-----------
Merge branch 'th/bisect-skip-report-range-fix' into maint

The bisect log listed incorrect commits when bisection ends with
only skipped ones.

* th/bisect-skip-report-range-fix:
bisect: Fix log output for multi-parent skip ranges


Commit: 509152d3fa543bd3e030825ecefda298bbc4dfa7
https://github.com/msysgit/git/commit/509152d3fa543bd3e030825ecefda298bbc4dfa7
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-19 (Fri, 19 Jul 2013)

Changed paths:
M archive-zip.c

Log Message:
-----------
Merge branch 'sb/archive-zip-double-assignment-fix' into maint

* sb/archive-zip-double-assignment-fix:
archive-zip:write_zip_entry: Remove second reset of size variable to zero.


Commit: 8589a74b191f1842b633020e28de1c4a1c7f607c
https://github.com/msysgit/git/commit/8589a74b191f1842b633020e28de1c4a1c7f607c
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-19 (Fri, 19 Jul 2013)

Changed paths:
M t/t7501-commit.sh

Log Message:
-----------
Merge branch 'tr/test-commit-only-on-orphan' into maint

* tr/test-commit-only-on-orphan:
Test 'commit --only' after 'checkout --orphan'


Commit: 211e76d48b86f9b3e38c9c9f62d104723dea1964
https://github.com/msysgit/git/commit/211e76d48b86f9b3e38c9c9f62d104723dea1964
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-19 (Fri, 19 Jul 2013)

Changed paths:
M t/lib-httpd/apache.conf

Log Message:
-----------
Merge branch 'jk/apache-test-for-2.4' into maint

Allow our tests to run with newer Apache.

* jk/apache-test-for-2.4:
lib-httpd/apache.conf: check version only after mod_version loads
t/lib-httpd/apache.conf: configure an MPM module for apache 2.4
t/lib-httpd/apache.conf: load compat access module in apache 2.4
t/lib-httpd/apache.conf: load extra auth modules in apache 2.4
t/lib-httpd/apache.conf: do not use LockFile in apache >= 2.4


Commit: 6ddc862e8bcf8c687a6fcf2a805ccb032b5d3e7f
https://github.com/msysgit/git/commit/6ddc862e8bcf8c687a6fcf2a805ccb032b5d3e7f
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-19 (Fri, 19 Jul 2013)

Changed paths:
M t/README
M t/t0000-basic.sh
M t/t1004-read-tree-m-u-wf.sh
M t/t2001-checkout-cache-clash.sh
M t/t2004-checkout-cache-temp.sh
M t/t2007-checkout-symlink.sh
M t/t2021-checkout-overwrite.sh
M t/t2200-add-update.sh
M t/t3010-ls-files-killed-modified.sh
M t/t3030-merge-recursive.sh
M t/t3100-ls-tree-restrict.sh
M t/t3509-cherry-pick-merge-df.sh
M t/t3700-add.sh
M t/t3903-stash.sh
M t/t4008-diff-break-rewrite.sh
M t/t4011-diff-symlink.sh
M t/t4023-diff-rename-typechange.sh
M t/t4030-diff-textconv.sh
M t/t4114-apply-typechange.sh
M t/t4115-apply-symlink.sh
M t/t4122-apply-symlink-inside.sh
M t/t6035-merge-dir-to-symlink.sh
M t/t7001-mv.sh
M t/t7607-merge-overwrite.sh
M t/t8006-blame-textconv.sh
M t/t8007-cat-file-textconv.sh
M t/t9350-fast-export.sh
M t/t9500-gitweb-standalone-no-errors.sh
M t/test-lib-functions.sh
M test-chmtime.c

Log Message:
-----------
Merge branch 'js/test-ln-s-add' into maint

* js/test-ln-s-add:
t4011: remove SYMLINKS prerequisite
t6035: use test_ln_s_add to remove SYMLINKS prerequisite
t3509, t4023, t4114: use test_ln_s_add to remove SYMLINKS prerequisite
t3100: use test_ln_s_add to remove SYMLINKS prerequisite
t3030: use test_ln_s_add to remove SYMLINKS prerequisite
t0000: use test_ln_s_add to remove SYMLINKS prerequisite
tests: use test_ln_s_add to remove SYMLINKS prerequisite (trivial cases)
tests: introduce test_ln_s_add
t3010: modernize style
test-chmtime: Fix exit code on Windows


Commit: 52c19991cb86c81068c2ac7d8164643d8593bb50
https://github.com/msysgit/git/commit/52c19991cb86c81068c2ac7d8164643d8593bb50
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-19 (Fri, 19 Jul 2013)

Changed paths:
M builtin/apply.c
M builtin/ls-files.c
M builtin/merge-base.c

Log Message:
-----------
Merge branch 'rs/logical-vs-binary-or' into maint

* rs/logical-vs-binary-or:
use logical OR (||) instead of binary OR (|) in logical context


Commit: bd54df07165cedf36b02982fde9521c1536c5cc2
https://github.com/msysgit/git/commit/bd54df07165cedf36b02982fde9521c1536c5cc2
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-19 (Fri, 19 Jul 2013)

Changed paths:
M Documentation/git-push.txt

Log Message:
-----------
Merge branch 'mm/push-force-is-dangerous' into maint

* mm/push-force-is-dangerous:
Documentation/git-push.txt: explain better cases where --force is dangerous


Commit: b002bb87f0aeb7b87e5cbe111c520a318c402b59
https://github.com/msysgit/git/commit/b002bb87f0aeb7b87e5cbe111c520a318c402b59
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-19 (Fri, 19 Jul 2013)

Changed paths:
M Documentation/git-web--browse.txt
M git-web--browse.sh

Log Message:
-----------
Merge branch 'ys/cygstart' into maint

* ys/cygstart:
web--browse: support /usr/bin/cygstart on Cygwin


Commit: 0b57758c351dd1e69f405bf4c111e1ea93f1da69
https://github.com/msysgit/git/commit/0b57758c351dd1e69f405bf4c111e1ea93f1da69
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-19 (Fri, 19 Jul 2013)

Changed paths:
M Documentation/user-manual.txt

Log Message:
-----------
Merge branch 'wk/doc-git-has-grown' into maint

* wk/doc-git-has-grown:
user-manual: Update download size for Git and the kernel


Commit: e6d6911941fb0d078453a44ec840af57e6578676
https://github.com/msysgit/git/commit/e6d6911941fb0d078453a44ec840af57e6578676
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-19 (Fri, 19 Jul 2013)

Changed paths:
M git-p4.py
M git-svn.perl
M t/t7600-merge.sh

Log Message:
-----------
Merge branch 'vl/typofix' into maint

* vl/typofix:
random typofixes (committed missing a 't', successful missing an 's')


Commit: 069dba2a09cd9a3959194c871f475391b0960844
https://github.com/msysgit/git/commit/069dba2a09cd9a3959194c871f475391b0960844
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-19 (Fri, 19 Jul 2013)

Changed paths:
M sha1_name.c
M t/t1512-rev-parse-disambiguation.sh

Log Message:
-----------
Merge branch 'jc/t1512-fix' into maint

* jc/t1512-fix:
get_short_sha1(): correctly disambiguate type-limited abbreviation
t1512: correct leftover constants from earlier edition


Commit: ba5831fdae3d8c87ddeed9f78f2a9ff5d0a60b62
https://github.com/msysgit/git/commit/ba5831fdae3d8c87ddeed9f78f2a9ff5d0a60b62
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-19 (Fri, 19 Jul 2013)

Changed paths:
M Documentation/diff-options.txt

Log Message:
-----------
Merge branch 'ft/diff-rename-default-score-is-half' into maint

* ft/diff-rename-default-score-is-half:
diff-options: document default similarity index


Commit: 871ed7842c2cc6c73aef45e7e46dc658a8ddf973
https://github.com/msysgit/git/commit/871ed7842c2cc6c73aef45e7e46dc658a8ddf973
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-19 (Fri, 19 Jul 2013)

Changed paths:
M Documentation/git-name-rev.txt

Log Message:
-----------
Merge branch 'rr/name-rev-stdin-doc' into maint

* rr/name-rev-stdin-doc:
name-rev doc: rewrite --stdin paragraph


Commit: 98aa2eabf047d673447b72f4b4ac6cae6aae3a16
https://github.com/msysgit/git/commit/98aa2eabf047d673447b72f4b4ac6cae6aae3a16
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-19 (Fri, 19 Jul 2013)

Changed paths:
M t/check-non-portable-shell.pl
M t/t9902-completion.sh

Log Message:
-----------
Merge branch 'tr/test-lint-no-export-assignment-in-shell' into maint

* tr/test-lint-no-export-assignment-in-shell:
test-lint: detect 'export FOO=bar'
t9902: fix 'test A == B' to use = operator


Commit: 3def06e625099907fb44c519611188904b6937a2
https://github.com/msysgit/git/commit/3def06e625099907fb44c519611188904b6937a2
Author: Stefan Beller <***@googlemail.com>
Date: 2013-07-19 (Fri, 19 Jul 2013)

Changed paths:
M http-push.c

Log Message:
-----------
http-push.c::add_send_request(): do not initialize transfer_request

That pointer will be assigned to new memory via

request = xmalloc(sizeof(*request));

20 lines later unconditionally anyway, so it's safe to not assign it
to an arbitrary variable.

Signed-off-by: Stefan Beller <***@googlemail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 1f976bd03f26b70dfbb26b3f9478df09709db966
https://github.com/msysgit/git/commit/1f976bd03f26b70dfbb26b3f9478df09709db966
Author: Stefan Beller <***@googlemail.com>
Date: 2013-07-19 (Fri, 19 Jul 2013)

Changed paths:
M builtin/apply.c

Log Message:
-----------
apply.c::find_name_traditional(): do not initialize len to the line's length

The variable len is set to

len = strchrnul(line, '\n') - line;

unconditionally 9 lines later, hence we can remove the call to strlen.

Signed-off-by: Stefan Beller <***@googlemail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: f893b7420cdf085dfde809d4ea97cb8c03b81c94
https://github.com/msysgit/git/commit/f893b7420cdf085dfde809d4ea97cb8c03b81c94
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-19 (Fri, 19 Jul 2013)

Changed paths:
A Documentation/RelNotes/1.8.3.4.txt
M RelNotes

Log Message:
-----------
Start preparing for 1.8.3.4

Hopefully this will be the final maintenance release before we go to
feature freeze for 1.8.4.


Commit: e3d44930318ed3746fe6da51913602d4fad8daaf
https://github.com/msysgit/git/commit/e3d44930318ed3746fe6da51913602d4fad8daaf
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-19 (Fri, 19 Jul 2013)

Changed paths:
A Documentation/RelNotes/1.8.3.4.txt
M Documentation/git-reset.txt
M builtin/apply.c
M http-push.c

Log Message:
-----------
Sync with maint


Commit: 7f3b8c628eaea8ccbe83f605b00d629553b70b42
https://github.com/msysgit/git/commit/7f3b8c628eaea8ccbe83f605b00d629553b70b42
Author: Andrew Wong <***@gmail.com>
Date: 2013-07-19 (Fri, 19 Jul 2013)

Changed paths:
M builtin/add.c

Log Message:
-----------
git add -e: Explicitly specify that patch should have no color

After 4c7f1819 (make color.ui default to 'auto', 2013-06-10), the
patch file to be edited during 'git add -e' receives all the color
codes. This is because diffopt.use_color defaults to -1, which
causes want_color to now return 'auto'.

By explicitly setting use_color to 0, we can ensure the diff output
has no color codes in it.

Signed-off-by: Andrew Wong <***@gmail.com>
Acked-by: Matthieu Moy <***@imag.fr>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: a04f8196a8f067b6c36415a0d934a46465140c34
https://github.com/msysgit/git/commit/a04f8196a8f067b6c36415a0d934a46465140c34
Author: Stefan Beller <***@googlemail.com>
Date: 2013-07-19 (Fri, 19 Jul 2013)

Changed paths:
M tree-walk.c

Log Message:
-----------
traverse_trees(): clarify return value of the callback

The variable name "ret" sounds like the variable to be returned, but
since e6c111b4 we return error, and it is misleading.

As this variable tells us which trees in t[] array were used in the
callback function, so that this caller can know the entries in which
of the trees need advancing, "trees_used" is a better name.

Also the assignment to 0 was removed at the start of the function as
well after the "if (interesting)" block. Those are unneeded as that
variable is set to the callback return value any time we enter the
"if (interesting)" block, so we'd overwrite old values anyway.

Signed-off-by: Stefan Beller <***@googlemail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 76b623584cee2421b84e12050b7ee53b0c08ee89
https://github.com/msysgit/git/commit/76b623584cee2421b84e12050b7ee53b0c08ee89
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-19 (Fri, 19 Jul 2013)

Changed paths:
M t/t2202-add-addremove.sh

Log Message:
-----------
t2202: make sure "git add" (no args) stays a no-op

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


Commit: f1e2a48d18a458d0431df8fef041bee857adb860
https://github.com/msysgit/git/commit/f1e2a48d18a458d0431df8fef041bee857adb860
Author: Benoit Sigoure <***@gmail.com>
Date: 2013-07-21 (Sun, 21 Jul 2013)

Changed paths:
M compat/unsetenv.c

Log Message:
-----------
Revert "compat/unsetenv.c: Fix a sparse warning"

This reverts commit ec535cc27e6c4f5e0b1d157e04f5511f166ecd9d.

POSIX explicitly states "the [environ] variable, which
must be declared by the user if it is to be used directly".
Not declaring it causes compilation to fail on OS X.

Instead don't declare the variable on MinGW, as it causes
a spurious warning there.

Signed-off-by: Benoit Sigoure <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 4d06402b1b29259bd475e5473c4478f58e9376a1
https://github.com/msysgit/git/commit/4d06402b1b29259bd475e5473c4478f58e9376a1
Author: Eric Sunshine <***@sunshineco.com>
Date: 2013-07-21 (Sun, 21 Jul 2013)

Changed paths:
A contrib/contacts/git-contacts

Log Message:
-----------
contrib: add git-contacts helper

This script lists people that might be interested in a patch by going
back through the history for each patch hunk, and finding people that
reviewed, acknowledged, signed, authored, or were Cc:'d on the code the
patch is modifying.

It does this by running git-blame incrementally on each hunk and then
parsing the commit message. After gathering all participants, it
determines each person's relevance by considering how many commits
mentioned that person compared with the total number of commits under
consideration. The final output consists only of participants who pass a
minimum threshold of participation.

Several conditions controlling a person's significance are currently
hard-coded, such as minimum participation level, blame date-limiting,
and -C level for detecting moved and copied lines. In the future, these
conditions may become configurable.

For example:

% git contacts 0001-remote-hg-trivial-cleanups.patch
Felipe Contreras <***@gmail.com>
Jeff King <***@peff.net>
Max Horn <***@quendi.de>
Junio C Hamano <***@pobox.com>

Thus, it can be invoked as git-send-email's --cc-cmd option, among other
possible uses.

This is a Perl rewrite of Felipe Contreras' git-related patch series[1]
written in Ruby.

[1]: http://thread.gmane.org/gmane.comp.version-control.git/226065/

Signed-off-by: Eric Sunshine <***@sunshineco.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 8e7c4a82ec25ee92bcb81de8bb8c4a27876d6edc
https://github.com/msysgit/git/commit/8e7c4a82ec25ee92bcb81de8bb8c4a27876d6edc
Author: Eric Sunshine <***@sunshineco.com>
Date: 2013-07-21 (Sun, 21 Jul 2013)

Changed paths:
M contrib/contacts/git-contacts

Log Message:
-----------
contrib: contacts: add ability to parse from committish

For example:

% git contacts R1..R2

Committishes and patch files can be mentioned in the same invocation:

% git contacts R1..R2 extra/*.patch

Signed-off-by: Eric Sunshine <***@sunshineco.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: ccf6b45aff3f89016cf1a3e39a37e73e72c3e0f6
https://github.com/msysgit/git/commit/ccf6b45aff3f89016cf1a3e39a37e73e72c3e0f6
Author: Eric Sunshine <***@sunshineco.com>
Date: 2013-07-21 (Sun, 21 Jul 2013)

Changed paths:
M contrib/contacts/git-contacts

Log Message:
-----------
contrib: contacts: interpret committish akin to format-patch

As a convenience, accept the same style <since> committish as accepted
by git-format-patch. For example:

% git contacts origin

will consider commits in the current branch built atop 'origin', just as
"git format-patch origin" will format commits built atop 'origin'.

Signed-off-by: Eric Sunshine <***@sunshineco.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 7c6d6ff8f122b10d6214c4f53e3179996dee2f9a
https://github.com/msysgit/git/commit/7c6d6ff8f122b10d6214c4f53e3179996dee2f9a
Author: Eric Sunshine <***@sunshineco.com>
Date: 2013-07-21 (Sun, 21 Jul 2013)

Changed paths:
M contrib/contacts/git-contacts

Log Message:
-----------
contrib: contacts: add mailmap support

The purpose of git-contacts is to determine a list of people who might
have some interest in a patch or set of changes. It can be used as
git-send-email's --cc-cmd argument or the computed list might be used to
ask for comments on a proposed change. As such, it is important to
report up-to-date email addresses in the computed list rather than
potentially outdated ones recorded with commits. Apply git's mailmap
functionality to the retrieved contacts in order to achieve this goal.

Signed-off-by: Eric Sunshine <***@sunshineco.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: acb01a359bc2fe3f1ddfb1eb9daa60b8c83e5153
https://github.com/msysgit/git/commit/acb01a359bc2fe3f1ddfb1eb9daa60b8c83e5153
Author: Eric Sunshine <***@sunshineco.com>
Date: 2013-07-21 (Sun, 21 Jul 2013)

Changed paths:
A contrib/contacts/git-contacts.txt

Log Message:
-----------
contrib: contacts: add documentation

Assuming that git-contacts may some day be promoted to a core git
command, the documentation is written and formatted as if it already
belongs in Documentation/ even though it presently resides in
contrib/contacts.

Signed-off-by: Eric Sunshine <***@sunshineco.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 7c8ce4ed32aec3b86a271c2661ad9dfb0084c3f9
https://github.com/msysgit/git/commit/7c8ce4ed32aec3b86a271c2661ad9dfb0084c3f9
Author: Vitor Antunes <***@gmail.com>
Date: 2013-07-21 (Sun, 21 Jul 2013)

Changed paths:
M t/t9801-git-p4-branch.sh

Log Message:
-----------
t9801: git-p4: check ignore files with client spec

This test confirms that a file can be ignored during git p4 sync if if is
excluded in P4 client specification.

Signed-off-by: Vitor Antunes <***@gmail.com>
Acked-by: Pete Wyckoff <***@padd.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 92f63d2b055fea3070108fe5015b8158e1c923db
https://github.com/msysgit/git/commit/92f63d2b055fea3070108fe5015b8158e1c923db
Author: Mark Levedahl <***@gmail.com>
Date: 2013-07-21 (Sun, 21 Jul 2013)

Changed paths:
M config.mak.uname

Log Message:
-----------
Cygwin 1.7 needs compat/regex

Cygwin v1.7 uses the regex library from newlib which does not pass git's
tests, so don't use it. This fixes failures in t4018 and t4034.

Continue to use the platform supplied regex library for earlier versions.

Signed-off-by: Mark Levedahl <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 103d530f775d513ff9ebc148a9b54a8677a01790
https://github.com/msysgit/git/commit/103d530f775d513ff9ebc148a9b54a8677a01790
Author: Mark Levedahl <***@gmail.com>
Date: 2013-07-21 (Sun, 21 Jul 2013)

Changed paths:
M config.mak.uname

Log Message:
-----------
Cygwin 1.7 has thread-safe pread

Per http://cygwin.com/ml/cygwin/2012-07/msg00331.html , cygwin 1.7
was modified to explicitly support git's use of pread, so make this
the default. Do not affect earlier cygwin versions.

Signed-off-by: Mark Levedahl <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: f593ef77792c36eeb1b92ed3661ed284502afdfb
https://github.com/msysgit/git/commit/f593ef77792c36eeb1b92ed3661ed284502afdfb
Author: Mark Levedahl <***@gmail.com>
Date: 2013-07-21 (Sun, 21 Jul 2013)

Changed paths:
M config.mak.uname

Log Message:
-----------
Cygwin 1.7 supports mmap

git has shipped for years with MMAP enabled in the stock distribution,
there are no reports of problems / failures on the list relating to
this. Leave the default as-is on v1.5 due to lack of knowlege of this
working on earlier Cygwin.

Signed-off-by: Mark Levedahl <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: c28facd216b501d41ca76f040d0ce7749075aba0
https://github.com/msysgit/git/commit/c28facd216b501d41ca76f040d0ce7749075aba0
Author: Mark Levedahl <***@gmail.com>
Date: 2013-07-21 (Sun, 21 Jul 2013)

Changed paths:
M config.mak.uname

Log Message:
-----------
cygwin: stop forcing core.filemode=false

We force core.filemode=false since c869753e (Force core.filemode to
false on Cygwin., 2006-12-30), even when the repository is on a
filesystem on which Cygwin can give us trustable filemodes, because
many native Windows applications the users use to edit files in the
working tree tend to (re)create files with executable bit randomly
set or reset. However, binary distribution of Git that is supplied
by the downstream project to its users has been built without this
consideration.

Drop NO_TRUSTABLE_FILEMODE from our default configuration so that
hand-compiled Git out of box will match theirs.

Signed-off-by: Mark Levedahl <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 82ec54dc8bbb653faa64638d74129e45aea3326b
https://github.com/msysgit/git/commit/82ec54dc8bbb653faa64638d74129e45aea3326b
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-21 (Sun, 21 Jul 2013)

Changed paths:
M diff.c
M t/t0020-crlf.sh

Log Message:
-----------
Merge branch 'jc/maint-diff-core-safecrlf' into maint

Avoid failing "git diff" when core.safecrlf is set to true, because
the user cannot tell where the breakage is in preparation for fixing
and committing.

* jc/maint-diff-core-safecrlf:
diff: demote core.safecrlf=true to core.safecrlf=warn


Commit: dbed5935940f49e3b400b744b43da95f57c5c6d6
https://github.com/msysgit/git/commit/dbed5935940f49e3b400b744b43da95f57c5c6d6
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-21 (Sun, 21 Jul 2013)

Changed paths:
M lockfile.c

Log Message:
-----------
Merge branch 'mh/maint-lockfile-overflow' into maint

* mh/maint-lockfile-overflow:
lockfile: fix buffer overflow in path handling


Commit: 8c091d918de73e4600a93088ee0f702224ba99c3
https://github.com/msysgit/git/commit/8c091d918de73e4600a93088ee0f702224ba99c3
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-21 (Sun, 21 Jul 2013)

Changed paths:
M Documentation/urls.txt

Log Message:
-----------
Merge branch 'ft/doc-git-transport' into maint

* ft/doc-git-transport:
documentation: add git:// transport security notice


Commit: 80f074396d2a5601cdbf643f9b0db09329070a3f
https://github.com/msysgit/git/commit/80f074396d2a5601cdbf643f9b0db09329070a3f
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-21 (Sun, 21 Jul 2013)

Changed paths:
M Documentation/git-log.txt
M Documentation/technical/api-builtin.txt
M Documentation/technical/api-parse-options.txt
M Documentation/user-manual.txt
M builtin/help.c
M builtin/notes.c
M builtin/replace.c
M transport.c
M transport.h

Log Message:
-----------
Merge branch 'ph/builtin-srcs-are-in-subdir-these-days' into maint

* ph/builtin-srcs-are-in-subdir-these-days:
fix "builtin-*" references to be "builtin/*"


Commit: 4f9f1f5d56e4b41cadeaaa8c89eb567ed9eb7279
https://github.com/msysgit/git/commit/4f9f1f5d56e4b41cadeaaa8c89eb567ed9eb7279
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-21 (Sun, 21 Jul 2013)

Changed paths:
M Documentation/git-merge.txt

Log Message:
-----------
Merge branch 'mm/merge-in-dirty-worktree-doc' into maint

* mm/merge-in-dirty-worktree-doc:
Documentation/git-merge.txt: weaken warning about uncommited changes


Commit: eac00c508df21f6675c07bbc559348eddd0fdd73
https://github.com/msysgit/git/commit/eac00c508df21f6675c07bbc559348eddd0fdd73
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-21 (Sun, 21 Jul 2013)

Changed paths:
M Documentation/git-diff.txt

Log Message:
-----------
Merge branch 'kb/diff-blob-blob-doc' into maint

* kb/diff-blob-blob-doc:
Documentation: Move "git diff <blob> <blob>"


Commit: b6538a0b4eee113d207961bacc1abb6ac5b2e661
https://github.com/msysgit/git/commit/b6538a0b4eee113d207961bacc1abb6ac5b2e661
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-21 (Sun, 21 Jul 2013)

Changed paths:
M Documentation/git-config.txt

Log Message:
-----------
Merge branch 'nk/config-local-doc' into maint

* nk/config-local-doc:
config: Add description of --local option


Commit: 25b3e4fffd88258c6150bf9b088506f438ccb100
https://github.com/msysgit/git/commit/25b3e4fffd88258c6150bf9b088506f438ccb100
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-21 (Sun, 21 Jul 2013)

Changed paths:
M GIT-VERSION-GEN

Log Message:
-----------
Merge branch 'dk/version-gen-gitdir' into maint

* dk/version-gen-gitdir:
GIT-VERSION-GEN: support non-standard $GIT_DIR path


Commit: 5607c74d29295b3d29f847909ab698985d66648d
https://github.com/msysgit/git/commit/5607c74d29295b3d29f847909ab698985d66648d
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-21 (Sun, 21 Jul 2013)

Changed paths:
M t/t5150-request-pull.sh

Log Message:
-----------
Merge branch 'dk/maint-t5150-dirname' into maint

* dk/maint-t5150-dirname:
tests: allow sha1's as part of the path


Commit: 281ff456fe94e043e3f65f224683b42b5667cd85
https://github.com/msysgit/git/commit/281ff456fe94e043e3f65f224683b42b5667cd85
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-21 (Sun, 21 Jul 2013)

Changed paths:
M Documentation/fetch-options.txt

Log Message:
-----------
Merge branch 'rr/maint-fetch-tag-doc-asterisks' into maint

* rr/maint-fetch-tag-doc-asterisks:
fetch-options.txt: prevent a wildcard refspec from getting misformatted


Commit: 31fe4057b17847a15d1fbe9f1a5521c942fa8ade
https://github.com/msysgit/git/commit/31fe4057b17847a15d1fbe9f1a5521c942fa8ade
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-21 (Sun, 21 Jul 2013)

Changed paths:
M Documentation/RelNotes/1.8.3.4.txt

Log Message:
-----------
Update draft release notes to 1.8.3.4

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


Commit: 805c5a578995db7594ad0751a683bc6422655c29
https://github.com/msysgit/git/commit/805c5a578995db7594ad0751a683bc6422655c29
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-21 (Sun, 21 Jul 2013)

Changed paths:
M Documentation/RelNotes/1.8.3.4.txt
M t/t9801-git-p4-branch.sh

Log Message:
-----------
Sync with maint

* maint:
Update draft release notes to 1.8.3.4
t9801: git-p4: check ignore files with client spec


Commit: efe6de6e4018f5d23bab68053bfd297e7f398425
https://github.com/msysgit/git/commit/efe6de6e4018f5d23bab68053bfd297e7f398425
Author: Ondřej Bílka <***@seznam.cz>
Date: 2013-07-22 (Mon, 22 Jul 2013)

Changed paths:
M Documentation/user-manual.txt
M builtin/apply.c
M t/t6021-merge-criss-cross.sh

Log Message:
-----------
update URL to the marc.info mail archive

The name marc.theaimsgroup.com is no longer active, and has
migrated to marc.info.

Signed-off-by: Ondřej Bílka <***@seznam.cz>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 117eea7eaaeb5ecb77d9b7cebdb40b4e85f37374
https://github.com/msysgit/git/commit/117eea7eaaeb5ecb77d9b7cebdb40b4e85f37374
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-22 (Mon, 22 Jul 2013)

Changed paths:
M Documentation/git.txt
M GIT-VERSION-GEN

Log Message:
-----------
Git 1.8.3.4

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


Commit: 06cbc13c6cb8867af1127ac52e005b3c36506320
https://github.com/msysgit/git/commit/06cbc13c6cb8867af1127ac52e005b3c36506320
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-22 (Mon, 22 Jul 2013)

Changed paths:
M t/t2202-add-addremove.sh

Log Message:
-----------
Merge branch 'jc/simple-add-must-be-a-no-op'

This detected a mismerge of one of "add-2.0" topics to the 'jch'
and 'pu' branches.

* jc/simple-add-must-be-a-no-op:
t2202: make sure "git add" (no args) stays a no-op


Commit: 6a5b9ce5e12f039b126b1c97be7ba1b63ace5149
https://github.com/msysgit/git/commit/6a5b9ce5e12f039b126b1c97be7ba1b63ace5149
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-22 (Mon, 22 Jul 2013)

Changed paths:
M builtin/add.c

Log Message:
-----------
Merge branch 'mm/color-auto-default'

A finishing touch to fix breakage to "add -e" caused by defaulting
ui.color to "auto".

* mm/color-auto-default:
git add -e: Explicitly specify that patch should have no color


Commit: 1d1934caf1c927cb12cd76aa6ced9eab51a3d435
https://github.com/msysgit/git/commit/1d1934caf1c927cb12cd76aa6ced9eab51a3d435
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-22 (Mon, 22 Jul 2013)

Changed paths:
M run-command.c
M wrapper.c

Log Message:
-----------
Merge branch 'tr/fd-gotcha-fixes'

Two places we did not check return value (expected to be a file
descriptor) correctly.

* tr/fd-gotcha-fixes:
run-command: dup_devnull(): guard against syscalls failing
git_mkstemps: correctly test return value of open()


Commit: fbf59cdb4f804aec3ddf5e30ef0012e98d61fbd6
https://github.com/msysgit/git/commit/fbf59cdb4f804aec3ddf5e30ef0012e98d61fbd6
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-22 (Mon, 22 Jul 2013)

Changed paths:
M mailmap.c
M t/t4203-mailmap.sh

Log Message:
-----------
Merge branch 'jc/mailmap-case-insensitivity'

The mailmap mechanism unnecessarily downcased the e-mail addresses
in the output, and also ignored the human name when it is a single
character name.

This now has become Eric Sunshine's series, even though it still is
under jc/ hierarchy.

* jc/mailmap-case-insensitivity:
mailmap: style fixes
mailmap: debug: avoid passing NULL to fprintf() '%s' conversion specification
mailmap: debug: eliminate -Wformat field precision type warning
mailmap: debug: fix malformed fprintf() format conversion specification
mailmap: debug: fix out-of-order fprintf() arguments
mailmap: do not downcase mailmap entries
t4203: demonstrate loss of uppercase characters in canonical email
mailmap: do not lose single-letter names
t4203: demonstrate loss of single-character name in mailmap entry


Commit: 8827a58cf0ac7bee4ac8d357236975ead9783df3
https://github.com/msysgit/git/commit/8827a58cf0ac7bee4ac8d357236975ead9783df3
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-22 (Mon, 22 Jul 2013)

Changed paths:
M git-request-pull.sh

Log Message:
-----------
Merge branch 'dw/request-pull-diag'

* dw/request-pull-diag:
request-pull: improve error message for invalid revision args


Commit: e2ecd252b5e3c90c211075ba9d1017379782708b
https://github.com/msysgit/git/commit/e2ecd252b5e3c90c211075ba9d1017379782708b
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-22 (Mon, 22 Jul 2013)

Changed paths:
M Documentation/diff-options.txt
M Documentation/git-log.txt
M Documentation/git-show.txt
M Documentation/rev-list-options.txt
M diff.c
M t/t4000-diff-format.sh

Log Message:
-----------
Merge branch 'mm/diff-no-patch-synonym-to-s'

"git show -s" was less discoverable than it should be.

* mm/diff-no-patch-synonym-to-s:
Documentation/git-log.txt: capitalize section names
Documentation: move description of -s, --no-patch to diff-options.txt
Documentation/git-show.txt: include common diff options, like git-log.txt
diff: allow --patch & cie to override -s/--no-patch
diff: allow --no-patch as synonym for -s
t4000-diff-format.sh: modernize style


Commit: 4ca8ae712c1bf73bf41247aed119a44acc01de03
https://github.com/msysgit/git/commit/4ca8ae712c1bf73bf41247aed119a44acc01de03
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-22 (Mon, 22 Jul 2013)

Changed paths:
M builtin/apply.c
M builtin/show-branch.c
M entry.c

Log Message:
-----------
Merge branch 'tr/do-not-call-submodules-subprojects'

* tr/do-not-call-submodules-subprojects:
show-branch: fix description of --date-order
apply, entry: speak of submodules instead of subprojects


Commit: 5701c3d701d3932d853ffb9f75ee8745fae21209
https://github.com/msysgit/git/commit/5701c3d701d3932d853ffb9f75ee8745fae21209
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-22 (Mon, 22 Jul 2013)

Changed paths:
M object.c

Log Message:
-----------
Merge branch 'sb/parse-object-buffer-eaten'

* sb/parse-object-buffer-eaten:
parse_object_buffer: correct freeing the buffer


Commit: cb29dfde484e459e4329281151b05ef1c5ad462c
https://github.com/msysgit/git/commit/cb29dfde484e459e4329281151b05ef1c5ad462c
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-22 (Mon, 22 Jul 2013)

Changed paths:
M cache.h
M daemon.c
M git.c
M setup.c
M shell.c

Log Message:
-----------
Merge branch 'tr/protect-low-3-fds'

When "git" is spawned in such a way that any of the low 3 file
descriptors is closed, our first open() may yield file descriptor 2,
and writing error message to it would screw things up in a big way.

* tr/protect-low-3-fds:
git: ensure 0/1/2 are open in main()
daemon/shell: refactor redirection of 0/1/2 from /dev/null


Commit: e9682cc028e4d360dcf1364691095accc75f4b74
https://github.com/msysgit/git/commit/e9682cc028e4d360dcf1364691095accc75f4b74
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-22 (Mon, 22 Jul 2013)

Changed paths:
M Documentation/blame-options.txt
M line-range.c
M t/annotate-tests.sh
M t/t8001-annotate.sh
M t/t8002-blame.sh

Log Message:
-----------
Merge branch 'es/blame-L-breakage'

The refactoring made for parsing "-L" option recently to support
"git log -L" seems to have broken "git blame -L X,-5" to show 5
lines leading to X.

* es/blame-L-breakage:
blame-options.txt: explain that -L <start> and <end> are optional
blame-options.txt: place each -L option variation on its own line
t8001/t8002 (blame): add blame -L :funcname tests
t8001/t8002 (blame): add blame -L tests
t8001/t8002 (blame): modernize style
line-range: fix "blame -L X,-N" regression


Commit: d0b3fa8fd9faf5d18d54e2beb04741fff88af358
https://github.com/msysgit/git/commit/d0b3fa8fd9faf5d18d54e2beb04741fff88af358
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-22 (Mon, 22 Jul 2013)

Changed paths:
M Documentation/git-show-ref.txt
M builtin/show-ref.c
A t/t1403-show-ref.sh

Log Message:
-----------
Merge branch 'db/show-ref-head'

The "--head" option to "git show-ref" was only to add "HEAD" to the
list of candidate refs to be filtered by the usual rules
(e.g. "--heads" that only show refs under refs/heads). Change the
meaning of the option to always show "HEAD" regardless of what
filtering will be applied to any other ref (this is a backward
incompatible change, so I may need to add an entry to the Release
Notes).

* db/show-ref-head:
show-ref: make --head always show the HEAD ref


Commit: e9f1a6c189c34a7ea98cbdb92acc677a72a5b4ea
https://github.com/msysgit/git/commit/e9f1a6c189c34a7ea98cbdb92acc677a72a5b4ea
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-22 (Mon, 22 Jul 2013)

Changed paths:
M advice.h
M argv-array.h
M builtin/revert.c
M exec_cmd.h
M git-compat-util.h
M run-command.h
M trace.c
M transport-helper.c
M utf8.h
M wt-status.h

Log Message:
-----------
Merge branch 'jk/gcc-function-attributes'

Use the function attributes extension to catch mistakes in use of
our own variadic functions that use NULL sentinel at the end
(i.e. like execl(3)) and format strings (i.e. like printf(3)).

* jk/gcc-function-attributes:
Add the LAST_ARG_MUST_BE_NULL macro
wt-status: use "format" function attribute for status_printf
use "sentinel" function attribute for variadic lists
add missing "format" function attributes


Commit: d3aeb31dc410a71ee41b87328f0d71996417294f
https://github.com/msysgit/git/commit/d3aeb31dc410a71ee41b87328f0d71996417294f
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-22 (Mon, 22 Jul 2013)

Changed paths:
M builtin/apply.c
M builtin/checkout.c
M builtin/clean.c
M builtin/commit.c
M builtin/grep.c
M builtin/ls-files.c
M builtin/merge-index.c
M builtin/merge.c
M builtin/rm.c
M builtin/update-index.c
M cache-tree.c
M cache-tree.h
M cache.h
M diff.c
M dir.c
M entry.c
M merge-recursive.c
M pathspec.c
M read-cache.c
M rerere.c
M resolve-undo.c
M revision.c
M sequencer.c
M sha1_name.c
M submodule.c
M test-dump-cache-tree.c
M tree.c
M unpack-trees.c
M wt-status.c

Log Message:
-----------
Merge branch 'nd/const-struct-cache-entry'

* nd/const-struct-cache-entry:
Convert "struct cache_entry *" to "const ..." wherever possible


Commit: a0c1aa216130680f890ded9e057bae24b0610d98
https://github.com/msysgit/git/commit/a0c1aa216130680f890ded9e057bae24b0610d98
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-22 (Mon, 22 Jul 2013)

Changed paths:
M t/t0008-ignores.sh

Log Message:
-----------
Merge branch 'jk/t0008-sigpipe-fix'

Fix for recent test breakage on 'master'.

* jk/t0008-sigpipe-fix:
t0008: avoid SIGPIPE race condition on fifo


Commit: 4c72ee838f1085a47a3c5144ce1088f1bca42f66
https://github.com/msysgit/git/commit/4c72ee838f1085a47a3c5144ce1088f1bca42f66
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-22 (Mon, 22 Jul 2013)

Changed paths:
M shallow.c

Log Message:
-----------
Merge branch 'mk/upload-pack-off-by-one-dead-code-removal'

* mk/upload-pack-off-by-one-dead-code-removal:
upload-pack: remove a piece of dead code


Commit: c714f9fd8addc752aaaf1f97bb2be311d9156def
https://github.com/msysgit/git/commit/c714f9fd8addc752aaaf1f97bb2be311d9156def
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-22 (Mon, 22 Jul 2013)

Changed paths:
M Documentation/git-config.txt
M builtin/config.c
M cache.h
M config.c
A t/t1307-config-blob.sh

Log Message:
-----------
Merge branch 'hv/config-from-blob'

Allow configuration data to be read from in-tree blob objects,
which would help working in a bare repository and submodule
updates.

* hv/config-from-blob:
do not die when error in config parsing of buf occurs
teach config --blob option to parse config from database
config: make parsing stack struct independent from actual data source
config: drop cf validity check in get_next_char()
config: factor out config file stack management


Commit: 988f98f61fc80021311c2d161084c03a55f7354d
https://github.com/msysgit/git/commit/988f98f61fc80021311c2d161084c03a55f7354d
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-22 (Mon, 22 Jul 2013)

Changed paths:
M Documentation/config.txt
M Documentation/git-clean.txt
M builtin/clean.c
M builtin/grep.c
M builtin/ls-files.c
M cache.h
M path.c
M quote.c
M quote.h
M setup.c
M t/t0060-path-utils.sh
A t/t7301-clean-interactive.sh
M test-path-utils.c
M wt-status.c

Log Message:
-----------
Merge branch 'jx/clean-interactive'

Add "interactive" mode to "git clean".

The early part to refactor relative path related helper functions
looked sensible.

* jx/clean-interactive:
test: run testcases with POSIX absolute paths on Windows
test: add t7301 for git-clean--interactive
git-clean: add documentation for interactive git-clean
git-clean: add ask each interactive action
git-clean: add select by numbers interactive action
git-clean: add filter by pattern interactive action
git-clean: use a git-add-interactive compatible UI
git-clean: add colors to interactive git-clean
git-clean: show items of del_list in columns
git-clean: add support for -i/--interactive
git-clean: refactor git-clean into two phases
write_name{_quoted_relative,}(): remove redundant parameters
quote_path_relative(): remove redundant parameter
quote.c: substitute path_relative with relative_path
path.c: refactor relative_path(), not only strip prefix
test: add test cases for relative_path


Commit: e683889b75a32b8c2bf11c8fa0cf851087bc5415
https://github.com/msysgit/git/commit/e683889b75a32b8c2bf11c8fa0cf851087bc5415
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-22 (Mon, 22 Jul 2013)

Changed paths:
M .gitignore
A Documentation/git-check-mailmap.txt
M Makefile
M builtin.h
A builtin/check-mailmap.c
M command-list.txt
M contrib/completion/git-completion.bash
M git.c
M t/t4203-mailmap.sh

Log Message:
-----------
Merge branch 'es/check-mailmap'

A new command to allow scripts to query the mailmap information.

* es/check-mailmap:
t4203: test check-mailmap command invocation
builtin: add git-check-mailmap command


Commit: 07b83b5d98a8b7230f3ebafeb4ecf2916c011db9
https://github.com/msysgit/git/commit/07b83b5d98a8b7230f3ebafeb4ecf2916c011db9
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-22 (Mon, 22 Jul 2013)

Changed paths:
M Documentation/config.txt
M Documentation/git-send-email.txt
M git-send-email.perl

Log Message:
-----------
Merge branch 'rr/send-email-ssl-verify'

Newer Net::SMTP::SSL module does not want the user programs to use
the default behaviour to let server certificate go without
verification, so by default enable the verification with a
mechanism to turn it off if needed.

* rr/send-email-ssl-verify:
send-email: be explicit with SSL certificate verification


Commit: 3daafe9403c65b39f133f3aa4a6dbbcd372e9db1
https://github.com/msysgit/git/commit/3daafe9403c65b39f133f3aa4a6dbbcd372e9db1
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-22 (Mon, 22 Jul 2013)

Changed paths:
M builtin/describe.c
M builtin/name-rev.c
M t/t6120-describe.sh

Log Message:
-----------
Merge branch 'jc/name-rev-exact-ref'

Corrects the longstanding sloppiness in the implementation of
name-rev that conflated "we take commit-ish" and "differences
between tags and commits do not matter".

* jc/name-rev-exact-ref:
describe: fix --contains when a tag is given as input
name-rev: differentiate between tags and commits they point at
describe: use argv-array
name-rev: allow converting the exact object name at the tip of a ref
name-ref: factor out name shortening logic from name_ref()


Commit: 9c559d5b86389de2449cd3cd5d53afa14936a6df
https://github.com/msysgit/git/commit/9c559d5b86389de2449cd3cd5d53afa14936a6df
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-22 (Mon, 22 Jul 2013)

Changed paths:
M Documentation/RelNotes/1.8.4.txt

Log Message:
-----------
Update draft release notes to 1.8.4

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


Commit: 0bde8c0c1e53e2b2001f4ced58d3e66865758cea
https://github.com/msysgit/git/commit/0bde8c0c1e53e2b2001f4ced58d3e66865758cea
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-22 (Mon, 22 Jul 2013)

Changed paths:
M Documentation/git.txt
M Documentation/user-manual.txt
M builtin/apply.c
M t/t6021-merge-criss-cross.sh

Log Message:
-----------
Sync with Git 1.8.3.4


Commit: 1114fc023772001bb7053789461c69b0c3c994e3
https://github.com/msysgit/git/commit/1114fc023772001bb7053789461c69b0c3c994e3
Author: Ondřej Bílka <***@seznam.cz>
Date: 2013-07-22 (Mon, 22 Jul 2013)

Changed paths:
M Documentation/RelNotes/1.7.10.1.txt
M Documentation/RelNotes/1.7.5.4.txt
M Documentation/RelNotes/1.7.8.2.txt
M Documentation/RelNotes/1.7.8.txt
M Documentation/RelNotes/1.8.2.1.txt
M Documentation/RelNotes/1.8.2.2.txt

Log Message:
-----------
typofix: release notes

Signed-off-by: Ondřej Bílka <***@seznam.cz>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 17b83d71d52a5eb6a621be22daa624414d3ee514
https://github.com/msysgit/git/commit/17b83d71d52a5eb6a621be22daa624414d3ee514
Author: Ondřej Bílka <***@seznam.cz>
Date: 2013-07-22 (Mon, 22 Jul 2013)

Changed paths:
M Documentation/git-bisect-lk2009.txt
M Documentation/git-rev-parse.txt
M Documentation/gitweb.txt
M Documentation/howto/revert-branch-rebase.txt
M Documentation/rev-list-options.txt
M Documentation/technical/index-format.txt
M Documentation/technical/racy-git.txt

Log Message:
-----------
typofix: documentation

Signed-off-by: Ondřej Bílka <***@seznam.cz>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 749f763dbbe4dbcc4082f02bf98bfc1a09427c6f
https://github.com/msysgit/git/commit/749f763dbbe4dbcc4082f02bf98bfc1a09427c6f
Author: Ondřej Bílka <***@seznam.cz>
Date: 2013-07-22 (Mon, 22 Jul 2013)

Changed paths:
M compat/nedmalloc/Readme.txt
M compat/nedmalloc/malloc.c.h
M compat/regex/regcomp.c
M compat/regex/regexec.c
M convert.c
M convert.h
M diff.c
M kwset.c
M sha1_name.c

Log Message:
-----------
typofix: in-code comments

Signed-off-by: Ondřej Bílka <***@seznam.cz>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 1d25e7746d0a795afc16b4dac2da697ae660d987
https://github.com/msysgit/git/commit/1d25e7746d0a795afc16b4dac2da697ae660d987
Author: Michael Haggerty <***@alum.mit.edu>
Date: 2013-07-22 (Mon, 22 Jul 2013)

Changed paths:
M contrib/hooks/post-receive-email

Log Message:
-----------
post-receive-email: deprecate script in favor of git-multimail

Add a notice to the top of post-receive-email explaining that the
script is no longer under active development and pointing the user to
git-multimail.

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


Commit: 6d2d43dc9d98ffc385066fbb46c587b6426bf0ac
https://github.com/msysgit/git/commit/6d2d43dc9d98ffc385066fbb46c587b6426bf0ac
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-23 (Tue, 23 Jul 2013)

Changed paths:
M t/t7600-merge.sh

Log Message:
-----------
t7600: fix typo in test title

Spotted by Ram, confirmed by Miklos.

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


Commit: 9ae54a1ddebbbc8f3f12116f3ad9fd6dcf74bf02
https://github.com/msysgit/git/commit/9ae54a1ddebbbc8f3f12116f3ad9fd6dcf74bf02
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-23 (Tue, 23 Jul 2013)

Changed paths:
M t/t7600-merge.sh

Log Message:
-----------
Merge branch 'mv/merge-ff-tristate'

* mv/merge-ff-tristate:
t7600: fix typo in test title


Commit: 6a907786af835ac15962be53f1492f23e044f479
https://github.com/msysgit/git/commit/6a907786af835ac15962be53f1492f23e044f479
Author: Stefan Beller <***@googlemail.com>
Date: 2013-07-23 (Tue, 23 Jul 2013)

Changed paths:
M streaming.c

Log Message:
-----------
open_istream: remove unneeded check for null pointer

'st' is allocated via xmalloc a few lines before and passed to
the stream opening functions.
The xmalloc function is written in a way that either 'st' is allocated
valid memory or xmalloc already dies.
The function calls to open_istream_* do not change 'st', as the pointer is
passed by reference and not a pointer of a pointer.

Hence 'st' cannot be null at that part of the code.

Signed-off-by: Stefan Beller <***@googlemail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: b6679e768f39f718b7f2983d1958f5fb1121f356
https://github.com/msysgit/git/commit/b6679e768f39f718b7f2983d1958f5fb1121f356
Author: Eric Sunshine <***@sunshineco.com>
Date: 2013-07-23 (Tue, 23 Jul 2013)

Changed paths:
M line-log.c

Log Message:
-----------
range-set: fix sort_and_merge_range_set() corner case bug

When handed an empty range_set (range_set.nr == 0),
sort_and_merge_range_set() incorrectly sets range_set.nr to 1 at exit.
Subsequent range_set functions then access the bogus range at element
zero and crash or throw an assertion failure. Fix this bug.

Signed-off-by: Eric Sunshine <***@sunshineco.com>
Acked-by: Thomas Rast <***@inf.ethz.ch>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 58960978462e66c3dbc53b274988e7f27e7c74e2
https://github.com/msysgit/git/commit/58960978462e66c3dbc53b274988e7f27e7c74e2
Author: Eric Sunshine <***@sunshineco.com>
Date: 2013-07-23 (Tue, 23 Jul 2013)

Changed paths:
M t/t4211-line-log.sh

Log Message:
-----------
t4211: demonstrate empty -L range crash

Signed-off-by: Eric Sunshine <***@sunshineco.com>
Acked-by: Thomas Rast <***@inf.ethz.ch>
Helped-by: SZEDER Gábor <***@ira.uka.de>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 99780b0a4ab22c903516601bb3634e6477d7f1c1
https://github.com/msysgit/git/commit/99780b0a4ab22c903516601bb3634e6477d7f1c1
Author: Eric Sunshine <***@sunshineco.com>
Date: 2013-07-23 (Tue, 23 Jul 2013)

Changed paths:
M t/t4211-line-log.sh

Log Message:
-----------
t4211: demonstrate crash when first -L encountered is empty range

Signed-off-by: Eric Sunshine <***@sunshineco.com>
Acked-by: Thomas Rast <***@inf.ethz.ch>
Helped-by: SZEDER Gábor <***@ira.uka.de>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: f8395edc6f5c59a92adcf42ea20a01872ec22700
https://github.com/msysgit/git/commit/f8395edc6f5c59a92adcf42ea20a01872ec22700
Author: Eric Sunshine <***@sunshineco.com>
Date: 2013-07-23 (Tue, 23 Jul 2013)

Changed paths:
M line-log.c
M t/t4211-line-log.sh

Log Message:
-----------
range-set: satisfy non-empty ranges invariant

range-set invariants are: ranges must be (1) non-empty, (2) disjoint,
(3) sorted in ascending order.

During processing, various range-set utility functions break the
invariants (for instance, by adding empty ranges), with the
expectation that a finalizing sort_and_merge_range_set() will restore
sanity.

sort_and_merge_range_set(), however, neglects to fold out empty
ranges, thus it fails to satisfy the non-empty constraint. Subsequent
range-set functions crash or throw an assertion failure upon
encountering such an anomaly. Rectify the situation by having
sort_and_merge_range_set() fold out empty ranges.

Signed-off-by: Eric Sunshine <***@sunshineco.com>
Acked-by: Thomas Rast <***@inf.ethz.ch>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: df6308eb82bc9d2074b35387583548b8b153433d
https://github.com/msysgit/git/commit/df6308eb82bc9d2074b35387583548b8b153433d
Author: Eric Sunshine <***@sunshineco.com>
Date: 2013-07-23 (Tue, 23 Jul 2013)

Changed paths:
M line-log.c
M t/t4211-line-log.sh

Log Message:
-----------
line-log: fix "log -LN" crash when N is last line of file

range-set invariants are: ranges must be (1) non-empty, (2) disjoint,
(3) sorted in ascending order.

line_log_data_insert() breaks the non-empty invariant under the
following conditions: the incoming range is empty and the pathname
attached to the range has not yet been encountered. In this case,
line_log_data_insert() assigns the empty range to a new line_log_data
record without taking any action to ensure that the empty range is
eventually folded out. Subsequent range-set functions crash or throw an
assertion failure upon encountering such an anomaly. Fix this bug.

Signed-off-by: Eric Sunshine <***@sunshineco.com>
Acked-by: Thomas Rast <***@inf.ethz.ch>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: efc5e5ef8e467ebbdd4f93c23f2269b907fcdc15
https://github.com/msysgit/git/commit/efc5e5ef8e467ebbdd4f93c23f2269b907fcdc15
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-23 (Tue, 23 Jul 2013)

Changed paths:
M line-log.c
M t/t4211-line-log.sh
M t/t4211/expect.multiple-superset

Log Message:
-----------
Merge branch 'es/line-log-further-fixes' into tr/line-log

* es/line-log-further-fixes:
line-log: fix "log -LN" crash when N is last line of file
range-set: satisfy non-empty ranges invariant
t4211: demonstrate crash when first -L encountered is empty range
t4211: demonstrate empty -L range crash
range-set: fix sort_and_merge_range_set() corner case bug
range_set: fix coalescing bug when range is a subset of another
t4211: fix broken test when one -L range is subset of another


Commit: 1611eed6e5071acd24b97933ac0d845db87ec7df
https://github.com/msysgit/git/commit/1611eed6e5071acd24b97933ac0d845db87ec7df
Author: Maurício C Antunes <***@gmail.com>
Date: 2013-07-23 (Tue, 23 Jul 2013)

Changed paths:
M contrib/hg-to-git/hg-to-git.py

Log Message:
-----------
hg-to-git: --allow-empty-message in git commit

Do not fail to import mercurial commits with empty commit messages.

Signed-off-by: Maurício C Antunes <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: d3a486c47d920efc183645766d762fd697c42088
https://github.com/msysgit/git/commit/d3a486c47d920efc183645766d762fd697c42088
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-24 (Wed, 24 Jul 2013)

Changed paths:
M t/t4211-line-log.sh

Log Message:
-----------
t4211: fix incorrect rebase at f8395edc (range-set: satisfy non-empty ranges invariant)

Wnen I rewrote "cat b.c | wc -l" into "wc -l <b.c" to squash in a
suggestion on the list to this series, I screwed up subsequent
rebase. Fix it up.

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


Commit: e78095c3d05712b9479211bcc7faa1d8e9bf2723
https://github.com/msysgit/git/commit/e78095c3d05712b9479211bcc7faa1d8e9bf2723
Author: Brandon Casey <***@gmail.com>
Date: 2013-07-24 (Wed, 24 Jul 2013)

Changed paths:
M contrib/completion/git-completion.bash

Log Message:
-----------
git-completion.bash: replace zsh notation that breaks bash 3.X

50c5885e (git-completion.bash: replace zsh notation that breaks bash
3.X, 2013-01-18) fixed a zsh-ism introduced earlier to append to an
array, which older versions of bash (3.0) did not grok. This was
again broken by 734b2f05 (completion: synchronize zsh wrapper,
2013-05-08).

Cherry-pick the fix again to let those with older bash use the
completion script.

Signed-off-by: Brandon Casey <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 9a621ad085c646a0146cc073fcc8dc49b89f574a
https://github.com/msysgit/git/commit/9a621ad085c646a0146cc073fcc8dc49b89f574a
Author: Jeff King <***@peff.net>
Date: 2013-07-24 (Wed, 24 Jul 2013)

Changed paths:
M Documentation/technical/protocol-capabilities.txt

Log Message:
-----------
docs: fix 'report-status' protocol capability thinko

The report-status capability is understood by receive-pack,
not upload-pack.

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


Commit: 9354b9a4f05f3a5e6dd63438befb54dbe69295f8
https://github.com/msysgit/git/commit/9354b9a4f05f3a5e6dd63438befb54dbe69295f8
Author: Jeff King <***@peff.net>
Date: 2013-07-24 (Wed, 24 Jul 2013)

Changed paths:
M Documentation/technical/protocol-capabilities.txt

Log Message:
-----------
docs: note that receive-pack knows side-band-64k capability

The protocol-capabilities documentation notes that any
capabilities not explicitly mentioned for receive-pack work
only for upload-pack.

Receive-pack has advertised and understood side-band-64k
since 38a81b4 (receive-pack: Wrap status reports inside
side-band-64k, 2010-02-05), but we do not mention it
explicitly. Let's do so.

Note that receive-pack does not understand side-band, which
was obsolete by that point.

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


Commit: af608260f6e0970a59b66cc819d35b8faa15ce13
https://github.com/msysgit/git/commit/af608260f6e0970a59b66cc819d35b8faa15ce13
Author: Jeff King <***@peff.net>
Date: 2013-07-24 (Wed, 24 Jul 2013)

Changed paths:
M Documentation/technical/protocol-capabilities.txt

Log Message:
-----------
document 'agent' protocol capability

This was added in ff5effd (include agent identifier in
capability string, 2012-08-03), but neither the syntax nor
the semantics were ever documented outside of the commit
message.

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


Commit: 69fb96037fed30e7206f5ebab3d17f7989166120
https://github.com/msysgit/git/commit/69fb96037fed30e7206f5ebab3d17f7989166120
Author: Jeff King <***@peff.net>
Date: 2013-07-24 (Wed, 24 Jul 2013)

Changed paths:
M Documentation/technical/protocol-capabilities.txt

Log Message:
-----------
document 'quiet' receive-pack capability

This was added in c207e34 (fix push --quiet: add 'quiet'
capability to receive-pack, 2012-01-08) but never
documented.

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


Commit: 78910462ce3aff76ebcfe3a1e6d559c99e14d1fe
https://github.com/msysgit/git/commit/78910462ce3aff76ebcfe3a1e6d559c99e14d1fe
Author: Stefan Beller <***@googlemail.com>
Date: 2013-07-24 (Wed, 24 Jul 2013)

Changed paths:
M .mailmap

Log Message:
-----------
.mailmap: combine more (email, name) to individual persons

I got more responses from people regarding the .mailmap file.
All added persons gave permission to add them to the .mailmap file.

Signed-off-by: Stefan Beller <***@googlemail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 309422e033bc2e25a3a80d1336993a75b7daaf33
https://github.com/msysgit/git/commit/309422e033bc2e25a3a80d1336993a75b7daaf33
Author: Jiang Xin <***@gmail.com>
Date: 2013-07-24 (Wed, 24 Jul 2013)

Changed paths:
M Documentation/git-clean.txt

Log Message:
-----------
Documentation/git-clean: fix description for range

The descriptions of "select by numbers" section for interactive
git-clean are borrowed from git-add, and one sentence should be
replaced.

Signed-off-by: Jiang Xin <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 60838613054f43d63086b0f4a7596baaee9e20c5
https://github.com/msysgit/git/commit/60838613054f43d63086b0f4a7596baaee9e20c5
Author: Jiang Xin <***@gmail.com>
Date: 2013-07-24 (Wed, 24 Jul 2013)

Changed paths:
M builtin/clean.c
M t/t7301-clean-interactive.sh

Log Message:
-----------
git-clean: implement partial matching for selection

Document for interactive git-clean says: "You also could say `c` or
`clean` above as long as the choice is unique". But it's not true,
because only hotkey `c` and full match (`clean`) could work.

Implement partial matching via find_unique function to make the
document right.

Signed-off-by: Jiang Xin <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 1762224ddb599ab14ca26cedafec39dee9b92fe5
https://github.com/msysgit/git/commit/1762224ddb599ab14ca26cedafec39dee9b92fe5
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-24 (Wed, 24 Jul 2013)

Changed paths:
M line-log.c
M t/t4211-line-log.sh

Log Message:
-----------
Merge branch 'tr/line-log'

Fix "log -L" command line parsing bugs.

* tr/line-log:
t4211: fix incorrect rebase at f8395edc (range-set: satisfy non-empty ranges invariant)
line-log: fix "log -LN" crash when N is last line of file
range-set: satisfy non-empty ranges invariant
t4211: demonstrate crash when first -L encountered is empty range
t4211: demonstrate empty -L range crash
range-set: fix sort_and_merge_range_set() corner case bug


Commit: 0c544a22f9297b305949bd77f15183aa8fffd8fc
https://github.com/msysgit/git/commit/0c544a22f9297b305949bd77f15183aa8fffd8fc
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-24 (Wed, 24 Jul 2013)

Changed paths:
M builtin/commit.c
M daemon.c
M diff.c

Log Message:
-----------
Merge branch 'sb/misc-fixes'

Assorted code cleanups and a minor fix.

* sb/misc-fixes:
diff.c: Do not initialize a variable, which gets reassigned anyway.
commit: Fix a memory leak in determine_author_info
daemon.c:handle: Remove unneeded check for null pointer.


Commit: 29143fc4e3e5236aa57a1f1ef63f775491159782
https://github.com/msysgit/git/commit/29143fc4e3e5236aa57a1f1ef63f775491159782
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-24 (Wed, 24 Jul 2013)

Changed paths:
M refs.c

Log Message:
-----------
Merge branch 'mh/ref-races-optim-invalidate-cached'

* mh/ref-races-optim-invalidate-cached:
refs: do not invalidate the packed-refs cache unnecessarily


Commit: dfb78f0388260d739cee87bc8054573ee5e6156b
https://github.com/msysgit/git/commit/dfb78f0388260d739cee87bc8054573ee5e6156b
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-24 (Wed, 24 Jul 2013)

Changed paths:
M templates/hooks--pre-commit.sample

Log Message:
-----------
Merge branch 'rh/template-updates'

* rh/template-updates:
templates: spell ASCII in uppercase in pre-commit hook
templates: Reformat pre-commit hook's message
templates: Use heredoc in pre-commit hook


Commit: 677f32c79f30cafc4a3270118d5cb3736d44be26
https://github.com/msysgit/git/commit/677f32c79f30cafc4a3270118d5cb3736d44be26
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-24 (Wed, 24 Jul 2013)

Changed paths:
M Documentation/git-pack-refs.txt
M Documentation/git-prune.txt

Log Message:
-----------
Merge branch 'jm/doc-ref-prune'

* jm/doc-ref-prune:
Documentation: fix git-prune example usage
Documentation: remove --prune from pack-refs examples


Commit: 2bf3501150145d1f05678c20ab8e8d66f849851f
https://github.com/msysgit/git/commit/2bf3501150145d1f05678c20ab8e8d66f849851f
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-24 (Wed, 24 Jul 2013)

Changed paths:
M t/t3032-merge-recursive-options.sh
M t/t5560-http-backend-noserver.sh
M t/test-lib.sh

Log Message:
-----------
Merge branch 'ml/avoid-using-grep-on-crlf-files'

On systems that understand a CRLF as a line ending, tests in this
script that worked on files with CRLF line endings using "grep" to
extract matching lines may lose the CR at the end of lines that
match, causing the actual output not to match the expected output.

* ml/avoid-using-grep-on-crlf-files:
test-lib.sh - define and use GREP_STRIPS_CR


Commit: 356df9bd8df58eb759fedaee8a8d1a7dc0872f8f
https://github.com/msysgit/git/commit/356df9bd8df58eb759fedaee8a8d1a7dc0872f8f
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-24 (Wed, 24 Jul 2013)

Changed paths:
M builtin/cat-file.c
M cache.h
M environment.c
M sha1_file.c
M sha1_name.c
M streaming.c

Log Message:
-----------
Merge branch 'jk/cat-file-batch-optim'

If somebody wants to only know on-disk footprint of an object
without having to know its type or payload size, we can bypass a
lot of code to cheaply learn it.

* jk/cat-file-batch-optim:
Fix some sparse warnings
sha1_object_info_extended: pass object_info to helpers
sha1_object_info_extended: make type calculation optional
packed_object_info: make type lookup optional
packed_object_info: hoist delta type resolution to helper
sha1_loose_object_info: make type lookup optional
sha1_object_info_extended: rename "status" to "type"
cat-file: disable object/refname ambiguity check for batch mode


Commit: cb1824657bd0b6d9b916a0394cc67a6c18a27226
https://github.com/msysgit/git/commit/cb1824657bd0b6d9b916a0394cc67a6c18a27226
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-24 (Wed, 24 Jul 2013)

Changed paths:
M tree-walk.c

Log Message:
-----------
Merge branch 'sb/traverse-trees-bitmask-variable-name'

* sb/traverse-trees-bitmask-variable-name:
traverse_trees(): clarify return value of the callback


Commit: fc5894bc720596964f65f2f645752d4740dbb731
https://github.com/msysgit/git/commit/fc5894bc720596964f65f2f645752d4740dbb731
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-24 (Wed, 24 Jul 2013)

Changed paths:
M compat/unsetenv.c

Log Message:
-----------
Merge branch 'rj/sparse'

* rj/sparse:
Revert "compat/unsetenv.c: Fix a sparse warning"


Commit: f01723aaa1dc6ab676073d27b8d471e29abae208
https://github.com/msysgit/git/commit/f01723aaa1dc6ab676073d27b8d471e29abae208
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-24 (Wed, 24 Jul 2013)

Changed paths:
M config.mak.uname

Log Message:
-----------
Merge branch 'ml/cygwin-updates'

The tip one does _not_ revert c869753e (Force core.filemode to
false on Cygwin., 2006-12-30) on purpose, so that people can
still retain the old behaviour if they wanted to.

* ml/cygwin-updates:
cygwin: stop forcing core.filemode=false
Cygwin 1.7 supports mmap
Cygwin 1.7 has thread-safe pread
Cygwin 1.7 needs compat/regex


Commit: 4274cdf44a6f4929cdcec68b788d9a6991795ff4
https://github.com/msysgit/git/commit/4274cdf44a6f4929cdcec68b788d9a6991795ff4
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-24 (Wed, 24 Jul 2013)

Changed paths:
A contrib/contacts/git-contacts
A contrib/contacts/git-contacts.txt

Log Message:
-----------
Merge branch 'es/contacts'

A helper to read from a set of format-patch output files or a range
of commits and find those who may have insights to the code that
the changes touch by running a series of "git blame" commands.

* es/contacts:
contrib: contacts: add documentation
contrib: contacts: add mailmap support
contrib: contacts: interpret committish akin to format-patch
contrib: contacts: add ability to parse from committish
contrib: add git-contacts helper


Commit: 0def7126fda12600017a1d8cd598ee0516cf60a2
https://github.com/msysgit/git/commit/0def7126fda12600017a1d8cd598ee0516cf60a2
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-24 (Wed, 24 Jul 2013)

Changed paths:
M Documentation/RelNotes/1.7.10.1.txt
M Documentation/RelNotes/1.7.5.4.txt
M Documentation/RelNotes/1.7.8.2.txt
M Documentation/RelNotes/1.7.8.txt
M Documentation/RelNotes/1.8.2.1.txt
M Documentation/RelNotes/1.8.2.2.txt
M Documentation/git-bisect-lk2009.txt
M Documentation/git-rev-parse.txt
M Documentation/gitweb.txt
M Documentation/howto/revert-branch-rebase.txt
M Documentation/rev-list-options.txt
M Documentation/technical/index-format.txt
M Documentation/technical/racy-git.txt
M compat/nedmalloc/Readme.txt
M compat/nedmalloc/malloc.c.h
M compat/regex/regcomp.c
M compat/regex/regexec.c
M convert.c
M convert.h
M diff.c
M kwset.c
M sha1_name.c

Log Message:
-----------
Merge branch 'ob/typofixes'

* ob/typofixes:
typofix: in-code comments
typofix: documentation
typofix: release notes


Commit: 9e8a901e6b9130ccec149c987e15e55b017a7b29
https://github.com/msysgit/git/commit/9e8a901e6b9130ccec149c987e15e55b017a7b29
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-24 (Wed, 24 Jul 2013)

Changed paths:
A contrib/hooks/multimail/README
A contrib/hooks/multimail/README.Git
A contrib/hooks/multimail/README.migrate-from-post-receive-email
A contrib/hooks/multimail/git_multimail.py
A contrib/hooks/multimail/migrate-mailhook-config
A contrib/hooks/multimail/post-receive
M contrib/hooks/post-receive-email

Log Message:
-----------
Merge branch 'mh/multimail'

An enhanced "post-receive" hook to send e-mail messages.

* mh/multimail:
post-receive-email: deprecate script in favor of git-multimail
git-multimail: an improved replacement for post-receive-email


Commit: c490a6079021a3343ca5b042b37258858fdefbfc
https://github.com/msysgit/git/commit/c490a6079021a3343ca5b042b37258858fdefbfc
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-24 (Wed, 24 Jul 2013)

Changed paths:
M Documentation/RelNotes/1.8.4.txt
M GIT-VERSION-GEN

Log Message:
-----------
Git 1.8.4-rc0

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


Commit: 8f6a3e5d71fa1800c3f330bab2b6b6399ec7aea7
https://github.com/msysgit/git/commit/8f6a3e5d71fa1800c3f330bab2b6b6399ec7aea7
Author: Jeff King <***@peff.net>
Date: 2013-07-25 (Thu, 25 Jul 2013)

Changed paths:
M commit.h

Log Message:
-----------
commit.h: drop redundant comment

We mention twice that the from_ident field of struct
pretty_print_context is internal.

The first comment was added by 10f2fbf, which prepares the
struct for internal fields, and then the second by a908047,
which actually adds such a field. This was a mistake made
when re-rolling the series on the list; the comment should
have been removed from the latter commit.

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


Commit: 658ff473cf35217253aa956508ff0e42993711ad
https://github.com/msysgit/git/commit/658ff473cf35217253aa956508ff0e42993711ad
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-25 (Thu, 25 Jul 2013)

Changed paths:
M builtin/rm.c

Log Message:
-----------
builtin/rm.c: consolidate error reporting for removing submodules

We have two (not identical) copies of error reporting when
attempting to remove submodules that have their repositories
embedded within them. Add a helper function so that we do not have
to repeat similar error messages with subtly different wording
without a good reason.

Noticed by Jiang Xin.

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


Commit: 28b3cffcecb0ad70b4b77eb6edfa89d027a5ab9c
https://github.com/msysgit/git/commit/28b3cffcecb0ad70b4b77eb6edfa89d027a5ab9c
Author: Jiang Xin <***@gmail.com>
Date: 2013-07-25 (Thu, 25 Jul 2013)

Changed paths:
M po/git.pot

Log Message:
-----------
l10n: git.pot: v1.8.4 round 1 (99 new, 46 removed)

Generate po/git.pot from v1.8.4-rc0 for git v1.8.4 l10n round 1.

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


Commit: 4acbe91a82fa89d2d6f8839e891928e790ed867f
https://github.com/msysgit/git/commit/4acbe91a82fa89d2d6f8839e891928e790ed867f
Author: Nguyễn Thái Ngọc Duy <***@gmail.com>
Date: 2013-07-26 (Fri, 26 Jul 2013)

Changed paths:
M Documentation/technical/protocol-capabilities.txt

Log Message:
-----------
document 'allow-tip-sha1-in-want' capability

See 390eb36 (upload-pack: optionally allow fetching from the tips of
hidden refs - 2013-01-28) for more information.

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


Commit: 5ff0c0e8752f8613ff1143fe909b1797ad338a83
https://github.com/msysgit/git/commit/5ff0c0e8752f8613ff1143fe909b1797ad338a83
Author: Ramkumar Ramachandra <***@gmail.com>
Date: 2013-07-26 (Fri, 26 Jul 2013)

Changed paths:
M Documentation/git-config.txt

Log Message:
-----------
config doc: quote paths, fixing tilde-interpretation

The --global section of git-config(1) currently reads like:

For writing options: write to global /.gitconfig file rather than the
^
start tilde

repository .git/config, write to $XDG_CONFIG_HOME/git/config file if
this file exists and the/.gitconfig file doesn’t.
^
end tilde

Instead of tilde (~) being interpreted literally, asciidoc subscripts
the text between the two tildes. To fix this problem, use backticks (`)
to quote all the paths in the file uniformly, just like config.txt does.

Signed-off-by: Ramkumar Ramachandra <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: e06dc12a835a662797a291b7455196f2bd11efc8
https://github.com/msysgit/git/commit/e06dc12a835a662797a291b7455196f2bd11efc8
Author: Tran Ngoc Quan <***@gmail.com>
Date: 2013-07-26 (Fri, 26 Jul 2013)

Changed paths:
M po/vi.po

Log Message:
-----------
l10n: vi.po (2133t)

Signed-off-by: Tran Ngoc Quan <***@gmail.com>


Commit: 29d55538b78fa8d916b99aef9a4b1e376df2dac0
https://github.com/msysgit/git/commit/29d55538b78fa8d916b99aef9a4b1e376df2dac0
Author: Daniele Segato <***@gmail.com>
Date: 2013-07-29 (Mon, 29 Jul 2013)

Changed paths:
M Documentation/git-tag.txt

Log Message:
-----------
docs/git-tag: explain lightweight versus annotated tags

Stress the difference between the two with a suggestion on
when the user should use one in place of the other.

Signed-off-by: Daniele Segato <***@gmail.com>
Signed-off-by: Jeff King <***@peff.net>
Reviewed-by: Jonathan Nieder <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: c17592a7a2420a61c4c407f4cf635f196f1254f3
https://github.com/msysgit/git/commit/c17592a7a2420a61c4c407f4cf635f196f1254f3
Author: Jeff King <***@peff.net>
Date: 2013-07-29 (Mon, 29 Jul 2013)

Changed paths:
M builtin/commit.c

Log Message:
-----------
commit: tweak empty cherry pick advice for sequencer

When we refuse to make an empty commit, we check whether we
are in a cherry-pick in order to give better advice on how
to proceed. We instruct the user to repeat the commit with
"--allow-empty" to force the commit, or to use "git reset"
to skip it and abort the cherry-pick.

In the case of a single cherry-pick, the distinction between
skipping and aborting is not important, as there is no more
work to be done afterwards. When we are using the sequencer
to cherry pick a series of commits, though, the instruction
is confusing: does it skip this commit, or does it abort the
rest of the cherry-pick?

It does skip, after which the user can continue the
cherry-pick. This is the right thing to be advising the user
to do, but let's make it more clear what will happen, both
by using the word "skip", and by mentioning that the rest of
the sequence can be continued via "cherry-pick --continue"
(whether we skip or take the commit).

Noticed-by: Ramkumar Ramachandra <***@gmail.com>
Helped-by: Jonathan Nieder <***@gmail.com>
Signed-off-by: Jeff King <***@peff.net>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: d7a1d629c3be95f8c2ddd1973b9dae9dd893048f
https://github.com/msysgit/git/commit/d7a1d629c3be95f8c2ddd1973b9dae9dd893048f
Author: Ramsay Jones <***@ramsay1.demon.co.uk>
Date: 2013-07-29 (Mon, 29 Jul 2013)

Changed paths:
M commit-slab.h

Log Message:
-----------
commit-slab.h: Fix memory allocation and addressing

The slab initialization code includes the calculation of the
slab 'elem_size', which is in turn used to determine the size
(capacity) of the slab. Each element of the slab represents an
array, of length 'stride', of 'elemtype'. (Note that it may be
clearer if the define_commit_slab macro parameter was called
'basetype' rather than 'elemtype'). However, the 'elem_size'
calculation incorrectly uses 'sizeof(struct slabname)' in the
expression, rather than 'sizeof(elemtype)'.

Within the slab access routine, <slabname>_at(), the given commit
'index' is transformed into an (slab#, slot#) pair used to address
the required element (a pointer to the first element of the array
of 'elemtype' associated with that commit). The current code to
calculate these address coordinates multiplies the commit index
by the 'stride' which, at least for the slab#, produces the wrong
result. Using the commit index directly, without scaling by the
'stride', produces the correct 'logical' address.

Also, when allocating a new slab, the size of the allocation only
allows for a slab containing elements of single element arrays of
'elemtype'. This should allow for elements of an array of length
'stride' of 'elemtype'. In order to fix this, we need to change
the element size parameter to xcalloc() by multiplying the current
element size (sizeof(**s->slab)) by the s->stride.

Having changed the calculation of the slot#, we now need to convert
the logical 'nth_slot', by scaling with s->stride, into the correct
physical address.

Signed-off-by: Ramsay Jones <***@ramsay1.demon.co.uk>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 19c3c5fdcb35b66b792534c5dc4e8d87a3952d2a
https://github.com/msysgit/git/commit/19c3c5fdcb35b66b792534c5dc4e8d87a3952d2a
Author: Lukas Fleischer <***@cryptocrack.de>
Date: 2013-07-29 (Mon, 29 Jul 2013)

Changed paths:
M contrib/subtree/git-subtree.sh
M contrib/subtree/t/t7900-subtree.sh
M t/perf/perf-lib.sh

Log Message:
-----------
Avoid using `echo -n` anywhere

`echo -n` is non-portable. The POSIX specification says:

Conforming applications that wish to do prompting without <newline>
characters or that could possibly be expecting to echo a -n, should
use the printf utility derived from the Ninth Edition system.

Since all of the affected shell scripts use a POSIX shell shebang,
replace `echo -n` invocations with printf.

Signed-off-by: Lukas Fleischer <***@cryptocrack.de>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: ac1998deddbb5b59c80f2a3d902e18b31fe9cc50
https://github.com/msysgit/git/commit/ac1998deddbb5b59c80f2a3d902e18b31fe9cc50
Author: Ralf Thielow <***@gmail.com>
Date: 2013-07-29 (Mon, 29 Jul 2013)

Changed paths:
M git-rebase.sh

Log Message:
-----------
git-rebase: fix typo

Signed-off-by: Ralf Thielow <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 98e023dea40a0eca8a61c037dfc59aaf27f003a4
https://github.com/msysgit/git/commit/98e023dea40a0eca8a61c037dfc59aaf27f003a4
Author: Ondřej Bílka <***@seznam.cz>
Date: 2013-07-29 (Mon, 29 Jul 2013)

Changed paths:
M Documentation/howto/new-command.txt
M Documentation/technical/api-revision-walking.txt
M builtin/fast-export.c
M builtin/push.c
M cache.h
M combine-diff.c
M contrib/ciabot/ciabot.py
M contrib/ciabot/ciabot.sh
M contrib/subtree/git-subtree.txt
M git-mergetool--lib.sh
M git-p4.py
M notes.h
M read-cache.c
M t/gitweb-lib.sh
M t/lib-t6000.sh
M t/t7601-merge-pull-config.sh
M t/t9020-remote-svn.sh
M t/t9112-git-svn-md5less-file.sh
M t/t9802-git-p4-filetype.sh
M transport-helper.c

Log Message:
-----------
many small typofixes

Signed-off-by: Ondřej Bílka <***@seznam.cz>
Reviewed-by: Marc Branchaud <***@xiplink.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 8e943c248ac50e7b4743019ff1ed69ac72a48fff
https://github.com/msysgit/git/commit/8e943c248ac50e7b4743019ff1ed69ac72a48fff
Author: Michal Sojka <***@fel.cvut.cz>
Date: 2013-07-30 (Tue, 30 Jul 2013)

Changed paths:
M contrib/subtree/Makefile

Log Message:
-----------
contrib/subtree: Fix make install target

If the libexec directory doesn't exist, git-subtree gets installed as
$prefix/share/libexec/git-core file. This patch creates the directory
before installing git-subtree file into it.

Signed-off-by: Michal Sojka <***@fel.cvut.cz>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 1ddc11a6fd675269529a7e6a5478cdb3fcf966d1
https://github.com/msysgit/git/commit/1ddc11a6fd675269529a7e6a5478cdb3fcf966d1
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-30 (Tue, 30 Jul 2013)

Changed paths:
M contrib/completion/git-completion.bash

Log Message:
-----------
Merge branch 'bc/completion-for-bash-3.0'

* bc/completion-for-bash-3.0:
git-completion.bash: replace zsh notation that breaks bash 3.X


Commit: 3717c73f6205eada7701d254e5c6aff156a14224
https://github.com/msysgit/git/commit/3717c73f6205eada7701d254e5c6aff156a14224
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-30 (Tue, 30 Jul 2013)

Changed paths:
M .mailmap

Log Message:
-----------
Merge branch 'sb/mailmap-updates'

* sb/mailmap-updates:
.mailmap: combine more (email, name) to individual persons


Commit: 35f5eaa2eedcd7145ee59ff5ff2cb48e71270b81
https://github.com/msysgit/git/commit/35f5eaa2eedcd7145ee59ff5ff2cb48e71270b81
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-30 (Tue, 30 Jul 2013)

Changed paths:
M Documentation/technical/protocol-capabilities.txt

Log Message:
-----------
Merge branch 'jk/capabilities-doc'

* jk/capabilities-doc:
document 'allow-tip-sha1-in-want' capability
document 'quiet' receive-pack capability
document 'agent' protocol capability
docs: note that receive-pack knows side-band-64k capability
docs: fix 'report-status' protocol capability thinko


Commit: f1093b0f60ef28c3dab63a7d73f284426705cea1
https://github.com/msysgit/git/commit/f1093b0f60ef28c3dab63a7d73f284426705cea1
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-31 (Wed, 31 Jul 2013)

Changed paths:
M refs.c

Log Message:
-----------
Merge branch 'mh/packed-refs-do-one-ref-recursion'

Fix a NULL-pointer dereference during nested iterations over
references (for example, when replace references are being used).

* mh/packed-refs-do-one-ref-recursion:
do_one_ref(): save and restore value of current_ref


Commit: 5ecc4b53f77d939dfad2819658cc51f4053a03f3
https://github.com/msysgit/git/commit/5ecc4b53f77d939dfad2819658cc51f4053a03f3
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-31 (Wed, 31 Jul 2013)

Changed paths:
M Documentation/git-config.txt

Log Message:
-----------
Merge branch 'rr/maint-tilde-markup-in-doc'

* rr/maint-tilde-markup-in-doc:
config doc: quote paths, fixing tilde-interpretation


Commit: 652d2bfa83e92d871eb034e13fd811fbd402c3f1
https://github.com/msysgit/git/commit/652d2bfa83e92d871eb034e13fd811fbd402c3f1
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-31 (Wed, 31 Jul 2013)

Changed paths:
M Documentation/git-tag.txt

Log Message:
-----------
Merge branch 'ds/doc-two-kinds-of-tags'

* ds/doc-two-kinds-of-tags:
docs/git-tag: explain lightweight versus annotated tags


Commit: af77c0b1cf3f8c8ba5ae30cec208227800447f99
https://github.com/msysgit/git/commit/af77c0b1cf3f8c8ba5ae30cec208227800447f99
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-31 (Wed, 31 Jul 2013)

Changed paths:
M builtin/commit.c

Log Message:
-----------
Merge branch 'jk/commit-how-to-abort-cherry-pick'

* jk/commit-how-to-abort-cherry-pick:
commit: tweak empty cherry pick advice for sequencer


Commit: 2ed8ecaf57271e506cefffb5f777f50a6a91a4b4
https://github.com/msysgit/git/commit/2ed8ecaf57271e506cefffb5f777f50a6a91a4b4
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-31 (Wed, 31 Jul 2013)

Changed paths:
M commit-slab.h

Log Message:
-----------
Merge branch 'rj/commit-slab-fix'

* rj/commit-slab-fix:
commit-slab.h: Fix memory allocation and addressing


Commit: c8686e510fa56d3e8349ec3ca83215a107d47d45
https://github.com/msysgit/git/commit/c8686e510fa56d3e8349ec3ca83215a107d47d45
Author: Junio C Hamano <***@pobox.com>
Date: 2013-07-31 (Wed, 31 Jul 2013)

Changed paths:
M git-rebase.sh

Log Message:
-----------
Merge branch 'rr/rebase-autostash'

* rr/rebase-autostash:
git-rebase: fix typo


Commit: 8dc84fdc48a79c70682e6c361a82d0f3e1db9a03
https://github.com/msysgit/git/commit/8dc84fdc48a79c70682e6c361a82d0f3e1db9a03
Author: Thomas Rast <***@inf.ethz.ch>
Date: 2013-07-31 (Wed, 31 Jul 2013)

Changed paths:
M advice.c
M sha1_name.c

Log Message:
-----------
Rename advice.object_name_warning to objectNameWarning

We spell config variables in camelCase instead of with_underscores.

Signed-off-by: Thomas Rast <***@inf.ethz.ch>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: c2980866b75229c1361b1f7a2f04c9ed197588e5
https://github.com/msysgit/git/commit/c2980866b75229c1361b1f7a2f04c9ed197588e5
Author: Junio C Hamano <***@pobox.com>
Date: 2013-08-01 (Thu, 01 Aug 2013)

Changed paths:
M Documentation/git-clean.txt
M builtin/clean.c
M t/t7301-clean-interactive.sh

Log Message:
-----------
Merge branch 'jx/clean-interactive'

* jx/clean-interactive:
git-clean: implement partial matching for selection
Documentation/git-clean: fix description for range


Commit: 400bf4c46b2bf01cca2658c7d7b4774d7a711486
https://github.com/msysgit/git/commit/400bf4c46b2bf01cca2658c7d7b4774d7a711486
Author: Junio C Hamano <***@pobox.com>
Date: 2013-08-01 (Thu, 01 Aug 2013)

Changed paths:
M contrib/hg-to-git/hg-to-git.py

Log Message:
-----------
Merge branch 'ma/hg-to-git'

* ma/hg-to-git:
hg-to-git: --allow-empty-message in git commit


Commit: a5203a3f044ced7904800f3f233451474c1d5120
https://github.com/msysgit/git/commit/a5203a3f044ced7904800f3f233451474c1d5120
Author: Junio C Hamano <***@pobox.com>
Date: 2013-08-01 (Thu, 01 Aug 2013)

Changed paths:
M contrib/subtree/git-subtree.sh
M contrib/subtree/t/t7900-subtree.sh
M t/perf/perf-lib.sh

Log Message:
-----------
Merge branch 'lf/echo-n-is-not-portable'

* lf/echo-n-is-not-portable:
Avoid using `echo -n` anywhere


Commit: baa2e936990a9bce84fdb8bcffbd940f05800241
https://github.com/msysgit/git/commit/baa2e936990a9bce84fdb8bcffbd940f05800241
Author: Junio C Hamano <***@pobox.com>
Date: 2013-08-01 (Thu, 01 Aug 2013)

Changed paths:
M builtin/rm.c

Log Message:
-----------
Merge branch 'jc/rm-submodule-error-message'

Consolidate two messages phrased subtly differently without a good
reason.

* jc/rm-submodule-error-message:
builtin/rm.c: consolidate error reporting for removing submodules


Commit: 898bbe9664bf99bea6dcd4d03b2480f0f79b404b
https://github.com/msysgit/git/commit/898bbe9664bf99bea6dcd4d03b2480f0f79b404b
Author: Junio C Hamano <***@pobox.com>
Date: 2013-08-01 (Thu, 01 Aug 2013)

Changed paths:
M contrib/subtree/Makefile

Log Message:
-----------
Merge branch 'ms/subtree-install-fix'

* ms/subtree-install-fix:
contrib/subtree: Fix make install target


Commit: d50cb7569cfb6e04ba48900821618d28012f334e
https://github.com/msysgit/git/commit/d50cb7569cfb6e04ba48900821618d28012f334e
Author: Junio C Hamano <***@pobox.com>
Date: 2013-08-01 (Thu, 01 Aug 2013)

Changed paths:
M Documentation/howto/new-command.txt
M Documentation/technical/api-revision-walking.txt
M builtin/fast-export.c
M builtin/push.c
M cache.h
M combine-diff.c
M contrib/ciabot/ciabot.py
M contrib/ciabot/ciabot.sh
M contrib/subtree/git-subtree.txt
M git-mergetool--lib.sh
M git-p4.py
M notes.h
M read-cache.c
M t/gitweb-lib.sh
M t/lib-t6000.sh
M t/t7601-merge-pull-config.sh
M t/t9020-remote-svn.sh
M t/t9112-git-svn-md5less-file.sh
M t/t9802-git-p4-filetype.sh
M transport-helper.c

Log Message:
-----------
Merge branch 'ob/typofixes'

* ob/typofixes:
many small typofixes


Commit: 304852fc77847e649c746db95e9c4675c03ee567
https://github.com/msysgit/git/commit/304852fc77847e649c746db95e9c4675c03ee567
Author: Junio C Hamano <***@pobox.com>
Date: 2013-08-01 (Thu, 01 Aug 2013)

Changed paths:
M GIT-VERSION-GEN

Log Message:
-----------
Git 1.8.4-rc1

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


Commit: 062aeee8aa426468817c5bea96d781289b272ced
https://github.com/msysgit/git/commit/062aeee8aa426468817c5bea96d781289b272ced
Author: Junio C Hamano <***@pobox.com>
Date: 2013-08-02 (Fri, 02 Aug 2013)

Changed paths:
M Documentation/git-cat-file.txt
M builtin/cat-file.c
M t/t1006-cat-file.sh

Log Message:
-----------
Revert "cat-file: split --batch input lines on whitespace"

This reverts commit c334b87b30c1464a1ab563fe1fb8de5eaf0e5bac; the
update assumed that people only used the command to read from
"rev-list --objects" output, whose lines begin with a 40-hex object
name followed by a whitespace, but it turns out that scripts feed
random extended SHA-1 expressions (e.g. "HEAD:$pathname") in which
a whitespace has to be kept.


Commit: c7eb614c5cc4b265a53421354020634f92fc2d59
https://github.com/msysgit/git/commit/c7eb614c5cc4b265a53421354020634f92fc2d59
Author: Junio C Hamano <***@pobox.com>
Date: 2013-08-02 (Fri, 02 Aug 2013)

Changed paths:
M Documentation/git-cat-file.txt
M builtin/cat-file.c
M t/t1006-cat-file.sh

Log Message:
-----------
Merge branch 'jk/cat-file-batch-optim'

* jk/cat-file-batch-optim:
Revert "cat-file: split --batch input lines on whitespace"


Commit: d6cbf2fa7a51229d992c9c8d51eb635eccdd6067
https://github.com/msysgit/git/commit/d6cbf2fa7a51229d992c9c8d51eb635eccdd6067
Author: Junio C Hamano <***@pobox.com>
Date: 2013-08-02 (Fri, 02 Aug 2013)

Changed paths:
M Documentation/config.txt
M Makefile
R compat/cygwin.c
R compat/cygwin.h
M config.mak.uname
M contrib/completion/git-completion.bash
M git-compat-util.h
M help.c
M path.c

Log Message:
-----------
Merge branch 'rj/cygwin-clarify-use-of-cheating-lstat'

Cygwin port added a "not quite correct but a lot faster and good
enough for many lstat() calls that are only used to see if the
working tree entity matches the index entry" lstat() emulation some
time ago, and it started biting us in places. This removes it and
uses the standard lstat() that comes with Cygwin.

Recent topic that uses lstat on packed-refs file is broken when
this cheating lstat is used, and this is a simplest fix that is
also the cleanest direction to go in the long run.

* rj/cygwin-clarify-use-of-cheating-lstat:
cygwin: Remove the Win32 l/stat() implementation


Commit: 2e8451e8602380a8a129f21da6364f3ea879e6a9
https://github.com/msysgit/git/commit/2e8451e8602380a8a129f21da6364f3ea879e6a9
Author: Jiang Xin <***@gmail.com>
Date: 2013-08-02 (Fri, 02 Aug 2013)

Changed paths:
M po/zh_CN.po

Log Message:
-----------
l10n: zh_CN.po: translate 99 messages (2133t0f0u)

Translate 99 new messages came from git.pot update in 28b3cff
(l10n: git.pot: v1.8.4 round 1 (99 new, 46 removed)).

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


Commit: e6604c3537e8b60d6cbc821e7d356924c0a0e809
https://github.com/msysgit/git/commit/e6604c3537e8b60d6cbc821e7d356924c0a0e809
Author: Jonathan Nieder <***@gmail.com>
Date: 2013-08-05 (Mon, 05 Aug 2013)

Changed paths:
M Documentation/git-rev-list.txt
M Documentation/pretty-options.txt

Log Message:
-----------
log doc: the argument to --encoding is not optional

$ git log --encoding
fatal: Option '--encoding' requires a value
$ git rev-list --encoding
fatal: Option '--encoding' requires a value

The argument to --encoding has always been mandatory. Unfortunately
manpages like git-rev-list(1), git-log(1), and git-show(1) have
described the option's syntax as "--encoding[=<encoding>]" since it
was first documented. Clarify by removing the extra brackets.

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


Commit: 487e5707852cca03f924ea4dcfbcad1030db58d8
https://github.com/msysgit/git/commit/487e5707852cca03f924ea4dcfbcad1030db58d8
Author: Stefan Beller <***@googlemail.com>
Date: 2013-08-05 (Mon, 05 Aug 2013)

Changed paths:
M .mailmap

Log Message:
-----------
.mailmap: Multiple addresses of Michael S. Tsirkin

Acked-by: Michael S. Tsirkin <***@redhat.com>
Signed-off-by: Stefan Beller <***@googlemail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 5104d21fbdf7c7bda341d4f0ff406fb66dce839d
https://github.com/msysgit/git/commit/5104d21fbdf7c7bda341d4f0ff406fb66dce839d
Author: Torstein Hegge <***@resisty.net>
Date: 2013-08-05 (Mon, 05 Aug 2013)

Changed paths:
M Documentation/rev-list-options.txt

Log Message:
-----------
Documentation/rev-list-options: add missing word in --*-parents

A commit has "parent commits" or "parents", not "commits".

Signed-off-by: Torstein Hegge <***@resisty.net>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 0bf5ce4ef27dd24461d7b7b8049058bf80301ddf
https://github.com/msysgit/git/commit/0bf5ce4ef27dd24461d7b7b8049058bf80301ddf
Author: Felix Gruber <***@gmx.de>
Date: 2013-08-05 (Mon, 05 Aug 2013)

Changed paths:
M Documentation/git-svn.txt

Log Message:
-----------
fix typo in documentation of git-svn

Signed-off-by: Felix Gruber <***@gmx.de>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 214a5f2e0c86843c5f86494583792cbf3eaf89de
https://github.com/msysgit/git/commit/214a5f2e0c86843c5f86494583792cbf3eaf89de
Author: Brian M. Carlson <***@crustytoothpaste.net>
Date: 2013-08-05 (Mon, 05 Aug 2013)

Changed paths:
A t/t3900/UTF-16.txt

Log Message:
-----------
Add missing test file for UTF-16.

The test file that the UTF-16 rejection test looks for is missing, but this went
unnoticed because the test is expected to fail anyway; as a consequence, the
test fails because the file containing the commit message is missing, and not
because the test file contains a NUL byte. Fix this by including a sample text
file containing a commit message encoded in UTF-16.

Signed-off-by: Brian M. Carlson <***@crustytoothpaste.net>
Tested-by: Duy Nguyen <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 0ed45a1cd6571ed89a09791730a9089e932b7c1f
https://github.com/msysgit/git/commit/0ed45a1cd6571ed89a09791730a9089e932b7c1f
Author: Junio C Hamano <***@pobox.com>
Date: 2013-08-05 (Mon, 05 Aug 2013)

Changed paths:
M t/t3900-i18n-commit.sh

Log Message:
-----------
t3900: test rejecting log message with NULs correctly

It is not like that our longer term desire is to someday start
accept log messages with NULs in them, so it is wrong to mark a test
that demonstrates "git commit" that correctly fails given such an
input as "expect-failure". "git commit" should fail today, and it
should fail the same way in the future given a message with NUL in it.

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


Commit: dc773a67e1a165c8866538fe3e754816b2e27447
https://github.com/msysgit/git/commit/dc773a67e1a165c8866538fe3e754816b2e27447
Author: Junio C Hamano <***@pobox.com>
Date: 2013-08-05 (Mon, 05 Aug 2013)

Changed paths:
M commit.c

Log Message:
-----------
commit: typofix for xxFFF[EF] check

We wanted to catch all codepoints that ends with FFFE and FFFF,
not with 0FFFE and 0FFFF.

Noticed and corrected by Peter Krefting.

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


Commit: c8abf659f7b1669f949c6476e73c62c11ffd816c
https://github.com/msysgit/git/commit/c8abf659f7b1669f949c6476e73c62c11ffd816c
Author: Junio C Hamano <***@pobox.com>
Date: 2013-08-05 (Mon, 05 Aug 2013)

Changed paths:
M commit.c

Log Message:
-----------
Merge branch 'bc/commit-invalid-utf8'

* bc/commit-invalid-utf8:
commit: typofix for xxFFF[EF] check


Commit: d6f3ab573ee48927c7ef272e56b043758feb0a81
https://github.com/msysgit/git/commit/d6f3ab573ee48927c7ef272e56b043758feb0a81
Author: Junio C Hamano <***@pobox.com>
Date: 2013-08-05 (Mon, 05 Aug 2013)

Changed paths:
M t/t3900-i18n-commit.sh
A t/t3900/UTF-16.txt

Log Message:
-----------
Merge branch 'dn/test-reject-utf-16'

* dn/test-reject-utf-16:
t3900: test rejecting log message with NULs correctly
Add missing test file for UTF-16.


Commit: 4fcd30df85a50ad244424e220a0e032cdd544266
https://github.com/msysgit/git/commit/4fcd30df85a50ad244424e220a0e032cdd544266
Author: Junio C Hamano <***@pobox.com>
Date: 2013-08-05 (Mon, 05 Aug 2013)

Changed paths:
M .mailmap

Log Message:
-----------
Merge branch 'sb/mailmap-updates'

* sb/mailmap-updates:
.mailmap: Multiple addresses of Michael S. Tsirkin


Commit: a48ed48db5901f6ba2215826e5f16eca159930ca
https://github.com/msysgit/git/commit/a48ed48db5901f6ba2215826e5f16eca159930ca
Author: Junio C Hamano <***@pobox.com>
Date: 2013-08-05 (Mon, 05 Aug 2013)

Changed paths:
M po/git.pot
M po/vi.po
M po/zh_CN.po

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

* git://github.com/git-l10n/git-po:
l10n: zh_CN.po: translate 99 messages (2133t0f0u)
l10n: vi.po (2133t)
l10n: git.pot: v1.8.4 round 1 (99 new, 46 removed)


Commit: 3a4fc21a293c2426899df6a8f4a4cf77b3a0642d
https://github.com/msysgit/git/commit/3a4fc21a293c2426899df6a8f4a4cf77b3a0642d
Author: René Scharfe <***@web.de>
Date: 2013-08-05 (Mon, 05 Aug 2013)

Changed paths:
M t/annotate-tests.sh

Log Message:
-----------
t8001, t8002: fix "blame -L :literal" test on NetBSD

Sub-test 42 of t8001 and t8002 ("blame -L :literal") fails on NetBSD
with the following verbose output:

git annotate -L:main hello.c
Author F (expected 4, attributed 3) bad
Author G (expected 1, attributed 1) good

This is not caused by different behaviour of git blame or annotate on
that platform, but by different test input, in turn caused by a sed
command that forgets to add a newline on NetBSD. Here's the diff of the
commit that adds "goodbye" to hello.c, for Linux:

@@ -1,4 +1,5 @@
int main(int argc, const char *argv[])
{
puts("hello");
+ puts("goodbye");
}

We see that it adds an extra TAB, but that's not a problem. Here's the
same on NetBSD:

@@ -1,4 +1,4 @@
int main(int argc, const char *argv[])
{
puts("hello");
-}
+ puts("goodbye");}

It also adds an extra TAB, but it is missing the newline character
after the semicolon.

The following patch gets rid of the extra TAB at the beginning, but
more importantly adds the missing newline at the end in a (hopefully)
portable way, mentioned in http://sed.sourceforge.net/sedfaq4.html.
The diff becomes this, on both Linux and NetBSD:

@@ -1,4 +1,5 @@
int main(int argc, const char *argv[])
{
puts("hello");
+ puts("goodbye");
}

Signed-off-by: Rene Scharfe <***@web.de>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: f5206f1239a2f193aed16bac1c3b8cf71dfbce39
https://github.com/msysgit/git/commit/f5206f1239a2f193aed16bac1c3b8cf71dfbce39
Author: Junio C Hamano <***@pobox.com>
Date: 2013-08-05 (Mon, 05 Aug 2013)

Changed paths:
M t/annotate-tests.sh

Log Message:
-----------
Merge branch 'es/blame-L-breakage'

* es/blame-L-breakage:
t8001, t8002: fix "blame -L :literal" test on NetBSD


Commit: fb5657082148297b61fbca7e64d51c1e7870309a
https://github.com/msysgit/git/commit/fb5657082148297b61fbca7e64d51c1e7870309a
Author: Junio C Hamano <***@pobox.com>
Date: 2013-08-05 (Mon, 05 Aug 2013)

Changed paths:
M Documentation/git-rev-list.txt
M Documentation/git-svn.txt
M Documentation/pretty-options.txt
M Documentation/rev-list-options.txt

Log Message:
-----------
Sync with maint to grab trivial doc fixes

* maint:
fix typo in documentation of git-svn
Documentation/rev-list-options: add missing word in --*-parents
log doc: the argument to --encoding is not optional


Commit: b8ecf239d08041f1c56266328bbdff15fe04782a
https://github.com/msysgit/git/commit/b8ecf239d08041f1c56266328bbdff15fe04782a
Author: Jiang Xin <***@gmail.com>
Date: 2013-08-05 (Mon, 05 Aug 2013)

Changed paths:
M po/git.pot

Log Message:
-----------
l10n: git.pot: v1.8.4 round 2 (5 new, 3 removed)

Generate po/git.pot from v1.8.4-rc1-21-gfb56570 for git v1.8.4
l10n round 2.

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


Commit: 85ef881f6ca35bd8a356416c137d800a36b42f52
https://github.com/msysgit/git/commit/85ef881f6ca35bd8a356416c137d800a36b42f52
Author: Tran Ngoc Quan <***@gmail.com>
Date: 2013-08-06 (Tue, 06 Aug 2013)

Changed paths:
M po/vi.po

Log Message:
-----------
l10n: vi.po(2135t): v1.8.4 round 2

Signed-off-by: Tran Ngoc Quan <***@gmail.com>


Commit: b18943845c71bf4792436c541e342361e2483249
https://github.com/msysgit/git/commit/b18943845c71bf4792436c541e342361e2483249
Author: Jiang Xin <***@gmail.com>
Date: 2013-08-06 (Tue, 06 Aug 2013)

Changed paths:
M po/zh_CN.po

Log Message:
-----------
l10n: zh_CN.po: translate 5 messages (2135t0f0u)

Translate 5 new messages came from git.pot update in b8ecf23
(l10n: git.pot: v1.8.4 round 2 (5 new, 3 removed)).

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


Commit: aa4e5fe40f8c0d36083a91438ad88494f3d6e48e
https://github.com/msysgit/git/commit/aa4e5fe40f8c0d36083a91438ad88494f3d6e48e
Author: Peter Krefting <***@softwolves.pp.se>
Date: 2013-08-06 (Tue, 06 Aug 2013)

Changed paths:
M po/sv.po

Log Message:
-----------
l10n: Update Swedish translation (2135t0f0u)

Fix some incorrect translations in existing messages while at it.

Signed-off-by: Peter Krefting <***@softwolves.pp.se>


Commit: b5c0a216f84e1f82e1e214b3c29b5916c2668674
https://github.com/msysgit/git/commit/b5c0a216f84e1f82e1e214b3c29b5916c2668674
Author: Wieland Hoffmann <***@gmail.com>
Date: 2013-08-08 (Thu, 08 Aug 2013)

Changed paths:
M po/de.po

Log Message:
-----------
l10n: de.po: Fix a typo

Signed-off-by: Wieland Hoffmann <***@gmail.com>


Commit: eb5accfece37330cc133b9585f8b773aacea56d1
https://github.com/msysgit/git/commit/eb5accfece37330cc133b9585f8b773aacea56d1
Author: Ralf Thielow <***@gmail.com>
Date: 2013-08-08 (Thu, 08 Aug 2013)

Changed paths:
M po/de.po

Log Message:
-----------
l10n: de.po: switch from pure German to German+English

This switches the translation from pure German to German+English.

Signed-off-by: Ralf Thielow <***@gmail.com>
Acked-by: Thomas Rast <***@inf.ethz.ch>


Commit: 64948ad77534f035311fd3e1086477661c8f63b1
https://github.com/msysgit/git/commit/64948ad77534f035311fd3e1086477661c8f63b1
Author: Junio C Hamano <***@pobox.com>
Date: 2013-08-08 (Thu, 08 Aug 2013)

Changed paths:
M Documentation/RelNotes/1.8.4.txt
M GIT-VERSION-GEN

Log Message:
-----------
Git 1.8.4-rc2

This is with mostly minor documentation and test updates, nothing
spectacular except for removal of funky lstat(2) emulation on Cygwin.

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


Commit: 770c73ffc98f3cdef7bd83a107770ce85f653fc1
https://github.com/msysgit/git/commit/770c73ffc98f3cdef7bd83a107770ce85f653fc1
Author: Ralf Thielow <***@gmail.com>
Date: 2013-08-08 (Thu, 08 Aug 2013)

Changed paths:
M po/de.po

Log Message:
-----------
l10n: de.po: translate 99 new messages

Translate 99 new messages came from git.pot update in
28b3cff (l10n: git.pot: v1.8.4 round 1 (99 new, 46 removed)).

Signed-off-by: Ralf Thielow <***@gmail.com>
Acked-by: Thomas Rast <***@inf.ethz.ch>


Commit: 4402f301555feeada2de68c4576aa15acfe40b46
https://github.com/msysgit/git/commit/4402f301555feeada2de68c4576aa15acfe40b46
Author: Ralf Thielow <***@gmail.com>
Date: 2013-08-08 (Thu, 08 Aug 2013)

Changed paths:
M po/de.po

Log Message:
-----------
l10n: de.po: translate 5 messages

Translate 5 new messages came from git.pot update in b8ecf23
(l10n: git.pot: v1.8.4 round 2 (5 new, 3 removed)).

Signed-off-by: Ralf Thielow <***@gmail.com>


Commit: a3bc3d070cacf07dbe11b4bfec57554c8bbf1957
https://github.com/msysgit/git/commit/a3bc3d070cacf07dbe11b4bfec57554c8bbf1957
Author: Eric Sunshine <***@sunshineco.com>
Date: 2013-08-09 (Fri, 09 Aug 2013)

Changed paths:
M parse-options.h

Log Message:
-----------
parse-options: fix clang opterror() -Wunused-value warning

a469a1019352b8ef (silence some -Wuninitialized false positives;
2012-12-15) triggered "unused value" warnings when the return value of
opterror() and several other error-related functions was not used.
5ded807f7c0be10e (fix clang -Wunused-value warnings for error functions;
2013-01-16) applied a fix by adding #if !defined(__clang__) in cache.h
and git-compat-util.h, but misspelled it as #if !defined(clang) in
parse-options.h. Fix this.

This mistake went unnoticed because existing callers of opterror()
utilize its return value. 1158826394e162c5 (parse-options: add
OPT_CMDMODE(); 2013-07-30), however, adds a new invocation of opterror()
which ignores the return value, thus triggering the "unused value"
warning.

Signed-off-by: Eric Sunshine <***@sunshineco.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: dfe338ae139432fd40a0f211b267f98ef85c29ed
https://github.com/msysgit/git/commit/dfe338ae139432fd40a0f211b267f98ef85c29ed
Author: Phil Hord <***@cisco.com>
Date: 2013-08-09 (Fri, 09 Aug 2013)

Changed paths:
M t/t7407-submodule-foreach.sh

Log Message:
-----------
t/t7407: fix two typos in submodule tests

In t/t7407-submodule-foreach.sh there is a typo in one of the
path names given for a test step. The correct path is
nested1/nested2/.git, but nested1/nested1/nested2/.git is
given instead. The typo is hidden because this line also
accidentally omits the && chain operator. The omitted chain
also means the return values of all the previous commands in
this test are also being ignored.

Fix the path and add the chain operator so the entire test
sequence can be properly validated.

Signed-off-by: Phil Hord <***@cisco.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 182be0d397cec4ec7f649978653f48c497d43d72
https://github.com/msysgit/git/commit/182be0d397cec4ec7f649978653f48c497d43d72
Author: Stefan Beller <***@googlemail.com>
Date: 2013-08-09 (Fri, 09 Aug 2013)

Changed paths:
M .mailmap

Log Message:
-----------
.mailmap: fixup entries

This patch adds no new names, but fixes the mistakes I made in the previous
commits. (94b410bba8, f4f49e225, c07a6bc57, 2013-07-12, .mailmap: Map
email addresses to names).

These mistakes are double white spaces between name and surname,
different capitalization in email address, or just the email address set
as name.

Also I forgot to include James Knight to the mailmap file.

Signed-off-by: Stefan Beller <***@googlemail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 6f7d6ec303898a8223b9bad5f010a514b42c1b73
https://github.com/msysgit/git/commit/6f7d6ec303898a8223b9bad5f010a514b42c1b73
Author: Junio C Hamano <***@pobox.com>
Date: 2013-08-09 (Fri, 09 Aug 2013)

Changed paths:
M .mailmap

Log Message:
-----------
Merge branch 'sb/mailmap-updates'

* sb/mailmap-updates:
.mailmap: fixup entries


Commit: e423a0f8a240779138849d04ff34be5768f3c25f
https://github.com/msysgit/git/commit/e423a0f8a240779138849d04ff34be5768f3c25f
Author: Junio C Hamano <***@pobox.com>
Date: 2013-08-09 (Fri, 09 Aug 2013)

Changed paths:
M t/t7407-submodule-foreach.sh

Log Message:
-----------
Merge branch 'jk/submodule-subdirectory-ok'

* jk/submodule-subdirectory-ok:
t/t7407: fix two typos in submodule tests


Commit: b48493e937bb46d352336e2918e37120fe1d352d
https://github.com/msysgit/git/commit/b48493e937bb46d352336e2918e37120fe1d352d
Author: Junio C Hamano <***@pobox.com>
Date: 2013-08-09 (Fri, 09 Aug 2013)

Changed paths:
M po/de.po
M po/git.pot
M po/sv.po
M po/vi.po
M po/zh_CN.po

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

* 'master' of git://github.com/git-l10n/git-po:
l10n: de.po: translate 5 messages
l10n: de.po: translate 99 new messages
l10n: de.po: switch from pure German to German+English
l10n: de.po: Fix a typo
l10n: Update Swedish translation (2135t0f0u)
l10n: zh_CN.po: translate 5 messages (2135t0f0u)
l10n: vi.po(2135t): v1.8.4 round 2
l10n: git.pot: v1.8.4 round 2 (5 new, 3 removed)


Commit: 96cb27a9d2db3c01b8e296a0fbc1da1da09d1412
https://github.com/msysgit/git/commit/96cb27a9d2db3c01b8e296a0fbc1da1da09d1412
Author: Junio C Hamano <***@pobox.com>
Date: 2013-08-09 (Fri, 09 Aug 2013)

Changed paths:
M parse-options.h

Log Message:
-----------
Merge branch 'maint'

* maint:
parse-options: fix clang opterror() -Wunused-value warning


Commit: 6b388fca90524df65ea71549051f936b8dc9e4b0
https://github.com/msysgit/git/commit/6b388fca90524df65ea71549051f936b8dc9e4b0
Author: Jean-Noel Avila <***@free.fr>
Date: 2013-08-11 (Sun, 11 Aug 2013)

Changed paths:
A po/fr.po

Log Message:
-----------
l10n: fr.po: 821/2112 messages translated

Trying to focus on most useful phrases.

Signed-off-by: Jean-Noel Avila <***@free.fr>


Commit: 1b5f46f15917fc938c219732fe5ec6a45748f1f7
https://github.com/msysgit/git/commit/1b5f46f15917fc938c219732fe5ec6a45748f1f7
Author: Jean-Noel Avila <***@free.fr>
Date: 2013-08-11 (Sun, 11 Aug 2013)

Changed paths:
M po/TEAMS

Log Message:
-----------
l10n: Add reference for french translation team

Signed-off-by: Jean-Noel Avila <***@free.fr>


Commit: 8ed205a380a3ec5e92fb8ae69f5cb20b6cbaa636
https://github.com/msysgit/git/commit/8ed205a380a3ec5e92fb8ae69f5cb20b6cbaa636
Author: Matthieu Moy <***@imag.fr>
Date: 2013-08-13 (Tue, 13 Aug 2013)

Changed paths:
M contrib/mw-to-git/.gitignore

Log Message:
-----------
git-remote-mediawiki: ignore generated git-mw

Signed-off-by: Matthieu Moy <***@imag.fr>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 10813e0d3c72671e24407ef4bd43b74f60445089
https://github.com/msysgit/git/commit/10813e0d3c72671e24407ef4bd43b74f60445089
Author: Junio C Hamano <***@pobox.com>
Date: 2013-08-13 (Tue, 13 Aug 2013)

Changed paths:
M .mailmap

Log Message:
-----------
.mailmap: update long-lost friends with multiple defunct addresses

A handful of past contributors are recorded with multiple e-mail
addresses, all of which are undeliverable. With a lot of help from
Jonathan, we located all of them except for one person, and a pair
of addresses we suspect belong to a single person but we are not
certain.

Update the found ones with their currently preferred address, and
use the last known address to consolidate contributions by the lost
one.

Helped-by: Stefan Beller <***@googlemail.com>
Helped-by: Jonathan Nieder <***@gmail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: cdb6b5ac67a48e6d25eb44dd2d632b60cfc7b743
https://github.com/msysgit/git/commit/cdb6b5ac67a48e6d25eb44dd2d632b60cfc7b743
Author: Stefan Beller <***@googlemail.com>
Date: 2013-08-13 (Tue, 13 Aug 2013)

Changed paths:
M .mailmap

Log Message:
-----------
.mailmap: Combine more (name, email) to individual persons

Signed-off-by: Stefan Beller <***@googlemail.com>
Signed-off-by: Junio C Hamano <***@pobox.com>


Commit: 2809258c28b92add5dfa0b72703c477a7f5ac0ff
https://github.com/msysgit/git/commit/2809258c28b92add5dfa0b72703c477a7f5ac0ff
Author: Junio C Hamano <***@pobox.com>
Date: 2013-08-13 (Tue, 13 Aug 2013)

Changed paths:
M .mailmap

Log Message:
-----------
Merge branch 'sb/mailmap-updates'

* sb/mailmap-updates:
.mailmap: Combine more (name, email) to individual persons
.mailmap: update long-lost friends with multiple defunct addresses


Commit: eaaec50fcd705b10f59e1104e22914f844eaf4de
https://github.com/msysgit/git/commit/eaaec50fcd705b10f59e1104e22914f844eaf4de
Author: Junio C Hamano <***@pobox.com>
Date: 2013-08-13 (Tue, 13 Aug 2013)

Changed paths:
M po/TEAMS
A po/fr.po

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

* git://github.com/git-l10n/git-po:
l10n: Add reference for french translation team
l10n: fr.po: 821/2112 messages translated


Commit: 425df881e08bed7a8fcc9a23f452cff792f9ec6c
https://github.com/msysgit/git/commit/425df881e08bed7a8fcc9a23f452cff792f9ec6c
Author: Junio C Hamano <***@pobox.com>
Date: 2013-08-13 (Tue, 13 Aug 2013)

Changed paths:
M GIT-VERSION-GEN

Log Message:
-----------
Git 1.8.4-rc3

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


Commit: c1ebd90c832e28ff27654c21f9985aebe986352d
https://github.com/msysgit/git/commit/c1ebd90c832e28ff27654c21f9985aebe986352d
Author: Junio C Hamano <***@pobox.com>
Date: 2013-08-14 (Wed, 14 Aug 2013)

Changed paths:
M Documentation/git-stash.txt
M git-stash.sh
M t/t3903-stash.sh

Log Message:
-----------
Revert "git stash: avoid data loss when "git stash save" kills a directory"

This reverts commit a73653130edd6a8977106d45a8092c09040f9132, as it
has been reported that "ls-files --killed" is too time-consuming in
a deep directory with too many untracked crufts (e.g. $HOME/.git
tracking only a few files).

We'd need to revisit it later but "ls-files --killed" needs to be
optimized before it happens.


Commit: 2c2b6646c2723459dbd334c7ced6f77ffb0d596e
https://github.com/msysgit/git/commit/2c2b6646c2723459dbd334c7ced6f77ffb0d596e
Author: Junio C Hamano <***@pobox.com>
Date: 2013-08-14 (Wed, 14 Aug 2013)

Changed paths:
M Documentation/git-check-ref-format.txt
M Documentation/revisions.txt
M refs.c
M sha1_name.c
M t/t1508-at-combinations.sh

Log Message:
-----------
Revert "Add new @ shortcut for HEAD"

This reverts commit cdfd94837b27c220f70f032b596ea993d195488f, as it
does not just apply to "@" (and forms with modifiers like @{u}
applied to it), but also affects e.g. "refs/heads/@/foo", which it
shouldn't.

The basic idea of giving a short-hand might be good, and the topic
can be retried later, but let's revert to avoid affecting existing
use cases for now for the upcoming release.


Commit: 4d06473928ee574910accbde05c19ef2263abdf6
https://github.com/msysgit/git/commit/4d06473928ee574910accbde05c19ef2263abdf6
Author: Junio C Hamano <***@pobox.com>
Date: 2013-08-19 (Mon, 19 Aug 2013)

Changed paths:
M Documentation/RelNotes/1.8.4.txt
M GIT-VERSION-GEN

Log Message:
-----------
Git 1.8.4-rc4

As we had to revert two topics at the last minute, let's have
another (hopefully short) round of rc to make sure the final release
will be sound.

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


Commit: 0d8beaa5b76e824c9869f0d1f1b19ec7acf4982f
https://github.com/msysgit/git/commit/0d8beaa5b76e824c9869f0d1f1b19ec7acf4982f
Author: Junio C Hamano <***@pobox.com>
Date: 2013-08-21 (Wed, 21 Aug 2013)

Changed paths:
M Documentation/RelNotes/1.8.4.txt

Log Message:
-----------
Typofix draft release notes to 1.8.4

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


Commit: e230c568c4b9a991e3175e5f65171a566fd8e39c
https://github.com/msysgit/git/commit/e230c568c4b9a991e3175e5f65171a566fd8e39c
Author: Junio C Hamano <***@pobox.com>
Date: 2013-08-23 (Fri, 23 Aug 2013)

Changed paths:
M Documentation/git.txt
M GIT-VERSION-GEN

Log Message:
-----------
Git 1.8.4

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


Commit: ed5811524a2ed58db8f98ee0fe28c0fe03ab10bf
https://github.com/msysgit/git/commit/ed5811524a2ed58db8f98ee0fe28c0fe03ab10bf
Author: Pat Thoyts <***@users.sourceforge.net>
Date: 2013-08-23 (Fri, 23 Aug 2013)

Log Message:
-----------
Start the merging-rebase to v1.8.4

This commit starts the rebase of 5b82b42 to 04f013d
using 54857856602dc98cf6f7773fe01dd95b81a1a24f as base.


Commit: 043ad548174c2351d4a0927955ea1f98a19bc186
https://github.com/msysgit/git/commit/043ad548174c2351d4a0927955ea1f98a19bc186
Author: Johannes Schindelin <***@gmx.de>
Date: 2013-08-23 (Fri, 23 Aug 2013)

Changed paths:
M Makefile

Log Message:
-----------
Make CFLAGS more strict

This is a gcc-ism, but as we use gcc exclusively, we can use them.

Taken from one of Junio's mails. (Reminded to cherry-pick this patch
by one of Karsten Blees' mails.)

Signed-off-by: Johannes Schindelin <***@gmx.de>


Commit: 6ef59f6306688d592224407a2a65fe9eb6f4888e
https://github.com/msysgit/git/commit/6ef59f6306688d592224407a2a65fe9eb6f4888e
Author: Pat Thoyts <***@users.sourceforge.net>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M Makefile

Log Message:
-----------
Make CFLAGS more strict (part 2)

Following "wt-status: use "format" function attribute for status_printf" we
now get warnings if an empty string is passed into printf. As the mingw
build also converts warnings to errors (-Werror) we have to disable this
one until these warnings are fixed.

Signed-off-by: Pat Thoyts <***@users.sourceforge.net>


Commit: 005e2cc9f369468d89cd77416c7d3b4a1900f02e
https://github.com/msysgit/git/commit/005e2cc9f369468d89cd77416c7d3b4a1900f02e
Author: Johannes Schindelin <***@gmx.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M Makefile

Log Message:
-----------
Do not compile compat/**/*.c with -Wold-style-definition

Signed-off-by: Johannes Schindelin <***@gmx.de>


Commit: 5438e193d9333b287336eabc705bab51df621ba2
https://github.com/msysgit/git/commit/5438e193d9333b287336eabc705bab51df621ba2
Author: Erik Faye-Lund <***@googlemail.com>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M Documentation/config.txt
M builtin/init-db.c
M cache.h
M compat/mingw.c
M compat/mingw.h
M config.c
M environment.c
M git-compat-util.h

Log Message:
-----------
core.hidedotfiles: hide '.git' dir by default

At least for cross-platform projects, it makes sense to hide the
files starting with a dot, as this is the behavior on Unix/MacOSX.

However, at least Eclipse has problems interpreting the hidden flag
correctly, so the default is to hide only the .git/ directory.

The config setting core.hideDotFiles therefore supports not only
'true' and 'false', but also 'dotGitOnly'.

[jes: clarified the commit message, made git init respect the setting
by marking the .git/ directory only after reading the config, and added
documentation, and rebased on top of current junio/next]

Signed-off-by: Erik Faye-Lund <***@gmail.com>
Signed-off-by: Johannes Schindelin <***@gmx.de>


Commit: bdc74225e6f61d922ec7d48153c42523dc02d214
https://github.com/msysgit/git/commit/bdc74225e6f61d922ec7d48153c42523dc02d214
Author: Johannes Schindelin <***@gmx.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M compat/mingw.c

Log Message:
-----------
When initializing .git/, record the current setting of core.hideDotFiles

This is on Windows only, of course.

Signed-off-by: Johannes Schindelin <***@gmx.de>


Commit: ada5334fa49813bcd0b6ff9318818a7a5e04fa63
https://github.com/msysgit/git/commit/ada5334fa49813bcd0b6ff9318818a7a5e04fa63
Author: Erik Faye-Lund <***@googlemail.com>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M compat/mingw.c

Log Message:
-----------
mingw: do not hide bare repositories

As reported in msysGit issue 450 the recent change to set the windows
hidden attribute on the .git directory is being applied to bare git
directories. This patch excludes bare repositories.

Tested-by: Pat Thoyts <***@users.sourceforge.net>
Signed-off-by: Erik Faye-Lund <***@gmail.com>


Commit: 253a12e37a7797b6abca78a5d1be3834a0dbf6cb
https://github.com/msysgit/git/commit/253a12e37a7797b6abca78a5d1be3834a0dbf6cb
Author: Pat Thoyts <***@users.sourceforge.net>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M t/t0001-init.sh

Log Message:
-----------
mingw: add tests for the hidden attribute on the git directory

With msysGit the .git directory is supposed to be hidden, unless it is
a bare git repository. Test this.

Signed-off-by: Pat Thoyts <***@users.sourceforge.net>


Commit: a225e8c42732b34acc2df4817ff3032498e6d9aa
https://github.com/msysgit/git/commit/a225e8c42732b34acc2df4817ff3032498e6d9aa
Author: Johannes Sixt <***@kdbg.org>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M t/t4130-apply-criss-cross-rename.sh

Log Message:
-----------
criss cross rename failure workaround

Signed-off-by: Johannes Schindelin <***@gmx.de>


Commit: 2b9dd444db31a24cefc9f7ac913416b61e6a8283
https://github.com/msysgit/git/commit/2b9dd444db31a24cefc9f7ac913416b61e6a8283
Author: Heiko Voigt <***@hvoigt.net>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M git-gui/git-gui.sh

Log Message:
-----------
Revert "git-gui: set GIT_DIR and GIT_WORK_TREE after setup"

This reverts commit a9fa11fe5bd5978bb175b3b5663f6477a345d428.


Commit: 9ab28c00c73f21099cf9ef1464b88d90ad685fa6
https://github.com/msysgit/git/commit/9ab28c00c73f21099cf9ef1464b88d90ad685fa6
Author: Johannes Schindelin <***@gmx.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M git-am.sh

Log Message:
-----------
git am: ignore dirty submodules

This fixes a rebase in the presence of dirty submodules. This is
orthogonal to the application of patches changing submodules.

Signed-off-by: Johannes Schindelin <***@gmx.de>


Commit: 37ae6589e83802f28a91eb982bcd88596fdff5cb
https://github.com/msysgit/git/commit/37ae6589e83802f28a91eb982bcd88596fdff5cb
Author: Heiko Voigt <***@hvoigt.net>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M git-gui/Makefile
A git-gui/git-gui--askyesno
M git-gui/git-gui.sh

Log Message:
-----------
git-gui: provide question helper for retry fallback on Windows

Make use of the new environment variable GIT_ASK_YESNO to support the
recently implemented fallback in case unlink, rename or rmdir fail for
files in use on Windows. The added dialog will present a yes/no question
to the the user which will currently be used by the windows compat layer
to let the user retry a failed file operation.

Signed-off-by: Heiko Voigt <***@hvoigt.net>


Commit: a0fb39f8b012280d90ed22156178950c7221346c
https://github.com/msysgit/git/commit/a0fb39f8b012280d90ed22156178950c7221346c
Author: Johannes Schindelin <***@gmx.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M git-gui/git-gui.sh

Log Message:
-----------
git gui: set GIT_ASKPASS=git-gui--askpass if not set yet

Signed-off-by: Johannes Schindelin <***@gmx.de>


Commit: 57223687d11de54b716a8e6ffc6dd31df3caf62a
https://github.com/msysgit/git/commit/57223687d11de54b716a8e6ffc6dd31df3caf62a
Author: Karsten Blees <***@dcon.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M git-gui/lib/browser.tcl

Log Message:
-----------
git-gui: fix encoding in git-gui file browser

Assume git tree objects (i.e. output of git-ls-tree) are encoded in system
encoding, for display in the git-gui file browser.

Signed-off-by: Karsten Blees <***@dcon.de>


Commit: 769f31dff9acee29d7aec354cce3c4609415a991
https://github.com/msysgit/git/commit/769f31dff9acee29d7aec354cce3c4609415a991
Author: Karsten Blees <***@dcon.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M gitk-git/gitk

Log Message:
-----------
gitk: fix file name encoding in diff hunk headers

Decode file names from system encoding in all diff hunk header lines, not
just the first (i.e. print nice file names in 'rename from' / 'rename to' /
'Binary files' lines, too).

Signed-off-by: Karsten Blees <***@dcon.de>


Commit: 38c2352328e049ecafd9f6c07708e559c895e308
https://github.com/msysgit/git/commit/38c2352328e049ecafd9f6c07708e559c895e308
Author: Johannes Schindelin <***@gmx.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M gitk-git/gitk

Log Message:
-----------
Work around the command line limit on Windows

On Windows, there are dramatic problems when a command line grows
beyond PATH_MAX, which is restricted to 8191 characters on XP and
later (according to http://support.microsoft.com/kb/830473).

Work around this by just cutting off the command line at that length
(actually, at a space boundary) in the hope that only negative
refs are chucked: gitk will then do unnecessary work, but that is
still better than flashing the gitk window and exiting with exit
status 5 (which no Windows user is able to make sense of).

The first fix caused Tcl to fail to compile the regexp, see msysGit issue
427. Here is another fix without using regexp, and using a more relaxed
command line length limit to fix the original issue 387.

Signed-off-by: Sebastian Schuberth <***@gmail.com>
Signed-off-by: Pat Thoyts <***@users.sourceforge.net>
Signed-off-by: Johannes Schindelin <***@gmx.de>


Commit: 2a4e2e8351ea78c69117b521ca2279a154f9b463
https://github.com/msysgit/git/commit/2a4e2e8351ea78c69117b521ca2279a154f9b463
Author: Chris West (Faux) <***@goeswhere.com>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M gitk-git/gitk

Log Message:
-----------
Fix another invocation of git from gitk with an overly long command-line

Signed-off-by: Sebastian Schuberth <***@gmail.com>


Commit: a054dd1ef0ce8b14c2b9d25b82eaf63fbada64d4
https://github.com/msysgit/git/commit/a054dd1ef0ce8b14c2b9d25b82eaf63fbada64d4
Author: Johannes Schindelin <***@gmx.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M Documentation/config.txt
M builtin/receive-pack.c
M t/t5516-fetch-push.sh

Log Message:
-----------
Add a few more values for receive.denyCurrentBranch

For a long time, this developer thought that Git's insistence that
pushing into the current branch is evil was completely merited.

Just for fun, the original patch tried to show people that Git is right
there, and that it causes more trouble than it does good when Git allows
you to try to update the working tree for fast-forwards, or to detach the
HEAD, depending on some config settings.

Surprisingly, the opposite was shown.

So here is the support for two new options you can give the config
variable receive.denyCurrentBranch:

'updateInstead':
Try to merge the working tree with the new tip of the branch
(which can lead to really horrible merge conflicts).

'detachInstead':
Detach the HEAD, thereby avoiding a disagreement between the
HEAD and the index (as well as the working tree), possibly
leaving the local user wondering how on earth her HEAD became
so detached.

Signed-off-by: Johannes Schindelin <***@gmx.de>


Commit: 99a7f311dfc923d233157005425bdd16867bea4c
https://github.com/msysgit/git/commit/99a7f311dfc923d233157005425bdd16867bea4c
Author: Johannes Schindelin <***@gmx.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M builtin/receive-pack.c

Log Message:
-----------
Let deny.currentBranch=updateInstead ignore submodules

They are not affected by the update anyway.

Signed-off-by: Johannes Schindelin <***@gmx.de>


Commit: 55113fe2f4319f6960cb471f14506a8c077a7cb5
https://github.com/msysgit/git/commit/55113fe2f4319f6960cb471f14506a8c077a7cb5
Author: Erik Faye-Lund <***@googlemail.com>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M git-send-email.perl

Log Message:
-----------
send-email: accept absolute path even on Windows

Signed-off-by: Johannes Schindelin <***@gmx.de>


Commit: 0ec10f1679d3ae2cda6c5b93aa6e2e0812e227ec
https://github.com/msysgit/git/commit/0ec10f1679d3ae2cda6c5b93aa6e2e0812e227ec
Author: bert Dvornik <dvornik+***@gmail.com>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M git-send-email.perl

Log Message:
-----------
send-email: handle Windows paths for display just like we do for processing

In git-send-email.perl, here are two checks to determine if
$smtp_server is an absolute path (so it'll be treated as a mailer) or
not (so it'll be treated as a hostname). The one that handles actual
mail processing has been taught to recognize Windows pathnames by
commit 33b2e81f.

The other check is just to tell the user what happened, so it's far
less important, but the current state is that we will still claim to
the user that c:/foo/bar is a server. =) This makes the second check
consistent with the first.

Signed-off-by: bert Dvornik <dvornik+***@gmail.com>


Commit: ac709462ee289f569d8544b282ce71e58a54ea83
https://github.com/msysgit/git/commit/ac709462ee289f569d8544b282ce71e58a54ea83
Author: Johannes Schindelin <***@gmx.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M compat/mingw.c
M compat/mingw.h
M git-compat-util.h
M path.c
M shell.c

Log Message:
-----------
Add a Windows-specific fallback to getenv("HOME");

This fixes msysGit issue 482 properly.

Signed-off-by: Johannes Schindelin <***@gmx.de>


Commit: 33719808942a37a3edaf2ca302fd15703027ed63
https://github.com/msysgit/git/commit/33719808942a37a3edaf2ca302fd15703027ed63
Author: Cezary Zawadka <***@gmail.com>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M cache.h
M compat/mingw.c
M compat/mingw.h
M git-compat-util.h
M path.c

Log Message:
-----------
Allow using UNC path for git repository

[efl: moved MinGW-specific part to compat/]

[jes: fixed compilation on non-Windows]

Signed-off-by: Cezary Zawadka <***@gmail.com>
Signed-off-by: Erik Faye-Lund <***@gmail.com>
Signed-off-by: Johannes Schindelin <***@gmx.de>


Commit: cc13bd20493f540afa5c1f0f7220a0db87a75c58
https://github.com/msysgit/git/commit/cc13bd20493f540afa5c1f0f7220a0db87a75c58
Author: Eric Sunshine <***@sunshineco.com>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M compat/mingw.c

Log Message:
-----------
Make mingw_offset_1st_component() behave consistently for all paths.

mingw_offset_1st_component() returns "foo" for inputs "/foo" and
"c:/foo", but inconsistently returns "/foo" for UNC input
"/machine/share/foo". Fix it to return "foo" for all cases.

Reference: http://groups.google.com/group/msysgit/browse_thread/thread/c0af578549b5dda0

Signed-off-by: Eric Sunshine <***@sunshineco.com>
Signed-off-by: Johannes Schindelin <***@gmx.de>


Commit: f35ada21036719af1f8200aa0387d1f74a4eeda7
https://github.com/msysgit/git/commit/f35ada21036719af1f8200aa0387d1f74a4eeda7
Author: Johannes Schindelin <***@gmx.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M http.c

Log Message:
-----------
Handle http.* config variables pointing to files gracefully on Windows

On Windows, we would like to be able to have a default http.sslCAinfo
that points to an MSys path (i.e. relative to the installation root of
Git). As Git is a MinGW program, it has to handle the conversion
of the MSys path into a MinGW32 path itself.

Since system_path() considers paths starting with '/' as absolute, we
have to convince it to make a Windows path by stripping the leading
slash.

Signed-off-by: Johannes Schindelin <***@gmx.de>


Commit: 0364fff47785a1a51ce7cd5cda7ba670eb7c511c
https://github.com/msysgit/git/commit/0364fff47785a1a51ce7cd5cda7ba670eb7c511c
Author: Evgeny Pashkin <***@cognitive.ru>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M compat/mingw.c

Log Message:
-----------
Fixed wrong path delimiter in exe finding

On Windows XP3 in git bash
git clone ***@github.com:octocat/Spoon-Knife.git
cd Spoon-Knife
git gui
menu Remote\Fetch from\origin
error: cannot spawn git: No such file or directory
error: could not run rev-list

if u run
git fetch --all
it worked normal in git bash or gitgui tools

In second version CreateProcess get 'C:\Git\libexec\git-core/git.exe' in
first version - C:/Git/libexec/git-core/git.exe and not executes (unix
slashes)

after fixing C:\Git\libexec\git-core\git.exe or
C:/Git/libexec/git-core\git.exe it works normal

Signed-off-by: Johannes Schindelin <***@gmx.de>


Commit: 6f89d0453bda32fd5e21d35647f0e0c548bbf8fa
https://github.com/msysgit/git/commit/6f89d0453bda32fd5e21d35647f0e0c548bbf8fa
Author: Heiko Voigt <***@hvoigt.net>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M git-sh-setup.sh
M git-submodule.sh

Log Message:
-----------
Windows: Always normalize paths to Windows-style

It appears that `pwd` returns the POSIX-style or the DOS-style path
depending which style the previous `cd` used. To normalize, enforce `pwd
-W` in scripts.
I build git and run its tests outside the msysgit environment. Does that
explain the difference? (And I use CMD.)
It does not make a difference for me. I started cmd.exe at
c:\msysgit\git\t, added c:\msysgit\bin temporarily to PATH, and ran
"sh t5526-fetch-submodules.sh -i -v", and the test still fails.
Yes it probably does. Johannes said that he runs the tests outside of
the msysgit folder. That way there is only one path the submodule script
gets reported and not two like '/c/msysgit/git' and '/git'.

That would explain to me why it is passing.

I am afraid that the only solution is to patch msys itself to report the
long absolute path when passing window style paths to cd. Currently when
I do

cd c:/msysgit/git

I will end up in '/git' instead of the long path.

I found that there is a -W option to pwd in msys bash which makes it
always return the real windows path. A normalization in that direction
is unique and thus might be more robust. Have a look at the attached
patch. With this at least t5526 passes. I was not able to run the whole
testsuite properly at the moment. I can have a look at that tomorrow.

What do you think?

Cheers Heiko

Signed-off-by: Johannes Schindelin <***@gmx.de>


Commit: a827240e85f54da29cc6964acf56fed0bad248e3
https://github.com/msysgit/git/commit/a827240e85f54da29cc6964acf56fed0bad248e3
Author: Johannes Schindelin <***@gmx.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M gitweb/gitweb.perl

Log Message:
-----------
gitweb: Allow line number toggling with Javascript

Signed-off-by: Johannes Schindelin <***@gmx.de>


Commit: d93b43e5c148b9b9d7e1180f61304c4ec5395d5f
https://github.com/msysgit/git/commit/d93b43e5c148b9b9d7e1180f61304c4ec5395d5f
Author: Johannes Schindelin <***@gmx.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M gitweb/gitweb.perl

Log Message:
-----------
Gitweb: make line number toggling work for Firefox and Safari

Signed-off-by: Johannes Schindelin <***@gmx.de>


Commit: 684b2ed72cb2e1165db2fb6406d65f9781cca2e5
https://github.com/msysgit/git/commit/684b2ed72cb2e1165db2fb6406d65f9781cca2e5
Author: Johannes Schindelin <***@gmx.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M gitweb/gitweb.perl

Log Message:
-----------
Gitweb: add support for Alex Gorbatchev's SyntaxHighlighter in Javascript

Gitweb is not exactly what you would call server-friendly, so let's
offload one more task onto the client.

To enable this, put something like this into your gitweb_config.perl:

$feature{'syntaxhighlighter_js'}{'default'} = [{
url => '/SyntaxHighlighter/',
style => 'Django',
theme => 'FadeToGrey'
}];

and clone git://github.com/alexgorbatchev/SyntaxHighlighter into the
directory you specified via the 'url' parameter.

Signed-off-by: Johannes Schindelin <***@gmx.de>


Commit: 3303b20cb5d1706c347ddd25b96cf076c63b63a7
https://github.com/msysgit/git/commit/3303b20cb5d1706c347ddd25b96cf076c63b63a7
Author: Johannes Schindelin <***@gmx.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M gitweb/gitweb.perl

Log Message:
-----------
Only switch on the line number toggle when highlighting is activated

Signed-off-by: Johannes Schindelin <***@gmx.de>


Commit: 42a345ed19e5264e6b0258844418e4b95d1695e7
https://github.com/msysgit/git/commit/42a345ed19e5264e6b0258844418e4b95d1695e7
Author: Johannes Schindelin <***@gmx.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M gitweb/gitweb.perl

Log Message:
-----------
gitweb (SyntaxHighlighter): interpret #l<line-number>

It is pretty convenient to refer to a line number by appending, say,
highlighter, too.

Signed-off-by: Johannes Schindelin <***@gmx.de>


Commit: a8d3fb36d790ad4f9c911004247f6ed83892a0c5
https://github.com/msysgit/git/commit/a8d3fb36d790ad4f9c911004247f6ed83892a0c5
Author: Johannes Schindelin <***@gmx.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M builtin/grep.c

Log Message:
-----------
git grep -O -i: if the pager is 'less', pass the '-i' option

Signed-off-by: Johannes Schindelin <***@gmx.de>


Commit: 4b86a7272286f59c6d0f8b5d2796631c90720928
https://github.com/msysgit/git/commit/4b86a7272286f59c6d0f8b5d2796631c90720928
Author: Johannes Schindelin <***@gmx.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M builtin/grep.c

Log Message:
-----------
grep -I: do not bother to read known-binary files

Incidentally, this makes grep -I respect the "binary" attribute (actually,
the "-text" attribute, but "binary" implies that).

Since the attributes are not thread-safe, we now need to switch off
threading if -I was passed.

Signed-off-by: Johannes Schindelin <***@gmx.de>


Commit: ff7689cabd5be65823f9edaadf40af32c2da31c5
https://github.com/msysgit/git/commit/ff7689cabd5be65823f9edaadf40af32c2da31c5
Author: Sebastian Schuberth <***@gmail.com>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M git-sh-setup.sh
M git-submodule.sh

Log Message:
-----------
submodule: Fix t7400, t7405, t7406 for msysGit

Again, avoid using echo (which issues DOS line endings on msysGit) to not mix
with Unix line-endings issued by git built-ins, even if this is at the cost of
calling an external executable (cat) instead of a shell built-in (echo).


Commit: e3f6e8472f79cc0b13b06274187f7adea63f7299
https://github.com/msysgit/git/commit/e3f6e8472f79cc0b13b06274187f7adea63f7299
Author: Sebastian Schuberth <***@gmail.com>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M git-am.sh

Log Message:
-----------
am: Use cat instead of echo to avoid DOS line-endings (fixes t4150)

Along the lines of 05d0e3b and f33946d, use cat instead of echo to avoid
line ending mismatches in the test result of "am empty-file does not
infloop" which make the test fail.

Signed-off-by: Sebastian Schuberth <***@gmail.com>


Commit: b74805e09fe5b3c9fc8cbfbb3188d4c278ee0e06
https://github.com/msysgit/git/commit/b74805e09fe5b3c9fc8cbfbb3188d4c278ee0e06
Author: Johannes Schindelin <***@gmx.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M Documentation/git-pull.txt
M git-pull.sh

Log Message:
-----------
Teach 'git pull' to handle --rebase=interactive

Signed-off-by: Johannes Schindelin <***@gmx.de>


Commit: 2bb52a3532a67eb4fcbca74aa40e679cc8abafa2
https://github.com/msysgit/git/commit/2bb52a3532a67eb4fcbca74aa40e679cc8abafa2
Author: Johannes Schindelin <***@gmx.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M Documentation/config.txt
M git-pull.sh

Log Message:
-----------
Handle the branch.<name>.rebase value 'interactive'

Signed-off-by: Johannes Schindelin <***@gmx.de>


Commit: 9cefb51ca8f886a79fd6192e1a9ff03699e7b03d
https://github.com/msysgit/git/commit/9cefb51ca8f886a79fd6192e1a9ff03699e7b03d
Author: Johannes Schindelin <***@gmx.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M builtin/remote.c

Log Message:
-----------
Teach 'git remote' that the config var branch.*.rebase can be 'interactive'

Signed-off-by: Johannes Schindelin <***@gmx.de>


Commit: cc0df18a6e03ba7366af0aa305fddf9602b8047c
https://github.com/msysgit/git/commit/cc0df18a6e03ba7366af0aa305fddf9602b8047c
Author: Johannes Schindelin <***@gmx.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M t/t7407-submodule-foreach.sh

Log Message:
-----------
Work around funny CR issue

This is really a problem with shell scripts being called on msysGit,
but there are more important bugs to fix for the moment.

Signed-off-by: Johannes Schindelin <***@gmx.de>


Commit: af7cdc81c3d7c04f204d1b6631465a84b337dd9e
https://github.com/msysgit/git/commit/af7cdc81c3d7c04f204d1b6631465a84b337dd9e
Author: Heiko Voigt <***@hvoigt.net>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M t/test-lib.sh

Log Message:
-----------
work around misdetection of stdin attached to a tty

Git on Windows was made aware of the fact that sometimes a file may be
used by another process and so an operation may fail but the user might
be able to fix it and is asking for confirmation whether it should
retry.

This is implemented in a way that git only asks in case stdin and stderr
are attached to a tty. Unfortunately this seems to be misdetected
sometimes causing the testsuite to hang when git is waiting for a user
answer.

This patch works around the situation.

Signed-off-by: Heiko Voigt <***@hvoigt.net>


Commit: 304653280b26eb054738f6cfaffc8b40abec409a
https://github.com/msysgit/git/commit/304653280b26eb054738f6cfaffc8b40abec409a
Author: Johannes Schindelin <***@gmx.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M t/t1501-worktree.sh

Log Message:
-----------
Handle new t1501 test case properly with MinGW

Signed-off-by: Johannes Schindelin <***@gmx.de>


Commit: 063aeb4ecf2f27cd4f8f6b1cbb00513ddbc4fa79
https://github.com/msysgit/git/commit/063aeb4ecf2f27cd4f8f6b1cbb00513ddbc4fa79
Author: Johannes Schindelin <***@gmx.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M t/t0081-line-buffer.sh

Log Message:
-----------
MinGW: Skip test redirecting to fd 4

... because that does not work in MinGW.

Signed-off-by: Johannes Schindelin <***@gmx.de>


Commit: 18841ac5be7a94f00f0120e7002693a60bfbab56
https://github.com/msysgit/git/commit/18841ac5be7a94f00f0120e7002693a60bfbab56
Author: Pat Thoyts <***@users.sourceforge.net>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M t/t3102-ls-tree-wildcards.sh

Log Message:
-----------
t3102: Windows filesystems may not use a literal asterisk in filenames.

Exclude these tests when using MINGW.

Signed-off-by: Pat Thoyts <***@users.sourceforge.net>


Commit: 732643449327484912b21be9488fd819ec8a2fec
https://github.com/msysgit/git/commit/732643449327484912b21be9488fd819ec8a2fec
Author: Pat Thoyts <***@users.sourceforge.net>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M t/t5407-post-rewrite-hook.sh

Log Message:
-----------
t5407: Fix line-ending dependency in post-rewrite.args

On msysGit creating the post-rewrite.args file using 'echo' has different
line endings from the expected comparison. Using perl normalizes the line
endings for each generated file.

Signed-off-by: Pat Thoyts <***@users.sourceforge.net>


Commit: e2a2d73cdd09658f754b5b9403ed3b831f6e1967
https://github.com/msysgit/git/commit/e2a2d73cdd09658f754b5b9403ed3b831f6e1967
Author: Johannes Schindelin <***@gmx.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M t/lib-credential.sh

Log Message:
-----------
t030[02]: work around CR/LF issue

It is the old shell-script issue we had in a few other tests already.

Signed-off-by: Johannes Schindelin <***@gmx.de>


Commit: 1a93e6d5b332ee11cda1c6305c83d73ea7ec24c0
https://github.com/msysgit/git/commit/1a93e6d5b332ee11cda1c6305c83d73ea7ec24c0
Author: Sverre Rabbelier <***@gmail.com>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M t/t9350-fast-export.sh

Log Message:
-----------
t9350: point out that refs are not updated correctly

This happens only when the corresponding commits are not exported in
the current fast-export run. This can happen either when the relevant
commit is already marked, or when the commit is explicitly marked
as UNINTERESTING with a negative ref by another argument.

This breaks fast-export basec remote helpers.

Signed-off-by: Sverre Rabbelier <***@gmail.com>


Commit: f803786f5efc5e6177254a3b2eed1b65107c0d35
https://github.com/msysgit/git/commit/f803786f5efc5e6177254a3b2eed1b65107c0d35
Author: Johannes Schindelin <***@gmx.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M git-merge-octopus.sh

Log Message:
-----------
Windows: make sure that merge-octopus only outputs LF line endings

This happens to shut up t7602 on Windows which would otherwise take
the different line endings for a sign that the merge failed.

Signed-off-by: Johannes Schindelin <***@gmx.de>


Commit: b5b57e0fee80ff63aa14ac86324f7db7754eea22
https://github.com/msysgit/git/commit/b5b57e0fee80ff63aa14ac86324f7db7754eea22
Author: Johannes Schindelin <***@gmx.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M t/lib-credential.sh
M t/t7407-submodule-foreach.sh
M t/t9001-send-email.sh
M t/test-lib.sh

Log Message:
-----------
Introduce and use test_cmp_text

On Windows, we suffer from frequently leaked DOS line endings. Let's
ignore them.

Signed-off-by: Johannes Schindelin <***@gmx.de>


Commit: 0caeccfa4b563f77000f976be830c90de64f6956
https://github.com/msysgit/git/commit/0caeccfa4b563f77000f976be830c90de64f6956
Author: Karsten Blees <***@dcon.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M compat/mingw.c

Log Message:
-----------
Enable color output in Windows cmd.exe

Git requires the TERM environment variable to be set for all color*
settings. Simulate the TERM variable if it is not set (default on Windows).

Signed-off-by: Karsten Blees <***@dcon.de>
Signed-off-by: Johannes Schindelin <***@gmx.de>


Commit: 49a35951fb36d668fa64617b8da12c5dbabab44b
https://github.com/msysgit/git/commit/49a35951fb36d668fa64617b8da12c5dbabab44b
Author: Karsten Blees <***@dcon.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M compat/mingw.h
M compat/winansi.c

Log Message:
-----------
Support Unicode console output on Windows

WriteConsoleW seems to be the only way to reliably print unicode to the
console (without weird code page conversions).

Also redirects vfprintf to the winansi.c version.

Signed-off-by: Karsten Blees <***@dcon.de>
Signed-off-by: Johannes Schindelin <***@gmx.de>


Commit: 9f6e3d3d30d15b1b150abf52380cd35af967eeb7
https://github.com/msysgit/git/commit/9f6e3d3d30d15b1b150abf52380cd35af967eeb7
Author: Karsten Blees <***@dcon.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M compat/winansi.c

Log Message:
-----------
Detect console streams more reliably on Windows

GetStdHandle(STD_OUTPUT_HANDLE) doesn't work for stderr if stdout is
redirected. Use _get_osfhandle of the FILE* instead.

_isatty() is true for all character devices (including parallel and serial
ports). Check return value of GetConsoleScreenBufferInfo instead to
reliably detect console handles (also don't initialize internal state from
an uninitialized CONSOLE_SCREEN_BUFFER_INFO structure if the function
fails).

Signed-off-by: Karsten Blees <***@dcon.de>
Signed-off-by: Johannes Schindelin <***@gmx.de>


Commit: c191bc5e63cbdeb4ce0d35d378c5c22b91ba0837
https://github.com/msysgit/git/commit/c191bc5e63cbdeb4ce0d35d378c5c22b91ba0837
Author: Karsten Blees <***@dcon.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M compat/winansi.c

Log Message:
-----------
Warn if the Windows console font doesn't support Unicode

Unicode console output won't display correctly with default settings
because the default console font ("Terminal") only supports the system's
OEM charset. Unfortunately, this is a user specific setting, so it cannot
be easily fixed by e.g. some registry tricks in the setup program.

This change prints a warning on exit if console output contained non-ascii
characters and the console font is supposedly not a TrueType font (which
usually have decent Unicode support).

Signed-off-by: Karsten Blees <***@dcon.de>
Signed-off-by: Johannes Schindelin <***@gmx.de>


Commit: 0542f44b1545b7ed493be9db88d51cb5d0e1efed
https://github.com/msysgit/git/commit/0542f44b1545b7ed493be9db88d51cb5d0e1efed
Author: Karsten Blees <***@dcon.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M compat/win32/dirent.h
M config.mak.uname

Log Message:
-----------
Win32 dirent: remove unused dirent.d_ino member

There are no proper inodes on Windows, so remove dirent.d_ino and #define
NO_D_INO_IN_DIRENT in the Makefile (this skips e.g. an ineffective qsort in
fsck.c).

Signed-off-by: Karsten Blees <***@dcon.de>
Signed-off-by: Erik Faye-Lund <***@gmail.com>


Commit: c3bb541dcad67ef154d25c3e180196e239c32b23
https://github.com/msysgit/git/commit/c3bb541dcad67ef154d25c3e180196e239c32b23
Author: Karsten Blees <***@dcon.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M compat/win32/dirent.h

Log Message:
-----------
Win32 dirent: remove unused dirent.d_reclen member

Remove the union around dirent.d_type and the unused dirent.d_reclen member
(which was necessary for compatibility with the MinGW dirent runtime, which
is no longer used).

Signed-off-by: Karsten Blees <***@dcon.de>
Signed-off-by: Erik Faye-Lund <***@gmail.com>


Commit: f0aec2878f64609c1e95bba223a2764d1082ff9a
https://github.com/msysgit/git/commit/f0aec2878f64609c1e95bba223a2764d1082ff9a
Author: Karsten Blees <***@dcon.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M compat/win32/dirent.h

Log Message:
-----------
Win32 dirent: change FILENAME_MAX to MAX_PATH

FILENAME_MAX and MAX_PATH are both 260 on Windows, however, MAX_PATH is
used throughout the other Win32 code in Git, and also defines the length
of file name buffers in the Win32 API (e.g. WIN32_FIND_DATA.cFileName,
from which we're copying the dirent data).

Signed-off-by: Karsten Blees <***@dcon.de>
Signed-off-by: Erik Faye-Lund <***@gmail.com>


Commit: 5c1a51dcb9cdb9c8c61457eaf87d5543392e2b4b
https://github.com/msysgit/git/commit/5c1a51dcb9cdb9c8c61457eaf87d5543392e2b4b
Author: Karsten Blees <***@dcon.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M compat/win32/dirent.c

Log Message:
-----------
Win32 dirent: clarify #include directives

Git-compat-util.h is two dirs up, and already includes <dirent.h> (which
is the same as "dirent.h" due to -Icompat/win32 in the Makefile).

Signed-off-by: Karsten Blees <***@dcon.de>
Signed-off-by: Erik Faye-Lund <***@gmail.com>


Commit: c0ae329b6df1984b922782120ff73083127531af
https://github.com/msysgit/git/commit/c0ae329b6df1984b922782120ff73083127531af
Author: Karsten Blees <***@dcon.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M compat/win32/dirent.c

Log Message:
-----------
Win32 dirent: improve dirent implementation

Improve the dirent implementation by removing the relics that were once
necessary to plug into the now unused MinGW runtime, in preparation for
Unicode file name support.

Move FindFirstFile to opendir, and FindClose to closedir, with the
following implications:
- DIR.dd_name is no longer needed
- chdir(one); opendir(relative); chdir(two); readdir() works as expected
(i.e. lists one/relative instead of two/relative)
- DIR.dd_handle is a valid handle for the entire lifetime of the DIR struct
- thus, all checks for dd_handle == INVALID_HANDLE_VALUE and dd_handle == 0
have been removed
- the special case that the directory has been fully read (which was
previously explicitly tracked with dd_handle == INVALID_HANDLE_VALUE &&
dd_stat != 0) is now handled implicitly by the FindNextFile error
handling code (if a client continues to call readdir after receiving
NULL, FindNextFile will continue to fail with ERROR_NO_MORE_FILES, to
the same effect)
- extracting dirent data from WIN32_FIND_DATA is needed in two places, so
moved to its own method
- GetFileAttributes is no longer needed. The same information can be
obtained from the FindFirstFile error code, which is ERROR_DIRECTORY if
the name is NOT a directory (-> ENOTDIR), otherwise we can use
err_win_to_posix (e.g. ERROR_PATH_NOT_FOUND -> ENOENT). The
ERROR_DIRECTORY case could be fixed in err_win_to_posix, but this
probably breaks other functionality.

Removes the ERROR_NO_MORE_FILES check after FindFirstFile (this was
fortunately a NOOP (searching for '*' always finds '.' and '..'),
otherwise the subsequent code would have copied data from an uninitialized
buffer).

Changes malloc to git support function xmalloc, so opendir will die() if
out of memory, rather than failing with ENOMEM and letting git work on
incomplete directory listings (error handling in dir.c is quite sparse).

Signed-off-by: Karsten Blees <***@dcon.de>
Signed-off-by: Erik Faye-Lund <***@gmail.com>


Commit: 47639080f8edcb8196bf4a33c28ce0a1099f32e8
https://github.com/msysgit/git/commit/47639080f8edcb8196bf4a33c28ce0a1099f32e8
Author: Karsten Blees <***@dcon.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M compat/mingw.c

Log Message:
-----------
Win32: fix potential multi-threading issue

...by removing a static buffer in do_stat_internal.

Signed-off-by: Karsten Blees <***@dcon.de>
Signed-off-by: Erik Faye-Lund <***@gmail.com>


Commit: c30d14f685c4aa4d78104b19bdda60a30b01bdd4
https://github.com/msysgit/git/commit/c30d14f685c4aa4d78104b19bdda60a30b01bdd4
Author: Karsten Blees <***@dcon.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M compat/mingw.c
M compat/mingw.h

Log Message:
-----------
Win32: move main macro to a function

The code in the MinGW main macro is getting more and more complex, move to
a separate initialization function for readabiliy and extensibility.

Signed-off-by: Karsten Blees <***@dcon.de>
Signed-off-by: Erik Faye-Lund <***@gmail.com>


Commit: 43b0c5b76eea162fa9c77c4b186aa780de9becf1
https://github.com/msysgit/git/commit/43b0c5b76eea162fa9c77c4b186aa780de9becf1
Author: Pat Thoyts <***@users.sourceforge.net>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M compat/mingw.h
M http-fetch.c
M remote-curl.c

Log Message:
-----------
Followup for "Win32: move main macro to a function" for const correctness.

This handles const warnings that break the build raised by http-fetch and
remote-curl main functions that have different const arguments.

Signed-off-by: Pat Thoyts <***@users.sourceforge.net>


Commit: b14e7ad2971f38a14ebc34683c785fe160c880e8
https://github.com/msysgit/git/commit/b14e7ad2971f38a14ebc34683c785fe160c880e8
Author: Karsten Blees <***@dcon.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M compat/mingw.c

Log Message:
-----------
MinGW: disable CRT command line globbing

MingwRT listens to _CRT_glob to decide if __getmainargs should
perform globbing, with the default being that it should.
Unfortunately, __getmainargs globbing is sub-par; for instance
patterns like "*.c" will only match c-sources in the current
directory.

Disable __getmainargs' command line wildcard expansion, so these
patterns will be left untouched, and handled by Git's superior
built-in globbing instead.

MSVC defaults to no globbing, so we don't need to do anything
in that case.

This fixes t5505 and t7810.

Signed-off-by: Karsten Blees <***@dcon.de>
Signed-off-by: Erik Faye-Lund <***@gmail.com>


Commit: 5c018f871e6bf8f356713817d32e6985e805eafc
https://github.com/msysgit/git/commit/5c018f871e6bf8f356713817d32e6985e805eafc
Author: Karsten Blees <***@dcon.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M compat/winansi.c

Log Message:
-----------
Unicode console: fix font warning on Vista and Win7

GetCurrentConsoleFontEx in an atexit routine doesn't work because git
closes stdout before exit (which also closes the console handle). Check
the console font when we first encounter a non-ascii character and only
schedule the warning message to be printed at exit (warnings go to stderr,
which is not closed by git).

Signed-off-by: Karsten Blees <***@dcon.de>
Signed-off-by: Erik Faye-Lund <***@gmail.com>


Commit: b0f72507142f7fc81ee1195b6f4120c655658b6e
https://github.com/msysgit/git/commit/b0f72507142f7fc81ee1195b6f4120c655658b6e
Author: Karsten Blees <***@dcon.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M compat/mingw.c

Log Message:
-----------
Revert "Windows: teach getenv to do a case-sensitive search"

This reverts commit df599e9612788b728ce43a03159b85f1fe624d6a.

As of 5e9637c6 "i18n: add infrastructure for translating Git with gettext",
eval_gettext uses MinGW envsubst.exe instead of git-sh-i18n--envsubst.exe
for variable substitution. This breaks git-submodule.sh messages and tests,
as envsubst.exe doesn't support case-sensitive environment lookup (the same
is true for almost everything on Windows, including MSys and Cygwin tools).

30a615ac "Windows/i18n: rename $path to prevent clashes with $PATH" renames
the conflicting variable in git-submodule.sh, so that it works on Windows
(i.e. with case-insensitive environment, regardless of the toolset).

Revert to the documented behaviour of case-insensitive environment on
Windows.

Signed-off-by: Karsten Blees <***@dcon.de>


Commit: 803bb0011242a59334fc0bbeb789a7cd1049dfeb
https://github.com/msysgit/git/commit/803bb0011242a59334fc0bbeb789a7cd1049dfeb
Author: Karsten Blees <***@dcon.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M compat/mingw.c

Log Message:
-----------
Revert "mingw.c: move definition of mingw_getenv down"

This reverts commit 06bc4b796ad69ba93f0a8c451368602e0553c2d3.

Signed-off-by: Karsten Blees <***@dcon.de>


Commit: cdac0991da5baf456a00f7b54dfd6d2f1e066c3b
https://github.com/msysgit/git/commit/cdac0991da5baf456a00f7b54dfd6d2f1e066c3b
Author: Karsten Blees <***@dcon.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M compat/winansi.c

Log Message:
-----------
MSVC: fix winansi.c compile errors

Some constants (such as LF_FACESIZE) are undefined with -DNOGDI (set in the
Makefile), and CONSOLE_FONT_INFOEX is available in MSVC, but not in MinGW.

Cast FARPROC to PGETCURRENTCONSOLEFONTEX to suppress MSVC compiler warning.

Signed-off-by: Karsten Blees <***@dcon.de>
Signed-off-by: Johannes Schindelin <***@gmx.de>


Commit: c5787c5c0ec0b3a663b2fb12aaed368e12387199
https://github.com/msysgit/git/commit/c5787c5c0ec0b3a663b2fb12aaed368e12387199
Author: Karsten Blees <***@dcon.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M compat/mingw.c
M compat/mingw.h
M compat/winansi.c

Log Message:
-----------
Win32: Thread-safe windows console output

Winansi.c has many static variables that are accessed and modified from
the [v][f]printf / fputs functions overridden in the file. This may cause
multi threaded git commands that print to the console to produce corrupted
output or even crash.

Additionally, winansi.c doesn't override all functions that can be used to
print to the console (e.g. fwrite, write, fputc are missing), so that ANSI
escapes don't work properly for some git commands (e.g. git-grep).

Instead of doing ANSI emulation in just a few wrapped functions on top of
the IO API, let's plug into the IO system and take advantage of the thread
safety inherent to the IO system.

Redirect stdout and stderr to a pipe if they point to the console. A
background thread reads from the pipe, handles ANSI escape sequences and
UTF-8 to UTF-16 conversion, then writes to the console.

The pipe-based stdout and stderr replacements must be set to unbuffered, as
MSVCRT doesn't support line buffering and fully buffered streams are
inappropriate for console output.

Due to the byte-oriented pipe, ANSI escape sequences and multi-byte UTF-8
sequences can no longer be expected to arrive in one piece. Replace the
string-based ansi_emulate() with a simple stateful parser (this also fixes
colored diff hunk headers, which were broken as of commit 2efcc977).

Override isatty to return true for the pipes redirecting to the console.

Exec/spawn obtain the original console handle to pass to the next process
via winansi_get_osfhandle().

All other overrides are gone, the default stdio implementations work as
expected with the piped stdout/stderr descriptors.

Global variables are either initialized on startup (single threaded) or
exclusively modified by the background thread. Threads communicate through
the pipe, no further synchronization is necessary.

The background thread is terminated by disonnecting the pipe after flushing
the stdio and pipe buffers. This doesn't work for anonymous pipes (created
via CreatePipe), as DisconnectNamedPipe only works on the read end, which
discards remaining data. Thus we have to setup the pipe manually, with the
write end beeing the server (opened with CreateNamedPipe) and the read end
the client (opened with CreateFile).

Limitations: doesn't track reopened or duped file descriptors, i.e.:
- fdopen(1/2) returns fully buffered streams
- dup(1/2), dup2(1/2) returns normal pipe descriptors (i.e. isatty() =
false, winansi_get_osfhandle won't return the original console handle)

Currently, only the git-format-patch command uses xfdopen(xdup(1)) (see
"realstdout" in builtin/log.c), but works well with these limitations.

Many thanks to Atsushi Nakagawa <***@chejz.com> for suggesting and
reviewing the thread-exit-mechanism.

Signed-off-by: Karsten Blees <***@dcon.de>


Commit: 6fe31f2baaacbf81be7630962d47fd6edfdf96f6
https://github.com/msysgit/git/commit/6fe31f2baaacbf81be7630962d47fd6edfdf96f6
Author: Karsten Blees <***@dcon.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M compat/mingw.c
M compat/mingw.h

Log Message:
-----------
Win32: add Unicode conversion functions

Add Unicode conversion functions to convert between Windows native UTF-16LE
encoding to UTF-8 and back.

To support repositories with legacy-encoded file names, the UTF-8 to UTF-16
conversion function tries to create valid, unique file names even for
invalid UTF-8 byte sequences, so that these repositories can be checked out
without error.

The current implementation leaves invalid UTF-8 bytes in range 0xa0 - 0xff
as is (producing printable Unicode chars \u00a0 - \u00ff, equivalent to
ISO-8859-1), and converts 0x80 - 0x9f to hex-code (\u0080 - \u009f are
control chars).

The Windows MultiByteToWideChar API was not used as it either drops invalid
UTF-8 sequences (on Win2k/XP; producing non-unique or even empty file
names) or converts them to the replacement char \ufffd (Vista/7; causing
ERROR_INVALID_NAME in subsequent calls to file system APIs).

Signed-off-by: Karsten Blees <***@dcon.de>


Commit: 944561598f4fb6d05277ee2e97c2a9122036f295
https://github.com/msysgit/git/commit/944561598f4fb6d05277ee2e97c2a9122036f295
Author: Karsten Blees <***@dcon.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M compat/mingw.c
M compat/mingw.h

Log Message:
-----------
Win32: Unicode file name support (except dirent)

Replaces Windows "ANSI" APIs dealing with file- or path names with their
Unicode equivalent, adding UTF-8/UTF-16LE conversion as necessary.

The dirent API (opendir/readdir/closedir) is updated in a separate commit.

Adds trivial wrappers for access, chmod and chdir.

Adds wrapper for mktemp (needed for both mkstemp and mkdtemp).

The simplest way to convert a repository with legacy-encoded (e.g. Cp1252)
file names to UTF-8 ist to checkout with an old msysgit version and
"git add --all & git commit" with the new version.

Signed-off-by: Karsten Blees <***@dcon.de>


Commit: 9657f04f064967211e22ccecb7a21895e10bbd16
https://github.com/msysgit/git/commit/9657f04f064967211e22ccecb7a21895e10bbd16
Author: Adam Roben <***@roben.org>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M compat/mingw.c

Log Message:
-----------
Fix launching of externals from Unicode paths

If Git were installed in a path containing non-ASCII characters,
commands such as git-am and git-submodule, which are implemented as
fatal: 'am' appears to be a git command, but we were not
able to execute it. Maybe git-am is broken?
This was due to lookup_prog not being Unicode-aware. It was somehow
missed in 2ee5a1a14ad17ff35f0ad52390a27fbbc41258f3.

Note that the only problem in this function was calling
GetFileAttributes instead of GetFileAttributesW. The calls to access()
were fine because access() is a macro which resolves to mingw_access,
which already handles Unicode correctly. But I changed lookup_prog to
use _waccess directly so that we only convert the path to UTF-16 once.

Signed-off-by: Adam Roben <***@roben.org>


Commit: 9511ea45789f5ad4b3cbb12274965b48fb519607
https://github.com/msysgit/git/commit/9511ea45789f5ad4b3cbb12274965b48fb519607
Author: Karsten Blees <***@dcon.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M compat/win32/dirent.c
M compat/win32/dirent.h

Log Message:
-----------
Win32: Unicode file name support (dirent)

Changes opendir/readdir to use Windows Unicode APIs and convert between
UTF-8/UTF-16.

Removes parameter checks that are already covered by xutftowcs_path. This
changes detection of ENAMETOOLONG from MAX_PATH - 2 to MAX_PATH (matching
is_dir_empty in mingw.c). If name + "/*" or the resulting absolute path is
too long, FindFirstFile fails and errno is set through err_win_to_posix.

Increases the size of dirent.d_name to accommodate the full
WIN32_FIND_DATA.cFileName converted to UTF-8 (UTF-16 to UTF-8 conversion
may grow by factor three in the worst case).

Signed-off-by: Karsten Blees <***@dcon.de>


Commit: bfe82ec08ab8e9f14abe95bf3c0a3f2a9ddb36cc
https://github.com/msysgit/git/commit/bfe82ec08ab8e9f14abe95bf3c0a3f2a9ddb36cc
Author: Karsten Blees <***@dcon.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M git-gui/git-gui.sh
M git-gui/lib/browser.tcl
M git-gui/lib/index.tcl
M gitk-git/gitk

Log Message:
-----------
Unicode file name support (gitk and git-gui)

Assumes file names in git tree objects are UTF-8 encoded.

On most unix systems, the system encoding (and thus the TCL system
encoding) will be UTF-8, so file names will be displayed correctly.

On Windows, it is impossible to set the system encoding to UTF-8. Changing
the TCL system encoding (via 'encoding system ...', e.g. in the startup
code) is explicitly discouraged by the TCL docs.

Change gitk and git-gui functions dealing with file names to always convert
from and to UTF-8.

Signed-off-by: Karsten Blees <***@dcon.de>


Commit: 13611709334e665141c8a7bc7eb90add1d1ebca6
https://github.com/msysgit/git/commit/13611709334e665141c8a7bc7eb90add1d1ebca6
Author: Karsten Blees <***@dcon.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M compat/mingw.c

Log Message:
-----------
Win32: Unicode arguments (outgoing)

Convert command line arguments from UTF-8 to UTF-16 when creating other
processes.

Signed-off-by: Karsten Blees <***@dcon.de>


Commit: 9640e69b4f58fcaa36299ca325a2451e89d4dc57
https://github.com/msysgit/git/commit/9640e69b4f58fcaa36299ca325a2451e89d4dc57
Author: Karsten Blees <***@dcon.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M compat/mingw.c

Log Message:
-----------
Win32: Unicode arguments (incoming)

Convert command line arguments from UTF-16 to UTF-8 on startup.

Signed-off-by: Karsten Blees <***@dcon.de>


Commit: bd973c01a009a1407e17de73ccf335e0485def9b
https://github.com/msysgit/git/commit/bd973c01a009a1407e17de73ccf335e0485def9b
Author: Karsten Blees <***@dcon.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M compat/winansi.c

Log Message:
-----------
Win32: sync Unicode console output and file system

Use the same Unicode conversion functions for file names and console
conversions so that the file system and console output are in sync when
checking out legacy encoded repositories (i.e. with invalid UTF-8 file
names).

Signed-off-by: Karsten Blees <***@dcon.de>


Commit: 6bc16330e8a3471c3978df0facccec9ae8f0b8ae
https://github.com/msysgit/git/commit/6bc16330e8a3471c3978df0facccec9ae8f0b8ae
Author: Karsten Blees <***@dcon.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M compat/mingw.c

Log Message:
-----------
Win32: Unicode environment (outgoing)

Convert environment from UTF-8 to UTF-16 when creating other processes.

Signed-off-by: Karsten Blees <***@dcon.de>


Commit: fc804b9f424f560c3ae396dbf64ad9dccbf5bdf8
https://github.com/msysgit/git/commit/fc804b9f424f560c3ae396dbf64ad9dccbf5bdf8
Author: Karsten Blees <***@dcon.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M compat/mingw.c
M compat/mingw.h

Log Message:
-----------
Win32: Unicode environment (incoming)

Convert environment from UTF-16 to UTF-8 on startup.

No changes to getenv() are necessary, as the MSVCRT version is implemented
on top of char **environ.

However, putenv / _wputenv from MSVCRT no longer work, for two reasons:
1. they try to keep environ, _wenviron and the Win32 process environment
in sync, using the default system encoding instead of UTF-8 to convert
between charsets
2. msysgit and MSVCRT use different allocators, memory allocated in git
cannot be freed by the CRT and vice versa

Implement mingw_putenv using the env_setenv helper function from the
environment merge code.

Note that in case of memory allocation failure, putenv now dies with error
message (due to xrealloc) instead of failing with ENOMEM. As git assumes
setenv / putenv to always succeed, this prevents it from continuing with
incorrect settings.

Signed-off-by: Karsten Blees <***@dcon.de>


Commit: 0fa305e8a2715a8eebd33124ebe39366ec07ee6d
https://github.com/msysgit/git/commit/0fa305e8a2715a8eebd33124ebe39366ec07ee6d
Author: Karsten Blees <***@dcon.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M t/t3901-i18n-patch.sh
M t/t4201-shortlog.sh
M t/t8005-blame-i18n.sh

Log Message:
-----------
MinGW: disable legacy encoding tests

On Windows, all native APIs are Unicode-based. It is impossible to pass
legacy encoded byte arrays to a process via command line or environment
variables. Disable the tests that try to do so.

In t3901, most tests still work if we don't mess up the repository encoding
in setup, so don't switch to ISO-8859-1 on MinGW.

Note that i18n tests that do their encoding tricks via encoded files (such
as t3900) are not affected by this.

Signed-off-by: Karsten Blees <***@dcon.de>


Commit: 2f2711f1c22c9f56946209fcd1cf24c9a2d1cb28
https://github.com/msysgit/git/commit/2f2711f1c22c9f56946209fcd1cf24c9a2d1cb28
Author: Karsten Blees <***@dcon.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M compat/mingw.c
M compat/mingw.h
M config.mak.uname

Log Message:
-----------
Win32: fix environment memory leaks

All functions that modify the environment have memory leaks.

Disable gitunsetenv in the Makefile and use env_setenv (via mingw_putenv)
instead (this frees removed environment entries).

Move xstrdup from env_setenv to make_augmented_environ, so that
mingw_putenv no longer copies the environment entries (according to POSIX
[1], "the string [...] shall become part of the environment"). This also
fixes the memory leak in gitsetenv, which expects a POSIX compliant putenv.

[1] http://pubs.opengroup.org/onlinepubs/009695399/functions/putenv.html

Note: This patch depends on taking control of char **environ and having
our own mingw_putenv (both introduced in "Win32: Unicode environment
(incoming)").

Signed-off-by: Karsten Blees <***@dcon.de>


Commit: f7a0a1579d92f24ded50ca03f05e3db2d7c4fb7c
https://github.com/msysgit/git/commit/f7a0a1579d92f24ded50ca03f05e3db2d7c4fb7c
Author: Karsten Blees <***@dcon.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M compat/mingw.c

Log Message:
-----------
Win32: unify environment case-sensitivity

The environment on Windows is case-insensitive. Some environment functions
(such as unsetenv and make_augmented_environ) have always used case-
sensitive comparisons instead, while others (getenv, putenv, sorting in
spawn*) were case-insensitive.

Prevent potential inconsistencies by using case-insensitive comparison in
lookup_env (used by putenv, unsetenv and make_augmented_environ).

Signed-off-by: Karsten Blees <***@dcon.de>


Commit: 5583c94590658c3659fb6e3ce412eebdf13890db
https://github.com/msysgit/git/commit/5583c94590658c3659fb6e3ce412eebdf13890db
Author: Johannes Schindelin <***@gmx.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M compat/mingw.c

Log Message:
-----------
Let mingw_execve() return an int

This is in the great tradition of POSIX. Original fix by Olivier Refalo.

Signed-off-by: Johannes Schindelin <***@gmx.de>


Commit: 88b48650fd0b81dfae330a6b26a5622ed1132d50
https://github.com/msysgit/git/commit/88b48650fd0b81dfae330a6b26a5622ed1132d50
Author: Karsten Blees <***@dcon.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M compat/mingw.c

Log Message:
-----------
Win32: simplify internal mingw_spawn* APIs

The only public spawn function that needs to tweak the environment is
mingw_spawnvpe (called from start_command). Nevertheless, all internal
spawn* functions take an env parameter and needlessly pass the global
char **environ around. Remove the env parameter where it's not needed.

This removes the internal mingw_execve abstraction, which is no longer
needed.

Signed-off-by: Karsten Blees <***@dcon.de>


Commit: aa952a0e2431bfce53a50273dba283e739653b4d
https://github.com/msysgit/git/commit/aa952a0e2431bfce53a50273dba283e739653b4d
Author: Karsten Blees <***@dcon.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M compat/mingw.c

Log Message:
-----------
Win32: move environment functions

Move environment helper functions up so that they can be reused by
mingw_getenv and mingw_spawnve_fd in subsequent patches.

Signed-off-by: Karsten Blees <***@dcon.de>


Commit: 5bafae67fc6354bb30ac0d61c0229d5070a89a14
https://github.com/msysgit/git/commit/5bafae67fc6354bb30ac0d61c0229d5070a89a14
Author: Karsten Blees <***@dcon.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M compat/mingw.c

Log Message:
-----------
Win32: unify environment function names

Environment helper functions use random naming ('env' prefix or suffix or
both, with or without '_'). Change to POSIX naming scheme ('env' suffix,
no '_').

Env_setenv has more in common with putenv than setenv. Change to do_putenv.

Signed-off-by: Karsten Blees <***@dcon.de>


Commit: ddbc3b0d0bd40474373aa14ce4ef56bfc0ab4737
https://github.com/msysgit/git/commit/ddbc3b0d0bd40474373aa14ce4ef56bfc0ab4737
Author: Karsten Blees <***@dcon.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M compat/mingw.c

Log Message:
-----------
Win32: factor out environment block creation

Signed-off-by: Karsten Blees <***@dcon.de>


Commit: 64e8e996db25cadf22d5d39628d53ebd1af6ae76
https://github.com/msysgit/git/commit/64e8e996db25cadf22d5d39628d53ebd1af6ae76
Author: Karsten Blees <***@dcon.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M compat/mingw.c
M compat/mingw.h
M run-command.c

Log Message:
-----------
Win32: don't copy the environment twice when spawning child processes

When spawning child processes via start_command(), the environment and all
environment entries are copied twice. First by make_augmented_environ /
copy_environ to merge with child_process.env. Then a second time by
make_environment_block to create a sorted environment block string as
required by CreateProcess.

Move the merge logic to make_environment_block so that we only need to copy
the environment once. This changes semantics of the env parameter: it now
expects a delta (such as child_process.env) rather than a full environment.
This is not a problem as the parameter is only used by start_command()
(all other callers previously passed char **environ, and now pass NULL).

The merge logic no longer xstrdup()s the environment strings, so do_putenv
must not free them. Add a parameter to distinguish this from normal putenv.

Remove the now unused make_augmented_environ / free_environ API.

Signed-off-by: Karsten Blees <***@dcon.de>


Commit: ae68f7c4149a5632d78c00084d3d4b03e86b8ca4
https://github.com/msysgit/git/commit/ae68f7c4149a5632d78c00084d3d4b03e86b8ca4
Author: Karsten Blees <***@dcon.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M compat/mingw.c

Log Message:
-----------
Win32: reduce environment array reallocations

Move environment array reallocation from do_putenv to the respective
callers. Keep track of the environment size in a global variable. Use
ALLOC_GROW in mingw_putenv to reduce reallocations. Allocate a
sufficiently sized environment array in make_environment_block to prevent
reallocations.

Signed-off-by: Karsten Blees <***@dcon.de>


Commit: e063082f5b3ca4f6b3a8dc1a08fce2b9ca4fac0f
https://github.com/msysgit/git/commit/e063082f5b3ca4f6b3a8dc1a08fce2b9ca4fac0f
Author: Karsten Blees <***@dcon.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M compat/mingw.c

Log Message:
-----------
Win32: use low-level memory allocation during initialization

As of d41489a6 "Add more large blob test cases", git's high-level memory
allocation functions (xmalloc, xmemdupz etc.) access the environment to
simulate limited memory in tests (see 'getenv("GIT_ALLOC_LIMIT")' in
memory_limit_check()). These functions should not be used before the
environment is fully initialized (particularly not to initialize the
environment itself).

The current solution ('environ = NULL; ALLOC_GROW(environ...)') only works
because MSVCRT's getenv() reinitializes environ when it is NULL (i.e. it
leaves us with two sets of unusabe (non-UTF-8) and unfreeable (CRT-
allocated) environments).

Add our own set of malloc-or-die functions to be used in startup code.

Also check the result of __wgetmainargs, which may fail if there's not
enough memory for wide-char arguments and environment.

This patch is in preparation of the sorted environment feature, which
completely replaces MSVCRT's getenv() implementation.

Signed-off-by: Karsten Blees <***@dcon.de>


Commit: de076d3313c9af85296632a15a98eb7b98afd3a7
https://github.com/msysgit/git/commit/de076d3313c9af85296632a15a98eb7b98afd3a7
Author: Karsten Blees <***@dcon.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M compat/mingw.c

Log Message:
-----------
Win32: keep the environment sorted

The Windows environment is sorted, keep it that way for O(log n)
environment access.

Change compareenv to compare only the keys, so that it can be used to
find an entry irrespective of the value.

Change lookupenv to binary seach for an entry. Return one's complement of
the insert position if not found (libc's bsearch returns NULL).

Replace MSVCRT's getenv with a minimal do_getenv based on the binary search
function.

Change do_putenv to insert new entries at the correct position. Simplify
the function by swapping if conditions and using memmove instead of for
loops.

Move qsort from make_environment_block to mingw_startup. We still need to
sort on startup to make sure that the environment is sorted according to
our compareenv function (while Win32 / CreateProcess requires the
environment block to be sorted case-insensitively, CreateProcess currently
doesn't enforce this, and some applications such as bash just don't care).

Note that environment functions are _not_ thread-safe and are not required
to be so by POSIX, the application is responsible for synchronizing access
to the environment. MSVCRT's getenv and our new getenv implementation are
better than that in that they are thread-safe with respect to other getenv
calls as long as the environment is not modified. Git's indiscriminate use
of getenv in background threads currently requires this property.

Signed-off-by: Karsten Blees <***@dcon.de>


Commit: 0e58492daf728cf587fc943a2488cf6cdc092826
https://github.com/msysgit/git/commit/0e58492daf728cf587fc943a2488cf6cdc092826
Author: Karsten Blees <***@dcon.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M compat/mingw.c

Log Message:
-----------
Win32: patch Windows environment on startup

Fix Windows specific environment settings on startup rather than checking
for special values on every getenv call.

As a side effect, this makes the patched environment (i.e. with properly
initialized TMPDIR and TERM) available to child processes.

Signed-off-by: Karsten Blees <***@dcon.de>


Commit: 04795f4765fc1a2b73b2aafba0c657119f7d4e61
https://github.com/msysgit/git/commit/04795f4765fc1a2b73b2aafba0c657119f7d4e61
Author: Karsten Blees <***@dcon.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M compat/mingw.c

Log Message:
-----------
Win32: fix detection of empty directories in is_dir_empty

On Windows XP (not Win7), directories cannot be deleted while a find handle
is open, causing "Deletion of directory '...' failed. Should I try again?"
prompts.

Prior to 19d1e75d "Win32: Unicode file name support (except dirent)",
these failures were silently ignored due to strbuf_free in is_dir_empty
resetting GetLastError to ERROR_SUCCESS.

Close the find handle in is_dir_empty so that git doesn't block deletion
of the directory even after all other applications have released it.

Reported-by: John Chen <***@gmail.com>
Signed-off-by: Karsten Blees <***@dcon.de>


Commit: 45cd60cda84e42ceaa167c42a49f1c2104eaf500
https://github.com/msysgit/git/commit/45cd60cda84e42ceaa167c42a49f1c2104eaf500
Author: Karsten Blees <***@dcon.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M compat/mingw.h
M compat/winansi.c

Log Message:
-----------
Win32: fix broken pipe detection

As of "Win32: Thread-safe windows console output", git-log no longer
terminates when the pager process dies. This is due to disabling buffering
for the replaced stdout / stderr streams. Git-log will periodically fflush
stdout (see write_or_die.c/mayble_flush_or_die()), but with no buffering,
this is a NOP that always succeeds (so we never detect the EPIPE error).

Exchange the original console handles with our console thread pipe handles
by accessing the internal MSVCRT data structures directly (which are
exposed via __pioinfo for some reason).

Implement this with minimal assumptions about the actual data structure to
make it work with different (hopefully even future) MSVCRT versions.

While messing with internal data structures is ugly, this patch solves the
problem at the source instead of adding more workarounds. We no longer need
the special winansi_isatty override, and the limitations documented in
"Win32: Thread-safe windows console output" are gone (i.e. fdopen(1/2)
returns unbuffered streams now, and isatty() for duped console file
descriptors works as expected).

Signed-off-by: Karsten Blees <***@dcon.de>


Commit: 60e8f863939586b8c9a16a55f20490be073217c6
https://github.com/msysgit/git/commit/60e8f863939586b8c9a16a55f20490be073217c6
Author: Karsten Blees <***@dcon.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M config.mak.uname

Log Message:
-----------
MSVC: link dynamically to the CRT

Dynamic linking is generally preferred over static linking, and MSVCRT.dll
has been integral part of Windows for a long time.

This also fixes linker warnings for _malloc and _free in zlib.lib, which
seems to be compiled for MSVCRT.dll already.

The DLL version also exports some of the CRT initialization functions,
which are hidden in the static libcmt.lib (e.g. __wgetmainargs, required by
subsequent Unicode patches).

Signed-off-by: Karsten Blees <***@dcon.de>


Commit: 8f82c4506c0f22713dcba5e333829cbd22e34109
https://github.com/msysgit/git/commit/8f82c4506c0f22713dcba5e333829cbd22e34109
Author: Erik Faye-Lund <***@gmail.com>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M git-compat-util.h

Log Message:
-----------
MSVC: fix poll-related macro redefines

This seems to be related to the poll-emulation... I see that these things
are guarded by an "#if(_WIN32_WINNT >= 0x0600)" in <winsock2.h>, which
means it's supported for Windows Vista and above... We still support
Windows XP, so it seems someone has set this too high :)

I'd prefer to set this from the Makefile, but this generates a warning in
compat/win32/poll.c about redefining a macro (poll.c wants it to be 0x502,
which is Windows XP with SP2, rather than 0x501 which is normal Windows
XP).

[PT: amended to follow 41f2999 "msvc: Fix compilation errors caused by
poll.h emulation" and support both MSVC and mingw]

Signed-off-by: Johannes Schindelin <***@gmx.de>


Commit: dedbaa9e17a44318fd9947a249d769c570aee1c2
https://github.com/msysgit/git/commit/dedbaa9e17a44318fd9947a249d769c570aee1c2
Author: Johannes Schindelin <***@gmx.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M builtin/fast-export.c

Log Message:
-----------
fast-export: do not refer to non-existing marks

When calling `git fast-export a..a b` when a and b refer to the same
commit, nothing would be exported, and an incorrect reset line would
be printed for b ('from :0').

Signed-off-by: Johannes Schindelin <***@gmx.de>
Signed-off-by: Sverre Rabbelier <***@gmail.com>


Commit: dff46b97428aa375826b6b7bbb6c5541db1411ac
https://github.com/msysgit/git/commit/dff46b97428aa375826b6b7bbb6c5541db1411ac
Author: Sverre Rabbelier <***@gmail.com>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M t/t5800-remote-testpy.sh

Log Message:
-----------
t5800: test pushing a new branch with old content

This works now that fast-export has been fixed to properly handle
refs that point to a commit that was not exported during the current
fast-export run.


Commit: 313ae29ce729ae3ce85be6f5e7df216ad19f4ac6
https://github.com/msysgit/git/commit/313ae29ce729ae3ce85be6f5e7df216ad19f4ac6
Author: Sverre Rabbelier <***@gmail.com>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M t/t5800-remote-testpy.sh

Log Message:
-----------
t5800: point out that deleting branches does not work

This test actually breaks the repositories involved somehow, so it is
not enabled by default.


Commit: 081b78199ba45f45999fe90bef84c4f48dece431
https://github.com/msysgit/git/commit/081b78199ba45f45999fe90bef84c4f48dece431
Author: Sverre Rabbelier <***@gmail.com>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M transport-helper.c

Log Message:
-----------
transport-helper: add trailing --

[PT: ensure we add an additional element to the argv array]


Commit: 47b7834728a466bb809ee283417c30f5fa16f2be
https://github.com/msysgit/git/commit/47b7834728a466bb809ee283417c30f5fa16f2be
Author: Sverre Rabbelier <***@gmail.com>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M builtin/clone.c
M transport-helper.c

Log Message:
-----------
remote-helper: check helper status after import/export

Signed-off-by: Johannes Schindelin <***@gmx.de>
Signed-off-by: Sverre Rabbelier <***@gmail.com>


Commit: 14df394e1ff8b054a14e86e571b7bd29bf626482
https://github.com/msysgit/git/commit/14df394e1ff8b054a14e86e571b7bd29bf626482
Author: Johannes Schindelin <***@gmx.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M transport-helper.c

Log Message:
-----------
Always auto-gc after calling a fast-import transport

After importing anything with fast-import, we should always let the
garbage collector do its job, since the objects are written to disk
inefficiently.

This brings down an initial import of http://selenic.com/hg from about
230 megabytes to about 14.

In the future, we may want to make this configurable on a per-remote
basis, or maybe teach fast-import about it in the first place.

Signed-off-by: Johannes Schindelin <***@gmx.de>


Commit: b75089b792c7353feb256f1a04e69a7587087fb8
https://github.com/msysgit/git/commit/b75089b792c7353feb256f1a04e69a7587087fb8
Author: Johannes Schindelin <***@gmx.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M t/t1050-large.sh

Log Message:
-----------
t1050: Fix invalid call to dd(1)

This is a companion patch to fce52b4(t4012: Fix invalid call to dd(1)).

Signed-off-by: Johannes Schindelin <***@gmx.de>


Commit: 4d33f42a1f56e77913d26a3ff8aa32a3e6d08fec
https://github.com/msysgit/git/commit/4d33f42a1f56e77913d26a3ff8aa32a3e6d08fec
Author: Johannes Schindelin <***@gmx.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M t/t5504-fetch-receive-strict.sh

Log Message:
-----------
Work around a problem identified by BuildHive

Apparently the signal handling is not quite correct in the fsckobject
handling (most likely we rely on a side effect that lets us still output
some message after receiving a signal 13 but in the BuildHive setup this
fails intermittently).

As a consequence, the push in t5504 does fail as expected, but fails to
output anything (unexpected). Since this is good enough for now, let's
handle an empty output as success, too.

Signed-off-by: Johannes Schindelin <***@gmx.de>


Commit: 38782f6c13a0d1b70ad9d4d7ce2a14321ec91346
https://github.com/msysgit/git/commit/38782f6c13a0d1b70ad9d4d7ce2a14321ec91346
Author: theoleblond <***@gmail.com>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M compat/poll/poll.c

Log Message:
-----------
Sleep 1 millisecond in poll() to avoid busy wait

I played around with this quite a bit. After trying some more complex
schemes, I found that what worked best is to just sleep 1 millisecond
between iterations. Though it's a very short time, it still completely
eliminates the busy wait condition, without hurting perf.

There code uses SleepEx(1, TRUE) to sleep. See this page for a good
discussion of why that is better than calling SwitchToThread, which
is what was used previously:
http://stackoverflow.com/questions/1383943/switchtothread-vs-sleep1

Note that calling SleepEx(0, TRUE) does *not* solve the busy wait.

The most striking case was when testing on a UNC share with a large repo,
on a single CPU machine. Without the fix, it took 4 minutes 15 seconds,
and with the fix it took just 1:08! I think it's because git-upload-pack's
busy wait was eating the CPU away from the git process that's doing the
real work. With multi-proc, the timing is not much different, but tons of
CPU time is still wasted, which can be a killer on a server that needs to
do bunch of other things.

I also tested the very fast local case, and didn't see any measurable
difference. On a big repo with 4500 files, the upload-pack took about 2
seconds with and without the fix.


Commit: 7600d3c500fd33b4ab2d7f5dbd8591b40421cd10
https://github.com/msysgit/git/commit/7600d3c500fd33b4ab2d7f5dbd8591b40421cd10
Author: Adam Roben <***@roben.org>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M compat/mingw.c

Log Message:
-----------
Make non-.exe externals work again

7ebac8cb94f3a06d3fbdde469414a1443ca45510 made launching of .exe
externals work when installed in Unicode paths. But it broke launching
of non-.exe externals, no matter where they were installed. We now
correctly maintain the UTF-8 and UTF-16 paths in tandem in lookup_prog.

This fixes t5526, among others.

Signed-off-by: Adam Roben <***@roben.org>


Commit: 99060692df7ec39511c0e893d3191b52f43b5ce2
https://github.com/msysgit/git/commit/99060692df7ec39511c0e893d3191b52f43b5ce2
Author: Heiko Voigt <***@hvoigt.net>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M help.c

Log Message:
-----------
help: correct behavior for is_executable on Windows

The previous implementation said that the filesystem information on
Windows is not reliable to determine whether a file is executable.
To find gather this information it was peeking into the first two bytes
of a file to see whether it looks executable.
Apart from the fact that on Windows executables are usually defined as
such by their extension it lead to slow opening of help file in some
situations.

When you have virus scanner running calling open on an executable file
is a potentially expensive operation. See the following measurements (in
seconds) for example.

With virus scanner running (coldcache):

$ ./a.exe /libexec/git-core/
before open (git-add.exe): 0.000000
after open (git-add.exe): 0.412873
before open (git-annotate.exe): 0.000175
after open (git-annotate.exe): 0.397925
before open (git-apply.exe): 0.000243
after open (git-apply.exe): 0.399996
before open (git-archive.exe): 0.000147
after open (git-archive.exe): 0.397783
before open (git-bisect--helper.exe): 0.000160
after open (git-bisect--helper.exe): 0.397700
before open (git-blame.exe): 0.000160
after open (git-blame.exe): 0.399136
...

With virus scanner running (hotcache):

$ ./a.exe /libexec/git-core/
before open (git-add.exe): 0.000000
after open (git-add.exe): 0.000325
before open (git-annotate.exe): 0.000229
after open (git-annotate.exe): 0.000177
before open (git-apply.exe): 0.000167
after open (git-apply.exe): 0.000150
before open (git-archive.exe): 0.000154
after open (git-archive.exe): 0.000156
before open (git-bisect--helper.exe): 0.000132
after open (git-bisect--helper.exe): 0.000180
before open (git-blame.exe): 0.000718
after open (git-blame.exe): 0.000724
...

This test did just list the given directory and open() each file in it.

With this patch I get:

$ time git help git
Launching default browser to display HTML ...

real 0m8.723s
user 0m0.000s
sys 0m0.000s

and without

$ time git help git
Launching default browser to display HTML ...

real 1m37.734s
user 0m0.000s
sys 0m0.031s

both tests with cold cache and giving the machine some time to settle
down after restart.

Signed-off-by: Heiko Voigt <***@mahr.de>


Commit: 3f31d7940b8df18770ec15cecd4c44d09309781d
https://github.com/msysgit/git/commit/3f31d7940b8df18770ec15cecd4c44d09309781d
Author: Sebastian Schuberth <***@gmail.com>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M gitk-git/gitk

Log Message:
-----------
gitk: Use an external icon file on Windows

Git for Windows now ships with the new Git icon from git-scm.com. Use that
icon file if it exists instead of the old procedurally drawn one.

This patch was sent upstream but so far no decision on its inclusion was
made, so commit it to our fork.

Signed-off-by: Sebastian Schuberth <***@gmail.com>


Commit: 9b8e239d986f736a9a3c0a94a809a3f0e4fcf168
https://github.com/msysgit/git/commit/9b8e239d986f736a9a3c0a94a809a3f0e4fcf168
Author: Johannes Schindelin <***@gmx.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M git-stash.sh

Log Message:
-----------
git stash: make sure that .git/logs/refs/ exists

If the user has not activated reflogs, or if nothing has been recorded
yet (as is the case directly after cloning), said directory may not
exist yet.

Signed-off-by: Johannes Schindelin <***@gmx.de>


Commit: 553c53a362b6de0fe880110f1d5faac89cb15731
https://github.com/msysgit/git/commit/553c53a362b6de0fe880110f1d5faac89cb15731
Author: Pat Thoyts <***@users.sourceforge.net>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M t/t1306-xdg-files.sh

Log Message:
-----------
t1306: perform file comparisons using text mode for Windows support

Signed-off-by: Pat Thoyts <***@users.sourceforge.net>


Commit: 9285298789a33cded516bbc005d64a0db2c2da6c
https://github.com/msysgit/git/commit/9285298789a33cded516bbc005d64a0db2c2da6c
Author: Pat Thoyts <***@users.sourceforge.net>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M contrib/credential/wincred/Makefile

Log Message:
-----------
wincred: add install target and avoid overwriting configured variables.

Signed-off-by: Pat Thoyts <***@users.sourceforge.net>


Commit: 39d859fa73be0cf351a1a4addf3acbc7337e150a
https://github.com/msysgit/git/commit/39d859fa73be0cf351a1a4addf3acbc7337e150a
Author: Johannes Schindelin <***@gmx.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M t/t3404-rebase-interactive.sh

Log Message:
-----------
Fix t3404 for Windows

The usual problem: CR/LF...

Signed-off-by: Johannes Schindelin <***@gmx.de>


Commit: a58a2261bceb2745eb2cce6f78d11bab99ec4102
https://github.com/msysgit/git/commit/a58a2261bceb2745eb2cce6f78d11bab99ec4102
Author: Pat Thoyts <***@users.sourceforge.net>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M t/t0008-ignores.sh

Log Message:
-----------
t0008: avoid absolute path on Windows as colon is used in the tests

The test separator char is a colon which means any absolute paths on windows
confuse the tests that use global_excludes.

Suggested-by: Karsten Blees <***@gmail.com>
Signed-off-by: Pat Thoyts <***@users.sourceforge.net>


Commit: 40ce6d72d21b691ba86b51eaa3cb1364bc2b1a76
https://github.com/msysgit/git/commit/40ce6d72d21b691ba86b51eaa3cb1364bc2b1a76
Author: Pat Thoyts <***@users.sourceforge.net>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M t/t7800-difftool.sh

Log Message:
-----------
t7800: a few tests should ignore crlf in checking the result.

Those tests that generate files using echo can expect crlf issues when run
under windows. For such cases we use 'test_cmp_text'.

Signed-off-by: Pat Thoyts <***@users.sourceforge.net>


Commit: 159a3f1f91bc1d74d8e51bf0bf16bf097bf52d96
https://github.com/msysgit/git/commit/159a3f1f91bc1d74d8e51bf0bf16bf097bf52d96
Author: Pat Thoyts <***@users.sourceforge.net>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M t/t4210-log-i18n.sh

Log Message:
-----------
t4210: skip command-line encoding tests on mingw

On Windows the application command line is provided as unicode and in
mingw-git we convert that to utf-8. So these tests that require a iso-8859-1
input are being subverted by the encoding transformations we perform and
should be skipped.

Signed-off-by: Pat Thoyts <***@users.sourceforge.net>


Commit: 93a9bed8703de09307f71a0da655692e001b36e2
https://github.com/msysgit/git/commit/93a9bed8703de09307f71a0da655692e001b36e2
Author: Karsten Blees <***@dcon.de>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M compat/winansi.c

Log Message:
-----------
Win32: fix segfault in WriteConsoleW when debugging in gdb

On Windows XP (not Win7), WriteConsoleW and WriteFile seem to raise and
catch SIGSEGV if the lpNumberOfCharsWritten parameter is NULL. This is not
a problem when executed standalone, but gdb stops execution here (unless
disabled via "handle SIGSEGV nostop").

Fix it by passing a dummy variable.

Signed-off-by: Karsten Blees <***@dcon.de>


Commit: d48967242f9c97082536b9230d2c9178a4689d69
https://github.com/msysgit/git/commit/d48967242f9c97082536b9230d2c9178a4689d69
Author: Johannes Sixt <***@kdbg.org>
Date: 2013-08-25 (Sun, 25 Aug 2013)

Changed paths:
M t/t3200-branch.sh

Log Message:
-----------
t3200: do not open a HTML manual page when DEFAULT_MAN_FORMAT is html

We have the build configuration option DEFAULT_MAN_FORMAT to choose a
format different from man pages to be used by 'git help' when no format
is requested explicitly. Since 65db0443 (Set the default help format to
html for msys builds, 2013-06-04) we use html on Windows by default.

There is one test in t3200-branch.sh that invokes a help page. The
intent of the redirections applied to the command invocation is to avoid
that the man page viewer interferes with the automated test. But when
the default format is not "man", this does not have the intended effect,
and the HTML manual page is opened during the test run. Request "man"
format explicitly to keep the test silent.

Signed-off-by: Johannes Sixt <***@kdbg.org>
Signed-off-by: Johannes Schindelin <***@gmx.de>


Compare: https://github.com/msysgit/git/compare/552ee61ece4d^...d48967242f9c
--
--
*** Please reply-to-all at all times ***
*** (do not pretend to know who is subscribed and who is not) ***
*** Please avoid top-posting. ***
The msysGit Wiki is here: https://github.com/msysgit/msysgit/wiki - Github accounts are free.

You received this message because you are subscribed to the Google
Groups "msysGit" group.
To post to this group, send email to ***@googlegroups.com
To unsubscribe from this group, send email to
msysgit+***@googlegroups.com
For more options, and view previous threads, visit this group at
http://groups.google.com/group/msysgit?hl=en_US?hl=en

---
You received this message because you are subscribed to the Google Groups "msysGit" group.
To unsubscribe from this group and stop receiving emails from it, send an email to msysgit+***@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
Loading...