gitweb.git
detached-stash: simplify git stash showJon Seymour Sat, 21 Aug 2010 04:09:02 +0000 (14:09 +1000)

detached-stash: simplify git stash show

This commit refactors git stash show to make use of the assert_stash_like function.

git show now dies if the presented argument is non-stash-like.

Previous behaviour was to tolerate commits that were not even stash-like.

Previously, git stash show would accept stash-like arguments, but
only if there was a stash on the stack.

Now, git stash accepts stash-like arguments always and only fails
if no stash-like argument is specified and there is no stash stack.

Signed-off-by: Jon Seymour <jon.seymour@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

detached-stash: simplify git stash branchJon Seymour Sat, 21 Aug 2010 04:09:01 +0000 (14:09 +1000)

detached-stash: simplify git stash branch

This patch teaches git stash branch to tolerate stash-like arguments.

In particular, a stash is only required if an argument isn't specified
and the stash is only dropped if a stash entry reference was
specified or implied.

The implementation has been simplified by taking advantage of
assert_stash_like() and the variables established by
parse_flags_and_rev().

Signed-off-by: Jon Seymour <jon.seymour@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

detached-stash: refactor git stash pop implementationJon Seymour Sat, 21 Aug 2010 04:09:00 +0000 (14:09 +1000)

detached-stash: refactor git stash pop implementation

git stash pop is abstracted into its own implementation function - pop_stash.

The behaviour is changed so that git stash pop fails early if the
the specified stash reference does not exist or does not refer to
an extant entry in the reflog of the reference stash.

This fixes the case where the apply succeeds, but the drop fails.
Previously this caused caused git stash pop to exit with a non-zero exit code
and a dirty tree.

Now, git stash pop fails with a non-zero exit code, but the working
tree is not modified.

Signed-off-by: Jon Seymour <jon.seymour@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

detached-stash: simplify stash_dropJon Seymour Sat, 21 Aug 2010 04:08:59 +0000 (14:08 +1000)

detached-stash: simplify stash_drop

Previously, git stash drop would fail noisily while executing git reflog
delete if the specified revision was not a stash reference.

Now, git stash drop fails with an error message which more precisely
indicates the reason for failure.

Furthermore, git stash drop will now fail with a non-zero status code
if stash@{n} specifies a stash log entry that does not actually exist.

This change in behaviour is achieved by delegating argument parsing
to the common parse_flags_and_rev() function (via a call to
assert_stash_ref).

Signed-off-by: Jon Seymour <jon.seymour@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

detached-stash: simplify stash_applyJon Seymour Sat, 21 Aug 2010 04:08:58 +0000 (14:08 +1000)

detached-stash: simplify stash_apply

The implementation of stash_apply() is simplified to take
advantage of the common parsing function parse_flags_and_rev().

Signed-off-by: Jon Seymour <jon.seymour@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

detached-stash: work around git rev-parse failure to... Jon Seymour Sat, 21 Aug 2010 04:48:05 +0000 (14:48 +1000)

detached-stash: work around git rev-parse failure to detect bad log refs

This commit is required because git rev-parse in 1.7.2 does not correctly
indicate invalid log references using a non-zero status code.

We use a proxy for the condition (non-empty error output) as
a substitute. This commit can be reverted when, and if, rev-parse
is fixed to indicate invalid log references with a status code.

Signed-off-by: Jon Seymour <jon.seymour@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

detached-stash: introduce parse_flags_and_revs functionJon Seymour Sat, 21 Aug 2010 04:46:22 +0000 (14:46 +1000)

detached-stash: introduce parse_flags_and_revs function

Introduce parse_flags_and_revs. This function requires that
there is at most one stash-like revision parameter and
zero or more flags.

It knows how to parse -q,--quiet and --index flags, but leaves
other flags parsed.

Specified revisions are checked to see that they are at
least stash-like (meaning: they look like something created
by git stash save or git stash create).

If this is so, then IS_STASH_LIKE is initialized to a non-empty value.

If the specified revision also looks like a stash log entry reference,
then IS_STASH_REF is initialized to a non-empty value.

References of the form ref@{spec} are required to precisely identify
an individual commit.

If no reference is specified, stash@{0} is assumed.

Once the specified reference is validated to be at least stash_like
an ensemble of derived variables, (w_commit, w_tree, b_commit, etc)
is initialized with a single call to git rev-parse.

Repeated calls to parse_flags_and_rev() avoid repeated calls
to git rev-parse if the specified arguments have already been
parsed.

Subsequent patches in the series modify the existing
git stash subcommands to make use of these functions
as appropriate.

An ensemble of supporting functions that make use of the state
established by parse_flags_and_rev(). These are described below:

The ancillary functions are:

is_stash_like(): which can be used to test
whether a specified commit looks like a commit created with
git stash save or git stash create.

assert_stash_like(): which can be used by
commands that misbehave unless their arguments stash-like.

is_stash_ref(): which checks whether an argument
is valid stash reference(e.g. is of the form
['refs/']stash['@{'something'}])

assert_stash_ref(): which can be used by commands
that misbehave unless their arguments are both stash-like and
refer to valid stash entries.

Signed-off-by: Jon Seymour <jon.seymour@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

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>

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>

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>

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

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.

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>

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

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>

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>

Merge branch 'maint'Junio C Hamano Tue, 13 Jul 2010 16:14:35 +0000 (09:14 -0700)

Merge branch 'maint'

* maint:
git fetch documentation: describe short '-p' synonym to '--prune' option
format-patch: document the format.to configuration setting

git fetch documentation: describe short '-p' synonym... Oren Held Tue, 13 Jul 2010 12:01:40 +0000 (15:01 +0300)

git fetch documentation: describe short '-p' synonym to '--prune' option

It's already implemented, just undocumented.

Signed-off-by: Oren Held <orenhe@il.ibm.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

format-patch: document the format.to configuration... Miklos Vajna Mon, 12 Jul 2010 18:58:38 +0000 (20:58 +0200)

format-patch: document the format.to configuration setting

[jc: with simplification from Jonathan Nieder]

Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git add: Add the "--ignore-missing" option for the... Jens Lehmann Fri, 9 Jul 2010 22:18:38 +0000 (00:18 +0200)

git add: Add the "--ignore-missing" option for the dry run

Sometimes it is useful to know if a file or directory will be ignored
before it is added to the work tree. An example is "git submodule add",
where it would be really nice to be able to fail with an appropriate
error message before the submodule is cloned and checked out.

Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

test-lib: TAP compliance for skipping tests on requestMichael J Gruber Mon, 12 Jul 2010 10:33:49 +0000 (12:33 +0200)

test-lib: TAP compliance for skipping tests on request

Make the output TAP compliant for tests skipped on request (GIT_SKIP_TESTS).

Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
Acked-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

test-lib: simplify GIT_SKIP_TESTS loopMichael J Gruber Mon, 12 Jul 2010 10:32:18 +0000 (12:32 +0200)

test-lib: simplify GIT_SKIP_TESTS loop

04ece59 (GIT_SKIP_TESTS: allow users to omit tests that are known to break, 2006-12-28)
introduced GIT_SKIP_TESTS, and since then we have had two nested loops
iterating over GIT_SKIP_TESTS with the same loop variable.

Reduce this to one loop.

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

Merge branch 'maint'Junio C Hamano Mon, 12 Jul 2010 06:47:29 +0000 (23:47 -0700)

Merge branch 'maint'

* maint:
Documentation: Spelling fix in protocol-capabilities.txt
checkout: accord documentation to what git does
t0005: work around strange $? in ksh when program terminated by a signal

t3000 (ls-files -o): modernize styleJonathan Nieder Sun, 11 Jul 2010 04:20:25 +0000 (23:20 -0500)

t3000 (ls-files -o): modernize style

This script is part of the second batch of tests, from the same day
the test infrastructure was added to git. Update it to use a more
modern style in the spirit of v1.6.4-rc0~45^2~2 (2009-05-22).
In particular:

- Put setup code inside test assertions, to avoid unexpected
breakages and avoid stray output without -v (as t/README
recommends); and

- 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.

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

Documentation: Spelling fix in protocol-capabilities.txtFredrik Skolmli Sat, 10 Jul 2010 00:00:01 +0000 (02:00 +0200)

Documentation: Spelling fix in protocol-capabilities.txt

Signed-off-by: Fredrik Skolmli <fredrik@frsk.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

merge-recursive: use "up-to-date" instead of "uptodate... Nicolas Sebrecht Fri, 9 Jul 2010 20:27:49 +0000 (22:27 +0200)

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

Signed-off-by: Nicolas Sebrecht <nicolas.s.dev@gmx.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

checkout: accord documentation to what git doesNicolas Sebrecht Fri, 9 Jul 2010 20:27:48 +0000 (22:27 +0200)

checkout: accord documentation to what git does

Signed-off-by: Nicolas Sebrecht <nicolas.s.dev@gmx.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t0005: work around strange $? in ksh when program termi... Johannes Sixt Fri, 9 Jul 2010 07:05:16 +0000 (09:05 +0200)

t0005: work around strange $? in ksh when program terminated by a signal

ksh93 is known to report $? of programs that terminated by a signal as
256 + signal number instead of 128 + signal number like other POSIX
compliant shells (ksh's behavior is still POSIX compliant in this regard).

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

Merge remote branch 'ko/master' into jc/read-tree-cache... Junio C Hamano Fri, 9 Jul 2010 01:55:50 +0000 (18:55 -0700)

Merge remote branch 'ko/master' into jc/read-tree-cache-tree-fix

* ko/master: (2325 commits)
Git 1.7.2-rc2
backmerge a few more fixes to 1.7.1.X series
fix git branch -m in presence of cross devices
t/t0006: specify timezone as EST5 not EST to comply with POSIX
add missing && to submodule-merge testcase
t/README: document more test helpers
test-date: fix sscanf type conversion
xdiff: optimise for no whitespace difference when ignoring whitespace.
gitweb: Move evaluate_gitweb_config out of run_request
parse_date: fix signedness in timezone calculation
t0006: test timezone parsing
rerere.txt: Document forget subcommand
t/README: proposed rewording...
t/README: Document the do's and don'ts of tests
t/README: Add a section about skipping tests
t/README: Document test_expect_code
t/README: Document test_external*
t/README: Document the prereq functions, and 3-arg test_*
t/README: Typo: paralell -> parallel
t/README: The trash is in 't/trash directory.$name'
...

Conflicts:
builtin-read-tree.c

diff.c: fix a graph output bugBo Yang Thu, 8 Jul 2010 15:12:34 +0000 (23:12 +0800)

diff.c: fix a graph output bug

When --graph is in effect, the line-prefix typically has colored graph
line segments and ends with reset. The color sequence "set" given to
this function is for showing the metainfo part of the patch text and
(1) it should not be applied to the graph lines, and (2) it will be
reset at the end of line_prefix so it won't be in effect anyway.

Signed-off-by: Bo Yang <struggleyb.nku@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

tests: Use skip_all=* to skip testsÆvar Arnfjörð Bjarmason Thu, 8 Jul 2010 01:16:06 +0000 (01:16 +0000)

tests: Use skip_all=* to skip tests

Change tests to skip with skip_all=* + test_done instead of using say
+ test_done.

This is a follow-up to "tests: Skip tests in a way that makes sense
under TAP" (fadb5156e4). I missed these cases when prepearing that
patch, hopefully this is all of them.

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

Fix "read-tree -m A B" priming the cache-treeJunio C Hamano Fri, 9 Jul 2010 00:27:43 +0000 (17:27 -0700)

Fix "read-tree -m A B" priming the cache-tree

In 456156d a shortcut to priming the index tree reference was
introduced, but the justification for it was completely bogus.

"read-tree -m A B" is to take the index (and the working tree)
that is largely based on (but does not have to match exactly) A
and update it to B, while carrying the local change that does
not overlap the difference between A and B, so there is no reason
to expect that the resulting index should match the tree B.

Noticed and test provided by Heiko Voigt.

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

Reorganize `git-log' man page to clarify common diff... Eli Barzilay Thu, 8 Jul 2010 02:14:31 +0000 (22:14 -0400)

Reorganize `git-log' man page to clarify common diff options.

This will reduce considerably the common confusion where people miss the
`--follow' option, and wonder why `-M'/`-C' is not working.

* Move the diff options include to after the log-specific flags, and add
a "Common diff options" subtitle before them. (These options apply
only when patches are shown, which is not a common use case among
newbies, so having them first is confusing.)

* Move the `--follow' description to the top of the listed options. The
options before that seem less important: `--full-diff' applies only
when patches are shown, `--source' and `--decorate' are less useful
with many common commit specifications.

* Clarify that `--follow' works only for a single path argument.

Signed-off-by: Eli Barzilay <eli@barzilay.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t9118 (git-svn): prevent early failure from taking... Jonathan Nieder Thu, 8 Jul 2010 13:36:02 +0000 (08:36 -0500)

t9118 (git-svn): prevent early failure from taking down later tests

When test #2 fails, the cwd is project/, causing all the
remaining tests in the same script to get confused and fail.

So in the spirit of v1.7.1.1~53^2~10 (t5550-http-fetch: Use subshell
for repository operations, 2010-04-17), use a subshell for svn
working copy operations. This way, the cwd will reliably return
to the top of the trash directory and later tests can still be run
when a command has failed.

Reported-by: A Large Angry SCM <gitzilla@gmail.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Acked-by: Eric Wong <normalperson@yhbt.net>

t9118: avoid PEG revision identifier in testsMichael J Gruber Thu, 8 Jul 2010 19:16:35 +0000 (21:16 +0200)

t9118: avoid PEG revision identifier in tests

@ is SVN's identifier for PEG revisions. But SVN's treatment of PEG
identifiers in copy target URLs changed in r954995/r952973, i.e. between
1.6.11 and 1.6.12. They get eaten now (which is considered the right
way).

Therefore, avoid the @ in the tests with funky branch names.

Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
Acked-by: Eric Wong <normalperson@yhbt.net>

grep -O: Do not pass color sequences as filenames to... Nazri Ramliy Sat, 3 Jul 2010 02:55:06 +0000 (21:55 -0500)

grep -O: Do not pass color sequences as filenames to pager

With a .gitconfig like this:

[color]
ui = auto
[color "grep"]
filename = magenta

if stdout is a terminal, the grep machinery will output the color
sequence \e[36m before each filename in its output.

In the case of "git grep -O foo", output is argv for the pager.
Disable color when calling the grep machinery in this case.

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

Git 1.7.2-rc2 v1.7.2-rc2Junio C Hamano Wed, 7 Jul 2010 18:19:42 +0000 (11:19 -0700)

Git 1.7.2-rc2

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

Merge branch 'ab/tap'Junio C Hamano Wed, 7 Jul 2010 18:18:44 +0000 (11:18 -0700)

Merge branch 'ab/tap'

* ab/tap:
t/README: document more test helpers
t/README: proposed rewording...
t/README: Document the do's and don'ts of tests
t/README: Add a section about skipping tests
t/README: Document test_expect_code
t/README: Document test_external*
t/README: Document the prereq functions, and 3-arg test_*
t/README: Typo: paralell -> parallel
t/README: The trash is in 't/trash directory.$name'
t/t9700/test.pl: don't access private object members, use public access methods
t9700: Use Test::More->builder, not $Test::Builder::Test
tests: Say "pass" rather than "ok" on empty lines for TAP
tests: Skip tests in a way that makes sense under TAP
test-lib: output a newline before "ok" under a TAP harness
test-lib: Make the test_external_* functions TAP-aware
test-lib: Adjust output to be valid TAP format

Merge branch 'maint'Junio C Hamano Wed, 7 Jul 2010 18:18:26 +0000 (11:18 -0700)

Merge branch 'maint'

* maint:
backmerge a few more fixes to 1.7.1.X series
rev-parse: fix --parse-opt --keep-dashdash --stop-at-non-option
fix git branch -m in presence of cross devices

Conflicts:
RelNotes
builtin/rev-parse.c

backmerge a few more fixes to 1.7.1.X seriesJunio C Hamano Wed, 7 Jul 2010 17:36:19 +0000 (10:36 -0700)

backmerge a few more fixes to 1.7.1.X series

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

Merge branch 'maint-1.6.4' into maintJunio C Hamano Wed, 7 Jul 2010 18:13:40 +0000 (11:13 -0700)

Merge branch 'maint-1.6.4' into maint

* maint-1.6.4:
rev-parse: fix --parse-opt --keep-dashdash --stop-at-non-option

rev-parse: fix --parse-opt --keep-dashdash --stop-at... Uwe Kleine-König Tue, 6 Jul 2010 14:46:05 +0000 (16:46 +0200)

rev-parse: fix --parse-opt --keep-dashdash --stop-at-non-option

The ?: operator has a lower priority than |, so the implicit associativity
made the 6th argument of parse_options be PARSE_OPT_KEEP_DASHDASH if
keep_dashdash was true discarding PARSE_OPT_STOP_AT_NON_OPTION and
PARSE_OPT_SHELL_EVAL.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'mg/doc-rev-parse-treepath-syntax' into... Junio C Hamano Wed, 7 Jul 2010 17:34:04 +0000 (10:34 -0700)

Merge branch 'mg/doc-rev-parse-treepath-syntax' into maint

* mg/doc-rev-parse-treepath-syntax:
git-rev-parse.txt: Add more examples for caret and colon
git-rev-parse.txt: Document ":path" specifier

Merge branch 'tr/receive-pack-aliased-update-fix' into... Junio C Hamano Wed, 7 Jul 2010 17:25:15 +0000 (10:25 -0700)

Merge branch 'tr/receive-pack-aliased-update-fix' into maint

* tr/receive-pack-aliased-update-fix:
check_aliased_update: strcpy() instead of strcat() to copy
receive-pack: detect aliased updates which can occur with symrefs
receive-pack: switch global variable 'commands' to a parameter

Conflicts:
t/t5516-fetch-push.sh

fix git branch -m in presence of cross devicesPierre Habouzit Wed, 7 Jul 2010 07:47:20 +0000 (09:47 +0200)

fix git branch -m in presence of cross devices

When you have for example a bare repository stored on NFS, and that you
create new workdirs locally (using contrib's git-new-workdir), logs/refs
is a symlink to a different device. Hence when the reflogs are renamed,
all must happen below logs/refs or one gets cross device rename errors
like:

git branch -m foo
error: unable to move logfile logs/refs/heads/master to tmp-renamed-log: Invalid cross-device link
fatal: Branch rename failed

The fix is hence to use logs/refs/.tmp-renamed-log as a temporary log
name, instead of just tmp-renamed-log.

Signed-off-by: Pierre Habouzit <madcoder@debian.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t/t0006: specify timezone as EST5 not EST to comply... Brandon Casey Tue, 6 Jul 2010 23:34:20 +0000 (18:34 -0500)

t/t0006: specify timezone as EST5 not EST to comply with POSIX

POSIX requires that both the timezone "standard" and "offset" be specified
in the TZ environment variable. This causes a problem on IRIX which does
not understand the timezone 'EST'.

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

do not write out index when status does not have toJunio C Hamano Wed, 7 Jul 2010 04:53:11 +0000 (21:53 -0700)

do not write out index when status does not have to

Some codepaths, such as "git status" and "git commit --dry-run",
tried to opportunisticly refresh the index and write the result
out. But they did so without checking if there was actually any
change that needs to be written out.

Noticed by Jeff King and Daniel at Rutgers.edu

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

Merge branch 'maint'Junio C Hamano Wed, 7 Jul 2010 04:29:21 +0000 (21:29 -0700)

Merge branch 'maint'

* maint:
add missing && to submodule-merge testcase
test-date: fix sscanf type conversion

add missing && to submodule-merge testcaseHeiko Voigt Tue, 6 Jul 2010 19:34:31 +0000 (21:34 +0200)

add missing && to submodule-merge testcase

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

t/README: document more test helpersJonathan Nieder Tue, 6 Jul 2010 20:04:10 +0000 (15:04 -0500)

t/README: document more test helpers

There is no documentation in t/README for test_must_fail,
test_might_fail, test_cmp, or test_when_finished.

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

Makefile: work around ksh's failure to handle missing... Brandon Casey Tue, 6 Jul 2010 21:56:51 +0000 (14:56 -0700)

Makefile: work around ksh's failure to handle missing list argument to for loop

ksh does not like it when the list argument is missing in a 'for' loop.
This can happen when NO_CURL is set which causes REMOTE_CURL_ALIASES to be
unset. In this case, the 'for' loop in the Makefile is expanded to look
like this:

for p in ; do

and ksh complains like this:

/bin/ksh: syntax error at line 15 : `;' unexpected

The existing attempt to work around this issue, introduced by 70b89f87,
tried to protect the 'for' loop by first testing whether REMOTE_CURL_ALIASES
was empty, but this does not work since, as Johannes Sixt explains, "Before
the test for emptyness can happen, the complete statement must be parsed,
but ksh finds a syntax error in the statement and, therefore, cannot even
begin to execute the statement. (ksh doesn't follow POSIX in this regard,
where this would not be a syntax error.)".

Make's $(foreach) function could be used to avoid this shell glitch, but
since it has already caused a problem once before by generating a command
line that exceeded the maximum argument list length on IRIX, let's adopt
Bruce Stephens's suggestion for working around this issue in the same way
the OpenSSL folks have done it. This solution first assigns the contents
of the REMOTE_CURL_ALIASES make variable to a shell variable and then
supplies the shell variable as the list argument in the 'for' loop. This
satisfies ksh and has the expected behavior even if $(REMOTE_CURL_ALIASES)
is empty.

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

test-date: fix sscanf type conversionJeff King Tue, 6 Jul 2010 07:54:33 +0000 (03:54 -0400)

test-date: fix sscanf type conversion

Reading into a time_t isn't portable, since we don't know
the exact type. Instead, use an unsigned long, which is what
show_date wants, anyway.

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

Merge branch 'maint'Junio C Hamano Tue, 6 Jul 2010 06:33:07 +0000 (23:33 -0700)

Merge branch 'maint'

* maint:
xdiff: optimise for no whitespace difference when ignoring whitespace.

xdiff: optimise for no whitespace difference when ignor... Dylan Reid Tue, 6 Jul 2010 03:11:17 +0000 (23:11 -0400)

xdiff: optimise for no whitespace difference when ignoring whitespace.

In xdl_recmatch, do the memcmp to check if the two lines are equal before
checking if whitespace flags are set. If the lines are identical, then
there is no need to check if they differ only in whitespace.
This makes the common case (there is no whitespace difference) faster.
It costs the case where lines are the same length and contain
whitespace differences, but the common case is more than 20% faster.

Signed-off-by: Dylan Reid <dgreid@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

rebase-i: do not get fooled by a log message ending... Junio C Hamano Tue, 6 Jul 2010 06:08:36 +0000 (23:08 -0700)

rebase-i: do not get fooled by a log message ending with backslash

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

rebase-i: style fixJunio C Hamano Tue, 6 Jul 2010 05:16:15 +0000 (22:16 -0700)

rebase-i: style fix

Case arms should align with "case" and "esac".

Do not cat a file into a pipeline; just make the downstream command
read from the file.

Having a while statement as a downstream of a pipe is fine, but
the loop should begin on its own line.

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

Documentation: link to gitrevisions rather than git... Michael J Gruber Mon, 5 Jul 2010 16:11:41 +0000 (18:11 +0200)

Documentation: link to gitrevisions rather than git-rev-parse

Currently, whenever we need documentation for revisions and ranges, we
link to the git-rev-parse man page, i.e. a plumbing man page, which has
this along with the documentation of all rev-parse modes.

Link to the new gitrevisions man page instead in all cases except
- when the actual git-rev-parse command is referred to or
- in very technical context (git-send-pack).

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

Documentation: gitrevisionsMichael J Gruber Mon, 5 Jul 2010 16:11:40 +0000 (18:11 +0200)

Documentation: gitrevisions

Create a new man page gitrevisions(7) which contains the revsions and
ranges documentation but not more. This uses (per include) the same bits
as the pertaining section of git-rev-parse(1).

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

Documentation: split off rev doc into include fileMichael J Gruber Mon, 5 Jul 2010 16:11:39 +0000 (18:11 +0200)

Documentation: split off rev doc into include file

Currently, the documentation for revisions and ranges sits in the
git-rev-parse man page, i.e. a plumbing man page, along with the
documentation of all rev-parse modes.

Split off the revisions and ranges section into an included file to
prepare for restructuring.

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

gitweb: Move evaluate_gitweb_config out of run_requestJakub Narebski Mon, 5 Jul 2010 18:52:43 +0000 (20:52 +0200)

gitweb: Move evaluate_gitweb_config out of run_request

Move evaluate_gitweb_config() and evaluate_git_version() out of
run_request() to run(), making them not run one for each request.
This changes how git behaves in FastCGI case.

This change makes it impossible to have config which changes with
request, but I don't think anyone relied on such (hidden action)
behavior.

While at it, reset timer and number of git commands at beginning of
run_request() in new reset_timer() subroutine. This fixes case when
gitweb was run using FastCGI interface: time is reported for request,
and not for single run of gitweb script. This changes slightly
behavior in non-FastCGI case: the number of git commands reported is
1 less (running `git --version` one per gitweb is not counted now).

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

parse_date: fix signedness in timezone calculationJeff King Sun, 4 Jul 2010 11:00:17 +0000 (07:00 -0400)

parse_date: fix signedness in timezone calculation

When no timezone is specified, we deduce the offset by
subtracting the result of mktime from our calculated
timestamp.

However, our timestamp is stored as an unsigned integer,
meaning we perform the subtraction as unsigned. For a
negative offset, this means we wrap to a very high number,
and our numeric timezone is in the millions of hours. You
can see this bug by doing:

$ TZ=EST \
GIT_AUTHOR_DATE='2010-06-01 10:00' \
git commit -a -m foo
$ git cat-file -p HEAD | grep author
author Jeff King <peff@peff.net> 1275404416 +119304128

Instead, we should perform this subtraction as a time_t, the
same type that mktime returns.

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

Merge branch 'maint'Junio C Hamano Mon, 5 Jul 2010 18:56:53 +0000 (11:56 -0700)

Merge branch 'maint'

* maint:
t0006: test timezone parsing
rerere.txt: Document forget subcommand
Documentation/git-gc.txt: add reference to githooks

t0006: test timezone parsingJeff King Sun, 4 Jul 2010 10:48:35 +0000 (06:48 -0400)

t0006: test timezone parsing

Previously, test-date simply ignored the parsed timezone and
told show_date() to use UTC. Instead, let's print out what
we actually parsed.

While we're at it, let's make it easy for tests to work in a specific
timezone.

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