gitweb.git
Make lock local to fetch_packMatt Kraai Tue, 18 Dec 2012 22:03:54 +0000 (14:03 -0800)

Make lock local to fetch_pack

lock is only used by fetch_pack, so move it into that function.

Signed-off-by: Matt Kraai <matt.kraai@amo.abbott.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-compat-util.h: do not #include <sys/param.h> by... Junio C Hamano Tue, 18 Dec 2012 17:35:33 +0000 (09:35 -0800)

git-compat-util.h: do not #include <sys/param.h> by default

Earlier we allowed platforms that lack <sys/param.h> not to include
the header file from git-compat-util.h; we have included this header
file since the early days back when we used MAXPATHLEN (which we no
longer use) and also depended on it slurping ULONG_MAX (which we get
by including stdint.h or inttypes.h these days).

It turns out that we can compile our modern codebase just file
without including it on many platforms (so far, Fedora, Debian,
Ubuntu, MinGW, Mac OS X, Cygwin, HP-Nonstop, QNX and z/OS are
reported to be OK).

Let's stop including it by default, and on platforms that need it to
be included, leave "make NEEDS_SYS_PARAM_H=YesPlease" as an escape
hatch and ask them to report to us, so that we can find out about
the real dependency and fix it in a more platform agnostic way.

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

add global --literal-pathspecs optionJeff King Wed, 19 Dec 2012 22:37:30 +0000 (17:37 -0500)

add global --literal-pathspecs option

Git takes pathspec arguments in many places to limit the
scope of an operation. These pathspecs are treated not as
literal paths, but as glob patterns that can be fed to
fnmatch. When a user is giving a specific pattern, this is a
nice feature.

However, when programatically providing pathspecs, it can be
a nuisance. For example, to find the latest revision which
modified "$foo", one can use "git rev-list -- $foo". But if
"$foo" contains glob characters (e.g., "f*"), it will
erroneously match more entries than desired. The caller
needs to quote the characters in $foo, and even then, the
results may not be exactly the same as with a literal
pathspec. For instance, the depth checks in
match_pathspec_depth do not kick in if we match via fnmatch.

This patch introduces a global command-line option (i.e.,
one for "git" itself, not for specific commands) to turn
this behavior off. It also has a matching environment
variable, which can make it easier if you are a script or
porcelain interface that is going to issue many such
commands.

This option cannot turn off globbing for particular
pathspecs. That could eventually be done with a ":(noglob)"
magic pathspec prefix. However, that level of granularity is
more cumbersome to use for many cases, and doing ":(noglob)"
right would mean converting the whole codebase to use
"struct pathspec", as the usual "const char **pathspec"
cannot represent extra per-item flags.

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

Remove duplicate entry in ./Documentation/MakefileThomas Ackermann Wed, 19 Dec 2012 18:15:25 +0000 (19:15 +0100)

Remove duplicate entry in ./Documentation/Makefile

Signed-off-by: Thomas Ackermann <th.acker@arcor.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

compat/fnmatch: update old-style definition to ANSIJunio C Hamano Wed, 19 Dec 2012 16:54:25 +0000 (08:54 -0800)

compat/fnmatch: update old-style definition to ANSI

We try to avoid touching borrowed code, but we encourage people to
write without old-style definition and compile with -Werror these
days, and on platforms that need to use NO_FNMATCH, these three
functions make the compilation fail.

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

submodule add: If --branch is given, record it in ... W. Trevor King Wed, 19 Dec 2012 16:03:33 +0000 (11:03 -0500)

submodule add: If --branch is given, record it in .gitmodules

This allows you to easily record a submodule.<name>.branch option in
.gitmodules when you add a new submodule. With this patch,

$ git submodule add -b <branch> <repository> [<path>]
$ git config -f .gitmodules submodule.<path>.branch <branch>

reduces to

$ git submodule add -b <branch> <repository> [<path>]

This means that future calls to

$ git submodule update --remote ...

will get updates from the same branch that you used to initialize the
submodule, which is usually what you want.

Signed-off-by: W. Trevor King <wking@tremily.us>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

submodule update: add --remote for submodule's upstream... W. Trevor King Wed, 19 Dec 2012 16:03:32 +0000 (11:03 -0500)

submodule update: add --remote for submodule's upstream changes

The current `update` command incorporates the superproject's gitlinked
SHA-1 ($sha1) into the submodule HEAD ($subsha1). Depending on the
options you use, it may checkout $sha1, rebase the $subsha1 onto
$sha1, or merge $sha1 into $subsha1. This helps you keep up with
changes in the upstream superproject.

However, it's also useful to stay up to date with changes in the
upstream subproject. Previous workflows for incorporating such
changes include the ungainly:

$ git submodule foreach 'git checkout $(git config --file $toplevel/.gitmodules submodule.$name.branch) && git pull'

With this patch, all of the useful functionality for incorporating
superproject changes can be reused to incorporate upstream subproject
updates. When you specify --remote, the target $sha1 is replaced with
a $sha1 of the submodule's origin/master tracking branch. If you want
to merge a different tracking branch, you can configure the
`submodule.<name>.branch` option in `.gitmodules`. You can override
the `.gitmodules` configuration setting for a particular superproject
by configuring the option in that superproject's default configuration
(using the usual configuration hierarchy, e.g. `.git/config`,
`~/.gitconfig`, etc.).

Previous use of submodule.<name>.branch
=======================================

Because we're adding a new configuration option, it's a good idea to
check if anyone else is already using the option. The foreach-pull
example above was described by Ævar in

commit f030c96d8643fa0a1a9b2bd9c2f36a77721fb61f
Author: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Date: Fri May 21 16:10:10 2010 +0000

git-submodule foreach: Add $toplevel variable

Gerrit uses the same interpretation for the setting, but because
Gerrit has direct access to the subproject repositories, it updates
the superproject repositories automatically when a subproject changes.
Gerrit also accepts the special value '.', which it expands into the
superproject's branch name.

Although the --remote functionality is using `submodule.<name>.branch`
slightly differently, the effect is the same. The foreach-pull
example uses the option to record the name of the local branch to
checkout before pulls. The tracking branch to be pulled is recorded
in `.git/modules/<name>/config`, which was initialized by the module
clone during `submodule add` or `submodule init`. Because the branch
name stored in `submodule.<name>.branch` was likely the same as the
branch name used during the initial `submodule add`, the same branch
will be pulled in each workflow.

Implementation details
======================

In order to ensure a current tracking branch state, `update --remote`
fetches the submodule's remote repository before calculating the
SHA-1. However, I didn't change the logic guarding the existing fetch:

if test -z "$nofetch"
then
# Run fetch only if $sha1 isn't present or it
# is not reachable from a ref.
(clear_local_git_env; cd "$path" &&
( (rev=$(git rev-list -n 1 $sha1 --not --all 2>/dev/null) &&
test -z "$rev") || git-fetch)) ||
die "$(eval_gettext "Unable to fetch in submodule path '\$path'")"
fi

There will not be a double-fetch, because the new $sha1 determined
after the `--remote` triggered fetch should always exist in the
repository. If it doesn't, it's because some racy process removed it
from the submodule's repository and we *should* be re-fetching.

Signed-off-by: W. Trevor King <wking@tremily.us>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t9020: use configured Python to run the test helperJunio C Hamano Wed, 19 Dec 2012 04:41:15 +0000 (20:41 -0800)

t9020: use configured Python to run the test helper

The test helper svnrdump_sim.py is used as "svnrdump" during the
execution of this test, but the arrangement was not optimal:

- it relied on symbolic links;
- unportable "export VAR=VAL" was used;
- GIT_BUILD_DIR variable was not quoted correctly;
- it assumed that the Python interpreter is in /usr/bin/ and
called "python" (i.e. not "python2.7" etc.)

Rework this by writing a small shell script that spawns the right
Python interpreter, using the right quoting.

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

t3600: Avoid "cp -a", which is a GNUismJunio C Hamano Wed, 19 Dec 2012 02:47:50 +0000 (18:47 -0800)

t3600: Avoid "cp -a", which is a GNUism

With d4a7ffa (tests: "cp -a" is a GNUism, 2012-10-08), we got rid of
most of them, but the ones in a topic that was still in flight were
missed.

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

Merge branch 'jc/maint-test-portability' into 'jc/test... Junio C Hamano Wed, 19 Dec 2012 15:46:05 +0000 (07:46 -0800)

Merge branch 'jc/maint-test-portability' into 'jc/test-portability'

* jc/maint-test-portability:
t4014: fix arguments to grep
t9502: do not assume GNU tar
t0200: "locale" may not exist

t4014: fix arguments to grepJunio C Hamano Wed, 19 Dec 2012 03:13:30 +0000 (19:13 -0800)

t4014: fix arguments to grep

These "expect-failure" tests were not looking for the right string
in the patch file. For example:

grep "^ *"S. E. Cipient" <scipient@example.com>\$" patch5

was looking for "^ *S." in these three files:

"E."
"Cipient <scipient@example.com>$"
"patch5"

With some implementations of grep, the lack of file "E." was
reported as an error, leading to the failure of the test.

With other implementations of grep, the pattern "^ *S." matched what
was in patch5, without diagnosing the missing files as an error, and
made these tests unexpectedly pass.

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

t9502: do not assume GNU tarJunio C Hamano Wed, 19 Dec 2012 04:57:13 +0000 (20:57 -0800)

t9502: do not assume GNU tar

The check_snapshot function makes sure that no cruft outside the
repository hierarchy is added to the tar archive. The output from
"tar tf" on the resulting archive is inspected to see if there is
anything that does not begin with "$prefix/".

There are two issues with this implementation:

- Traditional tar implemenations that do not understand
pax_global_header will write it out as if it is a plain file at
the top-level;

- Some implementations of tar do not add trailing slash when
showing a directory entry (i.e. the output line for the entire
archive will show "$prefix", not "$prefix/").

Fix them so that what we want to validate can be tested with
traditional tar implementations.

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

t0200: "locale" may not existJunio C Hamano Wed, 19 Dec 2012 06:44:56 +0000 (22:44 -0800)

t0200: "locale" may not exist

On systems without "locale" installed, t0200-gettext-basic.sh leaked
error messages when checking if some test locales are available.
Hide them, as they are not very useful.

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

Makefile: replace "echo 1>..." with "echo >..."Christian Couder Tue, 18 Dec 2012 15:26:39 +0000 (16:26 +0100)

Makefile: replace "echo 1>..." with "echo >..."

This is clearer to many people this way.

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Makefile: detect when PYTHON_PATH changesChristian Couder Tue, 18 Dec 2012 15:26:38 +0000 (16:26 +0100)

Makefile: detect when PYTHON_PATH changes

When make is run, the python scripts are created from *.py files that
are changed to use the python given by PYTHON_PATH. And PYTHON_PATH
is set by default to /usr/bin/python on Linux.

This is nice except when you run make another time setting a
different PYTHON_PATH, because, as the python scripts have already
been created, make finds nothing to do.

The goal of this patch is to detect when the PYTHON_PATH changes and
to create the python scripts again when this happens. To do that we
use the same trick that is done to track other variables like prefix,
flags, tcl/tk path and shell path. We update a GIT-PYTHON-VARS file
with the PYTHON_PATH and check if it changed.

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Acked-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'maint'Junio C Hamano Tue, 18 Dec 2012 23:35:01 +0000 (15:35 -0800)

Merge branch 'maint'

* maint:
t7004: do not create unneeded gpghome/gpg.conf when GPG is not used

xmkstemp(): avoid showing truncated template more carefullyJunio C Hamano Tue, 18 Dec 2012 20:51:35 +0000 (12:51 -0800)

xmkstemp(): avoid showing truncated template more carefully

Some implementations of xmkstemp() leaves the given in/out buffer
truncated when they return with failure.

6cf6bb3 (Improve error messages when temporary file creation fails,
2010-12-18) attempted to show the real filename we tried to create
(but failed), and if that is not available due to such truncation,
to show the original template that was given by the caller.

But it failed to take into account that the given template could
have "directory/" in front, in which case the truncation point may
not be template[0] but somewhere else.

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

Documentation: Describe "git diff <blob> <blob>" separatelyJunio C Hamano Tue, 18 Dec 2012 19:35:28 +0000 (11:35 -0800)

Documentation: Describe "git diff <blob> <blob>" separately

As it was not a common operation, it was described as if it is a
side note for the more common two-commit variant, but this mode
behaves very differently, e.g. it does not make any sense to ask
recursive behaviour, or give the command a pathspec.

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

t7004: do not create unneeded gpghome/gpg.conf when... Junio C Hamano Tue, 18 Dec 2012 19:26:24 +0000 (11:26 -0800)

t7004: do not create unneeded gpghome/gpg.conf when GPG is not used

These tests themselves are properly protected by the GPG
prerequisite, but one of the set-up steps outside the
test_expect_success block unconditionally assumed that there is a
gpghome/ directory, which is not true if GPG is not being used.

It may be a good idea to move the whole set-up steps in the test but
that is a follow-up topic.

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

Documentation/git-checkout.txt: document 70c9ac2 behaviorChris Rorvick Mon, 17 Dec 2012 06:45:02 +0000 (00:45 -0600)

Documentation/git-checkout.txt: document 70c9ac2 behavior

Document the behavior implemented in 70c9ac2 (DWIM "git checkout
frotz" to "git checkout -b frotz origin/frotz").

Signed-off-by: Chris Rorvick <chris@rorvick.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation/git-checkout.txt: clarify usageChris Rorvick Mon, 17 Dec 2012 06:45:01 +0000 (00:45 -0600)

Documentation/git-checkout.txt: clarify usage

The forms of checkout that do not take a path are lumped together in
the DESCRIPTION section, but the description for this group is
dominated by explanation of the -b|-B form.

Split these apart for more clarity.

Signed-off-by: Chris Rorvick <chris@rorvick.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Sync with 'maint'Junio C Hamano Tue, 18 Dec 2012 18:51:22 +0000 (10:51 -0800)

Sync with 'maint'

Merge branch 'jk/pickaxe-textconv' into maintJunio C Hamano Tue, 18 Dec 2012 18:50:07 +0000 (10:50 -0800)

Merge branch 'jk/pickaxe-textconv' into maint

"git log -p -S<string>" now looks for the <string> after applying
the textconv filter (if defined); earlier it inspected the contents
of the blobs without filtering.

Makefile: remove tracking of TCLTK_PATHChristian Couder Tue, 18 Dec 2012 15:26:37 +0000 (16:26 +0100)

Makefile: remove tracking of TCLTK_PATH

It looks like we are tracking the value of TCLTK_PATH in the main
Makefile for no good reason.

This patch removes the useless code used to do this tracking.

Maybe this code should have been moved to gitk-git/Makefile by
62ba514 (Move gitk to its own subdirectory, 2007-11-17).
A patch to do that has just been sent to Paul Mackerras, the gitk
maintainer.

While at it, this patch removes /gitk-git/gitk-wish from
.gitignore as it should be in /gitk-git/.gitignore and the patch
sent to Paul put it there.

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

clarify -M without % symbol in diff-optionsSitaram Chamarty Tue, 18 Dec 2012 10:47:09 +0000 (16:17 +0530)

clarify -M without % symbol in diff-options

Signed-off-by: Sitaram Chamarty <sitaramc@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Add directory pattern matching to attributesJean-Noël AVILA Sat, 8 Dec 2012 20:04:39 +0000 (21:04 +0100)

Add directory pattern matching to attributes

The manpage of gitattributes says: "The rules how the pattern
matches paths are the same as in .gitignore files" and the gitignore
pattern matching has a pattern ending with / for directory matching.

This rule is specifically relevant for the 'export-ignore' rule used
for git archive.

Signed-off-by: Jean-Noel Avila <jn.avila@free.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

log --format: teach %C(auto,black) to respect color... Junio C Hamano Mon, 17 Dec 2012 22:56:49 +0000 (17:56 -0500)

log --format: teach %C(auto,black) to respect color config

Traditionally, %C(color attr) always emitted the ANSI color
sequence; it was up to the scripts that wanted to conditionally
color their output to omit %C(...) specifier when they do not want
colors.

Optionally allow "auto," to be prefixed to the color, so that the
output is colored iff we would color regular "log" output
(e.g., taking into account color.* and --color command line
options).

Tests and pretty_context bits by Jeff King <peff@peff.net>.

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

t6006: clean up whitespaceJunio C Hamano Mon, 17 Dec 2012 22:56:23 +0000 (17:56 -0500)

t6006: clean up whitespace

The test_format function did not indent its in-line test
script in an attempt to make the output of the test look
better. But it does not make a big difference to the output,
and the source looks quite ugly. Let's use our normal
indenting instead.

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

git-svn, perl/Git.pm: extend and use Git->prompt method... Sven Strickroth Tue, 18 Dec 2012 00:28:48 +0000 (01:28 +0100)

git-svn, perl/Git.pm: extend and use Git->prompt method for querying users

git-svn reads usernames and other user queries from an interactive
terminal. This cause GUIs (w/o STDIN connected) to hang waiting forever
for git-svn to complete (http://code.google.com/p/tortoisegit/issues/detail?id=967).

This change extends the Git::prompt helper, so that it can also be used
for non password queries, and makes use of it instead of using
hand-rolled prompt-response code that only works with the interactive
terminal.

Signed-off-by: Sven Strickroth <email@cs-ware.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

perl/Git.pm: Honor SSH_ASKPASS as fallback if GIT_ASKPA... Sven Strickroth Tue, 18 Dec 2012 00:28:47 +0000 (01:28 +0100)

perl/Git.pm: Honor SSH_ASKPASS as fallback if GIT_ASKPASS is not set

If GIT_ASKPASS environment variable is not set, git-svn does not try to use
SSH_ASKPASS as git-core does. This change adds a fallback to SSH_ASKPASS.

Signed-off-by: Sven Strickroth <email@cs-ware.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-svn, perl/Git.pm: add central method for prompting... Sven Strickroth Tue, 18 Dec 2012 00:28:45 +0000 (01:28 +0100)

git-svn, perl/Git.pm: add central method for prompting passwords

git-svn reads passwords from an interactive terminal or by using
GIT_ASKPASS helper tool. This cause GUIs (w/o STDIN connected) to hang
waiting forever for git-svn to complete
(http://code.google.com/p/tortoisegit/issues/detail?id=967).

Commit 56a853b62c0ae7ebaad0a7a0a704f5ef561eb795 also tried to solve
this issue, but was incomplete as described above.

Instead of using hand-rolled prompt-response code that only works with the
interactive terminal, a reusable prompt() method is introduced in this commit.

Signed-off-by: Sven Strickroth <email@cs-ware.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation: move support for old compilers to Coding... Adam Spiers Sun, 16 Dec 2012 19:36:00 +0000 (19:36 +0000)

Documentation: move support for old compilers to CodingGuidelines

The "Try to be nice to older C compilers" text is clearly a guideline
to be borne in mind whilst coding rather than when submitting patches.

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

SubmittingPatches: add convention of prefixing commit... Adam Spiers Sun, 16 Dec 2012 19:35:59 +0000 (19:35 +0000)

SubmittingPatches: add convention of prefixing commit messages

Conscientious newcomers to git development will read SubmittingPatches
and CodingGuidelines, but could easily miss the convention of
prefixing commit messages with a single word identifying the file
or area the commit touches.

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

Documentation: don't link to example mail addressesJohn Keeping Sun, 16 Dec 2012 14:00:29 +0000 (14:00 +0000)

Documentation: don't link to example mail addresses

Email addresses in documentation are converted into mailto: hyperlinks
in the HTML output and footnotes in man pages. This isn't desirable for
cases where the address is used as an example and is not valid.

Particularly annoying is the example "jane@laptop.(none)" which appears
in git-shortlog(1) as "jane@laptop[1].(none)", with note 1 saying:

1. jane@laptop
mailto:jane@laptop

Fix this by escaping these email addresses with a leading backslash, to
prevent Asciidoc expanding them as inline macros.

In the case of mailmap.txt, render the address monospaced so that it
matches the block examples surrounding that paragraph.

Helped-by: Jeff King <peff@peff.net>
Signed-off-by: John Keeping <john@keeping.me.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

tests: test number comes first in 'not ok $count -... Adam Spiers Sun, 16 Dec 2012 18:28:09 +0000 (18:28 +0000)

tests: test number comes first in 'not ok $count - $message'

The old output to say "not ok - 1 messsage" was working by accident
only because the test numbers are optional in TAP.

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

Remove misleading date from api-index-skel.txtThomas Ackermann Sun, 16 Dec 2012 08:42:49 +0000 (09:42 +0100)

Remove misleading date from api-index-skel.txt

Signed-off-by: Thomas Ackermann <th.acker@arcor.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

cache-tree: invalidate i-t-a paths after generating... Nguyễn Thái Ngọc Duy Sun, 16 Dec 2012 04:15:28 +0000 (11:15 +0700)

cache-tree: invalidate i-t-a paths after generating trees

Intent-to-add entries used to forbid writing trees so it was not a
problem. After commit 3f6d56d (commit: ignore intent-to-add entries
instead of refusing - 2012-02-07), we can generate trees from an index
with i-t-a entries.

However, the commit forgets to invalidate all paths leading to i-t-a
entries. With fully valid cache-tree (e.g. after commit or
write-tree), diff operations may prefer cache-tree to index and not
see i-t-a entries in the index, because cache-tree does not have them.

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

cache-tree: fix writing cache-tree when CE_REMOVE is... Nguyễn Thái Ngọc Duy Sun, 16 Dec 2012 04:15:27 +0000 (11:15 +0700)

cache-tree: fix writing cache-tree when CE_REMOVE is present

entry_count is used in update_one() for two purposes:

1. to skip through the number of processed entries in in-memory index
2. to record the number of entries this cache-tree covers on disk

Unfortunately when CE_REMOVE is present these numbers are not the same
because CE_REMOVE entries are automatically removed before writing to
disk but entry_count is not adjusted and still counts CE_REMOVE
entries.

Separate the two use cases into two different variables. #1 is taken
care by the new field count in struct cache_tree_sub and entry_count
is prepared for #2.

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

cache-tree: replace "for" loops in update_one with... Nguyễn Thái Ngọc Duy Sun, 16 Dec 2012 04:15:26 +0000 (11:15 +0700)

cache-tree: replace "for" loops in update_one with "while" loops

The loops in update_one can be increased in two different ways: step
by one for files and by <n> for directories. "for" loop is not
suitable for this as it always steps by one and special handling is
required for directories. Replace them with "while" loops for clarity.

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

cache-tree: remove dead i-t-a code in verify_cache()Nguyễn Thái Ngọc Duy Sun, 16 Dec 2012 04:15:25 +0000 (11:15 +0700)

cache-tree: remove dead i-t-a code in verify_cache()

This code is added in 331fcb5 (git add --intent-to-add: do not let an
empty blob be committed by accident - 2008-11-28) to forbid committing
when i-t-a entries are present. When we allow that, we forgot to
remove this.

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

t3070: Disable some failing fnmatch testsRamsay Jones Sat, 15 Dec 2012 19:19:18 +0000 (19:19 +0000)

t3070: Disable some failing fnmatch tests

The failing tests make use of a POSIX character class, '[:xdigit:]'
in this case, which some versions of the fnmatch() library function
do not support. In the spirit of commit f1cf7b79 ("t3070: disable
unreliable fnmatch tests", 15-10-2012), we disable the fnmatch() half
of these tests.

Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Acked-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

README: it does not matter who the current maintainer isJunio C Hamano Sun, 16 Dec 2012 06:24:10 +0000 (22:24 -0800)

README: it does not matter who the current maintainer is

The audience of this introductory document does not have to know nor
interact with the maintainer, so drop the mention of him. Other
documents such as SubmittingPatches may be a more suitable place to
have it.

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

README: Git is released under the GPLv2, not just ... Stefano Lattarini Fri, 14 Dec 2012 15:37:47 +0000 (16:37 +0100)

README: Git is released under the GPLv2, not just "the GPL"

And this is clearly stressed by Linus in the COPYING file. So make it
clear in the README as well, to avoid possible misunderstandings.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Git 1.8.1-rc2 v1.8.1-rc2Junio C Hamano Sat, 15 Dec 2012 19:19:02 +0000 (11:19 -0800)

Git 1.8.1-rc2

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

completion: complete refs for "git commit -c"Jeff King Sat, 15 Dec 2012 17:46:43 +0000 (12:46 -0500)

completion: complete refs for "git commit -c"

The "-c" and "-C" options take an existing commit, so let's
complete refs, just as we would for --squash or --fixup.

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

Renumber list in api-command.txtThomas Ackermann Sat, 15 Dec 2012 08:29:07 +0000 (09:29 +0100)

Renumber list in api-command.txt

Start list with 1 instead of 0; ASCIIDOC will renumber it anyway.

Signed-off-by: Thomas Ackermann <th.acker@arcor.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

silence some -Wuninitialized false positivesJeff King Sat, 15 Dec 2012 17:42:10 +0000 (12:42 -0500)

silence some -Wuninitialized false positives

There are a few error functions that simply wrap error() and
provide a standardized message text. Like error(), they
always return -1; knowing that can help the compiler silence
some false positive -Wuninitialized warnings.

One strategy would be to just declare these as inline in the
header file so that the compiler can see that they always
return -1. However, gcc does not always inline them (e.g.,
it will not inline opterror, even with -O3), which renders
our change pointless.

Instead, let's follow the same route we did with error() in
the last patch, and define a macro that makes the constant
return value obvious to the compiler.

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

make error()'s constant return value more visibleJeff King Sat, 15 Dec 2012 17:37:36 +0000 (12:37 -0500)

make error()'s constant return value more visible

When git is compiled with "gcc -Wuninitialized -O3", some
inlined calls provide an additional opportunity for the
compiler to do static analysis on variable initialization.
For example, with two functions like this:

int get_foo(int *foo)
{
if (something_that_might_fail() < 0)
return error("unable to get foo");
*foo = 0;
return 0;
}

void some_fun(void)
{
int foo;
if (get_foo(&foo) < 0)
return -1;
printf("foo is %d\n", foo);
}

If get_foo() is not inlined, then when compiling some_fun,
gcc sees only that a pointer to the local variable is
passed, and must assume that it is an out parameter that
is initialized after get_foo returns.

However, when get_foo() is inlined, the compiler may look at
all of the code together and see that some code paths in
get_foo() do not initialize the variable. As a result, it
prints a warning. But what the compiler can't see is that
error() always returns -1, and therefore we know that either
we return early from some_fun, or foo ends up initialized,
and the code is safe. The warning is a false positive.

If we can make the compiler aware that error() will always
return -1, it can do a better job of analysis. The simplest
method would be to inline the error() function. However,
this doesn't work, because gcc will not inline a variadc
function. We can work around this by defining a macro. This
relies on two gcc extensions:

1. Variadic macros (these are present in C99, but we do
not rely on that).

2. Gcc treats the "##" paste operator specially between a
comma and __VA_ARGS__, which lets our variadic macro
work even if no format parameters are passed to
error().

Since we are using these extra features, we hide the macro
behind an #ifdef. This is OK, though, because our goal was
just to help gcc.

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

remote-testsvn: fix unitialized variableJeff King Fri, 14 Dec 2012 22:11:44 +0000 (17:11 -0500)

remote-testsvn: fix unitialized variable

In remote-test-svn, there is a parse_rev_note function to
parse lines of the form "Revision-number" from notes. If it
finds such a line and parses it, it returns 0, copying the
value into a "struct rev_note". If it finds an entry that is
garbled or out of range, it returns -1 to signal an error.

However, if it does not find any "Revision-number" line at
all, it returns success but does not put anything into the
rev_note. So upon a successful return, the rev_note may or
may not be initialized, and the caller has no way of
knowing.

gcc does not usually catch the use of the unitialized
variable because the conditional assignment happens in a
separate function from the point of use. However, when
compiling with -O3, gcc will inline parse_rev_note and
notice the problem.

We can fix it by returning "-1" when no note is found (so on
a zero return, we always found a valid value).

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

Generalize the inclusion of strings.hDavid Michael Fri, 14 Dec 2012 19:57:01 +0000 (14:57 -0500)

Generalize the inclusion of strings.h

The header strings.h was formerly only included for HP NonStop (aka
Tandem) to define strcasecmp, but another platform requiring this
inclusion has been found. The build system will now include the
file based on its presence determined by configure.

Signed-off-by: David Michael <fedora.dm0@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Detect when the passwd struct is missing pw_gecosDavid Michael Fri, 14 Dec 2012 19:56:59 +0000 (14:56 -0500)

Detect when the passwd struct is missing pw_gecos

NO_GECOS_IN_PWENT was documented with other Makefile variables but was only
enforced by manually defining it to the C preprocessor. This adds support
for detecting the condition with configure and defining the make variable.

Signed-off-by: David Michael <fedora.dm0@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Support builds when sys/param.h is missingDavid Michael Fri, 14 Dec 2012 19:56:58 +0000 (14:56 -0500)

Support builds when sys/param.h is missing

An option is added to the Makefile to skip the inclusion of sys/param.h.
The only known platform with this condition thus far is the z/OS UNIX System
Services environment.

Signed-off-by: David Michael <fedora.dm0@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

fetch --tags: clarify documentationJunio C Hamano Fri, 14 Dec 2012 00:19:45 +0000 (16:19 -0800)

fetch --tags: clarify documentation

Explain that --tags is just like another explicit refspec on the
command line and as such overrides the default refspecs configured
via the remote.$name.fetch variable.

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

remote-bzr: update working tree upon pushingFelipe Contreras Sun, 11 Nov 2012 14:19:55 +0000 (15:19 +0100)

remote-bzr: update working tree upon pushing

A 'git push' doesn't update the working directory on the remote, but
a 'bzr push' does. Teach the remote helper for bzr to update the
working tree on the bzr side upon pushing via the "export" command.

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

Merge branch 'maint'Junio C Hamano Thu, 13 Dec 2012 19:13:56 +0000 (11:13 -0800)

Merge branch 'maint'

Fix sizeof usage in get_permutationsMatthew Daley Thu, 13 Dec 2012 13:36:30 +0000 (02:36 +1300)

Fix sizeof usage in get_permutations

Currently it gets the size of an otherwise unrelated, unused variable
instead of the expected struct size.

Signed-off-by: Matthew Daley <mattjd@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'mh/doc-remote-helpers'Junio C Hamano Thu, 13 Dec 2012 19:00:15 +0000 (11:00 -0800)

Merge branch 'mh/doc-remote-helpers'

* mh/doc-remote-helpers:
git-remote-helpers.txt: clarify options & ref list attributes
git-remote-helpers.txt: clarify command <-> capability correspondences
git-remote-helpers.txt: rearrange description of capabilities
git-remote-helpers.txt: minor grammar fix
git-remote-helpers.txt: document missing capabilities
git-remote-helpers.txt: document invocation before input format

git.txt: add missing info about --git-dir command-line... Manlio Perillo Thu, 13 Dec 2012 17:57:19 +0000 (18:57 +0100)

git.txt: add missing info about --git-dir command-line option

Unlike other environment variables (e.g. GIT_WORK_TREE, GIT_NAMESPACE),
the Documentation/git.txt file did not mention that the GIT_DIR
environment variable can also be set using the --git-dir command line
option.

Signed-off-by: Manlio Perillo <manlio.perillo@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

mailmap: default mailmap.blob in bare repositoriesJeff King Thu, 13 Dec 2012 13:04:47 +0000 (08:04 -0500)

mailmap: default mailmap.blob in bare repositories

The motivation for mailmap.blob is to let users of bare
repositories use the mailmap feature, as they would not have
a checkout containing the .mailmap file. We can make it even
easier for them by just looking in HEAD:.mailmap by default.

We can't know for sure that this is where they would keep a
mailmap, of course, but it is the best guess (and it matches
the non-bare behavior, which reads from HEAD:.mailmap in the
working tree). If it's missing, git will silently ignore the
setting.

We do not do the same magic in the non-bare case, because:

1. In the common case, HEAD:.mailmap will be the same as
the .mailmap in the working tree, which is a no-op.

2. In the uncommon case, the user has modified .mailmap
but not yet committed it, and would expect the working
tree version to take precedence.

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

mailmap: fix some documentation loose-ends for mailmap... Jeff King Thu, 13 Dec 2012 13:08:12 +0000 (08:08 -0500)

mailmap: fix some documentation loose-ends for mailmap.blob

Anywhere we mention mailmap.file, it is probably worth
mentioning mailmap.blob, as well.

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

index-format.txt: clarify what is "invalid"Nguyễn Thái Ngọc Duy Thu, 13 Dec 2012 01:14:47 +0000 (08:14 +0700)

index-format.txt: clarify what is "invalid"

A cache-tree entry with a negative entry count is considered invalid
by the current Git; it records that we do not know the object name
of a tree that would result by writing the directory covered by the
cache-tree as a tree object.

Clarify that any entry with a negative entry count is invalid, but
the implementations must write -1 there. This way, we can later
decide to allow writers to use negative values other than -1 to
encode optional information on such invalidated entries without
harming interoperability; we do not know what will be encoded and
how, so we keep these other negative values as reserved for now.

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

git(1): show link to contributor summary pageJunio C Hamano Wed, 12 Dec 2012 18:06:24 +0000 (10:06 -0800)

git(1): show link to contributor summary page

We earlier removed a link to list of contributors that pointed to a
defunct page; let's use a working one from Ohloh.net to replace it
instead.

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

mailmap: clean up read_mailmap error handlingJeff King Wed, 12 Dec 2012 11:18:02 +0000 (06:18 -0500)

mailmap: clean up read_mailmap error handling

The error handling for the read_mailmap function is odd. It
returns 1 on error, rather than -1. And it treats a
non-existent mailmap as an error, even though there is no
reason that one needs to exist. Unless some other mailmap
source loads successfully, in which case the original error
is completely masked.

This does not cause any bugs, however, because no caller
bothers to check the return value, anyway. Let's make this a
little more robust to real errors and less surprising for
future callers that do check the error code:

1. Return -1 on errors.

2. Treat a missing entry (e.g., no mailmap.file given),
ENOENT, or a non-existent blob (for mailmap.blob) as
"no error".

3. Complain loudly when a real error (e.g., a transient
I/O error, no permission to open the mailmap file,
missing or corrupted blob object, etc) occurs.

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

mailmap: support reading mailmap from blobsJeff King Wed, 12 Dec 2012 11:04:04 +0000 (06:04 -0500)

mailmap: support reading mailmap from blobs

In a bare repository, there isn't a simple way to respect an
in-tree mailmap without extracting it to a temporary file.
This patch provides a config variable, similar to
mailmap.file, which reads the mailmap from a blob in the
repository.

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

mailmap: refactor mailmap parsing for non-file sourcesJeff King Wed, 12 Dec 2012 10:59:45 +0000 (05:59 -0500)

mailmap: refactor mailmap parsing for non-file sources

The read_single_mailmap function opens a mailmap file and
parses each line. In preparation for having non-file
mailmaps, let's pull out the line-parsing logic into its own
function (read_mailmap_line), and rename the file-parsing
function to match (read_mailmap_file).

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

contrib: update stats/mailmap scriptJeff King Wed, 12 Dec 2012 11:41:41 +0000 (06:41 -0500)

contrib: update stats/mailmap script

This version changes quite a few things:

1. The original parsed the mailmap file itself, and it did
it wrong (it did not understand entries with an extra
email key).

Instead, this version uses git's "%aE" and "%aN"
formats to have git perform the mapping, meaning we do
not have to read .mailmap at all, but still operate on
the current state that git sees (and it also works
properly from subdirs).

2. The original would find multiple names for an email,
but not the other way around.

This version can do either or both. If we find multiple
emails for a name, the resolution is less obvious than
the other way around. However, it can still be a
starting point for a human to investigate.

3. The original would order only by count, not by recency.

This version can do either. Combined with showing the
counts, it can be easier to decide how to resolve.

4. This version shows similar entries in a blank-delimited
stanza, which makes it more clear which options you are
picking from.

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

.mailmap: normalize emails for Linus TorvaldsJeff King Wed, 12 Dec 2012 11:41:04 +0000 (06:41 -0500)

.mailmap: normalize emails for Linus Torvalds

Linus used a lot of different per-machine email addresses in
the early days. This means that "git shortlog -nse" does not
aggregate his counts, and he is listed well below where he
should be (8th instead of 3rd).

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

.mailmap: normalize emails for Jeff KingJeff King Wed, 12 Dec 2012 11:38:26 +0000 (06:38 -0500)

.mailmap: normalize emails for Jeff King

I never meant anything special by using my @github.com
address; it is merely a mistake that it has sometimes bled
through to patches.

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

.mailmap: fix broken entry for Martin LanghoffJeff King Wed, 12 Dec 2012 11:38:06 +0000 (06:38 -0500)

.mailmap: fix broken entry for Martin Langhoff

Commit adc3192 (Martin Langhoff has a new e-mail address,
2010-10-05) added a mailmap entry, but forgot that both the
old and new email addresses need to appear for one to be
mapped to the other (i.e., we do not key mailmap emails by
name).

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

.mailmap: match up some obvious names/emailsJeff King Wed, 12 Dec 2012 11:36:35 +0000 (06:36 -0500)

.mailmap: match up some obvious names/emails

This patch updates git's .mailmap in cases where multiple
names are matched to a single email. The "master" name for
each email was chosen by:

1. If the only difference is in the presence or absence
of accented characters, the accented form is chosen
(under the assumption that it is the natural spelling,
and accents are sometimes stripped in email).

2. Otherwise, the most commonly used name is chosen.

3. If all names are equally common, the most recently used name is
chosen.

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

Merge branch 'so/prompt-command'Junio C Hamano Wed, 12 Dec 2012 19:08:13 +0000 (11:08 -0800)

Merge branch 'so/prompt-command'

* so/prompt-command:
git-prompt.sh: update PROMPT_COMMAND documentation

git-prompt.sh: update PROMPT_COMMAND documentationJunio C Hamano Tue, 11 Dec 2012 23:04:36 +0000 (15:04 -0800)

git-prompt.sh: update PROMPT_COMMAND documentation

The description of __git_ps1 function operating in two-arg mode was
not very clear. It said "set PROMPT_COMMAND=__git_ps1" which is not
the right usage for this mode, followed by "To customize the prompt,
do this", giving a false impression that those who do not want to
customize it can get away with no-arg form, which was incorrect.

Make it clear that this mode always takes two arguments, pre and
post, with an example.

The straight-forward one should be listed as the primary usage, and
the confusing one should be an alternate for advanced users. Swap
the order of these two.

Acked-by: Simon Oosthoek <s.oosthoek@xs4all.nl>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

nedmalloc: Fix a compile warning (exposed as error... Sebastian Schuberth Tue, 11 Dec 2012 20:34:51 +0000 (21:34 +0100)

nedmalloc: Fix a compile warning (exposed as error) with GCC 4.7.2

On MinGW, GCC 4.7.2 complains about

operation on 'p->m[end]' may be undefined

Fix this by replacing the faulty lines with those of 69825ca from

https://github.com/ned14/nedmalloc/blob/master/nedmalloc.c

Signed-off-by: Sebastian Schuberth <sschuberth@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Add file completion to tcsh git completion.Marc Khouzam Tue, 11 Dec 2012 21:36:57 +0000 (21:36 +0000)

Add file completion to tcsh git completion.

For bash completion, the option '-o bashdefault' is used to indicate
that when no other choices are available, file completion should be
performed. Since this option is not available in tcsh, no file
completion is ever performed. Therefore, commands like 'git add ',
'git send-email ', etc, require the user to manually type out
the file name. This can be quite annoying.

To improve the user experience we try to simulate file completion
directly in this script (although not perfectly).

The known issues with the file completion simulation are:
- Possible completions are shown with their directory prefix.
- Completions containing shell variables are not handled.
- Completions with ~ as the first character are not handled.

Signed-off-by: Marc Khouzam <marc.khouzam@ericsson.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

submodule: add get_submodule_config helper funtionW. Trevor King Tue, 11 Dec 2012 18:58:15 +0000 (13:58 -0500)

submodule: add get_submodule_config helper funtion

Several submodule configuration variables
(e.g. fetchRecurseSubmodules) are read from .gitmodules with local
overrides from the usual git config files. This shell function mimics
that logic to help initialize configuration variables in
git-submodule.sh.

Signed-off-by: W. Trevor King <wking@tremily.us>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'ef/mingw-rmdir'Junio C Hamano Tue, 11 Dec 2012 23:51:14 +0000 (15:51 -0800)

Merge branch 'ef/mingw-rmdir'

MinGW has a workaround when rmdir unnecessarily fails to retry with
a prompt, but the logic was kicking in when the rmdir failed with
ENOTEMPTY, i.e. was expected to fail and there is no point retrying.

* ef/mingw-rmdir:
mingw_rmdir: do not prompt for retry when non-empty

Merge branch 'ef/mingw-tty-getpass'Junio C Hamano Tue, 11 Dec 2012 23:51:09 +0000 (15:51 -0800)

Merge branch 'ef/mingw-tty-getpass'

Update getpass() emulation for MinGW.

* ef/mingw-tty-getpass:
mingw: get rid of getpass implementation
mingw: reuse tty-version of git_terminal_prompt
compat/terminal: separate input and output handles
compat/terminal: factor out echo-disabling
mingw: make fgetc raise SIGINT if apropriate
mingw: correct exit-code for SIGALRM's SIG_DFL

Merge branch 'maint'Junio C Hamano Tue, 11 Dec 2012 23:50:10 +0000 (15:50 -0800)

Merge branch 'maint'

* maint:
git-prompt: Document GIT_PS1_DESCRIBE_STYLE

git-prompt: Document GIT_PS1_DESCRIBE_STYLEAnders Kaseorg Tue, 11 Dec 2012 23:20:24 +0000 (18:20 -0500)

git-prompt: Document GIT_PS1_DESCRIBE_STYLE

GIT_PS1_DESCRIBE_STYLE was introduced in v1.6.3.2~35. Document it in the
header comments.

Signed-off-by: Anders Kaseorg <andersk@mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

fetch: ignore wildcarded refspecs that update local... Junio C Hamano Tue, 11 Dec 2012 21:00:52 +0000 (13:00 -0800)

fetch: ignore wildcarded refspecs that update local symbolic refs

In a repository cloned from somewhere else, you typically have a
symbolic ref refs/remotes/origin/HEAD pointing at the 'master'
remote-tracking ref that is next to it. When fetching into such a
repository with "git fetch --mirror" from another repository that
was similarly cloned, the implied wildcard refspec refs/*:refs/*
will end up asking to update refs/remotes/origin/HEAD with the
object at refs/remotes/origin/HEAD at the remote side, while asking
to update refs/remotes/origin/master the same way. Depending on the
order the two updates happen, the latter one would find that the
value of the ref before it is updated has changed from what the code
expects.

When the user asks to update the underlying ref via the symbolic ref
explicitly without using a wildcard refspec, e.g. "git fetch $there
refs/heads/master:refs/remotes/origin/HEAD", we should still let him
do so, but when expanding wildcard refs, it will result in a more
intuitive outcome if we simply ignore local symbolic refs.

As the purpose of the symbolic ref refs/remotes/origin/HEAD is to
follow the ref it points at (e.g. refs/remotes/origin/master), its
value would change when the underlying ref is updated.

Earlier commit da3efdb (receive-pack: detect aliased updates which
can occur with symrefs, 2010-04-19) fixed a similar issue for "git
push".

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

gitweb: Sort projects with undefined ages lastMatthew Daley Tue, 11 Dec 2012 10:56:07 +0000 (23:56 +1300)

gitweb: Sort projects with undefined ages last

Sorting gitweb's project list by age ('Last Change') currently shows
projects with undefined ages at the head of the list. This gives a less
useful result when there are a number of projects that are missing or
otherwise faulty and one is trying to see what projects have been
updated recently.

Fix by sorting these projects with undefined ages at the bottom of the
list when sorting by age.

Signed-off-by: Matthew Daley <mattjd@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

strbuf_add_wrapped*(): Remove unused return valueSteffen Prohaska Tue, 11 Dec 2012 05:59:22 +0000 (06:59 +0100)

strbuf_add_wrapped*(): Remove unused return value

Since shortlog isn't using the return value anymore (see previous
commit), the functions can be changed to void.

Signed-off-by: Steffen Prohaska <prohaska@zib.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

shortlog: fix wrapping lines of wraplenSteffen Prohaska Tue, 11 Dec 2012 05:59:21 +0000 (06:59 +0100)

shortlog: fix wrapping lines of wraplen

A recent commit [1] fixed a off-by-one wrapping error. As a
side-effect, the conditional in add_wrapped_shortlog_msg() to decide
whether to append a newline needs to be removed. The function
should always append a newline, which was the case before the
off-by-one fix, because strbuf_add_wrapped_text() never returns a
value of wraplen; when it returns wraplen, the string does not end
with a newline, so this caller needs to add one anyway.

[1] 14e1a4e1ff70aff36db3f5d2a8b806efd0134d50 utf8: fix off-by-one
wrapping of text

Signed-off-by: Steffen Prohaska <prohaska@zib.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

sh-setup: work around "unset IFS" bug in some shellsJunio C Hamano Fri, 7 Dec 2012 22:31:52 +0000 (14:31 -0800)

sh-setup: work around "unset IFS" bug in some shells

With an unset IFS, field splitting is supposed to act as if IFS is
set to the usual SP HT LF, but Marc Branchaud reports that the shell
on FreeBSD 7.2 gets this wrong.

It is easy to set it to the default value manually, and it is also
safer in case somebody tries to save the old value away and restore,
e.g.

$oIFS=$IFS
IFS=something
...
IFS=$oIFS

while forgetting that the original IFS might be unset (which can be
coded but would be more involved).

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

Sync with 1.8.0.2Junio C Hamano Mon, 10 Dec 2012 21:07:12 +0000 (13:07 -0800)

Sync with 1.8.0.2

* maint:
Git 1.8.0.2
Documentation/git-stash.txt: add a missing verb
git(1): remove a defunct link to "list of authors"

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

Git 1.8.0.2 v1.8.0.2Junio C Hamano Mon, 10 Dec 2012 21:05:47 +0000 (13:05 -0800)

Git 1.8.0.2

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

format_commit_message(): simplify calls to logmsg_reenc... Junio C Hamano Mon, 10 Dec 2012 20:50:10 +0000 (12:50 -0800)

format_commit_message(): simplify calls to logmsg_reencode()

All the other callers of logmsg_reencode() pass return value of
get_commit_output_encoding() or get_log_output_encoding(). Teach
the function to optionally take NULL as a synonym to "" aka "no
conversion requested" so that we can simplify the only remaining
calling site.

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

Makefile: whitespace style fixes in macro definitionsStefano Lattarini Sun, 9 Dec 2012 10:36:17 +0000 (11:36 +0100)

Makefile: whitespace style fixes in macro definitions

Consistently use a single space before and after the "=" (or ":=", "+=",
etc.) in assignments to make macros. Granted, this was not a big deal,
but I did find the needless inconsistency quite distracting.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

mingw_rmdir: do not prompt for retry when non-emptyErik Faye-Lund Mon, 10 Dec 2012 14:42:27 +0000 (15:42 +0100)

mingw_rmdir: do not prompt for retry when non-empty

in ab1a11be ("mingw_rmdir: set errno=ENOTEMPTY when appropriate"),
a check was added to prevent us from retrying to delete a directory
that is both in use and non-empty.

However, this logic was slightly flawed; since we didn't return
immediately, we end up falling out of the retry-loop, but right into
the prompting-loop.

Fix this by setting errno, and guarding the prompting-loop with an
errno-check.

Signed-off-by: Erik Faye-Lund <kusmabite@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation/git-stash.txt: add a missing verbSébastien Loriot Mon, 10 Dec 2012 07:22:34 +0000 (08:22 +0100)

Documentation/git-stash.txt: add a missing verb

Signed-off-by: Sébastien Loriot <sloriot.ml@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Which merge_file() function do you mean?Junio C Hamano Thu, 6 Dec 2012 23:08:01 +0000 (15:08 -0800)

Which merge_file() function do you mean?

There are two different static functions and one global function,
all of them called "merge_file()", with different signatures and
purposes. Rename them all to reduce confusion in "git grep" output:

* Rename the static one in merge-index to "merge_one_path(const char
*path)" as that function is about asking an external command to
resolve conflicts in one path.

* Rename the global one in merge-file.c that is only used by
merge-tree to "merge_blobs()", as the function takes three blobs and
returns the merged result only in-core, without doing anything to
the filesystem.

* Rename the one in merge-recursive to "merge_one_file()", just to be
fair.

Also rename merge-file.[ch] to merge-blobs.[ch].

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

git(1): remove a defunct link to "list of authors"Junio C Hamano Fri, 7 Dec 2012 17:54:50 +0000 (09:54 -0800)

git(1): remove a defunct link to "list of authors"

The linked page has not been showing the promised "more complete
list" for more than 6 months by now, and nobody has resurrected
the list there nor elsewhere since then.

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

Git 1.8.1-rc1 v1.8.1-rc1Junio C Hamano Fri, 7 Dec 2012 22:18:55 +0000 (14:18 -0800)

Git 1.8.1-rc1

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

Documentation/diff-config: work around AsciiDoc misfortuneJunio C Hamano Fri, 7 Dec 2012 23:15:59 +0000 (15:15 -0800)

Documentation/diff-config: work around AsciiDoc misfortune

The line that happens to begin with indent followed by "3. " was
interpreted as if it was an enumerated list; just wrap the lines
differently to work it around for now.

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

Merge branch 'maint'Junio C Hamano Fri, 7 Dec 2012 22:16:52 +0000 (14:16 -0800)

Merge branch 'maint'

* maint:
Update draft release notes to 1.8.0.2

Update draft release notes to 1.8.0.2Junio C Hamano Fri, 7 Dec 2012 22:16:38 +0000 (14:16 -0800)

Update draft release notes to 1.8.0.2

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

Merge branch 'jc/doc-push-satellite' into maintJunio C Hamano Fri, 7 Dec 2012 22:11:21 +0000 (14:11 -0800)

Merge branch 'jc/doc-push-satellite' into maint

* jc/doc-push-satellite:
Documentation/git-push.txt: clarify the "push from satellite" workflow

Merge branch 'jc/same-encoding' into maintJunio C Hamano Fri, 7 Dec 2012 22:10:56 +0000 (14:10 -0800)

Merge branch 'jc/same-encoding' into maint

Various codepaths checked if two encoding names are the same using
ad-hoc code and some of them ended up asking iconv() to convert
between "utf8" and "UTF-8". The former is not a valid way to spell
the encoding name, but often people use it by mistake, and we
equated them in some but not all codepaths. Introduce a new helper
function to make these codepaths consistent.

* jc/same-encoding:
reencode_string(): introduce and use same_encoding()

Merge branch 'lt/diff-stat-show-0-lines' into maintJunio C Hamano Fri, 7 Dec 2012 22:10:17 +0000 (14:10 -0800)

Merge branch 'lt/diff-stat-show-0-lines' into maint

"git diff --stat" miscounted the total number of changed lines when
binary files were involved and hidden beyond --stat-count. It also
miscounted the total number of changed files when there were
unmerged paths.

* lt/diff-stat-show-0-lines:
t4049: refocus tests
diff --shortstat: do not count "unmerged" entries
diff --stat: do not count "unmerged" entries
diff --stat: move the "total count" logic to the last loop
diff --stat: use "file" temporary variable to refer to data->files[i]
diff --stat: status of unmodified pair in diff-q is not zero
test: add failing tests for "diff --stat" to t4049
Fix "git diff --stat" for interesting - but empty - file changes

git-remote-helpers.txt: clarify options & ref list... Max Horn Tue, 27 Nov 2012 23:03:26 +0000 (00:03 +0100)

git-remote-helpers.txt: clarify options & ref list attributes

The documentation was misleading in that it gave the impression that
'for-push' could be used as a ref attribute in the output of the
'list' command. That is wrong.

Also, explicitly point out the connection between the commands
'list' and 'options' on the one hand, and the sections
'REF LIST ATTRIBUTES' and 'OPTIONS' on the other hand.

Signed-off-by: Max Horn <max@quendi.de>
Acked-by: Sverre Rabbelier <srabbelier@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>