gitweb.git
t: check that a pattern without trailing slash matches... Jeff King Thu, 28 Mar 2013 21:50:04 +0000 (17:50 -0400)

t: check that a pattern without trailing slash matches a directory

Prior to v1.8.1.1, with:

git init
echo content >foo &&
mkdir subdir &&
echo content >subdir/bar &&
echo "subdir export-ignore" >.gitattributes
git add . &&
git commit -m one &&
git archive HEAD | tar tf -

the resulting archive would contain only "foo" and ".gitattributes",
not subdir. This was broken with a recent change that intended to
allow "subdir/ export-ignore" to also exclude the directory, but
instead ended up _requiring_ the trailing slash by mistake.

A pattern "subdir" should match any path "subdir", whether it is a
directory or a non-directory. A pattern "subdir/" insists that a
path "subdir" must be a directory for it to match.

This patch adds test not just for this simple case, but also for
deeper cross-directory cases, as well as cases with wildcards.

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

dir.c::match_pathname(): pay attention to the length... Jeff King Thu, 28 Mar 2013 21:48:21 +0000 (17:48 -0400)

dir.c::match_pathname(): pay attention to the length of string parameters

This function takes two counted strings: a <pattern, patternlen> pair
and a <pathname, pathlen> pair. But we end up feeding the result to
fnmatch, which expects NUL-terminated strings.

We can fix this by calling the fnmatch_icase_mem function, which
handles re-allocating into a NUL-terminated string if necessary.

While we're at it, we can avoid even calling fnmatch in some cases. In
addition to patternlen, we get "prefix", the size of the pattern that
contains no wildcard characters. We do a straight match of the prefix
part first, and then use fnmatch to cover the rest. But if there are
no wildcards in the pattern at all, we do not even need to call
fnmatch; we would simply be comparing two empty strings.

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

dir.c::match_pathname(): adjust patternlen when shiftin... Jeff King Thu, 28 Mar 2013 21:47:47 +0000 (17:47 -0400)

dir.c::match_pathname(): adjust patternlen when shifting pattern

If we receive a pattern that starts with "/", we shift it
forward to avoid looking at the "/" part. Since the prefix
and patternlen parameters are counts of what is in the
pattern, we must decrement them as we increment the pointer.

We remembered to handle prefix, but not patternlen. This
didn't cause any bugs, though, because the patternlen
parameter is not actually used. Since it will be used in
future patches, let's correct this oversight.

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

dir.c::match_basename(): pay attention to the length... Junio C Hamano Thu, 28 Mar 2013 21:47:28 +0000 (17:47 -0400)

dir.c::match_basename(): pay attention to the length of string parameters

The function takes two counted strings (<basename, basenamelen> and
<pattern, patternlen>) as parameters, together with prefix (the
length of the prefix in pattern that is to be matched literally
without globbing against the basename) and EXC_* flags that tells it
how to match the pattern against the basename.

However, it did not pay attention to the length of these counted
strings. Update them to do the following:

* When the entire pattern is to be matched literally, the pattern
matches the basename only when the lengths of them are the same,
and they match up to that length.

* When the pattern is "*" followed by a string to be matched
literally, make sure that the basenamelen is equal or longer than
the "literal" part of the pattern, and the tail of the basename
string matches that literal part.

* Otherwise, use the new fnmatch_icase_mem helper to make
sure we only lookmake sure we use only look at the
counted part of the strings. Because these counted strings are
full strings most of the time, we check for termination
to avoid unnecessary allocation.

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

attr.c::path_matches(): special case paths that end... Junio C Hamano Thu, 28 Mar 2013 21:49:13 +0000 (17:49 -0400)

attr.c::path_matches(): special case paths that end with a slash

The function is given a string that ends with a slash to signal that
the path is a directory to make sure that a pattern that ends with a
slash (i.e. MUSTBEDIR) can tell directories and non-directories
apart. However, the pattern itself (pat->pattern and
pat->patternlen) that came from such a MUSTBEDIR pattern is
represented as a string that ends with a slash, but patternlen does
not count that trailing slash. A MUSTBEDIR pattern "element/" is
represented as a counted string <"element/", 7> and this must match
match pathname "element/".

Because match_basename() and match_pathname() want to see pathname
"element" to match against the pattern <"element/", 7>, reduce the
length of the path to exclude the trailing slash when calling
these functions.

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

attr.c::path_matches(): the basename is part of the... Junio C Hamano Tue, 26 Mar 2013 17:28:07 +0000 (10:28 -0700)

attr.c::path_matches(): the basename is part of the pathname

The function takes two strings (pathname and basename) as if they
are independent strings, but in reality, the latter is always
pointing into a substring in the former.

Clarify this relationship by expressing the latter as an offset into
the former.

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

attr: avoid calling find_basename() twice per pathDuy Nguyen Wed, 16 Jan 2013 06:02:38 +0000 (13:02 +0700)

attr: avoid calling find_basename() twice per path

find_basename() is only used inside collect_all_attrs(), called once
in prepare_attr_stack, then again after prepare_attr_stack()
returns. Both calls return exact same value. Reorder the code to do
the same task once. Also avoid strlen() because we knows the length
after finding basename.

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

attr: fix off-by-one directory component length calculationNguyễn Thái Ngọc Duy Tue, 15 Jan 2013 13:35:24 +0000 (20:35 +0700)

attr: fix off-by-one directory component length calculation

94bc671 (Add directory pattern matching to attributes - 2012-12-08)
uses find_basename() to calculate the length of directory part in
prepare_attr_stack. This function expects the directory without the
trailing slash (as "origin" field in match_attr struct is without the
trailing slash). find_basename() includes the trailing slash and
confuses push/pop algorithm.

Consider path = "abc/def" and the push down code:

while (1) {
len = strlen(attr_stack->origin);
if (dirlen <= len)
break;
cp = memchr(path + len + 1, '/', dirlen - len - 1);
if (!cp)
cp = path + dirlen;

dirlen is 4, not 3, without this patch. So when attr_stack->origin is
"abc", it'll miss the exit condition because 4 <= 3 is wrong. It'll
then try to push "abc/" down the attr stack (because "cp" would be
NULL). So we have both "abc" and "abc/" in the stack.

Next time when "abc/ghi" is checked, "abc/" is popped out because of
the off-by-one dirlen, only to be pushed back in again by the above
code. This repeats for all files in the same directory. Which means
at least one failed open syscall per file, or more if .gitattributes
exists.

This is the perf result with 10 runs on git.git:

Test 94bc671^ 94bc671 HEAD
----------------------------------------------------------------------------------------------------------
7810.1: grep worktree, cheap regex 0.02(0.01+0.04) 0.05(0.03+0.05) +150.0% 0.02(0.01+0.04) +0.0%
7810.2: grep worktree, expensive regex 0.25(0.94+0.01) 0.26(0.94+0.02) +4.0% 0.25(0.93+0.02) +0.0%
7810.3: grep --cached, cheap regex 0.11(0.10+0.00) 0.12(0.10+0.02) +9.1% 0.10(0.10+0.00) -9.1%
7810.4: grep --cached, expensive regex 0.61(0.60+0.01) 0.62(0.61+0.01) +1.6% 0.61(0.60+0.00) +0.0%

Reported-by: Ross Lagerwall <rosslagerwall@gmail.com>
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@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>

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>

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>

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>

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>

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>

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>

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

Merge branch 'master' of git://github.com/git-l10n... Junio C Hamano Fri, 7 Dec 2012 18:32:22 +0000 (10:32 -0800)

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

* 'master' of git://github.com/git-l10n/git-po:
l10n: de.po: translate 22 new messages
l10n: de.po: translate 825 new messages
l10n: Update Swedish translation (1979t0f0u)
l10n: vi.po: update to git-v1.8.0.1-347-gf94c3
l10n: Update git.pot (5 new, 1 removed messages)

Merge branch 'rr/t4041-cleanup'Junio C Hamano Fri, 7 Dec 2012 18:31:19 +0000 (10:31 -0800)

Merge branch 'rr/t4041-cleanup'

* rr/t4041-cleanup:
t4041 (diff-submodule-option): modernize style
t4041 (diff-submodule-option): rewrite add_file() routine
t4041 (diff-submodule-option): parse digests sensibly
t4041 (diff-submodule-option): don't hardcode SHA-1 in expected outputs

Merge branch git://github.com/ralfth/git-po-deJiang Xin Fri, 7 Dec 2012 09:28:58 +0000 (17:28 +0800)

Merge branch git://github.com/ralfth/git-po-de

* 'rt/de-l10n-updates-for-1.8.1' of git://github.com/ralfth/git-po-de:
l10n: de.po: translate 22 new messages
l10n: de.po: translate 825 new messages

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

l10n: de.po: translate 22 new messagesRalf Thielow Sun, 2 Dec 2012 15:57:38 +0000 (16:57 +0100)

l10n: de.po: translate 22 new messages

Translate 22 new messages came from git.pot
updates in 9306b5b (l10n: Update git.pot (3 new,
6 removed messages)), fe52cd6 (l10n: Update git.pot
(14 new, 3 removed messages)) and f9472e3
(l10n: Update git.pot (5 new, 1 removed messages)).

Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>
Reviewed-by: Michael J Gruber <git@drmicha.warpmail.net>

l10n: de.po: translate 825 new messagesRalf Thielow Sun, 16 Sep 2012 11:15:34 +0000 (13:15 +0200)

l10n: de.po: translate 825 new messages

Translate 825 new messages came from git.pot update in
cc76011 ("l10n: Update git.pot (825 new, 24 removed messages)").

Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>
Reviewed-by: Thomas Rast <trast@student.ethz.ch>
Helped-by: Michael J Gruber <git@drmicha.warpmail.net>

Merge branch 'mm/status-push-pull-advise'Junio C Hamano Tue, 4 Dec 2012 21:34:10 +0000 (13:34 -0800)

Merge branch 'mm/status-push-pull-advise'

* mm/status-push-pull-advise:
document that statusHints affects git checkout

mingw: get rid of getpass implementationErik Faye-Lund Tue, 4 Dec 2012 08:10:42 +0000 (09:10 +0100)

mingw: get rid of getpass implementation

There's no remaining call-sites, and as pointed out in the
previous commit message, it's not quite ideal. So let's just
lose it.

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

mingw: reuse tty-version of git_terminal_promptErik Faye-Lund Tue, 4 Dec 2012 08:10:41 +0000 (09:10 +0100)

mingw: reuse tty-version of git_terminal_prompt

The getpass-implementation we use on Windows isn't at all ideal;
it works in raw-mode (as opposed to cooked mode), and as a result
does not deal correcly with deletion, arrow-keys etc.

Instead, use cooked mode to read a line at the time, allowing the
C run-time to process the input properly.

Since we set files to be opened in binary-mode by default on
Windows, introduce a FORCE_TEXT macro that expands to the "t"
modifier that forces the terminal to be opened in text-mode so we
do not have to deal with CRLF issues.

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

compat/terminal: separate input and output handlesErik Faye-Lund Tue, 4 Dec 2012 08:10:40 +0000 (09:10 +0100)

compat/terminal: separate input and output handles

On Windows, the terminal cannot be opened in read-write mode, so
we need distinct pairs for reading and writing. Since this works
fine on other platforms as well, always open them in pairs.

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

compat/terminal: factor out echo-disablingErik Faye-Lund Tue, 4 Dec 2012 08:10:39 +0000 (09:10 +0100)

compat/terminal: factor out echo-disabling

By moving the echo-disabling code to a separate function, we can
implement OS-specific versions of it for non-POSIX platforms.

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

mingw: make fgetc raise SIGINT if apropriateErik Faye-Lund Tue, 4 Dec 2012 08:10:38 +0000 (09:10 +0100)

mingw: make fgetc raise SIGINT if apropriate

Set a control-handler to prevent the process from terminating, and
simulate SIGINT so it can be handled by a signal-handler as usual.

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

mingw: correct exit-code for SIGALRM's SIG_DFLErik Faye-Lund Tue, 4 Dec 2012 08:10:37 +0000 (09:10 +0100)

mingw: correct exit-code for SIGALRM's SIG_DFL

Make sure SIG_DFL for SIGALRM exits with 128 + SIGALRM so other
processes can diagnose why it exits.

While we're at it, make sure we only write to stderr if it's a
terminal, and change the output to match that of Linux.

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

document that statusHints affects git checkoutMatthieu Moy Tue, 4 Dec 2012 09:15:03 +0000 (10:15 +0100)

document that statusHints affects git checkout

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Git 1.8.1-rc0 v1.8.1-rc0Junio C Hamano Mon, 3 Dec 2012 17:49:51 +0000 (09:49 -0800)

Git 1.8.1-rc0

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

Merge branch 'mm/status-push-pull-advise'Junio C Hamano Mon, 3 Dec 2012 17:27:29 +0000 (09:27 -0800)

Merge branch 'mm/status-push-pull-advise'

Finishing touch to allow the new advice message squelched
with an advice.* configuration variable.

* mm/status-push-pull-advise:
status: respect advice.statusHints for ahead/behind advice

status: respect advice.statusHints for ahead/behind... Jeff King Mon, 3 Dec 2012 06:16:57 +0000 (01:16 -0500)

status: respect advice.statusHints for ahead/behind advice

If the user has unset advice.statusHints, we already
suppress the "use git reset to..." hints in each stanza. The
new "use git push to publish..." hint is the same type of
hint. Let's respect statusHints for it, rather than making
the user set yet another advice flag.

Signed-off-by: Jeff King <peff@peff.net>
Acked-by: Matthieu Moy <Matthieu.Moy@grenoble-inp.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t4041 (diff-submodule-option): modernize styleRamkumar Ramachandra Fri, 30 Nov 2012 11:37:36 +0000 (17:07 +0530)

t4041 (diff-submodule-option): modernize style

- Enclose tests in single quotes as opposed to double quotes. This is
the prevalent style in other tests.
- Remove the unused variable $head4_full.
- Indent the expected output so that it lines up with the rest of the
test text.

Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t4041 (diff-submodule-option): rewrite add_file() routineRamkumar Ramachandra Fri, 30 Nov 2012 11:37:35 +0000 (17:07 +0530)

t4041 (diff-submodule-option): rewrite add_file() routine

Instead of "cd there and then come back", use the "cd there in a
subshell" pattern. Also fix '&&' chaining in one place.

Suggested-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t4041 (diff-submodule-option): parse digests sensiblyRamkumar Ramachandra Fri, 30 Nov 2012 11:37:34 +0000 (17:07 +0530)

t4041 (diff-submodule-option): parse digests sensibly

`git rev-list --max-count=1 HEAD` is a roundabout way of saying `git
rev-parse --verify HEAD`; replace a bunch of instances of the former
with the latter. Also, don't unnecessarily `cut -c1-7` the rev-parse
output when the `--short` option is available.

Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

l10n: Update Swedish translation (1979t0f0u)Peter Krefting Fri, 30 Nov 2012 09:51:14 +0000 (10:51 +0100)

l10n: Update Swedish translation (1979t0f0u)

Signed-off-by: Peter Krefting <peter@softwolves.pp.se>

l10n: vi.po: update to git-v1.8.0.1-347-gf94c3Tran Ngoc Quan Fri, 30 Nov 2012 06:43:11 +0000 (13:43 +0700)

l10n: vi.po: update to git-v1.8.0.1-347-gf94c3

* updated all new messages (1979t0f0u)

Signed-off-by: Tran Ngoc Quan <vnwildman@gmail.com>

l10n: Update git.pot (5 new, 1 removed messages)Jiang Xin Fri, 30 Nov 2012 04:41:47 +0000 (12:41 +0800)

l10n: Update git.pot (5 new, 1 removed messages)

L10n for git 1.8.1 round 2: Generate po/git.pot from v1.8.0.1-347-gf94c3.

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

Update draft release notes to 1.8.1Junio C Hamano Thu, 29 Nov 2012 21:57:09 +0000 (13:57 -0800)

Update draft release notes to 1.8.1

Merge branch 'pw/p4-various-fixes'Junio C Hamano Thu, 29 Nov 2012 21:44:28 +0000 (13:44 -0800)

Merge branch 'pw/p4-various-fixes'

* pw/p4-various-fixes:
git p4: remove unneeded cmd initialization
git p4: fix labelDetails typo in exception
git p4 test: display unresolvable host error
git p4: catch p4 errors when streaming file contents
git p4: handle servers without move support
git p4: catch p4 describe errors

Merge branch 'lt/diff-stat-show-0-lines'Junio C Hamano Thu, 29 Nov 2012 20:53:54 +0000 (12:53 -0800)

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

"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

Merge branch 'fc/remote-hg'Junio C Hamano Thu, 29 Nov 2012 20:53:50 +0000 (12:53 -0800)

Merge branch 'fc/remote-hg'

New remote helper for hg.

* fc/remote-hg: (22 commits)
remote-hg: fix for older versions of python
remote-hg: fix for files with spaces
remote-hg: avoid bad refs
remote-hg: try the 'tip' if no checkout present
remote-hg: fix compatibility with older versions of hg
remote-hg: add missing config for basic tests
remote-hg: the author email can be null
remote-hg: add option to not track branches
remote-hg: add extra author test
remote-hg: add tests to compare with hg-git
remote-hg: add bidirectional tests
test-lib: avoid full path to store test results
remote-hg: add basic tests
remote-hg: fake bookmark when there's none
remote-hg: add compat for hg-git author fixes
remote-hg: add support for hg-git compat mode
remote-hg: match hg merge behavior
remote-hg: make sure the encoding is correct
remote-hg: add support to push URLs
remote-hg: add support for remote pushing
...

Merge branch 'mk/complete-tcsh'Junio C Hamano Thu, 29 Nov 2012 20:53:38 +0000 (12:53 -0800)

Merge branch 'mk/complete-tcsh'

Finishing touches for tcsh completion.

* mk/complete-tcsh:
Support for git aliasing for tcsh completion

Merge branch 'jc/doc-push-satellite'Junio C Hamano Thu, 29 Nov 2012 20:52:54 +0000 (12:52 -0800)

Merge branch 'jc/doc-push-satellite'

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

Merge branch 'km/send-email-remove-cruft-in-address'Junio C Hamano Thu, 29 Nov 2012 20:52:49 +0000 (12:52 -0800)

Merge branch 'km/send-email-remove-cruft-in-address'

* km/send-email-remove-cruft-in-address:
git-send-email: allow edit invalid email address
git-send-email: ask what to do with an invalid email address
git-send-email: remove invalid addresses earlier
git-send-email: fix fallback code in extract_valid_address()
git-send-email: remove garbage after email address

Merge branch 'jk/send-email-sender-prompt'Junio C Hamano Thu, 29 Nov 2012 20:52:45 +0000 (12:52 -0800)

Merge branch 'jk/send-email-sender-prompt'

General clean-ups in various areas, originally written to support a
patch that later turned out to be unneeded.

* jk/send-email-sender-prompt:
t9001: check send-email behavior with implicit sender
t: add tests for "git var"
ident: keep separate "explicit" flags for author and committer
ident: make user_ident_explicitly_given static
t7502: factor out autoident prerequisite
test-lib: allow negation of prerequisites

Merge branch 'fc/send-email-no-sender-prompt'Junio C Hamano Thu, 29 Nov 2012 20:52:42 +0000 (12:52 -0800)

Merge branch 'fc/send-email-no-sender-prompt'

* fc/send-email-no-sender-prompt:
send-email: avoid questions when user has an ident

Merge branch 'er/doc-add-new-commands'Junio C Hamano Thu, 29 Nov 2012 20:52:36 +0000 (12:52 -0800)

Merge branch 'er/doc-add-new-commands'

* er/doc-add-new-commands:
Documentation: how to add a new command

Merge branch 'jl/submodule-rm'Junio C Hamano Thu, 29 Nov 2012 20:52:30 +0000 (12:52 -0800)

Merge branch 'jl/submodule-rm'

Finishing touches to "git rm $submodule" that removes the working
tree of a submodule.

* jl/submodule-rm:
Teach rm to remove submodules when given with a trailing '/'

Merge branch 'pp/gitweb-config-underscore'Junio C Hamano Thu, 29 Nov 2012 20:52:16 +0000 (12:52 -0800)

Merge branch 'pp/gitweb-config-underscore'

The key "gitweb.remote_heads" is not legal git config; this maps it to
"gitweb.remoteheads".

* pp/gitweb-config-underscore:
gitweb: make remote_heads config setting work

Merge branch 'fc/completion-test-simplification'Junio C Hamano Thu, 29 Nov 2012 20:52:10 +0000 (12:52 -0800)

Merge branch 'fc/completion-test-simplification'

Clean up completion tests. Use of conslidated helper may make
instrumenting one particular test during debugging of the test
itself, but I think that issue should be addressed in some other
way (e.g. making sure individual tests in 9902 can be skipped).

* fc/completion-test-simplification:
completion: simplify __gitcomp() test helper
completion: refactor __gitcomp related tests
completion: consolidate test_completion*() tests
completion: simplify tests using test_completion_long()
completion: standardize final space marker in tests
completion: add comment for test_completion()

Merge branch 'maint'Junio C Hamano Thu, 29 Nov 2012 20:21:17 +0000 (12:21 -0800)

Merge branch 'maint'

* maint:
git-fast-import.txt: improve documentation for quoted paths
git-remote-mediawiki: escape ", \, and LF in file names

git-fast-import.txt: improve documentation for quoted... Matthieu Moy Thu, 29 Nov 2012 19:11:32 +0000 (20:11 +0100)

git-fast-import.txt: improve documentation for quoted paths

The documentation mentioned only newlines and double quotes as
characters needing escaping, but the backslash also needs it. Also, the
documentation was not clearly saying that double quotes around the file
name were required (double quotes in the examples could be interpreted as
part of the sentence, not part of the actual string).

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-remote-mediawiki: escape ", \, and LF in file namesMatthieu Moy Thu, 29 Nov 2012 17:00:55 +0000 (18:00 +0100)

git-remote-mediawiki: escape ", \, and LF in file names

A mediawiki page can contain, and even start with a " character, we have
to escape it when generating the fast-export stream, as well as \
character. While we're there, also escape newlines, but I don't think we
can get them from MediaWiki pages.

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'master' of git://github.com/git-l10n... Junio C Hamano Thu, 29 Nov 2012 18:05:51 +0000 (10:05 -0800)

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

Further l10n updates.

* 'master' of git://github.com/git-l10n/git-po:
l10n: vi.po: Update follow git-v1.8.0-273-g2d242

t4049: refocus testsJunio C Hamano Thu, 29 Nov 2012 17:46:30 +0000 (09:46 -0800)

t4049: refocus tests

The primary thing Linus's patch wanted to change was to make sure
that 0-line change appears for a mode-only change. Update the
first test to chmod a file that we can see in the output (limited
by --stat-count) to demonstrate it. Also make sure to use test_chmod
and compare the index and the tree, so that we can run this test
even on a filesystem without permission bits.

Later two tests are about fixes to separate issues that were
introduced and/or uncovered by Linus's patch as a side effect, but
the issues are not related to mode-only changes. Remove chmod from
the tests.

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

completion: fix warning for zshFelipe Contreras Thu, 29 Nov 2012 08:20:57 +0000 (09:20 +0100)

completion: fix warning for zsh

Otherwise the user might get something like:

git-completion.sh:2466: command not found: compdef

If this script is loaded before compinit. The script would work either
way, but let's not be more annoying to the user.

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

Merge git://github.com/vnwildman/gitJiang Xin Thu, 29 Nov 2012 08:25:40 +0000 (16:25 +0800)

Merge git://github.com/vnwildman/git

* git://github.com/vnwildman/git:
l10n: vi.po: Update follow git-v1.8.0-273-g2d242

Merge branch 'master' of git://github.com/git-l10n... Junio C Hamano Thu, 29 Nov 2012 05:58:27 +0000 (21:58 -0800)

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

Update the localization string up to 2d242fb (Update draft release
notes for 1.8.1, 2012-11-21)

* 'master' of git://github.com/git-l10n/git-po:
l10n: Update Swedish translation (1975t0f0u)
l10n: vi.po: update to git-v1.7.12-437-g1084f
l10n: Update git.pot (14 new, 3 removed messages)

Merge branch 'maint'Junio C Hamano Wed, 28 Nov 2012 21:49:33 +0000 (13:49 -0800)

Merge branch 'maint'

Update draft release notes to 1.8.1Junio C Hamano Wed, 28 Nov 2012 21:49:10 +0000 (13:49 -0800)

Update draft release notes to 1.8.1

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

Merge branch 'fc/zsh-completion'Junio C Hamano Wed, 28 Nov 2012 21:42:36 +0000 (13:42 -0800)

Merge branch 'fc/zsh-completion'

* fc/zsh-completion:
completion: start moving to the new zsh completion
completion: add new zsh completion

Merge branch 'mm/status-push-pull-advise'Junio C Hamano Wed, 28 Nov 2012 21:42:30 +0000 (13:42 -0800)

Merge branch 'mm/status-push-pull-advise'

* mm/status-push-pull-advise:
status: add advice on how to push/pull to tracking branch

Merge branch 'jk/pickaxe-textconv'Junio C Hamano Wed, 28 Nov 2012 21:42:24 +0000 (13:42 -0800)

Merge branch 'jk/pickaxe-textconv'

Use textconv filters when searching with "log -S".

* jk/pickaxe-textconv:
pickaxe: use textconv for -S counting
pickaxe: hoist empty needle check

Start preparing for 1.8.0.2Junio C Hamano Wed, 28 Nov 2012 21:40:02 +0000 (13:40 -0800)

Start preparing for 1.8.0.2

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

t9001: check send-email behavior with implicit senderJeff King Wed, 28 Nov 2012 20:06:26 +0000 (15:06 -0500)

t9001: check send-email behavior with implicit sender

We allow send-email to use an implicitly-defined identity
for the sender (because there is still a confirmation step),
but we abort when we cannot generate such an identity. Let's
make sure that we test this.

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

Merge branch 'rh/maint-gitweb-highlight-ext' into maintJunio C Hamano Wed, 28 Nov 2012 20:05:30 +0000 (12:05 -0800)

Merge branch 'rh/maint-gitweb-highlight-ext' into maint

Syntax highlighting in "gitweb" was not quite working.

* rh/maint-gitweb-highlight-ext:
gitweb.perl: fix %highlight_ext mappings

Merge branch 'pw/maint-p4-rcs-expansion-newline' into... Junio C Hamano Wed, 28 Nov 2012 20:04:32 +0000 (12:04 -0800)

Merge branch 'pw/maint-p4-rcs-expansion-newline' into maint

"git p4" used to try expanding malformed "$keyword$" that spans
across multiple lines.

* pw/maint-p4-rcs-expansion-newline:
git p4: RCS expansion should not span newlines

completion: add options --single-branch and --branch... Ralf Thielow Wed, 28 Nov 2012 18:27:02 +0000 (19:27 +0100)

completion: add options --single-branch and --branch to "git clone"

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

Merge branch 'fc/send-email-no-sender-prompt' into... Junio C Hamano Wed, 28 Nov 2012 18:50:20 +0000 (10:50 -0800)

Merge branch 'fc/send-email-no-sender-prompt' into jk/send-email-sender-prompt

* fc/send-email-no-sender-prompt:
send-email: avoid questions when user has an ident

t: add tests for "git var"Jeff King Wed, 28 Nov 2012 18:26:43 +0000 (13:26 -0500)

t: add tests for "git var"

We do not currently have any explicit tests for "git var" at
all (though we do exercise it to some degree as a part of
other tests). Let's add a few basic sanity checks.

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

Documentation/git-push.txt: clarify the "push from... Junio C Hamano Tue, 27 Nov 2012 23:52:27 +0000 (15:52 -0800)

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

The context of the example to push into refs/remotes/satellite/
hierarchy of the other repository needs to be spelled out explicitly
for the value of this example to be fully appreciated. Make it so.

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

remote-hg: fix for older versions of pythonFelipe Contreras Wed, 28 Nov 2012 01:01:33 +0000 (02:01 +0100)

remote-hg: fix for older versions of python

As Amit Bakshi reported, older versions of python (< 2.7) don't have
subprocess.check_output, so let's use subprocess.Popen directly as
suggested.

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

remote-hg: fix for files with spacesFelipe Contreras Wed, 28 Nov 2012 01:01:32 +0000 (02:01 +0100)

remote-hg: fix for files with spaces

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

diff --shortstat: do not count "unmerged" entriesJunio C Hamano Tue, 27 Nov 2012 22:19:36 +0000 (14:19 -0800)

diff --shortstat: do not count "unmerged" entries

Fix the same issue as the previous one for "git diff --stat";
unmerged entries was doubly-counted.

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

Merge branch 'maint'Junio C Hamano Tue, 27 Nov 2012 21:29:08 +0000 (13:29 -0800)

Merge branch 'maint'

Merge branch 'nd/maint-compat-fnmatch-fix' into maintJunio C Hamano Tue, 27 Nov 2012 21:29:00 +0000 (13:29 -0800)

Merge branch 'nd/maint-compat-fnmatch-fix' into maint

* nd/maint-compat-fnmatch-fix:
compat/fnmatch: fix off-by-one character class's length check

Merge branch 'jh/update-ref-d-through-symref' into... Junio C Hamano Tue, 27 Nov 2012 21:28:45 +0000 (13:28 -0800)

Merge branch 'jh/update-ref-d-through-symref' into maint

* jh/update-ref-d-through-symref:
Fix failure to delete a packed ref through a symref
t1400-update-ref: Add test verifying bug with symrefs in delete_ref()

Merge branch 'esr/maint-doc-fast-import' into maintJunio C Hamano Tue, 27 Nov 2012 21:28:31 +0000 (13:28 -0800)

Merge branch 'esr/maint-doc-fast-import' into maint

* esr/maint-doc-fast-import:
doc/fast-import: clarify how content states are built

Merge branch 'wtk/submodule-doc-fixup' into maintJunio C Hamano Tue, 27 Nov 2012 21:28:18 +0000 (13:28 -0800)

Merge branch 'wtk/submodule-doc-fixup' into maint

* wtk/submodule-doc-fixup:
git-submodule: wrap branch option with "<>" in usage strings.

diff --stat: do not count "unmerged" entriesJunio C Hamano Tue, 27 Nov 2012 20:05:10 +0000 (12:05 -0800)

diff --stat: do not count "unmerged" entries

Even though we show a separate *UNMERGED* entry in the patch and
diffstat output (or in the --raw format, for that matter) in
addition to and separately from the diff against the specified stage
(defaulting to #2) for unmerged paths, they should not be counted in
the total number of files affected---that would lead to counting the
same path twice.

The separation done by the previous step makes this fix simple and
straightforward. Among the filepairs in diff_queue, paths that
weren't modified, and the extra "unmerged" entries do not count as
total number of files.

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

diff --stat: move the "total count" logic to the last... Junio C Hamano Tue, 27 Nov 2012 19:47:46 +0000 (11:47 -0800)

diff --stat: move the "total count" logic to the last loop

The diffstat generation logic, with --stat-count limit, is
implemented as three loops.

- The first counts the width necessary to show stats up to
specified number of entries, and notes up to how many entries in
the data we need to iterate to show the graph;

- The second iterates that many times to draw the graph, adjusts
the number of "total modified files", and counts the total
added/deleted lines for the part that was shown in the graph;

- The third iterates over the remainder and only does the part to
count "total added/deleted lines" and to adjust "total modified
files" without drawing anything.

Move the logic to count added/deleted lines and modified files from
the second loop to the third loop.

This incidentally fixes a bug. The third loop was not filtering
binary changes (counted in bytes) from the total added/deleted as it
should. The second loop implemented this correctly, so if a binary
change appeared earlier than the --stat-count cutoff, the code
counted number of added/deleted lines correctly, but if it appeared
beyond the cutoff, the number of lines would have mixed with the
byte count in the buggy third loop.

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

diff --stat: use "file" temporary variable to refer... Junio C Hamano Tue, 27 Nov 2012 19:24:54 +0000 (11:24 -0800)

diff --stat: use "file" temporary variable to refer to data->files[i]

The generated code shouldn't change but it is easier to read.

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

diff --stat: status of unmodified pair in diff-q is... Junio C Hamano Tue, 27 Nov 2012 19:17:14 +0000 (11:17 -0800)

diff --stat: status of unmodified pair in diff-q is not zero

It is spelled DIFF_STATUS_UNKNOWN these days, and is different from zero.

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

test: add failing tests for "diff --stat" to t4049Junio C Hamano Tue, 27 Nov 2012 20:55:00 +0000 (12:55 -0800)

test: add failing tests for "diff --stat" to t4049

There are a few problems in diff.c around --stat area, partially
caused by the recent 74faaa1 (Fix "git diff --stat" for interesting
- but empty - file changes, 2012-10-17), and largely caused by the
earlier change that introduced when --stat-count was added.

Add a few test pieces to t4049 to expose the issues.

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

t4041 (diff-submodule-option): don't hardcode SHA-1... Ramkumar Ramachandra Mon, 26 Nov 2012 13:54:28 +0000 (19:24 +0530)

t4041 (diff-submodule-option): 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: Ramkumar Ramachandra <artagnon@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>