gitweb.git
lock_ref: inform callers of unavailable refJeff King Mon, 25 May 2009 10:37:15 +0000 (06:37 -0400)

lock_ref: inform callers of unavailable ref

One of the ways that locking might fail is that there is a
DF conflict between two refs (e.g., you want to lock
"foo/bar" but "foo" already exists). In this case, we return
an error, but there is no way for the caller to know the
specific problem.

This patch sets errno to ENOTDIR, which is the most sensible
code. It's what we would see if the refs were stored purely
in the filesystem (but these days we must check the
namespace manually due to packed refs).

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

Avoid "diff-index --cached" optimization under --find... Junio C Hamano Sat, 23 May 2009 06:14:25 +0000 (23:14 -0700)

Avoid "diff-index --cached" optimization under --find-copies-harder

When find-copies-harder is in effect, the diff frontends are expected to
feed all paths, not just changed paths, to the diffcore, so that copy
sources can be picked up. In such a case, not descending into subtrees
using the cache-tree information is simply wrong.

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

Optimize "diff-index --cached" using cache-treeJunio C Hamano Wed, 20 May 2009 22:57:22 +0000 (15:57 -0700)

Optimize "diff-index --cached" using cache-tree

When running "diff-index --cached" after making a change to only a small
portion of the index, there is no point unpacking unchanged subtrees into
the index recursively, only to find that all entries match anyway. Tweak
unpack_trees() logic that is used to read in the tree object to catch the
case where the tree entry we are looking at matches the index as a whole
by looking at the cache-tree.

As an exercise, after modifying a few paths in the kernel tree, here are
a few numbers on my Athlon 64X2 3800+:

(without patch, hot cache)
$ /usr/bin/time git diff --cached --raw
:100644 100644 b57e1f5... e69de29... M Makefile
:100644 000000 8c86b72... 0000000... D arch/x86/Makefile
:000000 100644 0000000... e69de29... A arche
0.07user 0.02system 0:00.09elapsed 102%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (0major+9407minor)pagefaults 0swaps

(with patch, hot cache)
$ /usr/bin/time ../git.git/git-diff --cached --raw
:100644 100644 b57e1f5... e69de29... M Makefile
:100644 000000 8c86b72... 0000000... D arch/x86/Makefile
:000000 100644 0000000... e69de29... A arche
0.02user 0.00system 0:00.02elapsed 103%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (0major+2446minor)pagefaults 0swaps

Cold cache numbers are very impressive, but it does not matter very much
in practice:

(without patch, cold cache)
$ su root sh -c 'echo 3 >/proc/sys/vm/drop_caches'
$ /usr/bin/time git diff --cached --raw
:100644 100644 b57e1f5... e69de29... M Makefile
:100644 000000 8c86b72... 0000000... D arch/x86/Makefile
:000000 100644 0000000... e69de29... A arche
0.06user 0.17system 0:10.26elapsed 2%CPU (0avgtext+0avgdata 0maxresident)k
247032inputs+0outputs (1172major+8237minor)pagefaults 0swaps

(with patch, cold cache)
$ su root sh -c 'echo 3 >/proc/sys/vm/drop_caches'
$ /usr/bin/time ../git.git/git-diff --cached --raw
:100644 100644 b57e1f5... e69de29... M Makefile
:100644 000000 8c86b72... 0000000... D arch/x86/Makefile
:000000 100644 0000000... e69de29... A arche
0.02user 0.01system 0:01.01elapsed 3%CPU (0avgtext+0avgdata 0maxresident)k
18440inputs+0outputs (79major+2369minor)pagefaults 0swaps

This of course helps "git status" as well.

(without patch, hot cache)
$ /usr/bin/time ../git.git/git-status >/dev/null
0.17user 0.18system 0:00.35elapsed 100%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+5336outputs (0major+10970minor)pagefaults 0swaps

(with patch, hot cache)
$ /usr/bin/time ../git.git/git-status >/dev/null
0.10user 0.16system 0:00.27elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+5336outputs (0major+3921minor)pagefaults 0swaps

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

t4007: modernize the styleJunio C Hamano Sat, 23 May 2009 06:06:58 +0000 (23:06 -0700)

t4007: modernize the style

This is one of the oldest scripts; update it to match more modern style.
Notably, we should:

- Put the test title on the same line as the "test_expect_success", and
end the line with a single-quote to begin the body of the test which is
one multi-line string; and

- Run as many commands inside test_expect_success, not outside, to catch
unexpected breakages.

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

cache-tree.c::cache_tree_find(): simplify internal APIJunio C Hamano Wed, 20 May 2009 22:53:57 +0000 (15:53 -0700)

cache-tree.c::cache_tree_find(): simplify internal API

Earlier cache_tree_find() needs to be called with a valid cache_tree,
but repeated look-up may find an invalid or missing cache_tree in between.
Help simplify the callers by returning NULL to mean "nothing appropriate
found" when the input is NULL.

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

convert bare readlink to strbuf_readlinkJeff King Mon, 25 May 2009 10:46:09 +0000 (06:46 -0400)

convert bare readlink to strbuf_readlink

This particular readlink call never NUL-terminated its
result, making it a potential source of bugs (though there
is no bug now, as it currently always respects the length
field). Let's just switch it to strbuf_readlink which is
shorter and less error-prone.

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

t3701: ensure correctly set up repository after skipped... Johannes Sixt Mon, 25 May 2009 12:07:55 +0000 (14:07 +0200)

t3701: ensure correctly set up repository after skipped tests

There are two tests that are skipped if file modes are not obeyed by the
file system. In this case, the subsequent test failed because the
repository was in an unexpected state. This corrects it.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

merge-options.txt: Clarify merge --squashMichael J Gruber Mon, 25 May 2009 16:00:10 +0000 (18:00 +0200)

merge-options.txt: Clarify merge --squash

With the --squash option, merge sets up the index just like for a real
merge, but without the merge info (stages). Say so.

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

parse-opts: add OPT_FILENAME and transition builtinsStephen Boyd Sat, 23 May 2009 18:53:13 +0000 (11:53 -0700)

parse-opts: add OPT_FILENAME and transition builtins

Commit dbd0f5c (Files given on the command line are relative to $cwd,
2008-08-06) introduced parse_options_fix_filename() as a minimal fix.
OPT_FILENAME is intended to be a more robust fix for the same issue.
OPT_FILENAME and its associated enum OPTION_FILENAME are used to
represent filename options within the parse options API.

This option is similar to OPTION_STRING. If --no is prefixed to the
option the filename is unset. If no argument is given and the default
value is set, the filename is set to the default value. The difference
is that the filename is prefixed with the prefix passed to
parse_options() (or parse_options_start()).

Update git-apply, git-commit, git-fmt-merge-msg, and git-tag to use
OPT_FILENAME with their filename options. Also, rename
parse_options_fix_filename() to fix_filename() as it is no longer
extern.

Signed-off-by: Stephen Boyd <bebarino@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

parse-opts: prepare for OPT_FILENAMEStephen Boyd Sat, 23 May 2009 18:53:12 +0000 (11:53 -0700)

parse-opts: prepare for OPT_FILENAME

To give OPT_FILENAME the prefix, we pass the prefix to parse_options()
which passes the prefix to parse_options_start() which sets the prefix
member of parse_opts_ctx accordingly. If there isn't a prefix in the
calling context, passing NULL will suffice.

Signed-off-by: Stephen Boyd <bebarino@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'jc/mktree' into sb/opt-filenameJunio C Hamano Mon, 25 May 2009 08:04:10 +0000 (01:04 -0700)

Merge branch 'jc/mktree' into sb/opt-filename

* jc/mktree:
mktree: validate entry type in input
mktree --batch: build more than one tree object
mktree --missing: updated usage message and man page
mktree --missing: allow missing objects
t1010: add mktree test
mktree: do not barf on a submodule commit
builtin-mktree.c: use a helper function to handle one line of input
mktree: use parse-options
build-in git-mktree

Merge branch 'sb/format-patch-parseopt' into sb/opt... Junio C Hamano Mon, 25 May 2009 07:59:59 +0000 (00:59 -0700)

Merge branch 'sb/format-patch-parseopt' into sb/opt-filename

* sb/format-patch-parseopt:
format-patch: migrate to parse-options API

Conflicts:
builtin-log.c

Merge branch 'sb/show-branch-parse-options' into sb... Junio C Hamano Mon, 25 May 2009 07:59:29 +0000 (00:59 -0700)

Merge branch 'sb/show-branch-parse-options' into sb/opt-filename

* sb/show-branch-parse-options:
show-branch: migrate to parse-options API
parse-options: add PARSE_OPT_LITERAL_ARGHELP for complicated argh's

Conflicts:
parse-options.h

Merge branch 'master' into sb/opt-filenameJunio C Hamano Mon, 25 May 2009 07:59:07 +0000 (00:59 -0700)

Merge branch 'master' into sb/opt-filename

* master: (654 commits)
http-push.c::remove_locks(): fix use after free
t/t3400-rebase.sh: add more tests to help migrating git-rebase.sh to C
post-receive-email: hooks.showrev: show how to include both web link and patch
MinGW: Fix compiler warning in merge-recursive
MinGW: Add a simple getpass()
MinGW: use POSIX signature of waitpid()
MinGW: the path separator to split GITPERLLIB is ';' on Win32
MinGW: Scan for \r in addition to \n when reading shbang lines
gitweb: Sanitize title attribute in format_subject_html
Terminate argv with NULL before calling setup_revisions()
doc/git-rebase.txt: remove mention of multiple strategies
git-send-email: Handle quotes when parsing .mailrc files
git-svn: add --authors-prog option
git-svn: Set svn.authorsfile if it is passed to git svn clone
git-svn: Correctly report max revision when following deleted paths
git-svn: Fix for svn paths removed > log-window-size revisions ago
git-svn testsuite: use standard configuration for Subversion tools
grep: fix word-regexp colouring
completion: use git rev-parse to detect bare repos
Cope better with a _lot_ of packs
...

Change xdl_merge to generate output even for null mergesCharles Bailey Mon, 25 May 2009 00:21:14 +0000 (01:21 +0100)

Change xdl_merge to generate output even for null merges

xdl_merge used to have a check to ensure that there was at least
some change in one or other side being merged but this suppressed
output for the degenerate case when base, local and remote
contents were all identical.

Removing this check enables correct output in the degenerate case
and xdl_free_script handles freeing NULL scripts so there is no
need to have the check for these calls.

Signed-off-by: Charles Bailey <charles@hashpling.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t6023: merge-file fails to output anything for a degene... Charles Bailey Mon, 25 May 2009 00:21:13 +0000 (01:21 +0100)

t6023: merge-file fails to output anything for a degenerate merge

In the case that merge-file is passed three files with identical
contents it wipes the contents of the output file instead of
leaving it unchanged.

Althought merge-file is porcelain and this will never happen in
normal usage, it is still wrong.

Signed-off-by: Charles Bailey <charles@hashpling.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

gitk: Allow diff view without context linesMarkus Heidelberg Sat, 23 May 2009 17:31:37 +0000 (19:31 +0200)

gitk: Allow diff view without context lines

Signed-off-by: Markus Heidelberg <markus.heidelberg@web.de>
Signed-off-by: Paul Mackerras <paulus@samba.org>

gitk: Add another string to translationMichele Ballabio Sat, 23 May 2009 09:48:25 +0000 (11:48 +0200)

gitk: Add another string to translation

Signed-off-by: Michele Ballabio <barra_cuda@katamail.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>

gitk: Add option 'Simple history' to the options menuDirk Suesserott Thu, 21 May 2009 13:35:40 +0000 (15:35 +0200)

gitk: Add option 'Simple history' to the options menu

When clicked, the option --simplify-by-decoration is added to gitk/git log.
This yields to a simplified history where only decorated commits are shown,
i.e. those with a yellow tag or a green branch flag.

Signed-off-by: Dirk Suesserott <newsletter@dirk.my1.cc>
Signed-off-by: Paul Mackerras <paulus@samba.org>

Merge branch 'maint'Junio C Hamano Sun, 24 May 2009 22:29:55 +0000 (15:29 -0700)

Merge branch 'maint'

* maint:
http-push.c::remove_locks(): fix use after free

Merge branch 'maint-1.6.2' into maintJunio C Hamano Sun, 24 May 2009 22:29:33 +0000 (15:29 -0700)

Merge branch 'maint-1.6.2' into maint

* maint-1.6.2:
http-push.c::remove_locks(): fix use after free

Merge branch 'maint-1.6.1' into maint-1.6.2Junio C Hamano Sun, 24 May 2009 22:29:23 +0000 (15:29 -0700)

Merge branch 'maint-1.6.1' into maint-1.6.2

* maint-1.6.1:
http-push.c::remove_locks(): fix use after free

Merge branch 'maint-1.6.0' into maint-1.6.1Junio C Hamano Sun, 24 May 2009 22:29:13 +0000 (15:29 -0700)

Merge branch 'maint-1.6.0' into maint-1.6.1

* maint-1.6.0:
http-push.c::remove_locks(): fix use after free

apply: handle filenames with double slashes betterMichal Marek Thu, 21 May 2009 12:25:11 +0000 (14:25 +0200)

apply: handle filenames with double slashes better

When there are duplicated slashes in pathnames, like this:

--- a/perl//Git.pm
+++ b/perl//Git.pm
@@ -1358,3 +1358,4 @@

1; # Famous last words
+# test

the paths gleaned from the patch header won't be found in the index and
cause "apply --index" and "apply --cached" to fail.

Fix this by squashing the duplicated slashes upon input.

Signed-off-by: Michal Marek <mmarek@suse.cz>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

mergetool--lib: add support for araxis mergeDavid Aguilar Sun, 24 May 2009 00:24:41 +0000 (00:24 +0000)

mergetool--lib: add support for araxis merge

Araxis merge is now a built-in diff/merge tool.
This adds araxis to git-completion and updates
the documentation to mention araxis.

Signed-off-by: David Aguilar <davvid@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

http-push.c::remove_locks(): fix use after freeAlex Riesen Sun, 24 May 2009 13:16:49 +0000 (15:16 +0200)

http-push.c::remove_locks(): fix use after free

Noticed and reported by Serhat Şevki Dinçer.

Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
Acked-by: Clemens Buchacher <drizzd@aon.at>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t/t3400-rebase.sh: add more tests to help migrating... Nguyễn Thái Ngọc Duy Sat, 23 May 2009 15:31:02 +0000 (01:31 +1000)

t/t3400-rebase.sh: add more tests to help migrating git-rebase.sh to C

These new tests make sure I don't miss any check being performed before
rebase is proceeded (which is well tested by other tests)

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

grep: fix word-regexp at the beginning of linesRené Scharfe Sat, 23 May 2009 11:45:26 +0000 (13:45 +0200)

grep: fix word-regexp at the beginning of lines

After bol is forwarded, it doesn't represent the beginning of the line
any more. This means that the beginning-of-line marker (^) mustn't match,
i.e. the regex flag REG_NOTBOL needs to be set.

This bug was introduced by fb62eb7fab97cea880ea7fe4f341a4dfad14ab48
("grep -w: forward to next possible position after rejected match").

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

apply, fmt-merge-msg: use relative filenamesStephen Boyd Sat, 23 May 2009 18:53:11 +0000 (11:53 -0700)

apply, fmt-merge-msg: use relative filenames

Commit dbd0f5c7 (Files given on the command line are relative to $cwd,
2008-08-06) only fixed git-commit and git-tag. But, git-apply and
git-fmt-merge-msg didn't get the update and exhibit the same behavior.

Fix them and add tests for "apply --build-fake-ancestor" and
"fmt-merge-msg -F".

Signed-off-by: Stephen Boyd <bebarino@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

commit: -F overrides -tStephen Boyd Sat, 23 May 2009 18:53:10 +0000 (11:53 -0700)

commit: -F overrides -t

Commit dbd0f5c7 (Files given on the command line are relative to $cwd,
2008-08-06) introduced parse_options_fix_filename() as a quick fix for
filename arguments used in the parse options API.

git-commit was still broken. This means

git commit -F log -t temp

in a subdirectory would make git think the log message should be taken
from temp instead of log.

This is because parse_options_fix_filename() calls prefix_filename()
which uses a single static char buffer to do its work. Making two calls
with two char pointers causes the pointers to alias. To prevent
aliasing, we duplicate the string returned by
parse_options_fix_filename().

Signed-off-by: Stephen Boyd <bebarino@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

post-receive-email: hooks.showrev: show how to include... Jim Meyering Sat, 23 May 2009 12:26:44 +0000 (14:26 +0200)

post-receive-email: hooks.showrev: show how to include both web link and patch

Add a comment showing how to include a web link (i.e. gitweb/cgit)
and a patch in the email that is sent for each pushed commit.

The quoting was tricky enough that it's worth documenting. To add
two blank lines (i.e. put \n\n in the printf), you would need to
say \\\\n\\\\n, and in the end, the pair of "echo" statements seemed
better. This is used in glibc.git repository:

http://sources.redhat.com/git/gitweb.cgi?p=glibc.git;a=summary

push-triggered messages have been sent to this list since May 21:

http://sourceware.org/ml/glibc-cvs/2009-q2/

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

MinGW: Fix compiler warning in merge-recursiveJohannes Schindelin Sat, 23 May 2009 08:04:51 +0000 (10:04 +0200)

MinGW: Fix compiler warning in merge-recursive

GCC 4.4.0 on Windows does not like the format %zu. It is quite unlikely,
though, that we need more merge bases than a %d can display, so replace
the %zu by a %d.

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

MinGW: Add a simple getpass()Johannes Schindelin Sat, 23 May 2009 08:04:50 +0000 (10:04 +0200)

MinGW: Add a simple getpass()

We need getpass() to activate curl on MinGW. Although the default
Makefile currently has 'NO_CURL = YesPlease', msysgit releases do
provide curl support, so getpass() is used.

[spr: - edited commit message.
- squashed commit that provides getpass() declaration.]

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

MinGW: use POSIX signature of waitpid()Johannes Schindelin Sat, 23 May 2009 08:04:49 +0000 (10:04 +0200)

MinGW: use POSIX signature of waitpid()

Git's source code expects waitpid() to return a signed int status.

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

MinGW: the path separator to split GITPERLLIB is '... Johannes Schindelin Sat, 23 May 2009 08:04:48 +0000 (10:04 +0200)

MinGW: the path separator to split GITPERLLIB is ';' on Win32

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

MinGW: Scan for \r in addition to \n when reading shban... Peter Harris Sat, 23 May 2009 08:04:47 +0000 (10:04 +0200)

MinGW: Scan for \r in addition to \n when reading shbang lines

\r is common on Windows, so we should handle it gracefully.

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

Merge branch 'jn/gitweb-cleanup'Junio C Hamano Sat, 23 May 2009 08:44:06 +0000 (01:44 -0700)

Merge branch 'jn/gitweb-cleanup'

* jn/gitweb-cleanup:
gitweb: Remove unused $hash_base parameter from normalize_link_target
gitweb: Simplify snapshot format detection logic in evaluate_path_info
gitweb: Use capturing parentheses only when you intend to capture
gitweb: Replace wrongly added tabs with spaces
gitweb: Use block form of map/grep in a few cases more
gitweb: Always use three argument form of open
gitweb: Always use three argument form of open
gitweb: Do not use bareword filehandles

Merge branch 'mg/track'Junio C Hamano Sat, 23 May 2009 08:44:00 +0000 (01:44 -0700)

Merge branch 'mg/track'

* mg/track:
Fix behavior with non-commit upstream references
Test tracking of non-commit upstreams

Merge branch 'fc/decorate-tag'Junio C Hamano Sat, 23 May 2009 08:43:50 +0000 (01:43 -0700)

Merge branch 'fc/decorate-tag'

* fc/decorate-tag:
Prettify log decorations even more
Change prettify_ref to prettify_refname

Merge branch 'tp/send-email-from-config'Junio C Hamano Sat, 23 May 2009 08:43:26 +0000 (01:43 -0700)

Merge branch 'tp/send-email-from-config'

* tp/send-email-from-config:
send-email: Add config option for sender address

Merge branch 'js/maint-no-ln-across-libexec-and-bin'Junio C Hamano Sat, 23 May 2009 08:43:08 +0000 (01:43 -0700)

Merge branch 'js/maint-no-ln-across-libexec-and-bin'

* js/maint-no-ln-across-libexec-and-bin:
Add NO_CROSS_DIRECTORY_HARDLINKS support to the Makefile

Conflicts:
Makefile

Merge branch 'da/mergetool-lib'Junio C Hamano Sat, 23 May 2009 08:41:51 +0000 (01:41 -0700)

Merge branch 'da/mergetool-lib'

* da/mergetool-lib:
mergetool--lib: specialize diff options for emerge and ecmerge

Merge branch 'cc/bisect' (early part)Junio C Hamano Sat, 23 May 2009 08:41:27 +0000 (01:41 -0700)

Merge branch 'cc/bisect' (early part)

* 'cc/bisect' (early part):
bisect: make "git bisect" use new "--next-all" bisect-helper function
bisect: add "check_good_are_ancestors_of_bad" function
bisect: implement the "check_merge_bases" function
bisect: automatically sort sha1_array if needed when looking it up
bisect: make skipped array functions more generic
bisect: remove too much function nesting
bisect: use new "struct argv_array" to prepare argv for "setup_revisions"
bisect: store good revisions in a "sha1_array"
bisect: implement "rev_argv_push" to fill an argv with revs
bisect: use "sha1_array" to store skipped revisions
am: simplify "sq" function by using "git rev-parse --sq-quote"
bisect: use "git rev-parse --sq-quote" instead of a custom "sq" function
rev-parse: add --sq-quote to shell quote arguments
rev-list: remove stringed output flag from "show_bisect_vars"
bisect--helper: remove "--next-vars" option as it is now useless
bisect: use "git bisect--helper --next-exit" in "git-bisect.sh"
bisect--helper: add "--next-exit" to output bisect results
bisect: move common bisect functionality to "bisect_common"
rev-list: refactor printing bisect vars
rev-list: make "estimate_bisect_steps" non static

Merge branch 'lt/maint-diff-reduce-lstat'Junio C Hamano Sat, 23 May 2009 08:40:33 +0000 (01:40 -0700)

Merge branch 'lt/maint-diff-reduce-lstat'

* lt/maint-diff-reduce-lstat:
Teach 'git checkout' to preload the index contents
Avoid unnecessary 'lstat()' calls in 'get_stat_data()'

Merge branch 'jm/format-patch-no-auto-n-when-k-is-given'Junio C Hamano Sat, 23 May 2009 08:40:22 +0000 (01:40 -0700)

Merge branch 'jm/format-patch-no-auto-n-when-k-is-given'

* jm/format-patch-no-auto-n-when-k-is-given:
format-patch let -k override a config-specified format.numbered

Merge branch 'do/maint-merge-recursive-fix'Junio C Hamano Sat, 23 May 2009 08:39:50 +0000 (01:39 -0700)

Merge branch 'do/maint-merge-recursive-fix'

* do/maint-merge-recursive-fix:
merge-recursive: never leave index unmerged while recursing

Merge branch 'rr/forbid-bs-in-ref'Junio C Hamano Sat, 23 May 2009 08:39:45 +0000 (01:39 -0700)

Merge branch 'rr/forbid-bs-in-ref'

* rr/forbid-bs-in-ref:
Disallow '\' in ref names

Merge branch 'hv/sample-update'Junio C Hamano Sat, 23 May 2009 08:39:15 +0000 (01:39 -0700)

Merge branch 'hv/sample-update'

* hv/sample-update:
Extend sample update hook, disable modifying of existing tags

Merge branch 'jk/maint-1.6.0-trace-argv'Junio C Hamano Sat, 23 May 2009 08:39:08 +0000 (01:39 -0700)

Merge branch 'jk/maint-1.6.0-trace-argv'

* jk/maint-1.6.0-trace-argv:
fix GIT_TRACE segfault with shell-quoted aliases

Conflicts:
alias.c

Merge branch 'jk/no-no-no-empty-directory'Junio C Hamano Sat, 23 May 2009 08:38:35 +0000 (01:38 -0700)

Merge branch 'jk/no-no-no-empty-directory'

* jk/no-no-no-empty-directory:
parseopt: add OPT_NEGBIT

Merge branch 'rs/grep-parseopt'Junio C Hamano Sat, 23 May 2009 08:38:32 +0000 (01:38 -0700)

Merge branch 'rs/grep-parseopt'

* rs/grep-parseopt:
grep: make callback functions static
grep: use parseopt
grep: remove global variable builtin_grep
parseopt: add PARSE_OPT_NODASH
parseopt: add OPT_NUMBER_CALLBACK
parseopt: add OPT_NEGBIT

Merge branch 'fl/git-pm'Junio C Hamano Sat, 23 May 2009 08:38:28 +0000 (01:38 -0700)

Merge branch 'fl/git-pm'

* fl/git-pm:
Git.pm: Always set Repository to absolute path if autodetecting
Git.pm: Set GIT_WORK_TREE if we set GIT_DIR

Merge branch 'mt/submodule-reference'Junio C Hamano Sat, 23 May 2009 08:38:24 +0000 (01:38 -0700)

Merge branch 'mt/submodule-reference'

* mt/submodule-reference:
Add --reference option to git submodule.

OpenSolaris 200811 (SunOS 5.11) does not want OLD_ICONVJunio C Hamano Sat, 23 May 2009 05:55:31 +0000 (22:55 -0700)

OpenSolaris 200811 (SunOS 5.11) does not want OLD_ICONV

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

Teach Solaris that _XOPEN_SOURCE=600 really menas XPG6Junio C Hamano Sat, 23 May 2009 01:06:06 +0000 (18:06 -0700)

Teach Solaris that _XOPEN_SOURCE=600 really menas XPG6

In git-compat-util.h, we do

#define _XOPEN_SOURCE 600
#define _XOPEN_SOURCE_EXTENDED 1

unless we are on BSD or SCO.

On OpenSolaris (200811), /usr/include/sys/feature_tests.h has this nice
table:

Feature Test Macro Specification
------------------------------------------------ -------------
_XOPEN_SOURCE XPG3
_XOPEN_SOURCE && _XOPEN_VERSION = 4 XPG4
_XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED = 1 XPG4v2
_XOPEN_SOURCE = 500 XPG5
_XOPEN_SOURCE = 600 (or POSIX_C_SOURCE=200112L) XPG6

Later in the same header, compilation with -c99 is made to fail if _XPG6 is
not set, like this:

#if defined(_STDC_C99) && (defined(__XOPEN_OR_POSIX) && !defined(_XPG6))
#error "Compiler or options invalid for pre-UNIX 03 X/Open applications \
and pre-2001 POSIX applications"
#elif ...

The problem is that they check things in an order that is inconvenient for
us. When they see _XOPEN_SOURCE_EXTENDED, they declare that we are XPG4v2,
regardless of the value of _XOPEN_SOURCE.

To work around this problem, do not define _XOPEN_SOURCE_EXTENDED on
Sun's.

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

show-branch: migrate to parse-options APIStephen Boyd Thu, 21 May 2009 07:33:18 +0000 (00:33 -0700)

show-branch: migrate to parse-options API

Note that "-g" no longer uses an equals '=' sign for its optional
arguments, but "--reflog" still does. This is normal behavior for parse
options, as arguments to "-g" are put immediately after the option with
no space.

For example

git show-branch -g=4

is now

git show-branch -g4

Signed-off-by: Stephen Boyd <bebarino@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'mh/show-branch-color' into sb/show-branch... Junio C Hamano Thu, 21 May 2009 15:55:02 +0000 (08:55 -0700)

Merge branch 'mh/show-branch-color' into sb/show-branch-parse-options

* branch 'mh/show-branch-color':
bash completion: show-branch color support
show-branch: color the commit status signs

parse-options: add PARSE_OPT_LITERAL_ARGHELP for compli... Stephen Boyd Thu, 21 May 2009 07:33:17 +0000 (00:33 -0700)

parse-options: add PARSE_OPT_LITERAL_ARGHELP for complicated argh's

Usually, the argh element in struct option points at a placeholder value
(e.g. "val"), and is shown in the usage message as

--option=<val>

by enclosing the string inside of angle brackets.

When the option is more complex (e.g. optional arguments separated by a
comma), you would want to produce a usage message that looks like

--option=<val1>[,<val2>]

In such a case, the caller can pass a string to argh with placeholders
already enclosed in necessary angle brackets (e.g. "<val1>[,<val2>]")
and set this flag.

Signed-off-by: Stephen Boyd <bebarino@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t8005: convert CP1251 character set to ISO8859-5Brandon Casey Fri, 22 May 2009 23:47:06 +0000 (18:47 -0500)

t8005: convert CP1251 character set to ISO8859-5

On IRIX 6.5 CP1251 is unknown, but WIN1251 (which seems to be a
non-standard name) is known. On Solaris 10, the opposite is true. Solaris
also knows CP1251 as WINDOWS-1251, but this too is not recognized on IRIX.
I could not find a name that both platforms recognized for this character
set.

An alternative character set which covers the same alphabet seems to be the
ISO8859-5 character set. Both platforms support this character set, so use
it instead.

This allows t8005.4 to pass on Solaris 7, and part of the test to pass on
IRIX. (My IRIX can't convert SJIS to UTF-8 :(

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t8005: use more portable character encoding namesBrandon Casey Fri, 22 May 2009 23:47:05 +0000 (18:47 -0500)

t8005: use more portable character encoding names

Some platforms do not have an extensive list of alternate names for
character encodings.

Solaris 7 does not know about shift-jis, but does know SJIS. It also does
not know that utf-8 and UTF-8 refer to the same encoding.

With the above in mind, the following conversions were performed:

utf-8 --> UTF-8
shift-jis --> SJIS

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

gitweb: Sanitize title attribute in format_subject_htmlJakub Narebski Fri, 22 May 2009 15:35:46 +0000 (17:35 +0200)

gitweb: Sanitize title attribute in format_subject_html

Replace control characters with question mark '?' (like in
chop_and_esc_str).

A little background: some web browsers turn on strict (and
unforgiving) XML validating mode for XHTML documents served using
application/xhtml+xml content type. This means among others that
control characters are forbidden to appear in gitweb output.

CGI.pm does by default slight escaping (using simple_escape subroutine
from CGI::Util) of all _attribute_ values (depending on the value of
autoEscape, by default on). This escaping, at least in CGI.pm version
3.10 (most current version at CPAN is 3.43), is minimal: only '"',
'&', '<' and '>' are escaped using named HTML entity references
(&quot;, &amp;, &lt; and &gt; respectively). But simple_escape does
not do escaping of control characters such as ^X which are invalid in
XHTML (in strict mode).

If by some accident commit message do contain some control character
in first 50 characters (more or less) of first line of commit message,
and this line is longer than 50 characters (so gitweb shortens it for
display), then gitweb would put this control character in title
attribute (and CGI.pm would not remove them). The tag _contents_ is
safe because it is escaped using esc_html() explicitly, and it
replaces control characters by their printable representation.

While at it: chop_and_escape_str doesn't need capturing group.

Noticed-by: Paul Gortmaker <paul.gortmaker@windriver.com>
Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Terminate argv with NULL before calling setup_revisions()Nguyễn Thái Ngọc Duy Thu, 21 May 2009 09:32:44 +0000 (19:32 +1000)

Terminate argv with NULL before calling setup_revisions()

It is convention that argv should be terminated with NULL, even if
argc is used to specify the size of argv. setup_revisions() requires
this and may segfault otherwise.

This patch makes sure that all argv (that I can find) is NULL terminated.

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

doc/git-rebase.txt: remove mention of multiple strategiesNguyễn Thái Ngọc Duy Thu, 21 May 2009 09:47:07 +0000 (19:47 +1000)

doc/git-rebase.txt: remove mention of multiple strategies

git-rebase.sh does not seem to support this.

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

Merge git://git.bogomips.org/git-svnJunio C Hamano Thu, 21 May 2009 14:28:07 +0000 (07:28 -0700)

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

* git://git.bogomips.org/git-svn:
git-svn: add --authors-prog option
git-svn: Set svn.authorsfile if it is passed to git svn clone
git-svn: Correctly report max revision when following deleted paths
git-svn: Fix for svn paths removed > log-window-size revisions ago
git-svn testsuite: use standard configuration for Subversion tools

git-send-email: Handle quotes when parsing .mailrc... Eric W. Biederman Thu, 21 May 2009 02:45:53 +0000 (19:45 -0700)

git-send-email: Handle quotes when parsing .mailrc files

It is legal and not uncommon to use quotes in a .mailrc file so
you can include a persons fullname as well as their email alias.
Handle this by using quotewords instead of split when parsing
.mailrc files.

Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-svn: add --authors-prog optionMark Lodato Fri, 15 May 2009 01:27:15 +0000 (21:27 -0400)

git-svn: add --authors-prog option

Add a new option, --authors-prog, to git-svn that allows a more flexible
alternative (or supplement) to --authors-file. This allows more
advanced username operations than the authors file will allow. For
example, one may look up Subversion users via LDAP, or may generate the
name and email address from the Subversion username.

Notes:

* If both --authors-name and --authors-prog are given, the former is
tried first, falling back to the later.

* The program is called once per unique SVN username, and the result is
cached.

* The command-line argument must be the path to a program, not a generic
shell command line. The absolute path to this program is taken at
startup since the git-svn script changes directory during operation.

* The option is not enabled for `git svn log'.

[ew: fixed case where neither --authors-(name|prog) were defined]
Signed-off-by: Mark Lodato <lodatom@gmail.com>
Acked-by: Eric Wong <normalperson@yhbt.net>

git-svn: Set svn.authorsfile if it is passed to git... Alex Vandiver Wed, 6 May 2009 20:19:45 +0000 (16:19 -0400)

git-svn: Set svn.authorsfile if it is passed to git svn clone

Signed-off-by: Alex Vandiver <alexmv@mit.edu>
Acked-by: Eric Wong <normalperson@yhbt.net>

git-svn: Correctly report max revision when following... Alex Vandiver Wed, 6 May 2009 20:18:53 +0000 (16:18 -0400)

git-svn: Correctly report max revision when following deleted paths

Report the maximum found revision in the range, instead of the minimum
changed revision.

Signed-off-by: Alex Vandiver <alexmv@mit.edu>
Acked-by: Eric Wong <normalperson@yhbt.net>

git-svn: Fix for svn paths removed > log-window-size... Alex Vandiver Wed, 6 May 2009 20:18:52 +0000 (16:18 -0400)

git-svn: Fix for svn paths removed > log-window-size revisions ago

Instead of trying to find the end of the commit history only in the
last window, track if we have seen commits yet, and use that to judge
if we need to backtrack and look for a tail. Otherwise, conversion
can silently lose up to 100 revisions of a branch if it was deleted
>100 revisions ago.

Signed-off-by: Alex Vandiver <alexmv@mit.edu>
Acked-by: Eric Wong <normalperson@yhbt.net>

git-svn testsuite: use standard configuration for Subve... Eygene Ryabinkin Fri, 8 May 2009 08:06:16 +0000 (12:06 +0400)

git-svn testsuite: use standard configuration for Subversion tools

I have tweaked configuration in my ~/.subversion directory, namely I am
running auto-properties and automatically adding '$Id$' expansion to
every file. This choke the last test named 'proplist' from
t9101-git-svn-props.sh, because one more property, svn:keywords is
automatically added.

I had just wrapped svn invocation with the svn_cmd that specifies empty
directory via --config-dir argument. Since the latter is the global
option, it should be recognized by all svn subcommands, so no
regressions will be introduced.

Now svn_cmd is used everywhere, not just in the failed test module: this
should guard us from the future clashes with user-defined configuration
tweaks.

Signed-off-by: Eygene Ryabinkin <rea-git@codelabs.ru>
Acked-by: Eric Wong <normalperson@yhbt.net>

Merge branch 'maint'Junio C Hamano Thu, 21 May 2009 01:59:09 +0000 (18:59 -0700)

Merge branch 'maint'

* maint:
grep: fix word-regexp colouring
completion: use git rev-parse to detect bare repos
Cope better with a _lot_ of packs
for-each-ref: fix segfault in copy_email

grep: fix word-regexp colouringRené Scharfe Wed, 20 May 2009 21:31:53 +0000 (23:31 +0200)

grep: fix word-regexp colouring

As noticed by Dmitry Gryazin: When a pattern is found but it doesn't
start and end at word boundaries, bol is forwarded to after the match and
the pattern is searched again. When a pattern is finally found between
word boundaries, the match offsets are off by the number of characters
that have been skipped.

This patch corrects the offsets to be relative to the value of bol as
passed to match_one_pattern() by its caller.

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

completion: use git rev-parse to detect bare reposGiuseppe Bilotta Mon, 18 May 2009 16:24:30 +0000 (18:24 +0200)

completion: use git rev-parse to detect bare repos

Its check is more robust than a config check for core.bare

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

Cope better with a _lot_ of packsJohannes Schindelin Fri, 15 May 2009 18:52:47 +0000 (20:52 +0200)

Cope better with a _lot_ of packs

You might end up with a situation where you have tons of pack files, e.g.
when using hg2git. In this situation, all kinds of operations may
end up with a "too many files open" error. Let's recover gracefully from
that.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Looks-right-to-me-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

grep: make callback functions staticRené Scharfe Wed, 20 May 2009 22:05:22 +0000 (00:05 +0200)

grep: make callback functions static

Suggested by Stephen Boyd: make the callback functions used for option
parsing static.

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

write-tree --ignore-cache-treeJunio C Hamano Wed, 20 May 2009 18:04:35 +0000 (11:04 -0700)

write-tree --ignore-cache-tree

This allows you to discard the cache-tree information before writing the
tree out of the index (i.e. it always recomputes the tree object names for
all the subtrees).

This is only useful as a debug option, so I did not bother documenting it.

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

for-each-ref: fix segfault in copy_emailJeff King Mon, 18 May 2009 17:58:11 +0000 (13:58 -0400)

for-each-ref: fix segfault in copy_email

You can trigger a segfault in git.git by doing:

git for-each-ref --format='%(taggeremail)' refs/tags/v0.99

The v0.99 tag is special in that it contains no "tagger"
header.

The bug is obvious in copy_email, which carefully checks to
make sure the result of a strchr is non-NULL, but only after
already having used it to perform other work. The fix is to
move the check up.

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

Extend sample pre-commit hook to check for non ascii... Heiko Voigt Tue, 19 May 2009 20:01:54 +0000 (22:01 +0200)

Extend sample pre-commit hook to check for non ascii filenames

At the moment non-ascii encodings of filenames are not portably
converted between different filesystems by git. This will most likely
change in the future but to allow repositories to be portable among
different file/operating systems this check is enabled by default.

Signed-off-by: Heiko Voigt <hvoigt@hvoigt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Unify signedness in hashing callsDan McGee Tue, 19 May 2009 04:34:02 +0000 (23:34 -0500)

Unify signedness in hashing calls

Our hash_obj and hashtable_index calls and functions were doing a lot of
funny things with signedness. Unify all of it to 'unsigned int'.

Signed-off-by: Dan McGee <dpmcgee@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t5100: use ancient encoding syntax for backwards compat... Brandon Casey Mon, 18 May 2009 23:44:45 +0000 (18:44 -0500)

t5100: use ancient encoding syntax for backwards compatibility

Some ancient platforms do not have an extensive list of alternate names for
character encodings. For example, Solaris 7 does not know that ISO-8859-1
is the same as ISO8859-1. Modern platforms do know this, so use the older
names.

The following conversions were performed:

ISO-8859-1 --> ISO8859-1
ISO-8859-2 --> ISO8859-2
ISO-8859-8 --> ISO8859-8
iso-2022-jp --> ISO-2022-JP

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t9301: use ISO8859-1 rather than ISO-8859-1Brandon Casey Mon, 18 May 2009 23:44:44 +0000 (18:44 -0500)

t9301: use ISO8859-1 rather than ISO-8859-1

Some ancient platforms do not have an extensive list of alternate names for
character encodings. For example, Solaris 7 does not know that ISO-8859-1
is the same as ISO8859-1. Modern platforms do know this, so use the older
name.

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t3901: Use ISO8859-1 instead of ISO-8859-1 for backward... Brandon Casey Mon, 18 May 2009 23:44:43 +0000 (18:44 -0500)

t3901: Use ISO8859-1 instead of ISO-8859-1 for backward compatibility

Some ancient platforms do not have an extensive list of alternate names for
character encodings. For example, Solaris 7 does not know that ISO-8859-1
is the same as ISO8859-1. Modern platforms do know this, so use the older
name.

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t3901: avoid negation on right hand side of '|'Brandon Casey Mon, 18 May 2009 23:44:42 +0000 (18:44 -0500)

t3901: avoid negation on right hand side of '|'

Some shells do not properly handle constructs of the form:

spew_something | ! process_input

So rewrite this to be:

spew_something | process_input; test $? != 0

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

builtin-mailinfo.c: use "ISO8859-1" instead of "latin1... Brandon Casey Mon, 18 May 2009 23:44:41 +0000 (18:44 -0500)

builtin-mailinfo.c: use "ISO8859-1" instead of "latin1" as fallback encoding

Some platforms do not understand the character encoding "latin1" which is
another name for "ISO8859-1". So use "ISO8859-1" instead which all tested
platforms understand.

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

builtin-mailinfo.c: compare character encodings case... Brandon Casey Mon, 18 May 2009 23:44:40 +0000 (18:44 -0500)

builtin-mailinfo.c: compare character encodings case insensitively

When converting between character encodings, git tests whether the "from"
encoding and the "to" encoding have the same name. git should perform this
test case insensitively so that e.g. utf-8 is not seen as a different
encoding than UTF-8.

Additionally, it is not necessary to call tolower() anymore on the encodings
extracted from the mail message.

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Use 'UTF-8' rather than 'utf-8' everywhere for backward... Brandon Casey Mon, 18 May 2009 23:44:39 +0000 (18:44 -0500)

Use 'UTF-8' rather than 'utf-8' everywhere for backward compatibility

Some ancient platforms (Solaris 7, IRIX 6.5) do not understand 'utf-8', but
all tested implementations understand 'UTF-8'.

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t3900: use ancient iconv names for backward compatibilityBrandon Casey Mon, 18 May 2009 23:44:38 +0000 (18:44 -0500)

t3900: use ancient iconv names for backward compatibility

Some old iconv implementations do not have many alternate names and/or
do not match character encoding names case insensitively. These
implementations can not tell that utf-8 and UTF-8 are the same encoding
and fail when trying to do the conversion. So use the old names, which
modern implementations still support.

The following conversions were performed:

utf-8 --> UTF-8
ISO-8859-1 --> ISO8859-1
EUCJP --> eucJP

Also update t9129 and t9500 which make use of the test files in t/t3900.

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

gitk: Handle msysGit version during version comparisonsPat Thoyts Mon, 18 May 2009 21:46:01 +0000 (22:46 +0100)

gitk: Handle msysGit version during version comparisons

msysGit generates version strings with text appended which cannot
be used with vcompare; trying to use them generates a Tcl error.
Limit git_version to the first three digits which are the real git
version to avoid this error.

Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>
Signed-off-by: Paul Mackerras <paulus@samba.org>

Merge branch 'np/push-delta'Junio C Hamano Mon, 18 May 2009 16:01:16 +0000 (09:01 -0700)

Merge branch 'np/push-delta'

* np/push-delta:
allow OFS_DELTA objects during a push

Merge branch 'ar/merge-one-file-diag'Junio C Hamano Mon, 18 May 2009 16:01:11 +0000 (09:01 -0700)

Merge branch 'ar/merge-one-file-diag'

* ar/merge-one-file-diag:
Clarify kind of conflict in merge-one-file helper

Merge branch 'ar/unlink-err'Junio C Hamano Mon, 18 May 2009 16:01:06 +0000 (09:01 -0700)

Merge branch 'ar/unlink-err'

* ar/unlink-err:
print unlink(2) errno in copy_or_link_directory
replace direct calls to unlink(2) with unlink_or_warn
Introduce an unlink(2) wrapper which gives warning if unlink failed

Merge branch 'jk/maint-add-empty'Junio C Hamano Mon, 18 May 2009 16:01:01 +0000 (09:01 -0700)

Merge branch 'jk/maint-add-empty'

* jk/maint-add-empty:
add: don't complain when adding empty project root

Merge branch 'js/add-edit'Junio C Hamano Mon, 18 May 2009 16:00:06 +0000 (09:00 -0700)

Merge branch 'js/add-edit'

* js/add-edit:
t3702: fix reliance on SHELL_PATH being '/bin/sh'
git-add: introduce --edit (to edit the diff vs. the index)

Merge branch 'mh/diff-stat-color'Junio C Hamano Mon, 18 May 2009 15:59:54 +0000 (08:59 -0700)

Merge branch 'mh/diff-stat-color'

* mh/diff-stat-color:
diff: do not color --stat output like patch context

Merge branch 'mh/show-branch-color'Junio C Hamano Mon, 18 May 2009 15:59:48 +0000 (08:59 -0700)

Merge branch 'mh/show-branch-color'

* mh/show-branch-color:
bash completion: show-branch color support
show-branch: color the commit status signs

Conflicts:
contrib/completion/git-completion.bash

Merge branch 'ac/graph-horizontal-line'Junio C Hamano Mon, 18 May 2009 15:59:30 +0000 (08:59 -0700)

Merge branch 'ac/graph-horizontal-line'

* ac/graph-horizontal-line:
graph API: Use horizontal lines for more compact graphs

Merge branch 'ae/anon-fetch-info'Junio C Hamano Mon, 18 May 2009 15:59:27 +0000 (08:59 -0700)

Merge branch 'ae/anon-fetch-info'

* ae/anon-fetch-info:
fetch: Strip usernames from url's before storing them

Merge branch 'maint'Junio C Hamano Mon, 18 May 2009 15:59:20 +0000 (08:59 -0700)

Merge branch 'maint'

* maint:
show-branch: Fix die message in parse_reflog_param()

bisect: check ancestors without forking a "git rev... Christian Couder Sun, 17 May 2009 15:36:46 +0000 (17:36 +0200)

bisect: check ancestors without forking a "git rev-list" process

We must save the pending commits that will be used during revision
walking and unparse them after, because we want to leave a clean
state for the next revision walking that will try to find the best
bisection point.

As we don't fork a process anymore to call "git rev-list", we need
to remove the use of GIT_TRACE to check how "git rev-list" is
called from the t6030 test that uses it.

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

commit: add function to unparse a commit and its parentsChristian Couder Sun, 17 May 2009 15:36:45 +0000 (17:36 +0200)

commit: add function to unparse a commit and its parents

This patch adds the "unparse_commit" function that returns a commit
into an unparsed state by freeing its data and resetting its fields
to 0.

Its parents are recursively unparsed too, because they might have
been changed. But its tree is not unparsed as it should not have
been modifed.

Note that as the "flags" and "used" fields may be used even if the
object is not parsed, we have to reset them anyway.

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