gitweb.git
git.el: Improve the confirmation message on remove... Alexandre Julliard Mon, 16 Feb 2009 10:40:08 +0000 (11:40 +0100)

git.el: Improve the confirmation message on remove and revert.

If there's only one file, print its name instead of just "1 file".

Signed-off-by: Alexandre Julliard <julliard@winehq.org>

git.el: Make sure that file lists are sorted as they... Alexandre Julliard Mon, 16 Feb 2009 10:39:11 +0000 (11:39 +0100)

git.el: Make sure that file lists are sorted as they are created.

This avoids a possibly redundant sort in git-update-status-files and
git-status-filenames-map, and allows callers to continue using the
list without having to copy it.

It also fixes the confusing success messages reported by Brent
Goodrick.

Signed-off-by: Alexandre Julliard <julliard@winehq.org>

Support 'raw' date formatLinus Torvalds Fri, 20 Feb 2009 22:15:22 +0000 (14:15 -0800)

Support 'raw' date format

Talking about --date, one thing I wanted for the 1234567890 date was to
get things in the raw format. Sure, you get them with --pretty=raw, but it
felt a bit sad that you couldn't just ask for the date in raw format.

So here's a throw-away patch (meaning: I won't be re-sending it, because I
really don't think it's a big deal) to add "--date=raw". It just prints
out the internal raw git format - seconds since epoch plus timezone (put
another way: 'date +"%s %z"' format)

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'maint'Junio C Hamano Fri, 20 Feb 2009 07:44:07 +0000 (23:44 -0800)

Merge branch 'maint'

* maint:
More friendly message when locking the index fails.
Document git blame --reverse.
Documentation: Note file formats send-email accepts

More friendly message when locking the index fails.Matthieu Moy Thu, 19 Feb 2009 12:54:18 +0000 (13:54 +0100)

More friendly message when locking the index fails.

Just saying that index.lock exists doesn't tell the user _what_ to do
to fix the problem. We should give an indication that it's normally
safe to delete index.lock after making sure git isn't running here.

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

Document git blame --reverse.Matthieu Moy Thu, 19 Feb 2009 12:34:48 +0000 (13:34 +0100)

Document git blame --reverse.

This was introduced in 85af7929ee125385c2771fa4eaccfa2f29dc63c9 but
not documented outside the commit message.

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

gitweb: Hyperlink multiple git hashes on the same commi... Marcel M. Cary Wed, 18 Feb 2009 03:00:43 +0000 (19:00 -0800)

gitweb: Hyperlink multiple git hashes on the same commit message line

The current implementation only hyperlinks the first hash on
a given line of the commit message. It seems sensible to
highlight all of them if there are multiple, and it seems
plausible that there would be multiple even with a tidy line
length limit, because they can be abbreviated as short as 8
characters.

Benchmark:

I wanted to make sure that using the 'e' switch to the Perl regex
wasn't going to kill performance, since this is called once per commit
message line displayed.

In all three A/B scenarios I tried, the A and B yielded the same
results within 2%, where A is the version of code before this patch
and B is the version after.

1: View a commit message containing the last 1000 commit hashes
2: View a commit message containing 1000 lines of 40 dots to avoid
hyperlinking at the same message length
3: View a short merge commit message with a few lines of text and
no hashes

All were run in CGI mode on my sub-production hardware on a recent
clone of git.git. Numbers are the average of 10 reqests per second
with the first request discarded, since I expect this change to affect
primarily CPU usage. Measured with ApacheBench.

Note that the web page rendered was the same; while the new code
supports multiple hashes per line, there was at most one per line.

The primary purpose of scenarios 2 and 3 were to verify that the
addition of 1000 commit messages had an impact on how much of the time
was spent rendering commit messages. They were all within 2% of 0.80
requests per second (much faster).

So I think the patch has no noticeable effect on performance.

Signed-off-by: Marcel M. Cary <marcel@oak.homeunix.org>
Acked-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

system_path(): simplify using strip_path_suffix(),... Johannes Schindelin Thu, 19 Feb 2009 19:10:53 +0000 (20:10 +0100)

system_path(): simplify using strip_path_suffix(), and add suffix "git"

At least for the author of this patch, the logic in system_path() was
too hard to understand. Using the function strip_path_suffix() documents
the idea of the code better.

The real change is to add the suffix "git", so that a runtime prefix will
be computed correctly even when the executable was called in /git/ as is
the case in msysGit (Windows insists to search the current directory
before the PATH when looking for an executable).

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Acked-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Introduce the function strip_path_suffix()Johannes Schindelin Thu, 19 Feb 2009 19:10:49 +0000 (20:10 +0100)

Introduce the function strip_path_suffix()

The function strip_path_suffix() will try to strip a given suffix from
a given path. The suffix must start at a directory boundary (i.e. "core"
is not a path suffix of "libexec/git-core", but "git-core" is).

Arbitrary runs of directory separators ("slashes") are assumed identical.

Example:

strip_path_suffix("C:\\msysgit/\\libexec\\git-core",
"libexec///git-core", &prefix)

will set prefix to "C:\\msysgit" and return 0.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Acked-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation: Note file formats send-email acceptsTodd Zullinger Thu, 19 Feb 2009 03:51:06 +0000 (22:51 -0500)

Documentation: Note file formats send-email accepts

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

add basic branch display testsJeff King Thu, 19 Feb 2009 03:34:44 +0000 (22:34 -0500)

add basic branch display tests

We were not testing the output of "git branch" anywhere.
Not only does this not protect us against regressions in the
output, but we are not exercising code paths which may have
bugs (such as the one fixed by 45e2b61).

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

branch: clean up repeated strlenJeff King Thu, 19 Feb 2009 03:35:45 +0000 (22:35 -0500)

branch: clean up repeated strlen

Commit 45e2b61 fixed the initialization of a "len" struct
parameter via strlen. We can use that to clean up what is
now 3 strlens in a 6-line sequence.

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

Merge branch 'maint'Junio C Hamano Wed, 18 Feb 2009 19:31:52 +0000 (11:31 -0800)

Merge branch 'maint'

* maint:
tests: fix "export var=val"
Skip timestamp differences for diff --no-index
Documentation/git-push: --all, --mirror, --tags can not be combined

tests: fix "export var=val"Junio C Hamano Wed, 18 Feb 2009 19:17:27 +0000 (11:17 -0800)

tests: fix "export var=val"

Some shells do not like "export var=val"; the right way to write
it is to do an assignment and then export just the variable name.

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

filter-branch -d: Export GIT_DIR earlierLars Noschinski Wed, 18 Feb 2009 08:35:36 +0000 (09:35 +0100)

filter-branch -d: Export GIT_DIR earlier

The improved error handling catches a bug in filter-branch when using
-d pointing to a path outside any git repository:

$ git filter-branch -d /tmp/foo master
fatal: Not a git repository (or any of the parent directories): .git

This error message comes from git for-each-ref in line 224. GIT_DIR is
set correctly by git-sh-setup (to the foo.git repository), but not
exported (yet).

Signed-off-by: Lars Noschinski <lars@public.noschinski.de>
Acked-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

disallow providing multiple upstream branches to rebase... Jay Soffian Wed, 18 Feb 2009 13:44:02 +0000 (08:44 -0500)

disallow providing multiple upstream branches to rebase, pull --rebase

It does not make sense to provide multiple upstream branches to either
git pull --rebase, or to git rebase, so disallow both.

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

Skip timestamp differences for diff --no-indexMichael Spang Wed, 18 Feb 2009 06:48:06 +0000 (01:48 -0500)

Skip timestamp differences for diff --no-index

We display empty diffs for files whose timestamps have changed.
Usually, refreshing the index makes those empty diffs go away.
However, when not using the index they are not very useful and
there is no option to suppress them.

This forces on the skip_stat_unmatch option for diff --no-index,
suppressing any empty diffs. This option is also used for diffs
against the index when "diff.autorefreshindex" is set, but that
option does not apply to diff --no-index.

Signed-off-by: Michael Spang <mspang@uwaterloo.ca>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-add -i/-p: learn to unwrap C-quoted pathsJunio C Hamano Tue, 17 Feb 2009 06:43:43 +0000 (22:43 -0800)

git-add -i/-p: learn to unwrap C-quoted paths

The underlying plumbing commands are not run with -z option, so the paths
returned from them need to be unquoted as needed.

Remove the now stale BUGS section from git-add documentaiton as suggested
by Teemu Likonen.

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

git-svn: fix parsing of timestamp obtained from svnJunio C Hamano Wed, 18 Feb 2009 18:48:01 +0000 (10:48 -0800)

git-svn: fix parsing of timestamp obtained from svn

Ward Wouts reports that git-svn barfed like this:

Unable to parse date: 2004-03-09T09:44:33.Z at /usr/bin/git-svn line 3995

The parse_svn_date sub expects there always are one or more digits after
the decimal point to record fractional seconds, but this example does not
and results in a failure like this.

The fix is based on the original fix by the reporter, further cleaned up.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
Acked-by: Eric Wong <normalperson@yhbt.net>

gitweb: Fix warnings with override permitted but no... Marcel M. Cary Wed, 18 Feb 2009 13:09:41 +0000 (14:09 +0100)

gitweb: Fix warnings with override permitted but no repo override

When a feature like "blame" is permitted to be overridden in the
repository configuration but it is not actually set in the repository,
a warning is emitted due to the undefined value of the repository
configuration, even though it's a perfectly normal condition.
Emitting warning is grounds for test failure in the gitweb test
script.

This error was caused by rewrite of git_get_project_config from using
"git config [<type>] <name>" for each individual configuration
variable checked to parsing "git config --list --null" output in
commit b201927 (gitweb: Read repo config using 'git config -z -l').
Earlier version of git_get_project_config was returning empty string
if variable do not exist in config; newer version is meant to return
undef in this case, therefore change in feature_bool was needed.

Additionally config_to_* subroutines were meant to be invoked only if
configuration variable exists; therefore we added early return to
git_get_project_config: it now returns no value if variable does not
exists in config. Otherwise config_to_* subroutines (config_to_bool
in paryicular) wouldn't be able to distinguish between the case where
variable does not exist and the case where variable doesn't have value
(the "[section] noval" case, which evaluates to true for boolean).

While at it fix bug in config_to_bool, where checking if $val is
defined (if config variable has value) was done _after_ stripping
leading and trailing whitespace, which lead to 'Use of uninitialized
value' warning.

Add test case for features overridable but not overriden in repo
config, and case for no value boolean configuration variable.

Signed-off-by: Marcel M. Cary <marcel@oak.homeunix.org>
Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation/git-push: --all, --mirror, --tags can... Gerrit Pape Tue, 17 Feb 2009 09:25:02 +0000 (09:25 +0000)

Documentation/git-push: --all, --mirror, --tags can not be combined

While b259f09 made git-push output a better error message for 'git-push
--all --tags', this commit fixes the synopsis in the documentation.

Inconsistency spotted and fix suggested by Jari Aalto through
http://bugs.debian.org/502567

Signed-off-by: Gerrit Pape <pape@smarden.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

bash completion: only show 'log --merge' if mergingThomas Rast Mon, 16 Feb 2009 16:34:57 +0000 (17:34 +0100)

bash completion: only show 'log --merge' if merging

The gitk completion only shows --merge if MERGE_HEAD is present.
Do it the same way for git-log completion.

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Acked-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

bash completion: refactor common log, shortlog and... Thomas Rast Mon, 16 Feb 2009 16:34:56 +0000 (17:34 +0100)

bash completion: refactor common log, shortlog and gitk options

Refactor options that are useful for more than one of them into a
variable used by the relevant completions. This has the effect of
adding the following options to git-log:

--branches --tags --remotes --first-parent --dense --sparse
--simplify-merges --simplify-by-decoration --first-parent
--no-merges

The following to git-shortlog:

--branches --tags --remotes --first-parent

And the following to gitk:

--branches --tags --remotes --first-parent --no-merges --max-count=
--max-age= --since= --after= --min-age= --until= --before= --dense
--sparse --full-history --simplify-merges --simplify-by-decoration
--left-right

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Acked-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Avoid segfault with 'git branch' when the HEAD is detachedJohannes Schindelin Wed, 18 Feb 2009 18:14:59 +0000 (19:14 +0100)

Avoid segfault with 'git branch' when the HEAD is detached

A recent addition to the ref_item struct was not taken care of, leading
to a segmentation fault when accessing the (uninitialized) "dest" member.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

gitweb: fix wrong base URL when non-root DirectoryIndexGiuseppe Bilotta Sun, 15 Feb 2009 09:18:36 +0000 (10:18 +0100)

gitweb: fix wrong base URL when non-root DirectoryIndex

CGI::url() has some issues when rebuilding the script URL if the script
is a DirectoryIndex.

One of these issue is the inability to strip PATH_INFO, which is why
we had to do it ourselves.

Another issue is that the resulting URL cannot be used for the <base>
tag: it works if we're the DirectoryIndex at the root level, but not
otherwise.

We fix this by building the proper base URL ourselves, and improve the
comment about the need to strip PATH_INFO manually while we're at it.

Additionally t/t9500-gitweb-standalone-no-errors.sh had to be modified
to set SCRIPT_NAME variable (CGI standard states that it MUST be set,
and now gitweb uses it if PATH_INFO is not empty, as is the case for
some of tests in t9500).

Signed-off-by: Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

bash: update 'git svn' optionsSZEDER Gábor Sat, 14 Feb 2009 16:21:53 +0000 (17:21 +0100)

bash: update 'git svn' options

'git svn' got some new subcommands and otions in the last couple of
months. This patch adds completion support for them.

In particular:

* 'fetch', 'clone', etc.: '--ignore-paths='
* 'init' and 'clone': '--prefix=', '--use-log-author',
'--add-author-from'
* 'dcommit': '--commit-url', '--revision'
* 'log': '--color'
* 'rebase': '--dry-run'
* 'branch', 'tag', 'blame', 'migrate' subcommands and their options

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>

bash: add missing 'git merge' optionsSZEDER Gábor Sun, 15 Feb 2009 13:25:11 +0000 (14:25 +0100)

bash: add missing 'git merge' options

Namely: '--commit', '--stat', '--no-squash', '--ff', '--no-ff'.

One might wonder why add options that specify the default behaviour
anyway (e.g. '--commit', '--no-squash', etc.). Users can override the
default with config options (e.g. 'branch.<name>.mergeoptions',
'merge.log'), but sometimes might still need the default behaviour.

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>

git-svn: Fix for rewriteRoot URL containing username. v1.6.2-rc1Dévai Tamás Wed, 11 Feb 2009 23:14:02 +0000 (00:14 +0100)

git-svn: Fix for rewriteRoot URL containing username.

If the new svn root URL given with the svn-remote.<repo>.rewriteRoot config option
(or by the --rewrite-root option to 'git svn init') contains a username
(such as 'svn+ssh://username@example.com/repo'), find_by_url() cannot find
the repository URL, because the URL contained in the commit message does have
the username removed.

Signed-off-by: Dévai Tamás <devait@mailbox.sk>
Acked-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

builtin-receive-pack.c: fix compiler warnings about... René Scharfe Sun, 15 Feb 2009 18:18:58 +0000 (19:18 +0100)

builtin-receive-pack.c: fix compiler warnings about format string

While all of the strings passed to warning() are, in fact, literals, the
compiler doesn't recognize them as such because it doesn't see through
the loop used to iterate over them:

builtin-receive-pack.c: In function 'warn_unconfigured_deny':
builtin-receive-pack.c:247: warning: format not a string literal and no format arguments
builtin-receive-pack.c: In function 'warn_unconfigured_deny_delete_current':
builtin-receive-pack.c:273: warning: format not a string literal and no format arguments

Calm the compiler by adding easily recognizable format string literals.

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

RelNotes UpdateJunio C Hamano Sun, 15 Feb 2009 08:15:52 +0000 (00:15 -0800)

RelNotes Update

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

Merge branch 'mc/setup-cd-p'Junio C Hamano Sun, 15 Feb 2009 09:44:58 +0000 (01:44 -0800)

Merge branch 'mc/setup-cd-p'

* mc/setup-cd-p:
git-sh-setup: Use "cd" option, not /bin/pwd, for symlinked work tree

Merge branch 'ff/submodule-no-fetch'Junio C Hamano Sun, 15 Feb 2009 09:44:20 +0000 (01:44 -0800)

Merge branch 'ff/submodule-no-fetch'

* ff/submodule-no-fetch:
submodule: add --no-fetch parameter to update command

Merge branch 'ms/mailmap'Junio C Hamano Sun, 15 Feb 2009 09:44:15 +0000 (01:44 -0800)

Merge branch 'ms/mailmap'

* ms/mailmap:
Move mailmap documentation into separate file
Change current mailmap usage to do matching on both name and email of author/committer.
Add map_user() and clear_mailmap() to mailmap
Add find_insert_index, insert_at_index and clear_func functions to string_list
Add mailmap.file as configurational option for mailmap location

Merge branch 'jn/gitweb-committag'Junio C Hamano Sun, 15 Feb 2009 09:44:11 +0000 (01:44 -0800)

Merge branch 'jn/gitweb-committag'

* jn/gitweb-committag:
gitweb: Better regexp for SHA-1 committag match

Merge branch 'rc/http-push'Junio C Hamano Sun, 15 Feb 2009 09:43:57 +0000 (01:43 -0800)

Merge branch 'rc/http-push'

* rc/http-push:
use a hash of the lock token as the suffix for PUT/MOVE

use a hash of the lock token as the suffix for PUT... Tay Ray Chuan Sat, 14 Feb 2009 09:52:14 +0000 (17:52 +0800)

use a hash of the lock token as the suffix for PUT/MOVE

After 753bc91 ("Remove the requirement opaquelocktoken uri scheme"),
lock tokens are in the URI forms in which they are received from the
server, eg. 'opaquelocktoken:', 'urn:uuid:'.

However, "start_put" (and consequently "start_move"), which attempts to
create a unique temporary file using the UUID of the lock token,
inadvertently uses the lock token in its URI form. These file
operations on the server may not be successful (specifically, in
Windows), due to the colon ':' character from the URI form of the lock
token in the file path.

This patch uses a hash of the lock token instead, guaranteeing only
"safe" characters (a-f, 0-9) are used in the file path.

The token's hash is generated when the lock token is received from the
server in handle_new_lock_ctx, minimizing the number of times of
hashing.

Signed-off-by: Tay Ray Chuan <rctay89@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

imap.preformattedHTML to tell Thunderbird to send non... Jeremy White Thu, 12 Feb 2009 14:58:12 +0000 (08:58 -0600)

imap.preformattedHTML to tell Thunderbird to send non-flowed text

Many e-mail based development communities require non-flowed text to carry
patches to prevent whitespaces from getting mangled, but there is no easy
way to tell Thunderbird MUA not to use format=flowed, unless you configure
it to do so unconditionally for all outgoing mails.

A workaround for users who use git-imap-send is to wrap the patch in "pre"
element in the draft folder as an HTML message, and tell Thunderbird to
send "text only". Thunderbird turns such a message into a non-flowed
plain text when sending it out, which is what we want for patch e-mails.

Signed-off-by: Jeremy White <jwhite@codeweavers.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'js/gc-prune'Junio C Hamano Sun, 15 Feb 2009 08:05:11 +0000 (00:05 -0800)

Merge branch 'js/gc-prune'

* js/gc-prune:
gc: make --prune useful again by accepting an optional parameter

Merge branch 'tr/abbrev-commit-no-ellipses'Junio C Hamano Sun, 15 Feb 2009 08:03:43 +0000 (00:03 -0800)

Merge branch 'tr/abbrev-commit-no-ellipses'

* tr/abbrev-commit-no-ellipses:
log: do not print ellipses with --abbrev-commit

Merge branch 'jc/branch-previous'Junio C Hamano Sun, 15 Feb 2009 08:03:29 +0000 (00:03 -0800)

Merge branch 'jc/branch-previous'

* jc/branch-previous:
Teach @{-1} to git merge
Teach the "@{-1} syntax to "git branch"

send-email: --suppress-cc improvementsJay Soffian Sun, 15 Feb 2009 04:32:15 +0000 (23:32 -0500)

send-email: --suppress-cc improvements

Since 6564828 (git-send-email: Generalize auto-cc recipient
mechanism., 2007-12-25) we can suppress automatic Cc generation
separately for each of the possible address sources. However,
--suppress-cc=sob suppressed both SOB lines and body (but not header)
Cc lines, contrary to the name.

Change --suppress-cc=sob to mean only SOB lines, and add separate
choices 'bodycc' (body Cc lines) and 'body' (both 'sob' and 'bodycc').
The option --no-signed-off-by-cc now acts like --suppress-cc=sob,
which is not backwards compatible but matches the name of the option.

Also update the documentation and add a few tests.

Original patch by me. Revised by Thomas Rast, who contributed the
documentation and test updates.

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

send-email: handle multiple Cc addresses when reading... Jay Soffian Sun, 15 Feb 2009 04:32:14 +0000 (23:32 -0500)

send-email: handle multiple Cc addresses when reading mbox message

When git format-patch is given multiple --cc arguments, it generates a
Cc header that looks like:

Cc: first@example.com,
second@example.com,
third@example.com

Before this commit, send-email was unable to handle such a message as it
did not handle folded header lines, nor multiple recipients in a Cc
line.

This patch:

- Unfolds header lines by pre-processing the header before extracting
any of its fields.

- Handles Cc lines with multiple recipients.

- Adds use of Mail::Address if available for splitting Cc line and
the "Who should the emails be sent to?" prompt", with fall back to
existing split_addrs() function.

- Tests the new functionality and adds two tests for detecting whether
"From:" appears correctly in message body when patch author differs
from patch sender.

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

send-email: allow send-email to run outside a repoJay Soffian Sun, 15 Feb 2009 04:32:13 +0000 (23:32 -0500)

send-email: allow send-email to run outside a repo

send-email is supposed to be able to run from outside a repo. This
ability was broken by commits caf0c3d6 (make the message file name more
specific) and 5df9fcf6 (interpret unknown files as revision lists).

This commit provides a fix for both.

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

bash: fix misspelled 'git svn' optionSZEDER Gábor Sat, 14 Feb 2009 16:21:52 +0000 (17:21 +0100)

bash: fix misspelled 'git svn' option

'--user-log-author' -> '--use-log-author'

Signed-off-by: SZEDER Gábor <szeder@ira.uka.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t1500: more 'git rev-parse --git-dir' testsSZEDER Gábor Sat, 14 Feb 2009 16:16:29 +0000 (17:16 +0100)

t1500: more 'git rev-parse --git-dir' tests

Extend t1500 with tests of 'git rev-parse --git-dir' when invoked from
other directories of the repository or the work tree.

Signed-off-by: SZEDER Gábor <szeder@ira.uka.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Move 'rev-parse --git-dir' test to t1500SZEDER Gábor Sat, 14 Feb 2009 16:16:28 +0000 (17:16 +0100)

Move 'rev-parse --git-dir' test to t1500

Commit 72183cb2 (Fix gitdir detection when in subdir of
gitdir, 2009-01-16) added a test to 't1501-worktree' to check the
behaviour of 'git rev-parse --git-dir' in a special case. However,
t1501 is about testing separate work tree setups, and not about basic
'rev-parse' functionality, which is tested in t1500-rev-parse.
Therefore, this patch moves that test to t1500.

Signed-off-by: SZEDER Gábor <szeder@ira.uka.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

rerere: remove duplicated functionsSZEDER Gábor Sat, 14 Feb 2009 22:21:04 +0000 (23:21 +0100)

rerere: remove duplicated functions

Both rerere.c and builtin-rerere.c define the static functions
rr_path() and has_resolution() the exact same way. To eliminate this
code duplication this patch turns the functions in rerere.c
non-static, and makes builtin-rerere.c use them. Also, since this
puts these two functions into the global namespace, rename them to
rerere_path() and has_rerere_resolution(), respectively, and rename
their "name" parameter to "hex", because it better reflects what that
parameter actually is.

Signed-off-by: SZEDER Gábor <szeder@ira.uka.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation: pruning recipe for destructive filter... Thomas Rast Sat, 14 Feb 2009 20:56:51 +0000 (21:56 +0100)

Documentation: pruning recipe for destructive filter-branch

Add a section about how to shrink a repository's size after running
git-filter-branch to remove large blobs from history.

This comes up every week or so on IRC, and the commands required to
handle every case are not very newbie-friendly, so hopefully writing
them down somewhere leads to fewer questions.

It may seem contradictory to document fallbacks for older Gits in
newer docs, but we want to point people at this as a FAQ answer, and
they will frequently not have the newest version installed.

Thanks to Björn Steinbrink and Junio C Hamano for comments and
corrections.

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

gc: make --prune useful again by accepting an optional... Johannes Schindelin Sat, 14 Feb 2009 22:10:10 +0000 (23:10 +0100)

gc: make --prune useful again by accepting an optional parameter

With this patch, "git gc --no-prune" will not prune any loose (and
dangling) object, and "git gc --prune=5.minutes.ago" will prune
all loose objects older than 5 minutes.

This patch benefitted from suggestions by Thomas Rast and Jan Krï¿œger.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Teach @{-1} to git mergeJunio C Hamano Sat, 14 Feb 2009 07:26:12 +0000 (23:26 -0800)

Teach @{-1} to git merge

1.6.2 will have @{-1} syntax advertised as "usable anywhere you can use
a branch name". However, "git merge @{-1}" did not work.

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

Teach the "@{-1} syntax to "git branch"Junio C Hamano Sat, 14 Feb 2009 07:08:05 +0000 (23:08 -0800)

Teach the "@{-1} syntax to "git branch"

This teaches the new "@{-1} syntax to refer to the previous branch to "git
branch". After looking at somebody's faulty patch series on a topic
branch too long, if you decide it is not worth merging, you can just say:

$ git checkout master
$ git branch -D @{-1}

to get rid of it without having to type the name of the topic you now hate
so much for wasting a lot of your time.

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

symbolic-ref: allow refs/<whatever> in HEADJeff King Fri, 13 Feb 2009 18:26:09 +0000 (13:26 -0500)

symbolic-ref: allow refs/<whatever> in HEAD

Commit afe5d3d5 introduced a safety valve to symbolic-ref to
disallow installing an invalid HEAD. It was accompanied by
b229d18a, which changed validate_headref to require that
HEAD contain a pointer to refs/heads/ instead of just refs/.
Therefore, the safety valve also checked for refs/heads/.

As it turns out, topgit is using refs/top-bases/ in HEAD,
leading us to re-loosen (at least temporarily) the
validate_headref check made in b229d18a. This patch does the
corresponding loosening for the symbolic-ref safety valve,
so that the two are in agreement once more.

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

Remove redundant bit clears from diff_setup()Keith Cascio Fri, 13 Feb 2009 17:33:34 +0000 (09:33 -0800)

Remove redundant bit clears from diff_setup()

All bits already clear after memset(0).

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

builtin-branch.c: Rename branch category color namesArjen Laarhoven Fri, 13 Feb 2009 21:53:41 +0000 (22:53 +0100)

builtin-branch.c: Rename branch category color names

The branch color constants have the form COLOR_BRANCH_$category. Rename
them to BRANCH_COLOR_$category as this conveys their meaning better.

Signed-off-by: Arjen Laarhoven <arjen@yaph.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Clean up use of ANSI color sequencesArjen Laarhoven Fri, 13 Feb 2009 21:53:40 +0000 (22:53 +0100)

Clean up use of ANSI color sequences

Remove the literal ANSI escape sequences and replace them by readable
constants.

Signed-off-by: Arjen Laarhoven <arjen@yaph.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

log: do not print ellipses with --abbrev-commitThomas Rast Fri, 13 Feb 2009 22:10:41 +0000 (23:10 +0100)

log: do not print ellipses with --abbrev-commit

'git log --abbrev-commit' added an ellipsis to all commit names that
were abbreviated. This was particularly annoying if you wanted to
cut&paste the sha1 from the terminal, since selecting by word would
pick up '...' too.

So use find_unique_abbrev() instead of diff_unique_abbrev() in all
log-related commit sha1 printing routines, and also change the
formatting of the 'Merge: parent1 parent2' line output via
pretty_print_commit().

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

Teach rebase to rebase even if upstream is up to dateSverre Rabbelier Fri, 13 Feb 2009 22:48:01 +0000 (23:48 +0100)

Teach rebase to rebase even if upstream is up to date

Normally, if the current branch is up to date, the rebase is aborted.
However, it may be desirable to allow rebasing even if the current
branch is up to date. When using the '--whitespace=fix' option -f is
implied.

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

builtin-branch: improve output when displaying remote... Jay Soffian Fri, 13 Feb 2009 09:40:18 +0000 (04:40 -0500)

builtin-branch: improve output when displaying remote branches

When encountering a symref (typically refs/remotes/<remote>/HEAD),
display the ref target.

When displaying local and remote branches, prefix the remote branch
names with "remotes/" to make the remote branches clear from the local
branches. If displaying only the remote branches, the prefix is not
shown since it would be redundant.

Sample output:

$ git branch
foo -> master
* master
rather-long-branch-name

$ git branch -v
foo -> master
* master 51cecb2 initial
rather-long-branch-name 51cecb2 initial

$ git branch -v --no-abbrev
foo -> master
* master 51cecb2dbb1a1902bb4df79b543c8f951ee59d83 initial
rather-long-branch-name 51cecb2dbb1a1902bb4df79b543c8f951ee59d83 initial

$ git branch -r
frotz/HEAD -> frotz/master
frotz/master
origin/HEAD -> origin/master
origin/UNUSUAL -> refs/heads/master
origin/master

$ git branch -a
foo -> master
* master
rather-long-branch-name
remotes/frotz/HEAD -> frotz/master
remotes/frotz/master
remotes/origin/HEAD -> origin/master
remotes/origin/UNUSUAL -> refs/heads/master
remotes/origin/master

$ git branch -rv
frotz/HEAD -> frotz/master
frotz/master e1d8130 added file2
origin/HEAD -> origin/master
origin/UNUSUAL -> refs/heads/master
origin/master e1d8130 added file2

$ git branch -av
foo -> master
* master 51cecb2 initial
rather-long-branch-name 51cecb2 initial
remotes/frotz/HEAD -> frotz/master
remotes/frotz/master e1d8130 added file2
remotes/origin/HEAD -> origin/master
remotes/origin/UNUSUAL -> refs/heads/master
remotes/origin/master e1d8130 added file2

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

bash-completion: Complete the values of color.interacti... Matt Kraai Thu, 12 Feb 2009 15:55:54 +0000 (07:55 -0800)

bash-completion: Complete the values of color.interactive, color.ui, color.pager

Signed-off-by: Matt Kraai <kraai@ftbfs.org>
Acked-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Install the default "master" branch configuration after... Junio C Hamano Thu, 12 Feb 2009 06:42:27 +0000 (22:42 -0800)

Install the default "master" branch configuration after cloning a void

After "cloning from an empty repository", we have a configuration to
describe the remote's URL and the default ref mappings, but we lack the
branch configuration for the default branch we create on our end,
"master".

It is likely that the empty repository we cloned from will point the
default "master" branch with its HEAD, so prepare the local configuration
to match.

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

Update documentation to add further information about... Jeremy White Thu, 12 Feb 2009 21:17:04 +0000 (15:17 -0600)

Update documentation to add further information about using Thunderbird with git-imap-send.

Signed-off-by: Jeremy White <jwhite@codeweavers.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-rebase.txt: --interactive does not work with -... Mark Burton Thu, 12 Feb 2009 10:21:19 +0000 (10:21 +0000)

git-rebase.txt: --interactive does not work with --whitespace

Signed-off-by: Mark Burton <markb@ordern.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Add 'rm -f' equivalent to 'git rm' example of filter... Jacob Helwig Thu, 12 Feb 2009 18:01:10 +0000 (10:01 -0800)

Add 'rm -f' equivalent to 'git rm' example of filter-branch --index-filter

Signed-off-by: Jacob Helwig <jacob.helwig@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Enable setting attach as the default in .gitconfig... Jeremy White Thu, 12 Feb 2009 15:51:55 +0000 (09:51 -0600)

Enable setting attach as the default in .gitconfig for git-format-patch.

Signed-off-by: Jeremy White <jwhite@codeweavers.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Revert "validate_headref: tighten ref-matching to just... Junio C Hamano Thu, 12 Feb 2009 21:02:09 +0000 (13:02 -0800)

Revert "validate_headref: tighten ref-matching to just branches"

This reverts commit b229d18a809c169314b7f0d048dc5a7632e8f916, at least
until we figure out how to work better with TopGit that points HEAD to
refs/top-bases/ hierarchy.

Bugfix: GIT_EXTERNAL_DIFF with more than one changed... Nazri Ramliy Thu, 12 Feb 2009 13:36:14 +0000 (21:36 +0800)

Bugfix: GIT_EXTERNAL_DIFF with more than one changed files

When there is more than one file that are changed, running git diff with
GIT_EXTERNAL_DIFF incorrectly diagnoses an programming error and dies.
The check introduced in 479b0ae (diff: refactor tempfile cleanup handling,
2009-01-22) to detect a temporary file slot that forgot to remove its
temporary file was inconsistent with the way the codepath to remove the
temporary to mark the slot that it is done with it.

This patch fixes this problem and adds a test case for it.

Signed-off-by: Nazri Ramliy <ayiehere@gmail.com>
Acked-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Support "\" in non-wildcard exclusion entriesFinn Arne Gangstad Tue, 10 Feb 2009 14:20:17 +0000 (15:20 +0100)

Support "\" in non-wildcard exclusion entries

"\" was treated differently in exclude rules depending on whether a
wildcard match was done. For wildcard rules, "\" was de-escaped in
fnmatch, but this was not done for other rules since they used strcmp
instead. A file named "#foo" would not be excluded by "\#foo", but would
be excluded by "\#foo*".

We now treat all rules with "\" as wildcard rules.

Another solution could be to de-escape all non-wildcard rules as we
read them, but we would have to do the de-escaping exactly as fnmatch
does it to avoid inconsistencies.

Signed-off-by: Finn Arne Gangstad <finnag@pvv.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

add -i: revisit hunk on editor failureDeskin Miller Thu, 12 Feb 2009 05:19:41 +0000 (00:19 -0500)

add -i: revisit hunk on editor failure

Similar to the behaviour for editing a commit message, let terminating
the editor with a failure abort the current hunk edit and revisit the
option selection for the hunk.

Signed-off-by: Deskin Miller <deskinm@umich.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'maint'Junio C Hamano Thu, 12 Feb 2009 02:47:30 +0000 (18:47 -0800)

Merge branch 'maint'

* maint:
Prepare for 1.6.1.4.
Make repack less likely to corrupt repository
fast-export: ensure we traverse commits in topological order
Clear the delta base cache if a pack is rebuilt

Conflicts:
RelNotes

Prepare for 1.6.1.4.Junio C Hamano Thu, 12 Feb 2009 02:44:03 +0000 (18:44 -0800)

Prepare for 1.6.1.4.

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

Merge branch 'maint-1.6.0' into maintJunio C Hamano Thu, 12 Feb 2009 02:32:37 +0000 (18:32 -0800)

Merge branch 'maint-1.6.0' into maint

* maint-1.6.0:
Make repack less likely to corrupt repository
fast-export: ensure we traverse commits in topological order
Clear the delta base cache if a pack is rebuilt

Make repack less likely to corrupt repositoryJunio C Hamano Tue, 10 Feb 2009 20:16:31 +0000 (12:16 -0800)

Make repack less likely to corrupt repository

Some platforms refuse to rename a file that is open. When repacking an
already packed repository without adding any new object, the resulting
pack will contain the same set of objects as an existing pack, and on such
platforms, a newly created packfile cannot replace the existing one.

The logic detected this issue but did not try hard enough to recover from
it. Especially because the files that needs renaming come in pairs, there
potentially are different failure modes that one can be renamed but the
others cannot. Asking manual recovery to end users were error prone.

This patch tries to make it more robust by first making sure all the
existing files that need to be renamed have been renamed before
continuing, and attempts to roll back if some failed to rename.

This is based on an initial patch by Robin Rosenberg.

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

fast-export: ensure we traverse commits in topological... Elijah Newren Wed, 11 Feb 2009 06:03:53 +0000 (23:03 -0700)

fast-export: ensure we traverse commits in topological order

fast-export will only list as parents those commits which have already
been traversed (making it appear as if merges have been squashed if not
all parents have been traversed). To avoid this silent squashing of
merge commits, we request commits in topological order.

Signed-off-by: Elijah Newren <newren@gmail.com>
Acked-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

filter-branch: Add more error-handlingEric Kidd Wed, 11 Feb 2009 21:10:41 +0000 (16:10 -0500)

filter-branch: Add more error-handling

9273b56 (filter-branch: Fix fatal error on bare repositories, 2009-02-03)
fixed a missing check of return status from an underlying command in
git-filter-branch, but there still are places that do not check errors.
For example, the command does not pay attention to the exit status of the
command given by --commit-filter. It should abort in such a case.

This attempts to fix all the remaining places that fails to checks errors.

In two places, I've had to break apart pipelines in order to check the
error code for the first stage of the pipeline, as discussed here:

http://kerneltrap.org/mailarchive/git/2009/1/28/4835614

Feedback on this patch was provided by Johannes Sixt, Johannes Schindelin
and Junio C Hamano. Thomas Rast helped with pipeline error handling.

Signed-off-by: Eric Kidd <git@randomhacks.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

completion: More fixes to prevent unbound variable... Ted Pavlic Wed, 11 Feb 2009 18:03:26 +0000 (13:03 -0500)

completion: More fixes to prevent unbound variable errors

Several functions make use of "[-n ...]" and "[-z ...]". In many cases,
the variables being tested were declared with "local."

However, several __variables are not, and so they must be replaced with
their ${__-} equivalents.

Signed-off-by: Ted Pavlic <ted@tedpavlic.com>
Acked-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

completion: Better __git_ps1 support when not in workin... Ted Pavlic Wed, 11 Feb 2009 18:03:25 +0000 (13:03 -0500)

completion: Better __git_ps1 support when not in working directory

If .git/HEAD is not readable, __git_ps1 does nothing.

If --is-in-git-dir, __git_ps1 returns " (GIT_DIR!)" as a cautionary
note. The previous behavior would show the branch name (and would
optionally attempt to determine the dirtyState of the directory, which
was impossible because a "git diff" was used).

If --is-in-work-tree, __git_ps1 returns the branch name. Additionally,
if showDirtyState is on, the dirty state is displayed.

Signed-off-by: Ted Pavlic <ted@tedpavlic.com>
Acked-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

completion: Use consistent if [...] convention, not... Ted Pavlic Wed, 11 Feb 2009 18:03:24 +0000 (13:03 -0500)

completion: Use consistent if [...] convention, not "test"

The local coding convention in bash completion is to use [...] rather
than test. Additionally,

if [...]; then

is preferred over

if [...]
then

and so matching "if [...]\nthen" were changed accordingly.

Signed-off-by: Ted Pavlic <ted@tedpavlic.com>
Acked-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

completion: For consistency, change "git rev-parse... Ted Pavlic Wed, 11 Feb 2009 18:03:23 +0000 (13:03 -0500)

completion: For consistency, change "git rev-parse" to __gitdir calls

Signed-off-by: Ted Pavlic <ted@tedpavlic.com>
Acked-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Fix contrib/hooks/post-receive-email for new duplicate... Pat Notz Tue, 10 Feb 2009 16:43:30 +0000 (09:43 -0700)

Fix contrib/hooks/post-receive-email for new duplicate branch

In the show_new_revisions function, the original code:

git rev-parse --not --branches | grep -v $(git rev-parse $refname) |

isn't quite right since one can create a new branch and push it
without any new commits. In that case, two refs will have the same
sha1 but both would get filtered by the 'grep'. In the end, we'll
show ALL the history which is not what we want. Instead, we should
list the branches by name and remove the branch being updated and THEN
pass that list through rev-parse.

Revised as suggested by Jakub Narebski and Junio C Hamano to use
git-for-each-ref instead of git-branch. (Thanks!)

Signed-off-by: Pat Notz <pknotz@sandia.gov>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Clear the delta base cache if a pack is rebuiltShawn O. Pearce Wed, 11 Feb 2009 18:15:30 +0000 (10:15 -0800)

Clear the delta base cache if a pack is rebuilt

There is some risk that re-opening a regenerated pack file with
different offsets could leave stale entries within the delta base
cache that could be matched up against other objects using the same
"struct packed_git*" and pack offset.

Throwing away the entire delta base cache in this case is safer,
as we don't have to worry about a recycled "struct packed_git*"
matching to the wrong base object, resulting in delta apply
errors while unpacking an object.

Suggested-by: Daniel Barkalow <barkalow@iabervon.org>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge git://git.bogomips.org/git-svnJunio C Hamano Wed, 11 Feb 2009 18:20:12 +0000 (10:20 -0800)

Merge git://git.bogomips.org/git-svn

* git://git.bogomips.org/git-svn:
test case for regression caused by git-svn empty symlink fix
git-svn: fix broken symlink workaround when switching branches
git-svn: Print revision while searching for earliest use of path
git-svn: abstract out a block into new method other_gs()
git-svn: allow disabling expensive broken symlink checks

Squelch overzealous "ignoring dangling symref" in an... Junio C Hamano Wed, 11 Feb 2009 17:22:16 +0000 (09:22 -0800)

Squelch overzealous "ignoring dangling symref" in an empty repository

057e713 (Warn use of "origin" when remotes/origin/HEAD is dangling,
2009-02-08) tried to warn dangling refs/remotes/origin/HEAD only when
"origin" was used to refer to it. There was one corner case a symref is
expected to be dangling and this warning is unwarranted: HEAD in an empty
repository.

This squelches the warning for this special case.

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

test case for regression caused by git-svn empty symlin... Anton Gyllenberg Tue, 10 Feb 2009 22:38:45 +0000 (00:38 +0200)

test case for regression caused by git-svn empty symlink fix

Commit dbc6c74d0858d77e61e092a48d467e725211f8e9 "git-svn: handle empty
files marked as symlinks in SVN" caused a regression in an unusual case
where a branch has been created in SVN, later deleted and then created
again from another branch point and the original branch point had empty
files not in the new branch. In some cases git svn fetch will then fail
while trying to fetch the empty file from the wrong SVN revision.

This adds a test case that reproduces the issue.

[ew: added additional test to ensure file was created correctly
made test file executable ]

Signed-off-by: Anton Gyllenberg <anton@iki.fi>
Acked-by: Eric Wong <normalperson@yhbt.net>

git-svn: fix broken symlink workaround when switching... Eric Wong Wed, 11 Feb 2009 09:56:58 +0000 (01:56 -0800)

git-svn: fix broken symlink workaround when switching branches

Thanks to Anton Gyllenberg <anton@iki.fi> for the bug report
(and testcase in the following commit):
> Commit dbc6c74d0858d77e61e092a48d467e725211f8e9 "git-svn:
> handle empty files marked as symlinks in SVN" caused a
> regression in an unusual case where a branch has been created
> in SVN, later deleted and then created again from another
> branch point and the original branch point had empty files not
> in the new branch. In some cases git svn fetch will then fail
> while trying to fetch the empty file from the wrong SVN
> revision.

Signed-off-by: Eric Wong <normalperson@yhbt.net>

git-svn: Print revision while searching for earliest... Deskin Miller Mon, 9 Feb 2009 00:33:18 +0000 (19:33 -0500)

git-svn: Print revision while searching for earliest use of path

When initializing a git-svn repository from a Subversion repoository,
it is common to be interested in a path which did not exist in the
initial commit to Subversion. In a large repository, the initial fetch
may take some looking for the earliest existence of the path time while
the user receives no additional feedback. Print the highest revision
number scanned thus far to let the user know something is still
happening.

Signed-off-by: Deskin Miller <deskinm@umich.edu>

git-svn: abstract out a block into new method other_gs()Sam Vilain Tue, 26 Jun 2007 07:23:59 +0000 (19:23 +1200)

git-svn: abstract out a block into new method other_gs()

We will be adding a more places that need to find git revisions
corresponding to new parents, so abstract out this section into a new
method.

Signed-off-by: Yuval Kogman <nothingmuch@woobling.org>
Signed-off-by: Sam Vilain <sam@vilain.net>
Acked-by: Eric Wong <normalperson@yhbt.net>
[ew: minor formatting changes]

git-svn: allow disabling expensive broken symlink checksEric Wong Sun, 1 Feb 2009 01:31:12 +0000 (17:31 -0800)

git-svn: allow disabling expensive broken symlink checks

Since dbc6c74d0858d77e61e092a48d467e725211f8e9, git-svn has had
an expensive check for broken symlinks that exist in some
repositories. This leads to a heavy performance hit on
repositories with many empty blobs that are not supposed to be
symlinks.

The workaround is enabled by default; and may be disabled via:

git config svn.brokenSymlinkWorkaround false

Reported by Markus Heidelberg.

Signed-off-by: Eric Wong <normalperson@yhbt.net>

Merge branch 'maint'Junio C Hamano Wed, 11 Feb 2009 10:00:22 +0000 (02:00 -0800)

Merge branch 'maint'

* maint:
revision traversal and pack: notice and die on missing commit

Merge branch 'maint-1.5.6' into maintJunio C Hamano Wed, 11 Feb 2009 10:00:07 +0000 (02:00 -0800)

Merge branch 'maint-1.5.6' into maint

* maint-1.5.6:
revision traversal and pack: notice and die on missing commit

Merge branch 'maint-1.5.5' into maint-1.5.6Junio C Hamano Wed, 11 Feb 2009 09:41:22 +0000 (01:41 -0800)

Merge branch 'maint-1.5.5' into maint-1.5.6

* maint-1.5.5:
revision traversal and pack: notice and die on missing commit

Conflicts:
revision.c

Merge branch 'maint-1.5.4' into maint-1.5.5Junio C Hamano Wed, 11 Feb 2009 09:40:12 +0000 (01:40 -0800)

Merge branch 'maint-1.5.4' into maint-1.5.5

* maint-1.5.4:
revision traversal and pack: notice and die on missing commit

revision traversal and pack: notice and die on missing... Junio C Hamano Wed, 11 Feb 2009 09:27:43 +0000 (01:27 -0800)

revision traversal and pack: notice and die on missing commit

cc0e6c5 (Handle return code of parse_commit in revision machinery,
2007-05-04) attempted to tighten error checking in the revision machinery,
but it wasn't enough. When get_revision_1() was asked for the next commit
to return, it tries to read and simplify the parents of the commit to be
returned, but an error while doing so was silently ignored and reported as
a truncated history to the caller instead.

This resulted in an early end of "git log" output or a pack that lacks
older commits from "git pack-objects", without any error indication in the
exit status from these commands, even though the underlying parse_commit()
issues an error message to the end user.

Note that the codepath in add_parents_list() that paints parents of an
UNINTERESTING commit UNINTERESTING silently ignores the error when
parse_commit() fails; this is deliberate and in line with aeeae1b
(revision traversal: allow UNINTERESTING objects to be missing,
2009-01-27).

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

builtin-receive-pack.c: do not initialize statics to 0Junio C Hamano Mon, 9 Feb 2009 06:19:43 +0000 (22:19 -0800)

builtin-receive-pack.c: do not initialize statics to 0

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

receive-pack: receive.denyDeleteCurrentJunio C Hamano Mon, 9 Feb 2009 06:31:21 +0000 (22:31 -0800)

receive-pack: receive.denyDeleteCurrent

This is a companion patch to the recent 3d95d92 (receive-pack: explain
what to do when push updates the current branch, 2009-01-31).

Deleting the current branch from a remote will result in the next clone
from it not check out anything, among other things. It also is one of the
cause that makes remotes/origin/HEAD a dangling symbolic ref. This patch
still allows the traditional behaviour but with a big warning, and promises
that the default will change to 'refuse' in a future release.

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

Drop double-semicolon in CJunio C Hamano Wed, 11 Feb 2009 01:42:04 +0000 (17:42 -0800)

Drop double-semicolon in C

The worst offenders are "continue;;" and "break;;" in switch statements.

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

Warn use of "origin" when remotes/origin/HEAD is danglingJunio C Hamano Mon, 9 Feb 2009 07:52:01 +0000 (23:52 -0800)

Warn use of "origin" when remotes/origin/HEAD is dangling

The previous one squelched the diagnositic message we used to issue every
time we enumerated the refs and noticed a dangling ref. This adds the
warning back to the place where the user actually attempts to use it.

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

remote prune: warn dangling symrefsJunio C Hamano Mon, 9 Feb 2009 07:27:10 +0000 (23:27 -0800)

remote prune: warn dangling symrefs

If you prune from the remote "frotz" that deleted the ref your tracking
branch remotes/frotz/HEAD points at, the symbolic ref will become
dangling. We used to detect this as an error condition and issued a
message every time refs are enumerated.

This stops the error message, but moves the warning to "remote prune".

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

Fix the installation path for html documentationMichael J Gruber Tue, 10 Feb 2009 15:14:13 +0000 (16:14 +0100)

Fix the installation path for html documentation

026fa0d (Move computation of absolute paths from Makefile to runtime in
preparation for RUNTIME_PREFIX, 2009-01-18) broke the installation of html
documentation. A relative htmldir is given to Documentation/Makefile and
html documentations are installed in a subdirectory of "Documentation" in
the source tree.

Fix this by not exporting htmldir from Makefile; this allows
Documentation/Makefile to compute the htmldir from the prefix.

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

Generalize and libify index_is_dirty() to index_differs... Stephan Beyer Tue, 10 Feb 2009 14:30:35 +0000 (15:30 +0100)

Generalize and libify index_is_dirty() to index_differs_from(...)

index_is_dirty() in builtin-revert.c checks if the index is dirty.
This patch generalizes this function to check if the index differs
from a revision, i.e. the former index_is_dirty() behavior can now be
achieved by index_differs_from("HEAD", 0).

The second argument "diff_flags" allows to set further diff option
flags like DIFF_OPT_IGNORE_SUBMODULES. See DIFF_OPT_* macros in diff.h
for a list.

index_differs_from() seems to be useful for more than builtin-revert.c,
so it is moved into diff-lib.c and also used in builtin-commit.c.

Yet to mention:

- "rev.abbrev = 0;" can be safely removed.
This has no impact on performance or functioning of neither
setup_revisions() nor run_diff_index().

- rev.pending.objects is free()d because this fixes a leak.
(Also see 295dd2ad "Fix memory leak in traverse_commit_list")

Mentored-by: Daniel Barkalow <barkalow@iabervon.org>
Mentored-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Stephan Beyer <s-beyer@gmx.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Makefile: resort filenames alphabeticallyStephan Beyer Mon, 9 Feb 2009 22:00:45 +0000 (23:00 +0100)

Makefile: resort filenames alphabetically

Some filenames in the Makefile got out of order.
This patch resorts the filename lists which makes it easier
to grasp that it is sorted and that this should be kept.

Signed-off-by: Stephan Beyer <s-beyer@gmx.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>