gitweb.git
mergetool: no longer need to save standard inputJunio C Hamano Fri, 16 Sep 2011 20:19:33 +0000 (13:19 -0700)

mergetool: no longer need to save standard input

Earlier code wanted to run merge_file and prompt_after_failed_merge
both of which wanted to read from the standard input of the entire
script inside a while loop, which read from a pipe, and in order to
do so, it redirected the original standard input to another file
descriptor. We no longer need to do so after the previous change.

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

mergetool: Use args as pathspec to unmerged filesJonathon Mah Fri, 16 Sep 2011 02:12:10 +0000 (19:12 -0700)

mergetool: Use args as pathspec to unmerged files

Mergetool now treats its path arguments as a pathspec (like other git
subcommands), restricting action to the given files and directories.
Files matching the pathspec are filtered so mergetool only acts on
unmerged paths; previously it would assume each path argument was in an
unresolved state, and get confused when it couldn't check out their
other stages.

Running "git mergetool subdir" will prompt to resolve all conflicted
blobs under subdir.

Signed-off-by: Jonathon Mah <me@JonathonMah.com>
Acked-by: David Aguilar <davvid@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Git 1.7.7-rc3 v1.7.7-rc3Junio C Hamano Fri, 23 Sep 2011 22:35:57 +0000 (15:35 -0700)

Git 1.7.7-rc3

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

Merge 1.7.6.4 inJunio C Hamano Fri, 23 Sep 2011 22:31:08 +0000 (15:31 -0700)

Merge 1.7.6.4 in

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

merge-recursive: Do not look at working tree during... Junio C Hamano Fri, 23 Sep 2011 22:21:01 +0000 (15:21 -0700)

merge-recursive: Do not look at working tree during a virtual ancestor merge

Fix another instance of a recursive merge incorrectly paying attention to
the working tree file during a virtual ancestor merge, that resulted in
spurious and useless "addinfo_cache failed" error message.

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

Git 1.7.6.4 v1.7.6.4Junio C Hamano Fri, 23 Sep 2011 21:38:39 +0000 (14:38 -0700)

Git 1.7.6.4

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

Merge branch 'cb/maint-ls-files-error-report' into... Junio C Hamano Fri, 23 Sep 2011 21:30:49 +0000 (14:30 -0700)

Merge branch 'cb/maint-ls-files-error-report' into maint

* cb/maint-ls-files-error-report:
t3005: do not assume a particular order of stdout and stderr of git-ls-files
ls-files: fix pathspec display on error

describe: Refresh the index when run with --dirtyAllan Caffee Mon, 1 Aug 2011 01:52:41 +0000 (21:52 -0400)

describe: Refresh the index when run with --dirty

When running git describe --dirty the index should be refreshed. Previously
the cached index would cause describe to think that the index was dirty when,
in reality, it was just stale.

The issue was exposed by python setuptools which hardlinks files into another
directory when building a distribution.

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

Merge branch 'jc/maint-clone-alternates' into maintJunio C Hamano Fri, 23 Sep 2011 21:27:33 +0000 (14:27 -0700)

Merge branch 'jc/maint-clone-alternates' into maint

* jc/maint-clone-alternates:
clone: clone from a repository with relative alternates
clone: allow more than one --reference

Merge branch 'nd/maint-clone-gitdir' into maintJunio C Hamano Fri, 23 Sep 2011 21:21:39 +0000 (14:21 -0700)

Merge branch 'nd/maint-clone-gitdir' into maint

* nd/maint-clone-gitdir:
clone: allow to clone from .git file
read_gitfile_gently(): rename misnamed function to read_gitfile()

Merge branch 'mh/check-ref-format-print-normalize'... Junio C Hamano Fri, 23 Sep 2011 21:20:51 +0000 (14:20 -0700)

Merge branch 'mh/check-ref-format-print-normalize' into maint

* mh/check-ref-format-print-normalize:
Forbid DEL characters in reference names
check-ref-format --print: Normalize refnames that start with slashes

Merge branch 'mg/branch-set-upstream-previous' into... Junio C Hamano Fri, 23 Sep 2011 21:16:22 +0000 (14:16 -0700)

Merge branch 'mg/branch-set-upstream-previous' into maint

* mg/branch-set-upstream-previous:
branch.c: use the parsed branch name

Merge branch 'gb/maint-am-patch-format-error-message... Junio C Hamano Fri, 23 Sep 2011 21:11:18 +0000 (14:11 -0700)

Merge branch 'gb/maint-am-patch-format-error-message' into maint

* gb/maint-am-patch-format-error-message:
am: format is in $patch_format, not parse_patch

t0003: remove extra whitespacesJunio C Hamano Thu, 22 Sep 2011 23:34:05 +0000 (16:34 -0700)

t0003: remove extra whitespaces

The test had excess whitespaces everywhere that made it harder to
read than necessary. Remove them.

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

Teach '--cached' option to check-attrJay Soffian Thu, 22 Sep 2011 21:44:20 +0000 (17:44 -0400)

Teach '--cached' option to check-attr

This option causes check-attr to consider .gitattributes only from
the index, ignoring .gitattributes from the working tree. This allows
the command to be used in situations where a working tree does not exist.

Signed-off-by: Jay Soffian <jaysoffian@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

diff: teach --stat/--numstat to honor -U$numJunio C Hamano Thu, 22 Sep 2011 17:54:47 +0000 (10:54 -0700)

diff: teach --stat/--numstat to honor -U$num

"git diff -p" piped to external diffstat and "git diff --stat" may see
different patch text (both are valid and describe the same change
correctly) when counting the number of added and deleted lines, arriving
at different results to confuse the users, as --stat/--numstat codepath
always uses the hardcoded -U0 as the context length.

Make --stat/--numstat codepath to honor the context length the same way
as the textual patch codepath does to avoid this problem.

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

patch-id.c: use strbuf instead of a fixed bufferMichael Schubert Wed, 21 Sep 2011 12:42:22 +0000 (14:42 +0200)

patch-id.c: use strbuf instead of a fixed buffer

get_one_patchid() uses a rather dumb heuristic to determine if the
passed buffer is part of the next commit. Whenever the first 40 bytes
are a valid hexadecimal sha1 representation, get_one_patchid() returns
next_sha1.

Once the current line is longer than the fixed buffer, this will break
(provided the additional bytes make a valid hexadecimal sha1). As a result
patch-id returns incorrect results. Instead, use strbuf and read one line
at a time.

Helped-by: Jeff King <peff@peff.net>
Signed-off-by: Michael Schubert <mschub@elegosoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-read-tree.txt: correct sparse-checkout and skip... Michael J Gruber Wed, 21 Sep 2011 07:48:38 +0000 (09:48 +0200)

git-read-tree.txt: correct sparse-checkout and skip-worktree description

The description of .git/info/sparse-checkout and
skip-worktree is exactly the opposite of what is true, which is:

If a file matches a pattern in sparse-checkout, then (it is to be
checked out and therefore) skip-worktree is unset for that file;
otherwise, it is set (so that it is not checked out).

Currently, the opposite is documented, and (consistently) read-tree's
behavior with respect to bit flips is descibed incorrectly.

Fix it.

In hindsight, it would have been much better to have a "sparse-ignore"
or "sparse-skip" file so that an empty file would mean a full checkout,
and the file logic would be analogous to that of .gitignore, excludes
and skip-worktree.

Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-read-tree.txt: language and typography fixesMichael J Gruber Wed, 21 Sep 2011 07:48:37 +0000 (09:48 +0200)

git-read-tree.txt: language and typography fixes

Fix a few missing articles and such, and mark-up 'commands' and `files`
appropriately.

Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

unpack-trees: print "Aborting" to stderrMichael J Gruber Wed, 21 Sep 2011 07:48:36 +0000 (09:48 +0200)

unpack-trees: print "Aborting" to stderr

display_error_msgs() prints all the errors to stderr already (if any),
followed by "Aborting" (if any) to stdout. Make the latter go to stderr
instead.

Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Remove 'working copy' from the documentation and C... Carlos Martín Nieto Tue, 20 Sep 2011 20:25:57 +0000 (22:25 +0200)

Remove 'working copy' from the documentation and C code

The git term is 'working tree', so replace the most public references
to 'working copy'.

Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t9159-*.sh: skip for mergeinfo test for svn <= 1.4Ramsay Jones Sat, 10 Sep 2011 17:40:10 +0000 (18:40 +0100)

t9159-*.sh: skip for mergeinfo test for svn <= 1.4

t9159 relies on the command-line syntax of svn >= 1.5. Given the
declining install base of older svn versions, it is not worth our time to
support older svn syntax.

Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Acked-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation/git-update-index: refer to 'ls-files'Stefan Naewe Wed, 21 Sep 2011 06:21:50 +0000 (08:21 +0200)

Documentation/git-update-index: refer to 'ls-files'

'ls-files' refers to 'update-index' to show how the 'assume unchanged'
bit can be seen. This makes the connection 'bi-directional'.

Signed-off-by: Stefan Naewe <stefan.naewe@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'maint'Junio C Hamano Tue, 20 Sep 2011 03:46:48 +0000 (20:46 -0700)

Merge branch 'maint'

* maint:
git-mergetool: check return value from read

git-mergetool: check return value from readJay Soffian Mon, 19 Sep 2011 23:40:52 +0000 (19:40 -0400)

git-mergetool: check return value from read

Mostly fixed already by 6b44577 (mergetool: check return value
from read, 2011-07-01). Catch two uses it missed.

Signed-off-by: Jay Soffian <jaysoffian@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'ph/format-patch-no-color'Junio C Hamano Mon, 19 Sep 2011 20:15:41 +0000 (13:15 -0700)

Merge branch 'ph/format-patch-no-color'

* ph/format-patch-no-color:
t4014: clean up format.thread config after each test

t4014: clean up format.thread config after each testJeff King Mon, 19 Sep 2011 19:15:45 +0000 (15:15 -0400)

t4014: clean up format.thread config after each test

The threading tests turn on format.thread, but never clean
up after themselves, meaning that later tests will also have
format.thread set.

This is more annoying than most leftover config, too,
because not only does it impact the results of other tests,
but it does so non-deterministically. Threading requires the
generation of message-ids, which incorporate the current
time, meaning a slow-running test script may generate
different results from run to run.

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

Teach progress eye-candy to fetch_refs_from_bundle()Junio C Hamano Sun, 18 Sep 2011 23:52:32 +0000 (16:52 -0700)

Teach progress eye-candy to fetch_refs_from_bundle()

With the usual "git" transport, a large-ish transfer with "git fetch" and
"git pull" give progress eye-candy to avoid boring users. However, not
when they are reading from a bundle. I.e.

$ git pull ../git-bundle.bndl master

This teaches bundle.c:unbundle() to give "-v" option to index-pack and
tell it to give progress bar when transport decides it is necessary.

The operation in the other direction, "git bundle create", could also
learn to honor --quiet but that is a separate issue.

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

Git 1.7.7-rc2 v1.7.7-rc2Junio C Hamano Sun, 18 Sep 2011 22:41:34 +0000 (15:41 -0700)

Git 1.7.7-rc2

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

Merge branch 'ci/forbid-unwanted-current-branch-update'Junio C Hamano Sat, 17 Sep 2011 04:48:10 +0000 (21:48 -0700)

Merge branch 'ci/forbid-unwanted-current-branch-update'

* ci/forbid-unwanted-current-branch-update:
branch --set-upstream: regression fix

branch --set-upstream: regression fixJunio C Hamano Fri, 16 Sep 2011 23:28:38 +0000 (16:28 -0700)

branch --set-upstream: regression fix

The "git branch" command, while not in listing mode, calls create_branch()
even when the target branch already exists, and it does so even when it is
not interested in updating the value of the branch (i.e. the name of the
commit object that sits at the tip of the existing branch). This happens
when the command is run with "--set-upstream" option.

The earlier safety-measure to prevent "git branch -f $branch $commit" from
updating the currently checked out branch did not take it into account,
and we no longer can update the tracking information of the current branch.

Minimally fix this regression by telling the validation code if it is
called to really update the value of a potentially existing branch, or if
the caller merely is interested in updating auxiliary aspects of a branch.

Reported-and-Tested-by: Jay Soffian
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Disambiguate duplicate t9160* testsFrédéric Heitzmann Fri, 16 Sep 2011 19:55:03 +0000 (21:55 +0200)

Disambiguate duplicate t9160* tests

1e5814f created t9160-git-svn-mergeinfo-push.sh on 11/9/7
40a1530 created t9160-git-svn-preserve-empty-dirs.sh on 11/7/20
The former test script is renumbered to t9161.

Signed-off-by: Frédéric Heitzmann <frederic.heitzmann@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

ls-remote: a lone "-h" is asking for helpJunio C Hamano Fri, 16 Sep 2011 18:14:27 +0000 (11:14 -0700)

ls-remote: a lone "-h" is asking for help

What should happen if you run this command?

$ git ls-remote -h

It does not give a short-help for the command. Instead because "-h" is a
synonym for "--heads", it runs "git ls-remote --heads", and because there
is no remote specified on the command line, we run it against the default
"origin" remote, hence end up doing the same as

$ git ls-remote --heads origin

Fix this counter-intuitive behaviour by special casing a lone "-h" that
does not have anything else on the command line and calling usage().

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

gitweb: Strip non-printable characters from syntax... Jakub Narebski Fri, 16 Sep 2011 12:41:57 +0000 (14:41 +0200)

gitweb: Strip non-printable characters from syntax highlighter output

The current code, as is, passes control characters, such as form-feed
(^L) to highlight which then passes it through to the browser. User
agents (web browsers) that support 'application/xhtml+xml' usually
require that web pages declared as XHTML and with this mimetype are
well-formed XML. Unescaped control characters cannot appear within a
contents of a valid XML document.

This will cause the browser to display one of the following warnings:

* Safari v5.1 (6534.50) & Google Chrome v13.0.782.112:

This page contains the following errors:

error on line 657 at column 38: PCDATA invalid Char value 12
Below is a rendering of the page up to the first error.

* Mozilla Firefox 3.6.19 & Mozilla Firefox 5.0:

XML Parsing Error: not well-formed
Location:
http://path/to/git/repo/blah/blah

Both errors were generated by gitweb.perl v1.7.3.4 w/ highlight 2.7
using arch/ia64/kernel/unwind.c from the Linux kernel.

When syntax highlighter is not used, control characters are replaced
by esc_html(), but with syntax highlighter they were passed through to
browser (to_utf8() doesn't remove control characters).

Introduce sanitize() subroutine which strips forbidden characters, but
does not perform HTML escaping, and use it in git_blob() to sanitize
syntax highlighter output for XHTML.

Note that excluding "\t" (U+0009), "\n" (U+000A) and "\r" (U+000D) is
not strictly necessary, atleast for currently the only callsite: "\t"
tabs are replaced by spaces by untabify(), "\n" is stripped from each
line before processing it, and replacing "\r" could be considered
improvement.

Originally-by: Christopher M. Fuhrman <cfuhrman@panix.com>
Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation/gitnamespaces.txt: cater to older asciidocJunio C Hamano Fri, 16 Sep 2011 00:09:41 +0000 (17:09 -0700)

Documentation/gitnamespaces.txt: cater to older asciidoc

Older asciidoc (e.g. 8.2.5 on Centos 5.5) is unhappy if a manpage does not
have a SYNOPSIS section. Show a sample (and a possibly bogus) command line
of running two commands that pay attention to this environment variable
with a customized value.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
Reviewed-by: Jamey Sharp <jamey@minilop.net>

filter-branch: use require_clean_work_treeJeff King Thu, 1 Sep 2011 21:53:07 +0000 (17:53 -0400)

filter-branch: use require_clean_work_tree

Filter-branch already requires that we have a clean work
tree before starting. However, it failed to refresh the
index before checking, which means it could be wrong in the
case of stat-dirtiness.

Instead of simply adding a call to refresh the index, let's
switch to using the require_clean_work_tree function
provided by git-sh-setup. It does exactly what we want, and
with fewer lines of code and more specific output messages.

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

Allow git merge ":/<pattern>"Junio C Hamano Wed, 7 Sep 2011 18:16:03 +0000 (11:16 -0700)

Allow git merge ":/<pattern>"

It probably is not such a good idea to use ":/<pattern>" to specify which
commit to merge, as ":/<pattern>" can often hit unexpected commits, but
somebody tried it and got a nonsense error message:

fatal: ':/Foo bar' does not point to a commit

So here is a for-the-sake-of-consistency update that is fairly useless
that allows users to carefully try not shooting in the foot.

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

t6019: avoid refname collision on case-insensitive... Thomas Rast Thu, 15 Sep 2011 08:34:31 +0000 (10:34 +0200)

t6019: avoid refname collision on case-insensitive systems

The criss-cross tests kept failing for me because of collisions of 'a'
with 'A' etc. Prefix the lowercase refnames with an extra letter to
disambiguate.

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Acked-by: Brad King <brad.king@kitware.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'ph/format-patch-no-color'Junio C Hamano Thu, 15 Sep 2011 04:43:57 +0000 (21:43 -0700)

Merge branch 'ph/format-patch-no-color'

* ph/format-patch-no-color:
format-patch: ignore ui.color

run_hook: use argv_array APIJeff King Tue, 13 Sep 2011 21:58:25 +0000 (17:58 -0400)

run_hook: use argv_array API

This was a pretty straightforward use, so it really doesn't
save that many lines. Still, perhaps it's a little bit more
readable.

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

checkout: use argv_array APIJeff King Tue, 13 Sep 2011 21:58:19 +0000 (17:58 -0400)

checkout: use argv_array API

We were using a similar ad-hoc rev_list_args structure, but
this saves some code.

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

bisect: use argv_array APIJeff King Tue, 13 Sep 2011 21:58:14 +0000 (17:58 -0400)

bisect: use argv_array API

Now that the argv_array API exists, we can save some lines
of code.

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

quote: provide sq_dequote_to_argv_arrayJeff King Tue, 13 Sep 2011 21:58:08 +0000 (17:58 -0400)

quote: provide sq_dequote_to_argv_array

This is similar to sq_dequote_to_argv, but more convenient
if you have an argv_array. It's tempting to just feed the
components of the argv_array to sq_dequote_to_argv instead,
but:

1. It wouldn't maintain the NULL-termination invariant
of argv_array.

2. It doesn't match the memory ownership policy of
argv_array (in which each component is free-able, not a
pointer into a separate buffer).

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

refactor argv_array into generic codeJeff King Tue, 13 Sep 2011 21:57:57 +0000 (17:57 -0400)

refactor argv_array into generic code

The submodule code recently grew generic code to build a
dynamic argv array. Many other parts of the code can reuse
this, too, so let's make it generically available.

There are two enhancements not found in the original code:

1. We now handle the NULL-termination invariant properly,
even when no strings have been pushed (before, you
could have an empty, NULL argv). This was not a problem
for the submodule code, which always pushed at least
one argument, but was not sufficiently safe for
generic code.

2. There is a formatted variant of the "push" function.
This is a convenience function which was not needed by
the submodule code, but will make it easier to port
other users to the new code.

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

quote.h: fix bogus commentJeff King Tue, 13 Sep 2011 21:57:47 +0000 (17:57 -0400)

quote.h: fix bogus comment

Commit 758e915 made sq_quote_next static, removing it from
quote.h. However, it forgot to update the related comment,
making it appear as a confusing description of sq_quote_to_argv.

Let's remove the crufty bits, and elaborate more on sq_quote_to_argv.

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

add sha1_array API docsJeff King Tue, 13 Sep 2011 21:57:34 +0000 (17:57 -0400)

add sha1_array API docs

This API was introduced in 902bb36, but never documented.
Let's be nice to future users of the code.

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

t3200: clean up checks for file existenceJeff King Tue, 13 Sep 2011 16:13:58 +0000 (12:13 -0400)

t3200: clean up checks for file existence

This patch uses test_path_is_file and test_path_is_missing
instead of "test -f / ! test -f" checks. The former are more
verbose in case of failure and more precise (e.g., is_missing
will check that the entry is actually missing, not just not
a regular file).

As a bonus, this also fixes a few buggy tests that used
"test foo" instead of "test -f foo", and consequently always
reported success.

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

Documentation: basic configuration of notes.rewriteRefThomas Rast Tue, 13 Sep 2011 07:32:42 +0000 (09:32 +0200)

Documentation: basic configuration of notes.rewriteRef

Users had problems finding a working setting for notes.rewriteRef.
Document how to enable rewriting for notes/commits, which should be a
safe setting.

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

git-svn: teach git-svn to populate svn:mergeinfoBryan Jacobs Wed, 7 Sep 2011 17:36:05 +0000 (13:36 -0400)

git-svn: teach git-svn to populate svn:mergeinfo

Allow git-svn to populate the svn:mergeinfo property automatically in
a narrow range of circumstances. Specifically, when dcommitting a
revision with multiple parents, all but (potentially) the first of
which have been committed to SVN in the same repository as the target
of the dcommit.

In this case, the merge info is the union of that given by each of the
parents, plus all changes introduced to the first parent by the other
parents.

In all other cases where a revision to be committed has multiple
parents, cause "git svn dcommit" to raise an error rather than
completing the commit and potentially losing history information in
the upstream SVN repository.

This behavior is disabled by default, and can be enabled by setting
the svn.pushmergeinfo config option.

[ew: minor style changes and manpage merge fix]

Acked-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Bryan Jacobs <bjacobs@woti.com>

send-email: add option -hClemens Buchacher Sat, 3 Sep 2011 17:06:13 +0000 (19:06 +0200)

send-email: add option -h

Most other git commands print a synopsis when passed -h. Make
send-email do the same.

Signed-off-by: Clemens Buchacher <drizzd@aon.at>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

date.c: Support iso8601 timezone formatsHaitao Li Fri, 9 Sep 2011 10:10:33 +0000 (18:10 +0800)

date.c: Support iso8601 timezone formats

Timezone designators in the following formats are all valid according to
ISO8601:2004, section 4.3.2:

[+-]hh, [+-]hhmm, [+-]hh:mm

but we have ignored the ones with colon so far.

Signed-off-by: Haitao Li <lihaitao@gmail.com>
Helped-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

refactor run_receive_hook()Junio C Hamano Thu, 8 Sep 2011 19:17:09 +0000 (12:17 -0700)

refactor run_receive_hook()

Running a hook has to make complex set-up to establish web of
communication between child process and multiplexer, which is common
regardless of what kind of data is fed to the hook. Refactor the parts
that is specific to the data fed to the particular set of hooks from the
part that runs the hook, so that the code can be reused to drive hooks
that take different kind of data.

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

rename pathspec_prefix() to common_prefix() and move... Clemens Buchacher Sun, 4 Sep 2011 10:42:01 +0000 (12:42 +0200)

rename pathspec_prefix() to common_prefix() and move to dir.[ch]

Also make common_prefix_len() static as this refactoring makes dir.c
itself the only caller of this helper function.

Signed-off-by: Clemens Buchacher <drizzd@aon.at>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

fetch: avoid quadratic loop checking for updated submodulesJeff King Mon, 12 Sep 2011 19:56:52 +0000 (15:56 -0400)

fetch: avoid quadratic loop checking for updated submodules

Recent versions of git can be slow to fetch repositories with a
large number of refs (or when they already have a large
number of refs). For example, GitHub makes pull-requests
available as refs, which can lead to a large number of
available refs. This slowness goes away when submodule
recursion is turned off:

$ git ls-remote git://github.com/rails/rails.git | wc -l
3034

[this takes ~10 seconds of CPU time to complete]
git fetch --recurse-submodules=no \
git://github.com/rails/rails.git "refs/*:refs/*"

[this still isn't done after 10 _minutes_ of pegging the CPU]
git fetch \
git://github.com/rails/rails.git "refs/*:refs/*"

You can produce a quicker and simpler test case like this:

doit() {
head=`git rev-parse HEAD`
for i in `seq 1 $1`; do
echo $head refs/heads/ref$i
done >.git/packed-refs
echo "==> $1"
rm -rf dest
git init -q --bare dest &&
(cd dest && time git.compile fetch -q .. refs/*:refs/*)
}

rm -rf repo
git init -q repo && cd repo &&
>file && git add file && git commit -q -m one

doit 100
doit 200
doit 400
doit 800
doit 1600
doit 3200

Which yields timings like:

# refs seconds of CPU
100 0.06
200 0.24
400 0.95
800 3.39
1600 13.66
3200 54.09

Notice that although the number of refs doubles in each
trial, the CPU time spent quadruples.

The problem is that the submodule recursion code works
something like:

- for each ref we fetch
- for each commit in git rev-list $new_sha1 --not --all
- add modified submodules to list
- fetch any newly referenced submodules

But that means if we fetch N refs, we start N revision
walks. Worse, because we use "--all", the number of refs we
must process that constitute "--all" keeps growing, too. And
you end up doing O(N^2) ref resolutions.

Instead, this patch structures the code like this:

- for each sha1 we already have
- add $old_sha1 to list $old
- for each ref we fetch
- add $new_sha1 to list $new
- for each commit in git rev-list $new --not $old
- add modified submodules to list
- fetch any newly referenced submodules

This yields timings like:

# refs seconds of CPU
100 0.00
200 0.04
400 0.04
800 0.10
1600 0.21
3200 0.39

Note that the amount of effort doubles as the number of refs
doubles. Similarly, the fetch of rails.git takes about as
much time as it does with --recurse-submodules=no.

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

format-patch: ignore ui.colorPang Yan Han Mon, 12 Sep 2011 17:46:41 +0000 (01:46 +0800)

format-patch: ignore ui.color

commit c9bfb953 (want_color: automatically fallback to color.ui,
2011-08-17) introduced a regression where format-patch produces colorized
patches when color.ui is set to "always".

In f3aafa4 (Disable color detection during format-patch, 2006-07-09),
git_format_config was taught to intercept diff.color to avoid passing it
down to git_log_config and later, git_diff_ui_config.

Teach git_format_config to intercept color.ui in the same way.

Helped-by: Jeff King <peff@peff.net>
Signed-off-by: Pang Yan Han <pangyanhan@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Git 1.7.7-rc1 v1.7.7-rc1Junio C Hamano Mon, 12 Sep 2011 17:44:32 +0000 (10:44 -0700)

Git 1.7.7-rc1

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

Sync with 1.7.6.3Junio C Hamano Mon, 12 Sep 2011 17:43:17 +0000 (10:43 -0700)

Sync with 1.7.6.3

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

Merge branch 'jn/remote-helpers-doc'Junio C Hamano Mon, 12 Sep 2011 17:38:11 +0000 (10:38 -0700)

Merge branch 'jn/remote-helpers-doc'

* jn/remote-helpers-doc:
(short) documentation for the testgit remote helper
Documentation/git-remote-helpers: explain how import works with multiple refs
Documentation/remote-helpers: explain capabilities first

Git 1.7.6.3 v1.7.6.3Junio C Hamano Mon, 12 Sep 2011 17:33:03 +0000 (10:33 -0700)

Git 1.7.6.3

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

Merge branch 'jl/maint-fetch-submodule-check-fix' into... Junio C Hamano Mon, 12 Sep 2011 17:19:57 +0000 (10:19 -0700)

Merge branch 'jl/maint-fetch-submodule-check-fix' into maint

* jl/maint-fetch-submodule-check-fix:
fetch: skip on-demand checking when no submodules are configured

Merge branch 'maint'Junio C Hamano Mon, 12 Sep 2011 05:35:11 +0000 (22:35 -0700)

Merge branch 'maint'

* maint:
Prepare for 1.7.6.3 maintenance release
SubmittingPathces: remove Cogito reference

Conflicts:
RelNotes

Prepare for 1.7.6.3 maintenance releaseJunio C Hamano Mon, 12 Sep 2011 05:08:56 +0000 (22:08 -0700)

Prepare for 1.7.6.3 maintenance release

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

Merge branch 'ms/reflog-show-is-default' into maintJunio C Hamano Mon, 12 Sep 2011 05:33:24 +0000 (22:33 -0700)

Merge branch 'ms/reflog-show-is-default' into maint

* ms/reflog-show-is-default:
reflog: actually default to subcommand 'show'

Merge branch 'jk/reset-reflog-message-fix' into maintJunio C Hamano Mon, 12 Sep 2011 05:33:20 +0000 (22:33 -0700)

Merge branch 'jk/reset-reflog-message-fix' into maint

* jk/reset-reflog-message-fix:
reset: give better reflog messages

Merge branch 'vi/make-test-vector-less-specific' into... Junio C Hamano Mon, 12 Sep 2011 05:33:16 +0000 (22:33 -0700)

Merge branch 'vi/make-test-vector-less-specific' into maint

* vi/make-test-vector-less-specific:
tests: cleanup binary test vector files

Merge branch 'jk/tag-contains-ab' (early part) into... Junio C Hamano Mon, 12 Sep 2011 04:54:32 +0000 (21:54 -0700)

Merge branch 'jk/tag-contains-ab' (early part) into maint

* 'jk/tag-contains-ab' (early part):
tag: speed up --contains calculation

Merge branch 'dz/connect-error-report' into maintJunio C Hamano Mon, 12 Sep 2011 04:53:47 +0000 (21:53 -0700)

Merge branch 'dz/connect-error-report' into maint

* dz/connect-error-report:
Do not log unless all connect() attempts fail

Merge branch 'jc/maint-mergetool-read-fix' into maintJunio C Hamano Mon, 12 Sep 2011 04:53:39 +0000 (21:53 -0700)

Merge branch 'jc/maint-mergetool-read-fix' into maint

* jc/maint-mergetool-read-fix:
mergetool: check return value from read

Merge branch 'jk/maint-config-param' into maintJunio C Hamano Mon, 12 Sep 2011 04:53:13 +0000 (21:53 -0700)

Merge branch 'jk/maint-config-param' into maint

* jk/maint-config-param:
config: use strbuf_split_str instead of a temporary strbuf
strbuf: allow strbuf_split to work on non-strbufs
config: avoid segfault when parsing command-line config
config: die on error in command-line config
fix "git -c" parsing of values with equals signs
strbuf_split: add a max parameter

Merge branch 'jn/doc-dashdash' into maintJunio C Hamano Mon, 12 Sep 2011 04:52:18 +0000 (21:52 -0700)

Merge branch 'jn/doc-dashdash' into maint

* jn/doc-dashdash:
Documentation/i18n: quote double-dash for AsciiDoc
Documentation: quote double-dash for AsciiDoc

Conflicts:
Documentation/git-mergetool--lib.txt

Merge branch 'jk/maint-1.7.2-status-ignored' into maintJunio C Hamano Mon, 12 Sep 2011 04:51:10 +0000 (21:51 -0700)

Merge branch 'jk/maint-1.7.2-status-ignored' into maint

* jk/maint-1.7.2-status-ignored:
git status --ignored: tests and docs
status: fix bug with missing --ignore files

Conflicts:
Documentation/git-status.txt
t/t7508-status.sh

remote: only update remote-tracking branch if updating... Martin von Zweigbergk Sat, 10 Sep 2011 19:39:23 +0000 (15:39 -0400)

remote: only update remote-tracking branch if updating refspec

'git remote rename' will only update the remote's fetch refspec if it
looks like a default one. If the remote has no default fetch refspec,
as in

[remote "origin"]
url = git://git.kernel.org/pub/scm/git/git.git
fetch = +refs/heads/*:refs/remotes/upstream/*

we would not update the fetch refspec and even if there is a ref
called "refs/remotes/origin/master", we should not rename it, since it
was not created by fetching from the remote.

Suggested-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Martin von Zweigbergk <martin.von.zweigbergk@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

remote rename: warn when refspec was not updatedMartin von Zweigbergk Sat, 3 Sep 2011 15:26:59 +0000 (11:26 -0400)

remote rename: warn when refspec was not updated

When renaming a remote, we also try to update the fetch refspec
accordingly, but only if it has the default format. For others, such
as refs/heads/master:refs/heads/origin, we are conservative and leave
it untouched. Let's give the user a warning about refspecs that are
not updated, so he can manually update the config if necessary.

Suggested-by: Jeff King <peff@peff.net>
Signed-off-by: Martin von Zweigbergk <martin.von.zweigbergk@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

remote: "rename o foo" should not rename ref "origin... Martin von Zweigbergk Fri, 2 Sep 2011 00:50:34 +0000 (20:50 -0400)

remote: "rename o foo" should not rename ref "origin/bar"

When renaming a remote called 'o' using 'git remote rename o foo', git
should also rename any remote-tracking branches for the remote. This
does happen, but any remote-tracking branches starting with
'refs/remotes/o', such as 'refs/remotes/origin/bar', will also be
renamed (to 'refs/remotes/foorigin/bar' in this case).

Fix it by simply matching one more character, up to the slash
following the remote name.

Signed-off-by: Martin von Zweigbergk <martin.von.zweigbergk@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

remote: write correct fetch spec when renaming remote... Martin von Zweigbergk Fri, 2 Sep 2011 00:50:33 +0000 (20:50 -0400)

remote: write correct fetch spec when renaming remote 'remote'

When renaming a remote whose name is contained in a configured fetch
refspec for that remote, we currently replace the first occurrence of
the remote name in the refspec. This is correct in most cases, but
breaks if the remote name occurs in the fetch refspec before the
expected place. For example, we currently change

[remote "remote"]
url = git://git.kernel.org/pub/scm/git/git.git
fetch = +refs/heads/*:refs/remotes/remote/*

into

[remote "origin"]
url = git://git.kernel.org/pub/scm/git/git.git
fetch = +refs/heads/*:refs/origins/remote/*

Reduce the risk of changing incorrect sections of the refspec by
matching the entire ":refs/remotes/<name>/" instead of just "<name>".

Signed-off-by: Martin von Zweigbergk <martin.von.zweigbergk@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

SubmittingPathces: remove Cogito referenceSverre Rabbelier Sun, 11 Sep 2011 12:38:10 +0000 (14:38 +0200)

SubmittingPathces: remove Cogito reference

Removing Cogito leaves just git and StGit, which is a rather
incomplete list of git diff tools available. Sidestep the problem
of deciding what tools to mention by not mentioning any.

Signed-off-by: Sverre Rabbelier <srabbelier@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

fsck: do not abort upon finding an empty blobJunio C Hamano Mon, 12 Sep 2011 01:03:38 +0000 (18:03 -0700)

fsck: do not abort upon finding an empty blob

Asking fwrite() to write one item of size bytes results in fwrite()
reporting "I wrote zero item", when size is zero. Instead, we could
ask it to write "size" items of 1 byte and expect it to report that
"I wrote size items" when it succeeds, with any value of size,
including zero.

Noticed and reported by BJ Hargrave.

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

refs.c: make create_cached_refs() staticJunio C Hamano Sun, 11 Sep 2011 22:59:26 +0000 (15:59 -0700)

refs.c: make create_cached_refs() static

There is nobody outside that calls into this helper function.

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

builtin/revert.c: make commit_list_append() staticJunio C Hamano Sun, 11 Sep 2011 22:29:21 +0000 (15:29 -0700)

builtin/revert.c: make commit_list_append() static

There is nobody outside that calls into this helper function.

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

obstack.c: Fix some sparse warningsRamsay Jones Sun, 11 Sep 2011 19:26:53 +0000 (20:26 +0100)

obstack.c: Fix some sparse warnings

In particular, sparse issues the following warnings:

compat/obstack.c:176:17: warning: Using plain integer as NULL pointer
compat/obstack.c:224:17: warning: Using plain integer as NULL pointer
compat/obstack.c:324:16: warning: Using plain integer as NULL pointer
compat/obstack.c:329:16: warning: Using plain integer as NULL pointer
compat/obstack.c:347:16: warning: Using plain integer as NULL pointer
compat/obstack.c:362:19: warning: Using plain integer as NULL pointer
compat/obstack.c:379:29: warning: Using plain integer as NULL pointer
compat/obstack.c:399:1: error: symbol 'print_and_abort' redeclared with \
different type (originally declared at compat/obstack.c:95) \
- different modifiers

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

sparse: Fix an "Using plain integer as NULL pointer... Ramsay Jones Sun, 11 Sep 2011 19:25:48 +0000 (20:25 +0100)

sparse: Fix an "Using plain integer as NULL pointer" warning

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

Makefile: Make dependency directory creation less noisyRamsay Jones Sun, 11 Sep 2011 19:40:18 +0000 (20:40 +0100)

Makefile: Make dependency directory creation less noisy

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

receive-pack: check connectivity before concluding... Junio C Hamano Fri, 2 Sep 2011 23:52:08 +0000 (16:52 -0700)

receive-pack: check connectivity before concluding "git push"

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

check_everything_connected(): libifyJunio C Hamano Fri, 2 Sep 2011 23:33:22 +0000 (16:33 -0700)

check_everything_connected(): libify

Extract the helper function and the type definition of the iterator
function it uses out of builtin/fetch.c into a separate source and a
header file.

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

check_everything_connected(): refactor to use an iteratorJunio C Hamano Fri, 2 Sep 2011 23:22:47 +0000 (16:22 -0700)

check_everything_connected(): refactor to use an iterator

We will be using the same "rev-list --verify-objects" logic to add a
sanity check to the receiving end of "git push" in the same way, but the
list of commits that are checked come from a structure with a different
shape over there.

Update the function to take an iterator to make it easier to reuse it in
different contexts.

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

fetch: verify we have everything we need before updatin... Junio C Hamano Thu, 1 Sep 2011 22:43:35 +0000 (15:43 -0700)

fetch: verify we have everything we need before updating our ref

The "git fetch" command works in two phases. The remote side tells us what
objects are at the tip of the refs we are fetching from, and transfers the
objects missing from our side. After storing the objects in our repository,
we update our remote tracking branches to point at the updated tips of the
refs.

A broken or malicious remote side could send a perfectly well-formed pack
data during the object transfer phase, but there is no guarantee that the
given data actually fill the gap between the objects we originally had and
the refs we are updating to.

Although this kind of breakage can be caught by running fsck after a
fetch, it is much cheaper to verify that everything that is reachable from
the tips of the refs we fetched are indeed fully connected to the tips of
our current set of refs before we update them.

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

fetch: skip on-demand checking when no submodules are... Jens Lehmann Fri, 9 Sep 2011 18:22:03 +0000 (20:22 +0200)

fetch: skip on-demand checking when no submodules are configured

It makes no sense to do the - possibly very expensive - call to "rev-list
<new-ref-sha1> --not --all" in check_for_new_submodule_commits() when
there aren't any submodules configured.

Leave check_for_new_submodule_commits() early when no name <-> path
mappings for submodules are found in the configuration. To make that work
reading the configuration had to be moved further up in cmd_fetch(), as
doing that after the actual fetch of the superproject was too late.

Reported-by: Martin Fick <mfick@codeaurora.org>
Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

branch: -v does not automatically imply --listMichael J Gruber Thu, 8 Sep 2011 21:09:50 +0000 (14:09 -0700)

branch: -v does not automatically imply --list

"branch -v" without other options or parameters still works in the list
mode, but that is not because there is "-v" but because there is no
parameter nor option.

Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

for-each-ref: add split message parts to %(contents:*).Michał Górny Wed, 7 Sep 2011 17:46:08 +0000 (13:46 -0400)

for-each-ref: add split message parts to %(contents:*).

The %(body) placeholder returns the whole body of a tag or
commit, including the signature. However, callers may want
to get just the body without signature, or just the
signature.

Rather than change the meaning of %(body), which might break
some scripts, this patch introduces a new set of
placeholders which break down the %(contents) placeholder
into its constituent parts.

[jk: initial patch by mg, rebased on top of my refactoring
and with tests by me]

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

for-each-ref: handle multiline subjects like --prettyJeff King Wed, 7 Sep 2011 17:44:56 +0000 (13:44 -0400)

for-each-ref: handle multiline subjects like --pretty

Generally the format of a git tag or commit message is:

subject

body body body
body body body

However, we occasionally see multiline subjects like:

subject
with multiple
lines

body body body
body body body

The rest of git treats these multiline subjects as something
to be concatenated and shown as a single line (e.g., "git
log --pretty=format:%s" will do so since f53bd74). For
consistency, for-each-ref should do the same with its
"%(subject)".

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

for-each-ref: refactor subject and body placeholder... Jeff King Wed, 7 Sep 2011 17:44:07 +0000 (13:44 -0400)

for-each-ref: refactor subject and body placeholder parsing

The find_subpos function was a little hard to use, as well
as to read. It would sometimes write into the subject and
body pointers, and sometimes not. The body pointer sometimes
could be compared to subject, and sometimes not. When
actually duplicating the subject, the caller was forced to
figure out again how long the subject is (which is not too
big a deal when the subject is a single line, but hard to
extend).

The refactoring makes the function more straightforward, both
to read and to use. We will always put something into the
subject and body pointers, and we return explicit lengths
for them, too.

This lays the groundwork both for more complex subject
parsing (e.g., multiline), as well as splitting the body
into subparts (like the text versus the signature).

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

t6300: add more body-parsing testsJeff King Wed, 7 Sep 2011 17:43:28 +0000 (13:43 -0400)

t6300: add more body-parsing tests

The current tests don't actually check parsing commit and
tag messages that have both a subject and a body (they just
have single-line messages).

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

t7004: factor out gpg setupJeff King Wed, 7 Sep 2011 17:42:39 +0000 (13:42 -0400)

t7004: factor out gpg setup

Other test scripts may want to look at or verify signed
tags, and the setup is non-trivial. Let's factor this out
into lib-gpg.sh for other tests to use.

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

RelNotes/1.7.7: minor fixesMichael J Gruber Wed, 7 Sep 2011 11:54:11 +0000 (13:54 +0200)

RelNotes/1.7.7: minor fixes

Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

sha1_file: normalize alt_odb path before comparing... Hui Wang Wed, 7 Sep 2011 10:37:47 +0000 (18:37 +0800)

sha1_file: normalize alt_odb path before comparing and storing

When it needs to compare and add an alt object path to the
alt_odb_list, we normalize this path first since comparing normalized
path is easy to get correct result.

Use strbuf to replace some string operations, since it is cleaner and
safer.

Helped-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Hui Wang <Hui.Wang@windriver.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Minor update to how-to maintain gitJunio C Hamano Wed, 7 Sep 2011 18:18:18 +0000 (11:18 -0700)

Minor update to how-to maintain git

A few more parts of this document is stale that needs updating
to reflect the reality, but I do not regularly rebase topics that
are only in "pu" anymore, which may be noteworthy for a commit.

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

http: avoid empty error messages for some curl errorsJonathan Nieder Mon, 5 Sep 2011 22:22:02 +0000 (17:22 -0500)

http: avoid empty error messages for some curl errors

When asked to fetch over SSL without a valid
/etc/ssl/certs/ca-certificates.crt file, "git fetch" writes

error: while accessing https://github.com/torvalds/linux.git/info/refs

which is a little disconcerting. Better to fall back to
curl_easy_strerror(result) when the error string is empty, like the
curl utility does:

error: Problem with the SSL CA cert (path? access rights?) while
accessing https://github.com/torvalds/linux.git/info/refs

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

http: remove extra newline in error messageJonathan Nieder Mon, 5 Sep 2011 22:29:34 +0000 (17:29 -0500)

http: remove extra newline in error message

There is no need for a blank line between the detailed error message
and the later "fatal: HTTP request failed" notice. Keep the newline
written by error() itself and eliminate the extra one.

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

consolidate pathspec_prefix and common_prefixJunio C Hamano Tue, 6 Sep 2011 19:32:30 +0000 (12:32 -0700)

consolidate pathspec_prefix and common_prefix

The implementation from pathspec_prefix (slightly modified) replaces the
current common_prefix, because it also respects glob characters.

Based on a patch by Clemens Buchacher.

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

remove prefix argument from pathspec_prefixClemens Buchacher Sun, 4 Sep 2011 10:41:59 +0000 (12:41 +0200)

remove prefix argument from pathspec_prefix

Passing a prefix to a function that is supposed to find the prefix is
strange. And it's really only used if the pathspec is NULL. Make the
callers handle this case instead.

As we are always returning a fresh copy of a string (or NULL), change the
type of the returned value to non-const "char *".

Signed-off-by: Clemens Buchacher <drizzd@aon.at>
Signed-off-by: Junio C Hamano <gitster@pobox.com>