gitweb.git
Merge branch 'maint-1.7.1' into maintJunio C Hamano Mon, 26 Jul 2010 06:13:41 +0000 (23:13 -0700)

Merge branch 'maint-1.7.1' into maint

* maint-1.7.1:
request-pull.txt: Document -p option
Check size of path buffer before writing into it

Makefile: make hard/symbolic links for non-builtins tooBrandon Casey Fri, 23 Jul 2010 17:50:45 +0000 (12:50 -0500)

Makefile: make hard/symbolic links for non-builtins too

To conserve space/improve file caching we try to make hard or symbolic links
from each builtin program to the main git executable rather than having
each be a complete duplicate copy of it. We weren't doing this for the
non-builtin programs though. So, just because we can, and because it's
easy, and for completeness sake, let's do it.

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

Makefile: link builtins residing in bin directory to... Brandon Casey Fri, 23 Jul 2010 17:50:44 +0000 (12:50 -0500)

Makefile: link builtins residing in bin directory to main git binary too

To conserve space/improve file caching we try to make hard or symbolic links
from each builtin program to the main git executable rather than having
each be a complete duplicate copy of it. We weren't doing this for the
builtin programs residing in the bin directory though. So, let's do so.

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

setup: split off get_device_or_die helperJonathan Nieder Sat, 24 Jul 2010 11:27:58 +0000 (06:27 -0500)

setup: split off get_device_or_die helper

This does not eliminate any code, but it skims some off of
the main loop of setup_git_directory_gently so that can be
understood more easily.

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

setup: split off a function to handle hitting ceiling... Jonathan Nieder Sat, 24 Jul 2010 11:26:41 +0000 (06:26 -0500)

setup: split off a function to handle hitting ceiling in repo search

Perhaps some day, other similar conditions (hitting the mount point,
hitting the root of the file system) will share this code.

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

setup: split off code to handle stumbling upon a repositoryJonathan Nieder Sat, 24 Jul 2010 11:25:32 +0000 (06:25 -0500)

setup: split off code to handle stumbling upon a repository

If a repository is found as an ancestor of the original
working directory, it is assumed by default to be bare.
Handle this case with its own function.

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

setup: split off a function to checks working dir for... Jonathan Nieder Sat, 24 Jul 2010 11:20:15 +0000 (06:20 -0500)

setup: split off a function to checks working dir for .git file

The repository discovery procedure looks something like this:

while (same filesystem) {
check .git in working dir
check .
chdir(..)
}

Add a function for the first step to make the actual code look a bit
closer to that pseudocode.

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

setup: split off $GIT_DIR-set case from setup_git_direc... Jonathan Nieder Sat, 24 Jul 2010 11:19:44 +0000 (06:19 -0500)

setup: split off $GIT_DIR-set case from setup_git_directory_gently

If $GIT_DIR is set, setup_git_directory_gently does not have
to do any repository discovery at all. Split off a function
for the validation it still does do, in the hope that this will
make setup_git_directory_gently proper less daunting to read.

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

tests: try git apply from subdir of toplevelJonathan Nieder Sat, 24 Jul 2010 11:18:38 +0000 (06:18 -0500)

tests: try git apply from subdir of toplevel

Make sure git apply can apply patches with paths relative to the
toplevel of a work tree, a subdirectory, or within the repository
metadata directory.

Relative paths are broken for most commands when run from a
subdirectory of $GIT_DIR, "git apply" being no exception. The other
tests are meant to keep the demonstration of that company.

Based on a test by Duy.

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

t1501 (rev-parse): clarifyJonathan Nieder Sat, 24 Jul 2010 11:16:35 +0000 (06:16 -0500)

t1501 (rev-parse): clarify

Tweak the style of these tests to make them easier to read.

- Replace test_rev_parse() which produced multiple mini-tests with a
simple function that can be used with the test body.

- Combine multiple mini-tests into larger chunks that are easier
to read.

- Do not hard-code object IDs. We may use a different hash some day.

- Use test_cmp in preference to the test builtin. The former
produces useful output when tests are run with the "-v" option.

- Guard all test code with test_expect_success. This makes it much
easier to visually scan through the test and find code of interest.

- Use subshells to make the current directory easier to track.
Outside of any subshell, the current directory is always
$TEST_DIRECTORY now.

Also add a new test demonstrating a possible bug noticed in the
process of cleaning up: “git rev-parse --show-prefix” leaves out
the trailing newline after an empty prefix when cwd is at the
toplevel of the work tree.

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

Do not unquote + into ' ' in URLsThomas Rast Sat, 24 Jul 2010 14:49:04 +0000 (16:49 +0200)

Do not unquote + into ' ' in URLs

Since 9d2e942 (decode file:// and ssh:// URLs, 2010-05-23) the URL
logic unquotes escaped URLs. For the %2B type of escape, this is
conformant with RFC 2396. However, it also unquotes + into a space
character, which is only appropriate for the query strings in HTTP.
This notably broke fetching from the gtk+ repository.

We cannot just remove the corresponding code since the same
url_decode_internal() is also used by the HTTP backend to decode query
parameters. Introduce a new argument that controls whether the +
decoding happens, and use it only in the (client-side) url_decode().

Reported-by: Jasper St. Pierre <jstpierre@mecheye.net>
Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'maint-1.7.0' into maint-1.7.1Junio C Hamano Mon, 26 Jul 2010 04:53:27 +0000 (21:53 -0700)

Merge branch 'maint-1.7.0' into maint-1.7.1

* maint-1.7.0:
request-pull.txt: Document -p option
Check size of path buffer before writing into it

Merge branch 'maint-1.6.6' into maint-1.7.0Junio C Hamano Mon, 26 Jul 2010 04:52:48 +0000 (21:52 -0700)

Merge branch 'maint-1.6.6' into maint-1.7.0

* maint-1.6.6:
request-pull.txt: Document -p option
Check size of path buffer before writing into it
rev-parse: fix --parse-opt --keep-dashdash --stop-at-non-option

Merge branch 'maint-1.6.5' into maint-1.6.6Junio C Hamano Mon, 26 Jul 2010 04:52:29 +0000 (21:52 -0700)

Merge branch 'maint-1.6.5' into maint-1.6.6

* maint-1.6.5:
request-pull.txt: Document -p option
Check size of path buffer before writing into it
rev-parse: fix --parse-opt --keep-dashdash --stop-at-non-option

request-pull.txt: Document -p optionStephen Boyd Fri, 23 Jul 2010 16:31:27 +0000 (09:31 -0700)

request-pull.txt: Document -p option

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

Merge branch 'maint-1.6.4' into maint-1.6.5Junio C Hamano Mon, 26 Jul 2010 04:51:58 +0000 (21:51 -0700)

Merge branch 'maint-1.6.4' into maint-1.6.5

* maint-1.6.4:
Check size of path buffer before writing into it
rev-parse: fix --parse-opt --keep-dashdash --stop-at-non-option

Check size of path buffer before writing into itGreg Brockman Tue, 20 Jul 2010 04:46:21 +0000 (00:46 -0400)

Check size of path buffer before writing into it

This prevents a buffer overrun that could otherwise be triggered by
creating a file called '.git' with contents

gitdir: (something really long)

Signed-off-by: Greg Brockman <gdb@mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

blame: use find_commit_subject() instead of custom... Christian Couder Thu, 22 Jul 2010 13:18:35 +0000 (15:18 +0200)

blame: use find_commit_subject() instead of custom code

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

merge-recursive: use find_commit_subject() instead... Christian Couder Thu, 22 Jul 2010 13:18:34 +0000 (15:18 +0200)

merge-recursive: use find_commit_subject() instead of custom code

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

bisect: use find_commit_subject() instead of custom... Christian Couder Thu, 22 Jul 2010 13:18:33 +0000 (15:18 +0200)

bisect: use find_commit_subject() instead of custom code

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

revert: rename variables related to subject in get_mess... Christian Couder Thu, 22 Jul 2010 13:18:31 +0000 (15:18 +0200)

revert: rename variables related to subject in get_message()

Generic-looking pointer variable "p" was used only to point at subject
string and had a rather lifespan.

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

revert: refactor code to find commit subject in find_co... Christian Couder Thu, 22 Jul 2010 13:18:30 +0000 (15:18 +0200)

revert: refactor code to find commit subject in find_commit_subject()

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

revert: fix off by one read when searching the end... Christian Couder Thu, 22 Jul 2010 13:18:29 +0000 (15:18 +0200)

revert: fix off by one read when searching the end of a commit subject

A test case is added but the problem can only be seen when running
the test case with --valgrind.

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

t3508: add check_head_differs_from() helper function... Christian Couder Wed, 21 Jul 2010 04:25:02 +0000 (06:25 +0200)

t3508: add check_head_differs_from() helper function and use it

In a test like:

test "$(git rev-parse --verify HEAD)" != "$(git rev-parse --verify fourth)"

the --verify does not accomplish much, since the exit status of
git rev-parse is not propagated to test. So it is more robust to
define and use the helper functions check_head_differs_from() and
check_head_equals() as done by this patch.

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

rebase: protect against diff.renames configurationJunio C Hamano Tue, 11 Nov 2008 00:15:49 +0000 (16:15 -0800)

rebase: protect against diff.renames configuration

We currently do not disable diff.renames configuration while rebase
internally runs "format-patch" to feed "am -3".

The end user configuration for "diff" should not affect the result
produced by the higher level command that is related to "diff" only
because internally it is implemented in terms of it.

For that matter, I have a feeling that format-patch should not even look
at diff.renames, but we seem to have been doing this for a long time so
there is no easy way to fix this thinko.

In any case, here is a much straightforward fix for "rebase".

[jn: with test case from David]

Reported-by: David D. Kilzer <ddkilzer@kilzer.net>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t3400 (rebase): whitespace cleanupJonathan Nieder Fri, 23 Jul 2010 17:05:24 +0000 (12:05 -0500)

t3400 (rebase): whitespace cleanup

This test used 5-space indents since it was added in 2005, but
recently the temptation to use tabs to indent has been too
strong, resulting in uneven whitespace. Switch over completely
to tabs.

While at it, use a more modern style for consistency with other
tests:

- names of tests go on the same line as test_expect_success;
- extra whitespace after > redirection operators is removed.

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

Teach "apply --index-info" to handle rename patchesJunio C Hamano Mon, 10 Nov 2008 23:49:03 +0000 (15:49 -0800)

Teach "apply --index-info" to handle rename patches

With v1.5.3.2~14 (apply --index-info: fall back to current index for
mode changes, 2007-09-17), git apply learned to stop worrying
about the lack of diff index line when a file already present in the
current index had no content change.

But it still worries too much: for rename patches, it is checking
that both the old and new filename are present in the current
index. This makes no sense, since a file rename generally
involves creating a file there was none before.

So just check the old filename.

Noticed while trying to use “git rebase” with diff.renames = copies.

[jn: add tests]

Reported-by: David D. Kilzer <ddkilzer@kilzer.net>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t4150 (am): futureproof against failing testsJonathan Nieder Fri, 23 Jul 2010 17:04:01 +0000 (12:04 -0500)

t4150 (am): futureproof against failing tests

Most tests in t4150 begin by navigating to a sane state and
applying some patch:

git checkout first &&
git am patch1

If a previous test left behind unmerged files or a .git/rebase-apply
directory, they are untouched and the test fails, causing later tests
to fail, too. This is not a problem in practice because none of the
tests leave a mess behind.

But as a futureproofing measure, it is still best to avoid the problem
and clean up at the start of each test. In particular, this
simplifies the process of adding new tests that are known to fail.

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

t4150 (am): style fixJonathan Nieder Fri, 23 Jul 2010 17:03:07 +0000 (12:03 -0500)

t4150 (am): style fix

Place setup commands in test_expect_success blocks. This makes the
rare event of the setup commands breaking on some platform easier to
diagnose, and more importantly, it visually distinguishes where
each test begins and ends.

Instead of running test -z against the result of "git diff" command
substitution, use "git diff --exit-code", to improve output when
running with the "-v" option.

Use test_cmp in place of "test $(foo) = $(bar)" for similar reasons.

Remove whitespace after the > and < redirection operators for
consistency with other tests.

The order of arguments to test_cmp is "test_cmp expected actual".

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

git-instaweb: Don't assume Apache executable is named... Dan McGee Wed, 30 Jun 2010 12:29:08 +0000 (07:29 -0500)

git-instaweb: Don't assume Apache executable is named apache2

On Arch Linux, the executable for the Apache HTTP server keeps
the 'httpd' name and is not named 'apache2'. The path to the
server modules also contains 'httpd' rather than 'apache2'.
Remove some of these assumptions and add the httpd name in where
it may be required. Finally, make some slight style adjustments
to the code we are touching to make it fit the style of the rest
of the script.

Signed-off-by: Dan McGee <dpmcgee@gmail.com>
Acked-by: Eric Wong <normalperson@yhbt.net>

git-instaweb: Fix Apache environment variable passingDan McGee Wed, 30 Jun 2010 02:44:59 +0000 (21:44 -0500)

git-instaweb: Fix Apache environment variable passing

We were passing the non-existent GIT_EXEC_DIR through instead of the real
GIT_EXEC_PATH. In addition, these weren't being passed at all for CGI (non
mod_perl) execution so get them included there as well.

Signed-off-by: Dan McGee <dpmcgee@gmail.com>
Acked-by: Eric Wong <normalperson@yhbt.net>

git-instaweb: Fix custom apache log placementDan McGee Wed, 30 Jun 2010 02:44:58 +0000 (21:44 -0500)

git-instaweb: Fix custom apache log placement

'CustomLog' is provided by mod_log_config so we need to include the module
in our generated config. This was added in d94775e1f9a.

Signed-off-by: Dan McGee <dpmcgee@gmail.com>
Acked-by: Eric Wong <normalperson@yhbt.net>

Git 1.7.2 v1.7.2Junio C Hamano Wed, 21 Jul 2010 19:55:50 +0000 (12:55 -0700)

Git 1.7.2

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

tests: correct "does reflog exist?" testsJunio C Hamano Wed, 21 Jul 2010 19:47:48 +0000 (12:47 -0700)

tests: correct "does reflog exist?" tests

These two tests weren't about how "git reflog show <branch>" exits when
there is no reflog, but were about "checkout" and "branch" create or not
create reflog when creating a new <branch>. Update the tests to check
what we are interested in, using "git rev-parse --verify".

Also lose tests based on "test -f .git/logs/refs/heads/<branch>" from
nearby, to avoid exposing this particular implementation detail
unnecessarily.

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

t/: work around one-shot variable assignment with test_... Brandon Casey Tue, 20 Jul 2010 21:55:31 +0000 (16:55 -0500)

t/: work around one-shot variable assignment with test_must_fail

See e2007832552ccea9befed9003580c494f09e666e

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

t/README: correct an exception when breaking a && chain... Jonathan Nieder Wed, 21 Jul 2010 00:01:01 +0000 (19:01 -0500)

t/README: correct an exception when breaking a && chain in tests

The correct advice should have been taken from c289c31 (t/t7006: ignore
return status of shell's unset builtin, 2010-06-02). A real-life issue
we experienced was with "unset", not with "export" (exporting an
unset variable may have similar portability issues, though).

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

Documentation: spelling fixesVille Skyttä Mon, 19 Jul 2010 21:17:17 +0000 (00:17 +0300)

Documentation: spelling fixes

[jc: with wording changes from Jonathan Nieder]

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

Add test for git clean -e.Jared Hance Tue, 20 Jul 2010 19:36:21 +0000 (15:36 -0400)

Add test for git clean -e.

Signed-off-by: Jared Hance <jaredhance@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Add -e/--exclude to git-clean.Jared Hance Tue, 20 Jul 2010 19:35:56 +0000 (15:35 -0400)

Add -e/--exclude to git-clean.

With the -e/--exclude option for git-clean, a user can specify files
that they haven't yet told git about, but either need for a short amount
of time or plan to tell git about them later. This allows one to still
use git-clean while these files are around without losing data.

Signed-off-by: Jared Hance <jaredhance@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Convert "! git" to "test_must_fail git"Jared Hance Tue, 20 Jul 2010 23:18:34 +0000 (19:18 -0400)

Convert "! git" to "test_must_fail git"

test_must_fail will account for segfaults in git, so it should be used
instead of "! git"

This patch does not change any of the commands that use pipes.

Signed-off-by: Jared Hance <jaredhance@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t/{t5541,lib-httpd}: replace problematic '!()' notation... Brandon Casey Tue, 20 Jul 2010 18:27:55 +0000 (13:27 -0500)

t/{t5541,lib-httpd}: replace problematic '!()' notation with test_must_fail

The '!()' notation is interpreted as a pattern-list on Ksh. The Ksh man
page describe it as follows:

!(pattern-list)
Matches anything except one of the given patterns.

Ksh performs a file glob using the pattern-list and then tries to execute
the first file in the list. If a space is added between the '!' and the
open parens, then Ksh will not interpret it as a pattern list, but in this
case, it is preferred to use test_must_fail, so lets do so.

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

t/t3700: convert two uses of negation operator '!'... Brandon Casey Tue, 20 Jul 2010 15:24:47 +0000 (10:24 -0500)

t/t3700: convert two uses of negation operator '!' to use test_must_fail

These two lines use the negation '!' operator to negate the result of a
simple command. Since these commands do not contain any pipes or other
complexities, the test_must_fail function can be used and is preferred
since it will additionally detect termination due to a signal.

This was noticed because the second use of '!' does not include a space
between the '!' and the opening parens. Ksh interprets this as follows:

!(pattern-list)
Matches anything except one of the given patterns.

Ksh performs a file glob using the pattern-list and then tries to execute
the first file in the list. If a space is added between the '!' and the
open parens, then Ksh will not interpret it as a pattern list, but in this
case, it is preferred to use test_must_fail, so lets do so.

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

Merge branch 'maint'Junio C Hamano Tue, 20 Jul 2010 18:29:30 +0000 (11:29 -0700)

Merge branch 'maint'

* maint:
t/README: clarify test_must_fail description
Check size of path buffer before writing into it

Conflicts:
t/README

t/README: clarify test_must_fail descriptionBrandon Casey Tue, 20 Jul 2010 17:17:12 +0000 (12:17 -0500)

t/README: clarify test_must_fail description

Some have found the wording of the description to be somewhat ambiguous
with respect to when it is desirable to use test_must_fail instead of
"! <git-command>". Tweak the wording somewhat to hopefully clarify that
it is _because_ test_must_fail can detect segmentation fault that it is
desirable to use it instead of "! <git-command>".

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

Check size of path buffer before writing into itGreg Brockman Tue, 20 Jul 2010 04:46:21 +0000 (00:46 -0400)

Check size of path buffer before writing into it

This prevents a buffer overrun that could otherwise be triggered by
creating a file called '.git' with contents

gitdir: (something really long)

Signed-off-by: Greg Brockman <gdb@mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'maint'Junio C Hamano Mon, 19 Jul 2010 18:21:08 +0000 (11:21 -0700)

Merge branch 'maint'

* maint:
update-server-info: Shorten read_pack_info_file()
Documentation: Explain git-mergetool's use of temporary files

update-server-info: Shorten read_pack_info_file()Ralf Thielow Mon, 19 Jul 2010 16:26:12 +0000 (18:26 +0200)

update-server-info: Shorten read_pack_info_file()

The correct responses to a D and a T line in .git/objects/info/packs
are the same, so combine their case arms. In both cases we already
‘goto’ out of the switch so while at it, remove a redundant ‘break’
to avoid yet another line of code.

Signed-off-by: Ralf Thielow <ralf.thielow@googlemail.com>
Reviewed-by: Jonathan Nieder <jrnieder <at> gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

fast-export: Add a --full-tree optionElijah Newren Sat, 17 Jul 2010 17:00:51 +0000 (11:00 -0600)

fast-export: Add a --full-tree option

This option adds symmetry with fast-import, enabling it to also work with
complete trees instead of just incremental changes. It works by issuing a
'deleteall' directive with each commit and then listing the full set of
files that make up that commit, rather than just showing the list of files
that have changed since the (first) parent commit. Note that this
functionality is automatically turned on when using --import-marks together
with path limiting in order to avoid dropping important but unchanged
files.

This functionality is desired when using hand-written filters along with
'fast-export | some-filter | fast-import' as it can be easier to write
<some-filter> in terms of complete trees than incremental changes.

We could avoid the need to add this option by simply always turning it on.
While the end result would be identical, it would slow things down slightly
by printing many more filenames per commit which goes somewhat against the
'fast' in 'fast-export'.

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

fast-export: Fix dropping of files with --import-marks... Elijah Newren Sat, 17 Jul 2010 17:00:50 +0000 (11:00 -0600)

fast-export: Fix dropping of files with --import-marks and path limiting

Since fast-export operates by listing file changes since the (first) parent
commit, when using --import-marks and path limiting and using a wider list
of paths than in previous runs, files from the new path(s) will silently be
omitted from the result unless or until a commit which explicitly changes
those files. The resulting repository in such cases is broken and makes no
sense.

This commit fixes this by having fast-export work with complete trees
instead of incremental changes (when both --import-marks and path limiting
are used). It works by issuing a 'deleteall' directive with each commit and
then listing the full set of files that make up that commit, rather than
just showing the list of files that have changed since the (first) parent
commit.

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

git add: Add --ignore-missing to SYNOPSISÆvar Arnfjörð Bjarmason Sat, 17 Jul 2010 15:33:15 +0000 (15:33 +0000)

git add: Add --ignore-missing to SYNOPSIS

All the git add options were listed in the synopsis until the
--ignore-missing option was added. Change that so that the git add
documentation now has the complete listing.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git submodule add: Remove old docs about implicit -fÆvar Arnfjörð Bjarmason Sat, 17 Jul 2010 15:53:45 +0000 (15:53 +0000)

git submodule add: Remove old docs about implicit -f

git submodule add no longer implicitly adds with --force. Remove
references to the old functionality in the documentation.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Acked-by: Jens Lehmann <Jens.Lehmann@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git submodule add: Require the new --force option to... Jens Lehmann Sat, 17 Jul 2010 15:11:43 +0000 (17:11 +0200)

git submodule add: Require the new --force option to add ignored paths

To make the behavior of "git submodule add" more consistent with "git add"
ignored submodule paths should not be silently added when they match an
entry in a .gitignore file. To be able to override that default behavior
in the same way as we can do that for "git add", the new option "--force"
is introduced.

Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de>
Acked-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'jl/add-n-ignore-missing'Junio C Hamano Mon, 19 Jul 2010 18:09:38 +0000 (11:09 -0700)

Merge branch 'jl/add-n-ignore-missing'

* jl/add-n-ignore-missing:
git add: Add the "--ignore-missing" option for the dry run

Documentation: Explain git-mergetool's use of temporary... David Aguilar Sun, 18 Jul 2010 01:46:48 +0000 (18:46 -0700)

Documentation: Explain git-mergetool's use of temporary files

'git mergetool' creates '*.orig' backup files in its
default configuration. Mention this in its documentation.

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

Documentation/reset: move "undo permanently" example... Thomas Rast Sun, 18 Jul 2010 18:23:26 +0000 (20:23 +0200)

Documentation/reset: move "undo permanently" example behind "make topic"

I consider the latter usage more important.

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

Documentation/reset: reorder examples to match descriptionThomas Rast Sun, 18 Jul 2010 18:23:25 +0000 (20:23 +0200)

Documentation/reset: reorder examples to match description

A previous commit moved the <paths> mode (undoes git-add) to the front
in the description, so make the examples follow the same order.

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

Documentation/reset: promote 'examples' one section upThomas Rast Sun, 18 Jul 2010 18:23:24 +0000 (20:23 +0200)

Documentation/reset: promote 'examples' one section up

Move the examples section upwards, before the discussion that gives
the gory details. Adjust the style of the heading accordingly.

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

Documentation/reset: separate options by modeThomas Rast Sun, 18 Jul 2010 18:23:23 +0000 (20:23 +0200)

Documentation/reset: separate options by mode

Remove all but -q from the OPTIONS section, and instead explain the
options separated by usage mode, since they only apply to one each.

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

Documentation/git-reset: reorder modes for soft-mixed... Thomas Rast Sun, 18 Jul 2010 18:23:22 +0000 (20:23 +0200)

Documentation/git-reset: reorder modes for soft-mixed-hard progression

Reorder the documetation so that the soft/mixed/hard modes are in this
order. This way they form a natural progression towards changing more
of the state.

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

git-svn: write memoized data explicitly to avoid Storab... Sergey Vlasov Sun, 18 Jul 2010 12:17:49 +0000 (16:17 +0400)

git-svn: write memoized data explicitly to avoid Storable bug

Apparently using the Storable module during global destruction is
unsafe - there is a bug which can cause segmentation faults:

http://rt.cpan.org/Public/Bug/Display.html?id=36087
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=482355

The persistent memoization support introduced in commit 8bff7c538
relied on global destruction to write cached data, which was leading
to segfaults in some Perl configurations. Calling Memoize::unmemoize
in the END block forces the cache writeout to be performed earlier,
thus avoiding the bug.

Signed-off-by: Sergey Vlasov <vsu@altlinux.ru>
Acked-by: Eric Wong <normalperson@yhbt.net>

Merge branch 'jc/diff-merge-base-multi'Junio C Hamano Fri, 16 Jul 2010 22:45:35 +0000 (15:45 -0700)

Merge branch 'jc/diff-merge-base-multi'

* jc/diff-merge-base-multi:
diff A...B: do not limit the syntax too narrowly

post-receive-email: optional message line count limitKevin P. Fleming Fri, 16 Jul 2010 19:16:23 +0000 (14:16 -0500)

post-receive-email: optional message line count limit

We have become used to the features of svnmailer when used with Subversion,
and one of those useful features is that it can limit the maximum length
(in lines) of a commit email message. This is terribly useful since once the
goes beyond a reasonable number of lines, nobody is going to read the remainder,
and if they really want the entire contents of the commits, they can use
git itself to get them using the revision IDs present in the message already.

Change the post-receive-email script to respond to an 'emailmaxlines' config key
which, if specified, will limit the number of lines generated (including
headers); any lines beyond the limit are suppressed, and a final line is added
indicating the number that were suppressed.

Signed-off-by: Kevin P. Fleming <kpfleming@digium.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

revert: improve success message by adding abbreviated... Christian Couder Tue, 13 Jul 2010 23:28:15 +0000 (01:28 +0200)

revert: improve success message by adding abbreviated commit sha1

Instead of saying "Finished one cherry-pick." or "Finished one revert.",
we now say "Finished cherry-pick of commit <abbreviated sha1>." or
"Finished revert of commit <abbreviated sha1>." which is more informative,
especially when cherry-picking or reverting many commits.

In case of failure the message is now "Automatic cherry-pick of commit
<abbreviated sha1> failed." instead of "Automatic cherry-pick failed."

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

revert: don't print "Finished one cherry-pick." if... Christian Couder Tue, 13 Jul 2010 23:28:14 +0000 (01:28 +0200)

revert: don't print "Finished one cherry-pick." if commit failed

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

revert: refactor commit code into a new run_git_commit... Christian Couder Tue, 13 Jul 2010 23:28:13 +0000 (01:28 +0200)

revert: refactor commit code into a new run_git_commit() function

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

revert: report success when using option --strategyChristian Couder Tue, 13 Jul 2010 23:28:12 +0000 (01:28 +0200)

revert: report success when using option --strategy

"git cherry-pick foo" has always reported success with
"Finished one cherry-pick" but "cherry-pick --strategy"
does not print anything. So move the code to write that
message from do_recursive_merge() to do_cherry_pick()
so other strategies can share it.

This patch also refactors the code that prints a message
like "Automatic cherry-pick failed. <help message>". This
code was duplicated in both do_recursive_merge() and
do_pick_commit().

To do that, now do_recursive_merge() returns an int to signal
success or failure. And in case of failure we just return 1
from do_pick_commit() instead of doing "exit(1)" from either
do_recursive_merge() or do_pick_commit().

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

Only run aggregate-results over actual countsThomas Rast Fri, 16 Jul 2010 09:37:44 +0000 (11:37 +0200)

Only run aggregate-results over actual counts

The current make target 'aggregate-results' scanned all files matching
test-results/t*-*. Normally these are only the test counts (and the
exit values, which are ignored), but with --tee the suite also dumps
all output. Furthermore, with --verbose t1450 contains several lines
starting with "broken link from ..." which matches the criteria used
by aggregate-results.sh.

Rename the counts output files to *.counts, and only scan those.

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

Add a sample user for the svndump libraryJonathan Nieder Thu, 15 Jul 2010 16:25:39 +0000 (18:25 +0200)

Add a sample user for the svndump library

The svn-fe tool takes a Subversion dump file as input and produces
a fast-import stream as output. This can be useful as a low-level
tool in building other importers, or for debugging the vcs-svn
library.

make svn-fe
make svn-fe.1

to test.

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

diff A...B: do not limit the syntax too narrowlyJunio C Hamano Fri, 16 Jul 2010 19:08:24 +0000 (12:08 -0700)

diff A...B: do not limit the syntax too narrowly

Earlier we tried to make sure that the trees we get are what A...B
syntax produced, by checking that earlier ones are all marked
uninteresting (which has to be true as they are merge bases),
there are two remaining ones that are interesting, and they are
marked as non-symmetric-left and symmetric-left respectively.

The "the last two must be interesting" condition is however wrong when one
is an ancestor of the other between A and B (i.e. fast-forward). In such
a case, one of them is marked uninteresting.

Export parse_date_basic() to convert a date string... Jonathan Nieder Thu, 15 Jul 2010 16:22:57 +0000 (18:22 +0200)

Export parse_date_basic() to convert a date string to timestamp

approxidate() is not appropriate for reading machine-written dates
because it guesses instead of erroring out on malformed dates.
parse_date() is less convenient since it returns its output as a
string. So export the underlying function that writes a timestamp.

While at it, change the return value to match the usual convention:
return 0 for success and -1 for failure.

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

Merge branch 'jn/paginate-fix'Junio C Hamano Thu, 15 Jul 2010 19:09:14 +0000 (12:09 -0700)

Merge branch 'jn/paginate-fix'

* jn/paginate-fix:
git --paginate: paginate external commands again
git --paginate: do not commit pager choice too early
tests: local config file should be honored from subdirs of toplevel
t7006: test pager configuration for several git commands
t7006 (pager): introduce helper for parameterized tests

Conflicts:
t/t7006-pager.sh

Merge branch 'wp/merge-tree-fix'Junio C Hamano Thu, 15 Jul 2010 19:08:41 +0000 (12:08 -0700)

Merge branch 'wp/merge-tree-fix'

* wp/merge-tree-fix:
merge-tree: fix where two branches share no changes
add basic tests for merge-tree

Merge branch 'js/merge-rr-fix'Junio C Hamano Thu, 15 Jul 2010 19:08:36 +0000 (12:08 -0700)

Merge branch 'js/merge-rr-fix'

* js/merge-rr-fix:
MERGE_RR is in .git, not .git/rr-cache

Merge branch 'jc/diff-merge-base-multi'Junio C Hamano Thu, 15 Jul 2010 19:08:25 +0000 (12:08 -0700)

Merge branch 'jc/diff-merge-base-multi'

* jc/diff-merge-base-multi:
diff A...B: give one possible diff when there are more than one merge-base

Merge branch 'ns/merge-recursive-uptodate'Junio C Hamano Thu, 15 Jul 2010 19:08:11 +0000 (12:08 -0700)

Merge branch 'ns/merge-recursive-uptodate'

* ns/merge-recursive-uptodate:
merge-recursive: use "up-to-date" instead of "uptodate" in error message for consistency

Merge branch 'jn/tests'Junio C Hamano Thu, 15 Jul 2010 19:08:04 +0000 (12:08 -0700)

Merge branch 'jn/tests'

* jn/tests:
t3000 (ls-files -o): modernize style

Merge branch 'eb/doc-log-manpage'Junio C Hamano Thu, 15 Jul 2010 19:07:56 +0000 (12:07 -0700)

Merge branch 'eb/doc-log-manpage'

* eb/doc-log-manpage:
Reorganize `git-log' man page to clarify common diff options.

Merge branch 'jn/grep-open'Junio C Hamano Thu, 15 Jul 2010 19:07:18 +0000 (12:07 -0700)

Merge branch 'jn/grep-open'

* jn/grep-open:
grep -O: Do not pass color sequences as filenames to pager

Merge branch 'mg/revision-doc'Junio C Hamano Thu, 15 Jul 2010 19:07:01 +0000 (12:07 -0700)

Merge branch 'mg/revision-doc'

* mg/revision-doc:
Documentation: link to gitrevisions rather than git-rev-parse
Documentation: gitrevisions
Documentation: split off rev doc into include file

Merge branch 'jk/maint-status-keep-index-timestamp'Junio C Hamano Thu, 15 Jul 2010 19:06:55 +0000 (12:06 -0700)

Merge branch 'jk/maint-status-keep-index-timestamp'

* jk/maint-status-keep-index-timestamp:
do not write out index when status does not have to

Merge branch 'jc/rebase-i-commit-msg-fix'Junio C Hamano Thu, 15 Jul 2010 19:06:48 +0000 (12:06 -0700)

Merge branch 'jc/rebase-i-commit-msg-fix'

* jc/rebase-i-commit-msg-fix:
rebase-i: do not get fooled by a log message ending with backslash
rebase-i: style fix

Merge branch 'ab/submodule-add-f'Junio C Hamano Thu, 15 Jul 2010 19:06:25 +0000 (12:06 -0700)

Merge branch 'ab/submodule-add-f'

* ab/submodule-add-f:
git submodule: add submodules with git add -f <path>

Merge branch 'bc/maint-makefile-fixes'Junio C Hamano Thu, 15 Jul 2010 19:06:11 +0000 (12:06 -0700)

Merge branch 'bc/maint-makefile-fixes'

* bc/maint-makefile-fixes:
Makefile: work around ksh's failure to handle missing list argument to for loop
Makefile: remove some unnecessary curly braces

Merge branch 'maint'Junio C Hamano Thu, 15 Jul 2010 19:04:32 +0000 (12:04 -0700)

Merge branch 'maint'

* maint:
Documentation: add submodule.* to the big configuration variable list
gitmodules.5: url can be a relative path
gitweb: fix esc_url

Documentation: add submodule.* to the big configuration... Jonathan Nieder Thu, 15 Jul 2010 07:51:19 +0000 (02:51 -0500)

Documentation: add submodule.* to the big configuration variable list

The url, path, and the update items in [submodule "foo"] stanzas
are nicely explained in the .gitmodules and ‘git submodule’
documentation. Point there from the config documentation.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Acked-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

gitmodules.5: url can be a relative pathJonathan Nieder Thu, 15 Jul 2010 07:41:55 +0000 (02:41 -0500)

gitmodules.5: url can be a relative path

There is already excellent documentation for this facility in
git-submodule.1, but it is not so discoverable.

Relative paths in .gitmodules can be useful for serving the
same repository over multiple protocols, for example.
Thanks to Peter for pointing this out.

Cc: Peter Krefting <peter@softwolves.pp.se>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Acked-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

gitweb: fix esc_urlPavan Kumar Sunkara Thu, 15 Jul 2010 07:29:01 +0000 (12:59 +0530)

gitweb: fix esc_url

Earlier, 452e225 (gitweb: fix esc_param, 2009-10-13) fixed CGI escaping
rules used in esc_url. A very similar logic exists in esc_param and needs
to be fixed the same way.

Signed-off-by: Pavan Kumar Sunkara <pavan.sss1991@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git --paginate: paginate external commands againJonathan Nieder Wed, 14 Jul 2010 22:55:12 +0000 (17:55 -0500)

git --paginate: paginate external commands again

73e25e7c (git --paginate: do not commit pager choice too early,
2010-06-26) failed to take some cases into account.

1b. Builtins that do not use RUN_SETUP (like git config) do
not find GIT_DIR set correctly when the pager is launched
from run_builtin(). So the core.pager configuration is
not honored from subdirectories of the toplevel for them.

4a. External git commands (like git request-pull) relied on the
early pager launch to take care of handling the -p option.
Ever since 73e25e7c, they do not honor the -p option at all.

4b. Commands invoked through ! aliases (like ls) were also relying
on the early pager launch.

Fix (4a) by launching the pager (if requested) before running such a
“dashed external”. For simplicity, this still does not search for a
.git directory before running the external command; when run from a
subdirectory of the toplevel, therefore, the “[core] pager”
configuration is still not honored.

Fix (4b) by launching pager if requested before carrying out such an
alias. Actually doing this has no effect, since the pager (if any)
would have already been launched in a failed attempt to try a
dashed external first. The choice-of-pager-not-honored-from-
subdirectory bug still applies here, too.

(1b) is not a regression. There is no need to fix it yet.

Noticed by Junio.

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

sha1_file: Show the the type and path to corrupt objectsÆvar Arnfjörð Bjarmason Thu, 10 Jun 2010 12:47:01 +0000 (12:47 +0000)

sha1_file: Show the the type and path to corrupt objects

Change the error message that's displayed when we encounter corrupt
objects to be more specific. We now print the type (loose or packed)
of corrupted objects, along with the full path to the file in
question.

Before:

$ git cat-file blob 909ef997367880aaf2133bafa1f1a71aa28e09df
fatal: object 909ef997367880aaf2133bafa1f1a71aa28e09df is corrupted

After:

$ git cat-file blob 909ef997367880aaf2133bafa1f1a71aa28e09df
fatal: loose object 909ef997367880aaf2133bafa1f1a71aa28e09df (stored in .git/objects/90/9ef997367880aaf2133bafa1f1a71aa28e09df) is corrupted

Knowing the path helps to quickly analyze what's wrong:

$ file .git/objects/90/9ef997367880aaf2133bafa1f1a71aa28e09df
.git/objects/90/9ef997367880aaf2133bafa1f1a71aa28e09df: empty

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

MERGE_RR is in .git, not .git/rr-cacheJay Soffian Wed, 14 Jul 2010 17:18:11 +0000 (13:18 -0400)

MERGE_RR is in .git, not .git/rr-cache

0af0ac7 (Move MERGE_RR from .git/rr-cache/ into .git/) moved the
location of MERGE_RR but I found a few references to the old
location.

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

merge-tree: fix where two branches share no changesWill Palmer Wed, 14 Jul 2010 17:04:07 +0000 (18:04 +0100)

merge-tree: fix where two branches share no changes

15b4f7a (merge-tree: use ll_merge() not xdl_merge(), 2010-01-16)
introduced a regression to merge-tree to cause it to segfault when merging
files which existed in one branch, but not in the other or in the
merge-base. This was caused by referencing entry->path at a time when
entry was known to be possibly-NULL.

To correct the problem, we save the path of the entry we came in with,
as the path should be the same among all the stages no matter which
sides are involved in the merge.

Signed-off-by: Will Palmer <wmpalmer@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

add basic tests for merge-treeWill Palmer Wed, 14 Jul 2010 17:04:06 +0000 (18:04 +0100)

add basic tests for merge-tree

merge-tree had no test cases, so here we add some very basic tests for
it, including some known-breakages.

[jc: with obvious/trivial fixups]

Signed-off-by: Will Palmer <wmpalmer@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Git 1.7.2-rc3 v1.7.2-rc3Junio C Hamano Wed, 14 Jul 2010 16:42:24 +0000 (09:42 -0700)

Git 1.7.2-rc3

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

Merge branch 'jc/read-tree-cache-tree-fix'Junio C Hamano Wed, 14 Jul 2010 16:34:23 +0000 (09:34 -0700)

Merge branch 'jc/read-tree-cache-tree-fix'

* jc/read-tree-cache-tree-fix:
Fix "read-tree -m A B" priming the cache-tree

rerere: fix overeager gcSZEDER Gábor Mon, 12 Jul 2010 23:42:04 +0000 (01:42 +0200)

rerere: fix overeager gc

'rerere gc' prunes resolutions of conflicted merges that occurred long
time ago, and when doing so it takes the creation time of the
conflicted automerge results into account. This can cause the loss of
frequently used conflict resolutions (e.g. long-living topic branches
are merged into a regularly rebuilt integration branch (think of git's
pu)) when they become old enough to exceed 'rerere gc's threshold.

To prevent the loss of valuable merge resolutions 'rerere' will (1)
update the timestamp of the recorded conflict resolution (i.e.
'postimage') each time when encountering and resolving the same merge
conflict, and (2) take this timestamp, i.e. the time of the last usage
into account when gc'ing.

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

add configuration variable for --autosquash option... Heiko Voigt Wed, 14 Jul 2010 11:59:57 +0000 (13:59 +0200)

add configuration variable for --autosquash option of interactive rebase

If you use this feature regularly you can now enable it by default. In
case the user wants to override this config on the commandline
--no-autosquash can be used to force disabling.

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

Use dev_t for device id (st_dev) from stat in setup_git... Raja R Harinath Tue, 13 Jul 2010 09:02:00 +0000 (14:32 +0530)

Use dev_t for device id (st_dev) from stat in setup_git_directory_gently()

The original declaration was int, which seems to cause trouble on my
machine. It causes spurious "filesystem boundary" errors when running
the testsuite. The cause seems to be

$ stat -c%d .
2147549952

which is too large for a 32-bit int type.

Using the correct type, dev_t, solves the issue. (Because I'm
paranoid and forgetful, I checked -- yes, Unix v7 had dev_t.)

Other uses of st_dev seem to be reasonably safe. fill_stat_cache_info
truncates it to an 'unsigned int', but that value seems to be used only
to validate the cache, and only if USE_STDEV is defined.

Signed-off-by: Raja R Harinath <harinath@hurrynot.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Enable custom schemes for column colors in the graph APIJohan Herland Tue, 13 Jul 2010 21:23:39 +0000 (23:23 +0200)

Enable custom schemes for column colors in the graph API

Currently, the graph code is hardcoded to use ANSI color escapes for
coloring the column characters in the generated graphs. This patch
allows a custom scheme of colors to be set at runtime, allowing
different types of color escapes to be used.

A new function - graph_set_column_colors() - is added to the graph.h API,
which allows a custom column_colors array (and column_colors_max value)
to replace the builtin ANSI array (and _max value). The new function -
if used - must be called before graph_init() is called.

Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Make graph_next_line() available in the graph.h APIJohan Herland Tue, 13 Jul 2010 21:23:38 +0000 (23:23 +0200)

Make graph_next_line() available in the graph.h API

In order to successfully use the graph API from a context other than the
stdout/command-line scenario (where the graph_show_* functions are
suitable), we need direct access to graph_next_line(), to drive the
graph drawing process.

Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

diff A...B: give one possible diff when there are more... Junio C Hamano Tue, 13 Jul 2010 00:27:46 +0000 (17:27 -0700)

diff A...B: give one possible diff when there are more than one merge-base

We instead showed a combined diff that explains one of the randomly
chosen merge-base as if it were the result of merging all the other
merge bases and two tips given, which made no sense at all.

An alternative is to simply fail such a request, telling the user that
there are criss-cross merges, but it wouldn't be so helpful.

Noticed by James Pickens.

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