Johannes Schindelin [Fri, 11 Jul 2008 23:28:18 +0000 (00:28 +0100)]
Add pretty format %aN which gives the author name, respecting .mailmap
The pretty format %an does not respect .mailmap, but gives the exact
author name recorded in the commit. Sometimes it is more desirable,
however, to look if the email has another name mapped to it in .mailmap.
This commit adds %aN (and %cN for the committer name) to do exactly that.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Wed, 9 Jul 2008 06:57:14 +0000 (23:57 -0700)]
Start preparing release notes for 1.5.6.3
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Mark Levedahl [Tue, 8 Jul 2008 02:36:40 +0000 (22:36 -0400)]
git-submodule - Fix bugs in adding an existing repo as a module
git-submodule add would trip if path to the submodule included a space,
or if its .git was a gitdir: link to a GIT_DIR kept elsewhere. Fix both.
Signed-off-by: Mark Levedahl <mlevedahl@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
SZEDER Gábor [Tue, 8 Jul 2008 16:56:14 +0000 (18:56 +0200)]
bash: offer only paths after '--'
Many git commands use '--' to separate subcommands, options, and refs
from paths. However, the programmable completion for several of these
commands does not respect the '--', and offer subcommands, options, or
refs after a '--', although only paths are permitted. e.g. 'git bisect
-- <TAB>' offers subcommands, 'git log -- --<TAB>' offers options and
'git log -- git<TAB>' offers all gitgui tags.
The completion for the following commands share this wrong behaviour:
am add bisect commit diff log reset shortlog submodule gitk.
To avoid this, we check the presence of a '--' on the command line first
and let the shell do filename completion, if one is found.
Signed-off-by: SZEDER Gábor <szeder@ira.uka.de>
Acked-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Shawn O. Pearce [Tue, 8 Jul 2008 04:46:06 +0000 (04:46 +0000)]
Remove unnecessary pack-*.keep file after successful git-clone
Once a clone is successful we no longer need to hold onto the
.keep file created by the transport. Delete the file so we
can later repack the complete repository.
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jeff King [Tue, 8 Jul 2008 04:08:02 +0000 (00:08 -0400)]
make deleting a missing ref more quiet
If git attempts to delete a ref, but the unlink of the ref
file fails, we print a message to stderr. This is usually a
good thing, but if the error is ENOENT, then it indicates
that the ref has _already_ been deleted. And since that's
our goal, it doesn't make sense to complain to the user.
This harmonizes the error reporting behavior for the
unpacked and packed cases; the packed case already printed
nothing on ENOENT, but the unpacked printed unconditionally.
Additionally, send-pack would, when deleting the tracking
ref corresponding to a remote delete, print "Failed to
delete" on any failure. This can be a misleading
message, since we actually _did_ delete at the remote side,
but we failed to delete locally. Rather than make the
message more precise, let's just eliminate it entirely; the
delete_ref routine already takes care of printing out a much
more specific message about what went wrong.
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Tue, 8 Jul 2008 20:05:06 +0000 (13:05 -0700)]
Merge branch 'qq/maint' into maint
* qq/maint:
run_command(): respect GIT_TRACE
Junio C Hamano [Tue, 8 Jul 2008 07:19:17 +0000 (00:19 -0700)]
Merge branch 'lt/racy-empty' into maint
* lt/racy-empty:
racy-git: an empty blob has a fixed object name
Junio C Hamano [Mon, 7 Jul 2008 23:09:17 +0000 (16:09 -0700)]
Merge branch 'qq/maint' (early part) into maint
* 'qq/maint' (early part):
git-svn.perl: workaround assertions in svn library 1.5.0
mailinfo: feed the correct line length to decode_transfer_encoding()
git-clone: remove leftover debugging fprintf().
Fix "config_error_nonbool" used with value instead of key
clone -q: honor "quiet" option over native transports.
attribute documentation: keep EXAMPLE at end
builtin-commit.c: Use 'git_config_string' to get 'commit.template'
http.c: Use 'git_config_string' to clean up SSL config.
diff.c: Use 'git_config_string' to get 'diff.external'
convert.c: Use 'git_config_string' to get 'smudge' and 'clean'
builtin-log.c: Use 'git_config_string' to get 'format.subjectprefix' and 'format.suffix'
Documentation cvs: Clarify when a bare repository is needed
Documentation: be precise about which date --pretty uses
Johannes Schindelin [Mon, 7 Jul 2008 13:41:34 +0000 (14:41 +0100)]
run_command(): respect GIT_TRACE
When GIT_TRACE is set, the user is most likely wanting to see an external
command that is about to be executed.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Gerrit Pape [Sun, 6 Jul 2008 19:28:50 +0000 (19:28 +0000)]
git-svn.perl: workaround assertions in svn library 1.5.0
With subversion 1.5.0 (C and perl libraries) the git-svn selftest
t9101-git-svn-props.sh fails at test 25 and 26. The following commands
cause assertions in the svn library
$ cd deeply
$ git-svn propget svn:ignore .
perl: /build/buildd/subversion-1.5.0dfsg1/subversion/libsvn_ra/ra_loader.c:674: svn_ra_get_dir: Assertion `*path != '/'' failed.
Aborted
$ git-svn propget svn:ignore ..
perl: /build/buildd/subversion-1.5.0dfsg1/subversion/libsvn_subr/path.c:120: svn_path_join: Assertion `is_canonical(component, clen)' failed.
With this commit, git-svn makes sure the path doesn't start with a
slash, and is not a dot, working around these assertions.
The breakage was reported by Lucas Nussbaum through
http://bugs.debian.org/489108
Signed-off-by: Gerrit Pape <pape@smarden.org>
Acked-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Mon, 7 Jul 2008 05:26:45 +0000 (22:26 -0700)]
mailinfo: feed the correct line length to decode_transfer_encoding()
When handling a MIME multipart message, multi-part boundary lines are eaten
by a call to handle_boundary() function from the main loop of handle_body(),
and after that happens, we should update the line length correctly, because
handle_boundary() udpates line[] with new data.
This was caused by a thinko in
9aa2309 (mailinfo: apply the same fix not
to lose NULs in BASE64 and QP codepaths, 2008-05-25).
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Alex Riesen [Sun, 6 Jul 2008 22:56:49 +0000 (00:56 +0200)]
git-clone: remove leftover debugging fprintf().
Acked-by: Daniel Barkalow <barkalow@iabervon.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Mikael Magnusson [Sun, 6 Jul 2008 20:34:21 +0000 (22:34 +0200)]
Fix grammar in git-rev-parse(1).
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Christian Couder [Sun, 6 Jul 2008 04:10:04 +0000 (06:10 +0200)]
Fix "config_error_nonbool" used with value instead of key
The function "config_error_nonbool", that is defined in "config.c",
is used to report an error when a config key in the config file
should have a corresponding value but it hasn't.
So the parameter to this function should be the key and not the
value, because the value is undefined. And it could crash if the
value is used.
Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Sun, 6 Jul 2008 00:58:50 +0000 (17:58 -0700)]
clone -q: honor "quiet" option over native transports.
The earlier built-in conversion seems to have broken "git-clone"; this
teaches the command to honor the "-q" option again when talking to the
remote end over native transports (file://, git:// and ssh://).
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Sun, 6 Jul 2008 01:14:27 +0000 (18:14 -0700)]
attribute documentation: keep EXAMPLE at end
The document gives overall definition of states in DESCRIPTION, describes
various aspects of git operations that can be influenced in EFFECTS, and
finally gives examples in the EXAMPLE section. Archive creation however
was somehow documented after the EXAMPLE section, not insode EFFECTS.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Brian Hetro [Sat, 5 Jul 2008 05:24:40 +0000 (01:24 -0400)]
builtin-commit.c: Use 'git_config_string' to get 'commit.template'
Signed-off-by: Brian Hetro <whee@smaertness.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Brian Hetro [Sat, 5 Jul 2008 05:24:44 +0000 (01:24 -0400)]
http.c: Use 'git_config_string' to clean up SSL config.
Signed-off-by: Brian Hetro <whee@smaertness.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Brian Hetro [Sat, 5 Jul 2008 05:24:43 +0000 (01:24 -0400)]
diff.c: Use 'git_config_string' to get 'diff.external'
Signed-off-by: Brian Hetro <whee@smaertness.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Brian Hetro [Sat, 5 Jul 2008 05:24:42 +0000 (01:24 -0400)]
convert.c: Use 'git_config_string' to get 'smudge' and 'clean'
Signed-off-by: Brian Hetro <whee@smaertness.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Brian Hetro [Sat, 5 Jul 2008 05:24:41 +0000 (01:24 -0400)]
builtin-log.c: Use 'git_config_string' to get 'format.subjectprefix' and 'format.suffix'
Signed-off-by: Brian Hetro <whee@smaertness.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Matthew Ogilvie [Sat, 5 Jul 2008 04:43:41 +0000 (22:43 -0600)]
Documentation cvs: Clarify when a bare repository is needed
New users sometimes import a project and then immediately
try to use the imported repository as a central shared repository.
This provides pointers about setting up a bare repository for that
in the parts of the documentation dealing with CVS migration.
Signed-off-by: Matthew Ogilvie <mmogilvi_git@miniinfo.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Nikolaus Schulz [Sat, 5 Jul 2008 00:00:13 +0000 (02:00 +0200)]
Documentation: be precise about which date --pretty uses
This makes it explicit that the --pretty formats 'medium' and 'email' use the
author date (and ignore the committer date).
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Fri, 4 Jul 2008 08:12:54 +0000 (01:12 -0700)]
GIT 1.5.6.2
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Fri, 4 Jul 2008 08:38:34 +0000 (01:38 -0700)]
Fix executable bits in t/ scripts
Pointed out by Ramsay Jones.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Fri, 4 Jul 2008 07:37:40 +0000 (00:37 -0700)]
Work around gcc warnings from curl headers
After master.k.org upgrade, I started seeing these warning messages:
transport.c: In function 'get_refs_via_curl':
transport.c:458: error: call to '_curl_easy_setopt_err_write_callback' declared with attribute warning: curl_easy_setopt expects a curl_write_callback argument for this option
It appears that the curl header wants to enforce the function signature
for callback function given to curl_easy_setopt() to be compatible with
that of (*curl_write_callback) or fwrite. This patch seems to work the
issue around.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Thu, 3 Jul 2008 04:32:44 +0000 (21:32 -0700)]
Merge branch 'js/maint-clone-insteadof' into maint
* js/maint-clone-insteadof:
clone: respect the settings in $HOME/.gitconfig and /etc/gitconfig
clone: respect url.insteadOf setting in global configs
Junio C Hamano [Thu, 3 Jul 2008 04:32:44 +0000 (21:32 -0700)]
Merge branch 'jk/maint-fetch-ref-hier' into maint
* jk/maint-fetch-ref-hier:
fetch: give a hint to the user when local refs fail to update
fetch: report local storage errors in status table
Junio C Hamano [Thu, 3 Jul 2008 04:32:44 +0000 (21:32 -0700)]
Merge branch 'jc/maint-reset' into maint
* jc/maint-reset:
Allow "git-reset path" when unambiguous
Shawn O. Pearce [Thu, 3 Jul 2008 02:32:45 +0000 (02:32 +0000)]
Fix describe --tags --long so it does not segfault
If we match a lightweight (non-annotated tag) as the name to
output and --long was requested we do not have a tag, nor do
we have a tagged object to display. Instead we must use the
object we were passed as input for the long format display.
Reported-by: Mark Burton <markb@ordern.com>
Backtraced-by: Mikael Magnusson <mikachu@gmail.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Wed, 2 Jul 2008 00:09:21 +0000 (17:09 -0700)]
Start draft release notes for 1.5.6.2
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Thomas Rast [Tue, 1 Jul 2008 09:47:04 +0000 (11:47 +0200)]
Fix 'git show' on signed tag of signed tag of commit
The cmd_show loop resolves tags by showing them, then pointing the
object to the 'tagged' member. However, this object is not fully
initialized; it only contains the SHA1. (This resulted in a segfault
if there were two levels of tags.) We apply parse_object to get a
full object.
Noticed by Kalle Olavi Niemitalo on IRC.
Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jeff King [Fri, 27 Jun 2008 04:01:41 +0000 (00:01 -0400)]
fetch: give a hint to the user when local refs fail to update
There are basically two categories of update failures for
local refs:
1. problems outside of git, like disk full, bad
permissions, etc.
2. D/F conflicts on tracking branch ref names
In either case, there should already have been an error
message. In case '1', hopefully enough information has
already been given that the user can fix it. In the case of
'2', we can hint that the user can clean up their tracking
branch area by using 'git remote prune'.
Note that we don't actually know _which_ case we have, so
the user will receive the hint in case 1, as well. In this
case the suggestion won't do any good, but hopefully the
user is smart enough to figure out that it's just a hint.
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jeff King [Mon, 30 Jun 2008 03:27:45 +0000 (23:27 -0400)]
doc/rev-parse: clarify reflog vs --until for specifying revisions
The rev-parse manpage introduces the branch@{date} syntax,
and mentions the reflog specifically. However, new users may
not be familiar with the distinction between the reflog and
the commit date, so let's help them out with a "you may be
interested in --until" pointer.
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Johannes Schindelin [Fri, 27 Jun 2008 12:55:23 +0000 (13:55 +0100)]
clone: respect the settings in $HOME/.gitconfig and /etc/gitconfig
After initializing the config in the newly-created repository, we
need to unset GIT_CONFIG so that the global configs are read again.
Noticed by Pieter de Bie.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Eric Wong [Sun, 29 Jun 2008 03:40:32 +0000 (20:40 -0700)]
git-svn: don't sanitize remote names in config
The original sanitization code was just taken from the
remotes2config.sh shell script in contrib.
Credit to Avery Pennarun for noticing this mistake, and Junio
for clarifying the rules for config section names:
Junio C Hamano wrote in <7vfxr23s6m.fsf@gitster.siamese.dyndns.org>:
> In
>
> [foo "bar"] baz = value
>
> foo and baz must be config.c::iskeychar() (and baz must be isalpha()), but
> "bar" can be almost anything.
Signed-off-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Avery Pennarun [Sat, 28 Jun 2008 23:33:56 +0000 (19:33 -0400)]
git-svn: avoid filling up the disk with temp files.
Commit
ffe256f9bac8a40ff751a9341a5869d98f72c285 ("git-svn: Speed up fetch")
introduced changes that create a temporary file for each object fetched by
svn. These files should be deleted automatically, but perl apparently
doesn't do this until the process exits (or perhaps when its garbage
collector runs).
This means that on a large fetch, especially with lots of branches, we
sometimes fill up /tmp completely, which prevents the next temp file from
being written completely. This is aggravated by the fact that a new temp
file is created for each updated file, even if that update produces a file
identical to one already in git. Thus, it can happen even if there's lots
of disk space to store the finished repository.
We weren't adequately checking for write errors, so this would result in an
invalid file getting committed, which caused git-svn to fail later with an
invalid checksum.
This patch adds a check to syswrite() so similar problems don't lead to
corruption in the future. It also unlink()'s each temp file explicitly
when we're done with it, so the disk doesn't need to fill up.
Signed-off-by: Avery Pennarun <apenwarr@gmail.com>
Tested-by: Björn Steinbrink <B.Steinbrink@gmx.de>
Acked-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Björn Steinbrink [Sun, 29 Jun 2008 01:21:25 +0000 (03:21 +0200)]
git cat-file: Fix memory leak in batch mode
When run in batch mode, git cat-file never frees the memory for the blob
contents it is printing. This quickly adds up and causes git-svn to be
hardly usable for imports of large svn repos, because it uses cat-file in
batch mode and cat-file's memory usage easily reaches several hundred MB
without any good reason.
Signed-off-by: Björn Steinbrink <B.Steinbrink@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Joey Hess [Sat, 28 Jun 2008 20:02:47 +0000 (16:02 -0400)]
fix git config example syntax
git-config expects a space, not '=' between option and value.
Also, quote the value since it contains globs, which some shells will not
pass through unchanged, or will abort if the glob doesn't expand.
Signed-off-by: Joey Hess <joey@kitenet.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jochen Voss [Sat, 28 Jun 2008 16:04:24 +0000 (17:04 +0100)]
avoid off-by-one error in run_upload_archive
Make sure that buf has enough space to store the trailing \0 of
the command line argument, too.
Signed-off-by: Jochen Voss <voss@seehuhn.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jeff King [Fri, 27 Jun 2008 03:59:50 +0000 (23:59 -0400)]
fetch: report local storage errors in status table
Previously, if there was an error while storing a local
tracking ref, the low-level functions would report an error,
but fetch's status output wouldn't indicate any problem.
E.g., imagine you have an old "refs/remotes/origin/foo/bar" but
upstream has deleted "foo/bar" in favor of a new branch
"foo". You would get output like this:
error: there are still refs under 'refs/remotes/origin/foo'
From $url_of_repo
* [new branch] foo -> origin/foo
With this patch, the output takes into account the status of
updating the local ref:
error: there are still refs under 'refs/remotes/origin/foo'
From $url_of_repo
! [new branch] foo -> origin/foo (unable to update local ref)
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Johannes Schindelin [Fri, 27 Jun 2008 12:56:05 +0000 (13:56 +0100)]
clone: respect url.insteadOf setting in global configs
When we call "git clone" with a url that has a rewrite rule in either
$HOME/.gitconfig or /etc/gitconfig, the URL can be different from
what the command line expects it to be.
So, let's use the URL as the remote structure has it, not the literal
string from the command line.
Noticed by Pieter de Bie.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Acked-by: Daniel Barkalow <barkalow@iabervon.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Fri, 27 Jun 2008 01:08:51 +0000 (18:08 -0700)]
Merge branch 'maint-1.5.5' into maint
* maint-1.5.5:
GIT 1.5.5.5
GIT 1.5.4.6
git-shell: accept "git foo" form
Conflicts:
GIT-VERSION-GEN
RelNotes
Junio C Hamano [Fri, 27 Jun 2008 00:16:50 +0000 (17:16 -0700)]
GIT 1.5.5.5
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Fri, 27 Jun 2008 00:14:03 +0000 (17:14 -0700)]
Merge branch 'maint-1.5.4' into maint-1.5.5
* maint-1.5.4:
GIT 1.5.4.6
git-shell: accept "git foo" form
Conflicts:
GIT-VERSION-GEN
RelNotes
Junio C Hamano [Fri, 27 Jun 2008 00:11:21 +0000 (17:11 -0700)]
GIT 1.5.4.6
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Sun, 2 Dec 2007 06:16:19 +0000 (22:16 -0800)]
git-shell: accept "git foo" form
This is a backport of
0a47dc110e042b5bcc63dc94c8d517e67efe9306
to 'maint' to be included in 1.5.6.2 so that older server side
can accept dashless form of request when clients are updated.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Thu, 26 Jun 2008 20:16:33 +0000 (13:16 -0700)]
diff --check: do not discard error status upon seeing a good line
"git diff --check" should return non-zero when there was any whitespace
error but the code only paid attention to the error status of the last
new line in the patch.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Thu, 26 Jun 2008 01:16:36 +0000 (18:16 -0700)]
Allow "git-reset path" when unambiguous
Resetting a selected set of index entries is done with
"git reset -- paths" syntax, but we did not allow -- to be omitted
even when the command is unambiguous.
This updates the command to follow the general rule:
* When -- appears, revs come before it, and paths come after it;
* When there is no --, earlier ones are revs and the rest are paths, and
we need to guess. When lack of -- marker forces us to guess, we
protect from user errors and typoes by making sure what we treat as
revs do not appear as filenames in the work tree, and what we treat as
paths do appear as filenames in the work tree, and by erroring out if
that is not the case. We tell the user to disambiguate by using -- in
such a case.
which is employed elsewhere in the system.
When this rule is applied to "reset", because we can have only zero or one
rev to the command, the check can be slightly simpler than other programs.
We have to check only the first one or two tokens after the command name
and options, and when they are:
-- A:
no explicit rev given; "A" and whatever follows it are paths.
A --:
explicit rev "A" given and whatever follows the "--" are paths.
A B:
"A" could be rev or path and we need to guess. "B" could
be missing but if exists that (and everything that follows) would
be paths.
So we apply the guess only in the last case and only to "A" (not "B" and
what comes after it).
* As long as "A" is unambiguously a path, index entries for "A", "B" (and
everything that follows) are reset to the HEAD revision.
* If "A" is unambiguously a rev, on the other hand, the index entries for
"B" (and everything that follows) are reset to the "A" revision.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Thu, 26 Jun 2008 00:09:40 +0000 (17:09 -0700)]
GIT 1.5.6.1
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Dmitry Potapov [Wed, 25 Jun 2008 08:26:55 +0000 (12:26 +0400)]
fix update-hook-example to work with packed tag references
The update-hook-example used 'test -f' to check the tag present, which
does not work if the checked reference is packed. This check has been
changed to use 'git rev-parse $tag' instead.
Signed-off-by: Dmitry Potapov <dpotapov@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jeff King [Wed, 25 Jun 2008 05:41:34 +0000 (01:41 -0400)]
clone: create intermediate directories of destination repo
The shell version used to use "mkdir -p" to create the repo
path, but the C version just calls "mkdir". Let's replicate
the old behavior. We have to create the git and worktree
leading dirs separately; while most of the time, the
worktree dir contains the git dir (as .git), the user can
override this using GIT_WORK_TREE.
We can reuse safe_create_leading_directories, but we need to
make a copy of our const buffer to do so. Since
merge-recursive uses the same pattern, we can factor this
out into a global function. This has two other cleanup
advantages for merge-recursive:
1. mkdir_p wasn't a very good name. "mkdir -p foo/bar" actually
creates bar, but this function just creates the leading
directories.
2. mkdir_p took a mode argument, but it was completely
ignored.
Acked-by: Daniel Barkalow <barkalow@iabervon.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Wed, 25 Jun 2008 18:20:01 +0000 (11:20 -0700)]
Merge branch 'jc/maint-combine-diff-pre-context' into maint
* jc/maint-combine-diff-pre-context:
diff -c/--cc: do not include uninteresting deletion before leading context
Junio C Hamano [Wed, 25 Jun 2008 18:19:33 +0000 (11:19 -0700)]
Merge branch 'lt/maint-gitdir-relative' into maint
* lt/maint-gitdir-relative:
Make git_dir a path relative to work_tree in setup_work_tree()
Junio C Hamano [Wed, 25 Jun 2008 18:18:39 +0000 (11:18 -0700)]
Merge branch 'sb/maint-rebase' into maint
* sb/maint-rebase:
git-rebase.sh: Add check if rebase is in progress
Jeff King [Wed, 25 Jun 2008 16:08:15 +0000 (12:08 -0400)]
for-each-ref: implement missing tag values
The "type" and "object" fields for tags were accepted as
valid atoms, but never implemented. Consequently, they
simply returned the empty string, even for valid tags.
Noticed by Lea Wiemann.
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jan Krüger [Tue, 24 Jun 2008 00:17:36 +0000 (02:17 +0200)]
git-svn: make rebuild respect rewriteRoot option
Suppose someone fetches git-svn-ified commits from another repo and then
attempts to use 'git-svn init --rewrite-root=foo bar'. Using git svn rebase
after that will fail badly:
* For each commit tried by working_head_info, rebuild is called indirectly.
* rebuild will iterate over all commits and skip all of them because the
URL does not match. Because of that no rev_map file is generated at all.
* Thus, rebuild will run once for every commit. This takes ages.
* In the end there still isn't any rev_map file and thus working_head_info
fails.
Addressing this behaviour fixes an apparently not too uncommon problem with
providing git-svn mirrors of Subversion repositories. Some repositories are
accessed using different URLs depending on whether the user has push
privileges or not. In the latter case, an anonymous URL is often used that
differs from the push URL. Providing a mirror that is usable in both cases
becomes a lot more possible with this change.
Signed-off-by: Jan Krüger <jk@jk.gs>
Acked-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Patrick Higgins [Mon, 23 Jun 2008 21:33:41 +0000 (15:33 -0600)]
Workaround for AIX mkstemp()
The AIX mkstemp will modify it's template parameter to an empty string if
the call fails. This caused a subsequent mkdir to fail.
Signed-off-by: Patrick Higgins <patrick.higgins@cexp.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Stephan Beyer [Sun, 22 Jun 2008 15:04:26 +0000 (17:04 +0200)]
Extend parse-options test suite
This patch serves two purposes:
1. test-parse-option.c should be a more complete
example for the parse-options API, and
2. there have been no tests for OPT_CALLBACK,
OPT_DATE, OPT_BIT, OPT_SET_INT and OPT_SET_PTR
before.
Signed-off-by: Stephan Beyer <s-beyer@gmx.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Stephan Beyer [Sun, 22 Jun 2008 15:04:25 +0000 (17:04 +0200)]
api-parse-options.txt: Introduce documentation for parse options API
Add some documentation of basics, macros and callback
implementation of the parse-options API.
Signed-off-by: Stephan Beyer <s-beyer@gmx.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Michele Ballabio [Sun, 22 Jun 2008 14:39:04 +0000 (16:39 +0200)]
parse-options.c: fix documentation syntax of optional arguments
When an argument for an option is optional, short options don't need a
space between the option and the argument, and long options need a "=".
Otherwise, arguments are misinterpreted.
Signed-off-by: Michele Ballabio <barra_cuda@katamail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Stephan Beyer [Sat, 21 Jun 2008 23:54:36 +0000 (01:54 +0200)]
api-builtin.txt: update and fix typo
Mention NEED_WORK_TREE flag and command-list.txt.
Fix "bulit-in" typo and AsciiDoc-formatting of a paragraph.
Signed-off-by: Stephan Beyer <s-beyer@gmx.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Stephan Beyer [Sun, 22 Jun 2008 14:07:02 +0000 (16:07 +0200)]
git-rebase.sh: Add check if rebase is in progress
"git rebase --continue" and friends gave nonsense errors when there is no
rebase in progress.
Signed-off-by: Stephan Beyer <s-beyer@gmx.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Linus Torvalds [Thu, 19 Jun 2008 19:34:06 +0000 (12:34 -0700)]
Make git_dir a path relative to work_tree in setup_work_tree()
Once we find the absolute paths for git_dir and work_tree, we can make
git_dir a relative path since we know pwd will be work_tree. This should
save the kernel some time traversing the path to work_tree all the time
if git_dir is inside work_tree.
Daniel's patch didn't apply for me as-is, so I recreated it with some
differences, and here are the numbers from ten runs each.
There is some IO for me - probably due to more-or-less random flushing of
the journal - so the variation is bigger than I'd like, but whatever:
Before:
real 0m8.135s
real 0m7.933s
real 0m8.080s
real 0m7.954s
real 0m7.949s
real 0m8.112s
real 0m7.934s
real 0m8.059s
real 0m7.979s
real 0m8.038s
After:
real 0m7.685s
real 0m7.968s
real 0m7.703s
real 0m7.850s
real 0m7.995s
real 0m7.817s
real 0m7.963s
real 0m7.955s
real 0m7.848s
real 0m7.969s
Now, going by "best of ten" (on the assumption that the longer numbers
are all due to IO), I'm saying a 7.933s -> 7.685s reduction, and it does
seem to be outside of the noise (ie the "after" case never broke 8s, while
the "before" case did so half the time).
So looks like about 3% to me.
Doing it for a slightly smaller test-case (just the "arch" subdirectory)
gets more stable numbers probably due to not filling the journal with
metadata updates, so we have:
Before:
real 0m1.633s
real 0m1.633s
real 0m1.633s
real 0m1.632s
real 0m1.632s
real 0m1.630s
real 0m1.634s
real 0m1.631s
real 0m1.632s
real 0m1.632s
After:
real 0m1.610s
real 0m1.609s
real 0m1.610s
real 0m1.608s
real 0m1.607s
real 0m1.610s
real 0m1.609s
real 0m1.611s
real 0m1.608s
real 0m1.611s
where I'ld just take the averages and say 1.632 vs 1.610, which is just
over 1% peformance improvement.
So it's not in the noise, but it's not as big as I initially thought and
measured.
(That said, it obviously depends on how deep the working directory path is
too, and whether it is behind NFS or something else that might need to
cause more work to look up).
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jan Krüger [Thu, 19 Jun 2008 22:41:42 +0000 (00:41 +0200)]
Documentation: fix formatting in git-svn
Due to a misplaced list block separator, general hints about the config
file options got indented at the same level as the description of the last
option, making it easy to miss them.
Signed-off-by: Jan Krüger <jk@jk.gs>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Brandon Casey [Thu, 19 Jun 2008 17:32:02 +0000 (12:32 -0500)]
t7502-commit.sh: test_must_fail doesn't work with inline environment variables
When the arguments to test_must_fail() begin with a variable assignment,
test_must_fail() attempts to execute the variable assignment as a command.
This fails, and so test_must_fail returns with a successful status value
without running the command it was intended to test.
For example, the following script:
#!/bin/sh
test_must_fail () {
"$@"
test $? -gt 0 -a $? -le 129
}
foo='wo adrian'
test_must_fail foo='yo adrian' sh -c 'echo foo: $foo'
always exits zero and prints the message:
test.sh: line 3: foo=yo adrian: command not found
Test 16 calls test_must_fail in such a way and therefore has not been
testing whether git 'do[es] not fire editor in the presence of conflicts'.
A workaround is to set and export the variable in a normal way, not
using one-shot notation. Because this would affect the remainder of
the process, the test is done inside a subshell.
Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Dan McGee [Thu, 19 Jun 2008 21:15:53 +0000 (16:15 -0500)]
completion: add --graph to log command completion
Signed-off-by: Dan McGee <dpmcgee@gmail.com>
Acked-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Linus Torvalds [Tue, 10 Jun 2008 17:44:43 +0000 (10:44 -0700)]
racy-git: an empty blob has a fixed object name
We use size=0 as the magic token to say the entry is known to be racily
clean, but a sequence that does:
- update the path with a non-empty blob and write the index;
- update an unrelated path and write the index -- this smudges
the above entry;
- truncate the path to size zero.
would make both the size field for the path in the index and the size on
the filesystem zero. We should not mistake it as a clean index entry.
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Brandon Casey [Wed, 18 Jun 2008 20:16:08 +0000 (15:16 -0500)]
git-merge.sh: fix typo in usage message: sucesses --> succeeds
Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Thu, 19 Jun 2008 06:59:41 +0000 (23:59 -0700)]
diff -c/--cc: do not include uninteresting deletion before leading context
When we include a few uninteresting lines before the interesting ones as
context, we are only interested in seeing the surviving lines themselves
and not the deleted lines that are before them. Mark the added leading
context lines in give_context() and not show deleted lines form them.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Wed, 18 Jun 2008 20:09:43 +0000 (13:09 -0700)]
GIT 1.5.6
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jeff King [Mon, 16 Jun 2008 16:15:02 +0000 (12:15 -0400)]
clean up error conventions of remote.c:match_explicit
match_explicit is called for each push refspec to try to
fully resolve the source and destination sides of the
refspec. Currently, we look at each refspec and report
errors on both the source and the dest side before aborting.
It makes sense to report errors for each refspec, since an
error in one is independent of an error in the other.
However, reporting errors on the 'dst' side of a refspec if
there has been an error on the 'src' side does not
necessarily make sense, since the interpretation of the
'dst' side depends on the 'src' side (for example, when
creating a new unqualified remote ref, we use the same type
as the src ref).
This patch lets match_explicit return early when the src
side of the refspec is bogus. We still look at all of the
refspecs before aborting the push, though.
At the same time, we clean up the call signature, which
previously took an extra "errs" flag. This was pointless, as
we didn't act on that flag, but rather just passed it back
to the caller. Instead, we now use the more traditional
"return -1" to signal an error, and the caller aggregates
the error count.
This change fixes two bugs, as well:
- the early return avoids a segfault when passing a NULL
matched_src to guess_ref()
- the check for multiple sources pointing to a single dest
aborted if the "err" flag was set. Presumably the intent
was not to bother with the check if we had no
matched_src. However, since the err flag was passed in
from the caller, we might abort the check just because a
previous refspec had a problem, which doesn't make
sense.
In practice, this didn't matter, since due to the error
flag we end up aborting the push anyway.
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Olivier Marin [Tue, 17 Jun 2008 16:34:57 +0000 (18:34 +0200)]
Fix approxidate("never") to always return 0
Commit
af66366a9feb0194ed04b1f538998021ece268a8 introduced the keyword
"never" to be used with approxidate() but defined it with a fixed date
without taking care of timezone. As a result approxidate() will return
a timestamp in the future with a negative timezone.
With this patch, approxidate("never") always return 0 whatever your
timezone is.
Signed-off-by: Olivier Marin <dkr@freesurf.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Alejandro Mery [Tue, 17 Jun 2008 11:43:57 +0000 (13:43 +0200)]
git-am: head -1 is obsolete and doesn't work on some new systems
head -<n> was deprecated by POSIX, and as modern versions of coreutils
package don't support it at least one exports _POSIX2_VERSION=199209
it's fails on some systems.
head -n<n> is portable, but sed <n>q is even more.
Signed-off-by: Alejandro Mery <amery@geeks.cl>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Tue, 17 Jun 2008 07:23:31 +0000 (00:23 -0700)]
builtin-rerere: fix a small leak
The data read from MERGE_RR file is kept in path-list by hanging textual
40-byte conflict signature to path of the blob that contains the
conflict. The signature is strdup'ed twice, and the second copy is given
to the path-list, leaking the first copy.
Signed-off-by: Junio C Hamano <junio@pobox.com>
Acked-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Lea Wiemann [Tue, 17 Jun 2008 06:25:28 +0000 (08:25 +0200)]
gitweb: remove unused parse_ref method
The parse_ref method became unused in
cd1464083c, but the author
decided to leave it in. Now it gets in the way of refactoring, so
let's remove it.
Signed-off-by: Lea Wiemann <LeWiemann@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Lea Wiemann [Tue, 17 Jun 2008 21:46:35 +0000 (23:46 +0200)]
gitweb: quote commands properly when calling the shell
This eliminates the function git_cmd_str, which was used for composing
command lines, and adds a quote_command function, which quotes all of
its arguments (as in quote.c).
Signed-off-by: Lea Wiemann <LeWiemann@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Tue, 17 Jun 2008 05:19:00 +0000 (22:19 -0700)]
sha1_file.c: simplify parse_pack_index()
It was implemented as a thin wrapper around an otherwise unused
helper function parse_pack_index_file(). The code becomes simpler
and easier to read by consolidating the two.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Tue, 17 Jun 2008 05:02:12 +0000 (22:02 -0700)]
create_tempfile: make sure that leading directories can be accessible by peers
In a shared repository, we should make sure adjust_shared_perm() is called
after creating the initial fan-out directories under objects/ directory.
Earlier an logico called the function only when mkdir() failed; we should
do so when mkdir() succeeded.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Linus Torvalds [Tue, 17 Jun 2008 00:17:10 +0000 (17:17 -0700)]
write_loose_object: don't bother trying to read an old object
Before even calling this, all callers have done a "has_sha1_file(sha1)"
or "has_loose_object(sha1)" check, so there is no point in doing a
second check.
If something races with us on object creation, we handle that in the
final link() that moves it to the right place.
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Miklos Vajna [Sun, 15 Jun 2008 12:06:43 +0000 (14:06 +0200)]
path-list documentation: document all functions and data structures
Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Miklos Vajna [Sat, 14 Jun 2008 01:01:59 +0000 (03:01 +0200)]
run-command documentation: fix "memset()" parameter
When initializing the struct async and struct child_process structures,
the documentation suggested "clearing" the structure with '0' instead of
'\0'. It is enough to use integer zero here.
Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Tue, 17 Jun 2008 00:39:50 +0000 (17:39 -0700)]
Merge branch 'maint'
* maint:
diff.c: fix emit_line() again not to add extra line
Junio C Hamano [Tue, 17 Jun 2008 00:37:21 +0000 (17:37 -0700)]
diff.c: fix emit_line() again not to add extra line
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Mon, 16 Jun 2008 23:14:22 +0000 (16:14 -0700)]
Merge branch 'maint'
* maint:
diff: reset color before printing newline
SZEDER Gábor [Mon, 16 Jun 2008 22:00:02 +0000 (00:00 +0200)]
diff: reset color before printing newline
It worked that way since commit
50f575fc (Tweak diff colors,
2006-06-22), but commit
c1795bb0 (Unify whitespace checking, 2007-12-13)
changed it. This patch restores the old behaviour.
Besides Linus' arguments in the log message of
50f575fc, resetting color
before printing newline is also important to keep 'git add --patch'
happy. If the last line(s) of a file are removed, then that hunk will
end with a colored line. However, if the newline comes before the color
reset, then the diff output will have an additional line at the end
containing only the reset sequence. This causes trouble in
git-add--interactive.perl's parse_diff function, because @colored will
have one more element than @diff, and that last element will contain the
color reset. The elements of these arrays will then be copied to @hunk,
but only as many as the number of elements in @diff. As a result the
last color reset is lost and all subsequent terminal output will be
printed in color.
Signed-off-by: SZEDER Gábor <szeder@ira.uka.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Pierre Habouzit [Sun, 15 Jun 2008 21:37:42 +0000 (23:37 +0200)]
Make git reflog expire honour core.sharedRepository.
Signed-off-by: Pierre Habouzit <madcoder@debian.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Sun, 15 Jun 2008 20:47:14 +0000 (13:47 -0700)]
Update RPM spec to drop curl executable requirement
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Johan Herland [Sun, 15 Jun 2008 10:16:01 +0000 (12:16 +0200)]
The "curl" executable is no longer required
git-clone.sh was the last user of the "curl" executable. Relevant git
commands now use libcurl instead. This should be reflected in the
install requirements.
Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Sun, 15 Jun 2008 20:43:32 +0000 (13:43 -0700)]
Makefile: update check-docs target
Earlier series to rename documentation pages around did not update this
target and left check-docs broken. This should fix it.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Johan Herland [Sun, 15 Jun 2008 10:14:12 +0000 (12:14 +0200)]
Consistency: Use "libcurl" instead of "cURL library" and "curl"
Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Johan Herland [Sun, 15 Jun 2008 10:13:22 +0000 (12:13 +0200)]
cpio is no longer used by git-clone
Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Christian Couder [Sun, 15 Jun 2008 13:39:20 +0000 (15:39 +0200)]
Documentation: RelNotes-1.5.6: talk about renamed HTML files
Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Sat, 14 Jun 2008 19:57:18 +0000 (12:57 -0700)]
GIT 1.5.6-rc3
Just a lot of small fixes, mostly documentation.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Linus Torvalds [Sat, 14 Jun 2008 18:43:01 +0000 (11:43 -0700)]
Simplify and rename find_sha1_file()
Now that we've made the loose SHA1 file reading more careful and
streamlined, we only use the old find_sha1_file() function for checking
whether a loose object file exists at all.
As such, the whole 'return stat information' part of it was just
pointless (nobody cares any more), and the naming of the function is not
really all that relevant either.
So simplify it to not do a 'stat()', but just an existence check (which
is what the callers want), and rename it to 'has_loose_object()' which
matches the use.
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Linus Torvalds [Sat, 14 Jun 2008 18:32:37 +0000 (11:32 -0700)]
Make loose object file reading more careful
We used to do 'stat()+open()+mmap()+close()' to read the loose object
file data, which does work fine, but has a couple of problems:
- it unnecessarily walks the filename twice (at 'stat()' time and then
again to open it)
- NFS generally has open-close consistency guarantees, which means that
the initial 'stat()' was technically done outside of the normal
consistency rules.
So change it to do 'open()+fstat()+mmap()+close()' instead, which avoids
both these issues.
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Linus Torvalds [Sat, 14 Jun 2008 17:50:12 +0000 (10:50 -0700)]
Avoid cross-directory renames and linking on object creation
Instead of creating new temporary objects in the top-level git object
directory, create them in the same directory they will finally end up in
anyway. This avoids making the final atomic "rename to stable name"
operation be a cross-directory event, which makes it a lot easier for
various filesystems.
Several filesystems do things like change the inode number when moving
files across directories (or refuse to do it entirely).
In particular, it can also cause problems for NFS implementations that
change the filehandle of a file when it moves to a different directory,
like the old user-space NFS server did, and like the Linux knfsd still
does if you don't export your filesystems with 'no_subtree_check' or if
you export a filesystem that doesn't have stable inode numbers across
renames).
This change also obviously implies creating the object fan-out
subdirectory at tempfile creation time, rather than at the final
move_temp_to_file() time. Which actually accounts for most of the size
of the patch.
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jakub Narebski [Sat, 14 Jun 2008 18:14:12 +0000 (20:14 +0200)]
Use 'trash directory' thoroughly in t/test-lib.sh
...also in comments.
Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Mike Hommey [Sat, 14 Jun 2008 10:02:22 +0000 (12:02 +0200)]
Don't allocate too much memory in quote_ref_url
In
c13b263, http_fetch_ref got "refs/" included in the ref passed to it,
which, incidentally, makes the allocation in quote_ref_url too big, now.
Signed-off-by: Junio C Hamano <gitster@pobox.com>