gitweb.git
vcs-svn: add binary-safe read functionJonathan Nieder Mon, 3 Jan 2011 03:05:46 +0000 (21:05 -0600)

vcs-svn: add binary-safe read function

buffer_read_string works well for non line-oriented input except for
one problem: it does not tell the caller how many bytes were actually
written. This means that unless one is very careful about checking
for errors (and eof) the calling program cannot tell the difference
between the string "foo" followed by an early end of file and the
string "foo\0bar\0baz".

So introduce a variant that reports the length, too, a thinner wrapper
around strbuf_fread. Its result is written to a strbuf so the caller
does not need to keep track of the number of bytes read.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>

t0081 (line-buffer): add buffering testsJonathan Nieder Mon, 3 Jan 2011 01:07:16 +0000 (19:07 -0600)

t0081 (line-buffer): add buffering tests

POSIX makes the behavior of read(2) from a pipe fairly clear: a read
from an empty pipe will block until there is data available and any
other read will not block, prefering to return a partial result.
Likewise, fread(3) and fgets(3) are clearly specified to act as
though implemented by calling fgetc(3) in a simple loop. But the
buffering behavior of fgetc is less clear.

Luckily, no sane platform is going to implement fgetc by calling the
equivalent of read(2) more than once. fgetc has to be able to
return without filling its buffer to preserve errno when errors are
encountered anyway. So let's assume the simpler behavior (trust) but
add some tests to catch insane platforms that violate that when they
come (verify).

First check that fread can handle a 0-length read from an empty fifo.
Because open(O_RDONLY) blocks until the writing end is open, open the
writing end of the fifo in advance in a subshell.

Next try short inputs from a pipe that is not filled all the way.

Lastly (two tests) try very large inputs from a pipe that will not fit
in the relevant buffers. The first of these tests reads a little
more than 8192 bytes, which is BUFSIZ (the size of stdio's buffers)
on this Linux machine. The second reads a little over 64 KiB (the
pipe capacity on Linux) and is not run unless requested by setting
the GIT_REMOTE_SVN_TEST_BIG_FILES environment variable.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>

vcs-svn: tweak test-line-buffer to not assume line... Jonathan Nieder Mon, 3 Jan 2011 00:52:28 +0000 (18:52 -0600)

vcs-svn: tweak test-line-buffer to not assume line-oriented input

Do not expect an implicit newline after each input record.
Use a separate command to exercise buffer_skip_bytes.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>

tests: give vcs-svn/line_buffer its own test scriptJonathan Nieder Mon, 3 Jan 2011 00:51:07 +0000 (18:51 -0600)

tests: give vcs-svn/line_buffer its own test script

Split the line_buffer test into small pieces and move it to its
own file as preparation for adding more tests.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>

vcs-svn: make test-line-buffer input format more flexibleJonathan Nieder Mon, 3 Jan 2011 00:50:16 +0000 (18:50 -0600)

vcs-svn: make test-line-buffer input format more flexible

Imitate the input format of test-obj-pool to support arbitrary
sequences of commands rather than alternating read/copy. This should
make it easier to add tests that exercise other line_buffer functions.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>

vcs-svn: teach line_buffer to handle multiple input... Jonathan Nieder Mon, 11 Oct 2010 02:41:06 +0000 (21:41 -0500)

vcs-svn: teach line_buffer to handle multiple input files

Collect the line_buffer state in a newly public line_buffer struct.
Callers can use multiple line_buffers to manage input from multiple
files at a time.

svn-fe's delta applier will use this to stream a delta from svnrdump
and the preimage it applies to from fast-import at the same time.

The tests don't take advantage of the new features, but I think that's
okay. It is easier to find lingering examples of nonreentrant code by
searching for "static" in line_buffer.c.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>

vcs-svn: collect line_buffer data in a structJonathan Nieder Mon, 11 Oct 2010 02:39:21 +0000 (21:39 -0500)

vcs-svn: collect line_buffer data in a struct

Prepare for the line_buffer lib to support input from multiple files,
by collecting global state in a struct that can be easily passed
around.

No API change yet.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>

vcs-svn: replace buffer_read_string memory pool with... Jonathan Nieder Sat, 6 Nov 2010 17:01:28 +0000 (12:01 -0500)

vcs-svn: replace buffer_read_string memory pool with a strbuf

obj_pool is inherently global and does not use the standard growing
factor alloc_nr, which makes it feel out of place in the git codebase.
Plus it is overkill for this application: all that is needed is a
buffer that can grow between requests to accomodate larger strings.
Use a strbuf instead.

As a side effect, this improves the error handling: allocation
failures will result in a clean exit instead of segfaults. It would
be nice to add a test case (using ulimit or failmalloc) but that can
wait for another day.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>

vcs-svn: eliminate global byte_bufferJonathan Nieder Mon, 11 Oct 2010 02:37:10 +0000 (21:37 -0500)

vcs-svn: eliminate global byte_buffer

The data stored in byte_buffer[] is always either discarded or
written to stdout immediately. No need for it to persist between
function calls.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>

fast-import: add 'ls' commandDavid Barr Thu, 2 Dec 2010 10:40:20 +0000 (21:40 +1100)

fast-import: add 'ls' command

Lazy fast-import frontend authors that want to rely on the backend to
keep track of the content of the imported trees _almost_ have what
they need in the 'cat-blob' command (v1.7.4-rc0~30^2~3, 2010-11-28).
But it is not quite enough, since

(1) cat-blob can be used to retrieve the content of files, but
not their mode, and

(2) using cat-blob requires the frontend to keep track of a name
(mark number or object id) for each blob to be retrieved

Introduce an 'ls' command to complement cat-blob and take care of the
remaining needs. The 'ls' command finds what is at a given path
within a given tree-ish (tag, commit, or tree):

'ls' SP <dataref> SP <path> LF

or in fast-import's active commit:

'ls' SP <path> LF

The response is a single line sent through the cat-blob channel,
imitating ls-tree output. So for example:

FE> ls :1 Documentation
gfi> 040000 tree 9e6c2b599341d28a2a375f8207507e0a2a627fe9 Documentation
FE> ls 9e6c2b599341d28a2a375f8207507e0a2a627fe9 git-fast-import.txt
gfi> 100644 blob 4f92954396e3f0f97e75b6838a5635b583708870 git-fast-import.txt
FE> ls :1 RelNotes
gfi> 120000 blob b942e499449d97aeb50c73ca2bdc1c6e6d528743 RelNotes
FE> cat-blob b942e499449d97aeb50c73ca2bdc1c6e6d528743
gfi> b942e499449d97aeb50c73ca2bdc1c6e6d528743 blob 32
gfi> Documentation/RelNotes/1.7.4.txt

The most interesting parts of the reply are the first word, which is
a 6-digit octal mode (regular file, executable, symlink, directory,
or submodule), and the part from the second space to the tab, which is
a <dataref> that can be used in later cat-blob, ls, and filemodify (M)
commands to refer to the content (blob, tree, or commit) at that path.

If there is nothing there, the response is "missing some/path".

The intent is for this command to be used to read files from the
active commit, so a frontend can apply patches to them, and to copy
files and directories from previous revisions.

For example, proposed updates to svn-fe use this command in place of
its internal representation of the repository directory structure.
This simplifies the frontend a great deal and means support for
resuming an import in a separate fast-import run (i.e., incremental
import) is basically free.

Signed-off-by: David Barr <david.barr@cordelta.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Improved-by: Junio C Hamano <gitster@pobox.com>
Improved-by: Sverre Rabbelier <srabbelier@gmail.com>

update-index --refresh --porcelain: add missing constJonathan Nieder Tue, 22 Feb 2011 22:43:23 +0000 (22:43 +0000)

update-index --refresh --porcelain: add missing const

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

checkout: add missing const to describe_detached_headJonathan Nieder Tue, 22 Feb 2011 22:43:22 +0000 (22:43 +0000)

checkout: add missing const to describe_detached_head

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

Merge branch 'maint'Junio C Hamano Tue, 22 Feb 2011 06:46:09 +0000 (22:46 -0800)

Merge branch 'maint'

* maint:
Documentation: clarify -u<mode> option defaults

Documentation: clarify -u<mode> option defaultsClemens Buchacher Mon, 21 Feb 2011 20:05:25 +0000 (21:05 +0100)

Documentation: clarify -u<mode> option defaults

Signed-off-by: Clemens Buchacher <drizzd@aon.at>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'maint'Junio C Hamano Tue, 22 Feb 2011 01:20:11 +0000 (17:20 -0800)

Merge branch 'maint'

* maint:
t/t7500-commit.sh: use test_cmp instead of test
t/gitweb-lib.sh: Ensure that errors are shown for --debug --immediate
gitweb/gitweb.perl: don't call S_ISREG() with undef
gitweb/gitweb.perl: remove use of qw(...) as parentheses

t/t7500-commit.sh: use test_cmp instead of testÆvar Arnfjörð Bjarmason Sat, 19 Feb 2011 18:29:09 +0000 (18:29 +0000)

t/t7500-commit.sh: use test_cmp instead of test

Change commit_msg_is() in t/t7500-commit.sh to use test_cmp instead of
the shell's test function. Now if a test fails we'll get test_cmp
output showing us what failed.

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

t/gitweb-lib.sh: Ensure that errors are shown for ... Ævar Arnfjörð Bjarmason Sat, 19 Feb 2011 18:16:19 +0000 (19:16 +0100)

t/gitweb-lib.sh: Ensure that errors are shown for --debug --immediate

Because '--immediate' stops test suite after first error, therefore in
this mode

test_debug 'cat gitweb.log'

was never ran, thus in effect negating effect of '--debug' option.
This made finidng the cause of errors in gitweb test sute difficult.

Modify the gitweb_run test subroutine to run test_debug itself in the
case of errors (and also remove "test_debug 'cat gitweb.log'" from
gitweb tests).

This makes it possible to run *gitweb tests* with --immediate ---debug
combination of options; also it makes gitweb tests to not output
spurious debug data that is not considered error.

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

gitweb/gitweb.perl: don't call S_ISREG() with undefÆvar Arnfjörð Bjarmason Sat, 19 Feb 2011 15:27:42 +0000 (15:27 +0000)

gitweb/gitweb.perl: don't call S_ISREG() with undef

Change S_ISREG($to_mode_oct) to S_ISREG($from_mode_oct) in the branch
that handles from modes, not to modes. This logic appears to have been
caused by copy/paste programming by Jakub Narebski in e8e41a93. It
would be better to rewrite this code not to be duplicated, but I
haven't done so.

This issue caused a failing test on perl 5.13.9, which has a warning
that turned this up:

gitweb.perl: Use of uninitialized value in subroutine entry at /home/avar/g/git/t/../gitweb/gitweb.perl line 4415.

Which caused the Git test suite to fail on this test:

./t9500-gitweb-standalone-no-errors.sh (Wstat: 256 Tests: 90 Failed: 84)
Failed tests: 1-8, 10-36, 38-45, 47-48, 50-88
Non-zero exit status: 1

Reported-by: perl 5.13.9
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Acked-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

gitweb/gitweb.perl: remove use of qw(...) as parenthesesÆvar Arnfjörð Bjarmason Sat, 19 Feb 2011 15:27:41 +0000 (15:27 +0000)

gitweb/gitweb.perl: remove use of qw(...) as parentheses

Using the qw(...) construct as implicit parentheses was deprecated in
perl 5.13.5. Change the relevant code in gitweb to not use the
deprecated construct. The offending code was introduced in 3562198b by
Jakub Narebski.

The issue is that perl will now warn about this:

$ perl -wE 'for my $i qw(a b) { say $i }'
Use of qw(...) as parentheses is deprecated at -e line 1.
a
b

This caused gitweb.perl to warn on perl 5.13.5 and above, and these
tests to fail on those perl versions:

./t9501-gitweb-standalone-http-status.sh (Wstat: 256 Tests: 11 Failed: 10)
Failed tests: 2-11
Non-zero exit status: 1
./t9502-gitweb-standalone-parse-output.sh (Wstat: 256 Tests: 10 Failed: 9)
Failed tests: 2-10
Non-zero exit status: 1

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

Merge branch 'maint'Junio C Hamano Wed, 16 Feb 2011 22:33:22 +0000 (14:33 -0800)

Merge branch 'maint'

* maint:
parse_tag_buffer(): do not prefixcmp() out of range

Merge branch 'maint-1.7.3' into maintJunio C Hamano Wed, 16 Feb 2011 22:33:11 +0000 (14:33 -0800)

Merge branch 'maint-1.7.3' into maint

* maint-1.7.3:

Merge branch 'maint-1.7.2' into maint-1.7.3Junio C Hamano Wed, 16 Feb 2011 22:32:59 +0000 (14:32 -0800)

Merge branch 'maint-1.7.2' into maint-1.7.3

* maint-1.7.2:
fast-import: introduce "feature notes" command
fast-import: clarify documentation of "feature" command

Merge branch 'maint-1.7.1' into maint-1.7.2Junio C Hamano Wed, 16 Feb 2011 22:32:54 +0000 (14:32 -0800)

Merge branch 'maint-1.7.1' into maint-1.7.2

* maint-1.7.1:
fast-import: introduce "feature notes" command
fast-import: clarify documentation of "feature" command

Merge branch 'maint-1.7.0' into maint-1.7.1Junio C Hamano Wed, 16 Feb 2011 22:32:47 +0000 (14:32 -0800)

Merge branch 'maint-1.7.0' into maint-1.7.1

* maint-1.7.0:
fast-import: introduce "feature notes" command
fast-import: clarify documentation of "feature" command

parse_tag_buffer(): do not prefixcmp() out of rangeNguyễn Thái Ngọc Duy Mon, 14 Feb 2011 13:02:51 +0000 (20:02 +0700)

parse_tag_buffer(): do not prefixcmp() out of range

There is a check (size < 64) at the beginning of the function, but
that only covers object+type lines.

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

Merge branch 'maint'Junio C Hamano Tue, 15 Feb 2011 19:03:22 +0000 (11:03 -0800)

Merge branch 'maint'

* maint:
pull: do not display fetch usage on --help-all
git-tag.txt: list all modes in the description
commit,status: describe -u likewise
add: describe --patch like checkout, reset
commit,merge,tag: describe -m likewise
clone,init: describe --template using the same wording
commit,status: describe --porcelain just like push
commit,tag: use same wording for -F
configure: use AC_LANG_PROGRAM consistently
string_list_append: always set util pointer to NULL
correct type of EMPTY_TREE_SHA1_BIN

pull: do not display fetch usage on --help-allMichael J Gruber Mon, 14 Feb 2011 16:48:08 +0000 (17:48 +0100)

pull: do not display fetch usage on --help-all

Currently, "git pull --help-all" displays the fetch usage info.

Make it equivalent to "git pull -h" instead since "--help-all" is
documented in gitcli(7).

Do not try to sanitize the pull option parser (aka last hair puller).

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

git-tag.txt: list all modes in the descriptionMichael J Gruber Tue, 15 Feb 2011 13:09:10 +0000 (14:09 +0100)

git-tag.txt: list all modes in the description

Currently, the description sounds as if it applied always, but most of
its content is true in "create tag mode" only.

Make this clearer by listing all modes upfront.

Also, sneak in some linguistic improvements and make it clearer that
lightweight tags are "created" because "written" may be misread as
"are output".

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

commit,status: describe -u likewiseMichael J Gruber Tue, 15 Feb 2011 13:09:09 +0000 (14:09 +0100)

commit,status: describe -u likewise

They differ by one character only. Being exactly equal should help
translations.

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

add: describe --patch like checkout, resetMichael J Gruber Tue, 15 Feb 2011 13:09:08 +0000 (14:09 +0100)

add: describe --patch like checkout, reset

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

commit,merge,tag: describe -m likewiseMichael J Gruber Tue, 15 Feb 2011 13:09:07 +0000 (14:09 +0100)

commit,merge,tag: describe -m likewise

This also removes the superfluous "specify" and rewords the misleading
"if any" which sounds as if omitting "-m" would omit the merge commit
message. (It means "if a merge commit is created at all".)

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

clone,init: describe --template using the same wordingMichael J Gruber Tue, 15 Feb 2011 13:09:06 +0000 (14:09 +0100)

clone,init: describe --template using the same wording

This also corrects a wrong description for clone.

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

commit,status: describe --porcelain just like pushMichael J Gruber Tue, 15 Feb 2011 13:09:05 +0000 (14:09 +0100)

commit,status: describe --porcelain just like push

Push has the clearer description, so take that one for all.

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

commit,tag: use same wording for -FMichael J Gruber Tue, 15 Feb 2011 13:09:04 +0000 (14:09 +0100)

commit,tag: use same wording for -F

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

Revert "unpack_trees(): skip trees that are the same... Junio C Hamano Tue, 15 Feb 2011 18:47:04 +0000 (10:47 -0800)

Revert "unpack_trees(): skip trees that are the same in all input"

This reverts commit 83c90314aa27ae3768c04375d02e4f3fb12b726d, which
seems to have broken merge to report conflicts when there should be
none.

configure: use AC_LANG_PROGRAM consistentlyRalf Wildenhues Sun, 2 Jan 2011 10:24:55 +0000 (11:24 +0100)

configure: use AC_LANG_PROGRAM consistently

Avoid warnings from Autoconf 2.68 about missing use of AC_LANG_PROGRAM
and friends.

Quoting autoconf-2.68/NEWS:

** The macros AC_PREPROC_IFELSE, AC_COMPILE_IFELSE, AC_LINK_IFELSE, and
AC_RUN_IFELSE now warn if the first argument failed to use
AC_LANG_SOURCE or AC_LANG_PROGRAM to generate the conftest file
contents. A new macro AC_LANG_DEFINES_PROVIDED exists if you have
a compelling reason why you cannot use AC_LANG_SOURCE but must
avoid the warning.

The underlying reason for that change is that AC_LANG_{SOURCE,PROGRAM}
take care to supply the previously computed set of #defines (and
include standard headers if so desired) for preprocessed languages
like C and C++.

In some cases, AC_LANG_PROGRAM is already used but not sufficiently
m4-quoted, so we just need to add another set of [quotes] to prevent
the autoconf warning from being triggered bogusly. Quoting all
arguments (except when calling special macros that need to be expanded
before recursion) is better style, anyway. These and more rules are
described in detail in 'info Autoconf "Programming in M4"'.

No change in the resulting config.mak.autogen after running
./configure intended.

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

string_list_append: always set util pointer to NULLJeff King Sat, 12 Feb 2011 05:18:51 +0000 (00:18 -0500)

string_list_append: always set util pointer to NULL

It is not immediately obvious that the util field may
contain random bytes after appending an item. Especially
since the string_list_insert* functions _do_ explicitly zero
the util pointer.

This does not appear to be a bug in any current git code, as
all callers either fill in the util field immediately or
never use it. However, it is worth it to be less surprising
to new users of the string-list API who may expect it to be
intialized to NULL.

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

correct type of EMPTY_TREE_SHA1_BINJonathan Nieder Mon, 7 Feb 2011 08:17:27 +0000 (02:17 -0600)

correct type of EMPTY_TREE_SHA1_BIN

Functions such as hashcmp that expect a binary SHA-1 value take
parameters of type "unsigned char *" to avoid accepting a textual
SHA-1 passed by mistake. Unfortunately, this means passing the string
literal EMPTY_TREE_SHA1_BIN requires an ugly cast. Tweak the
definition of EMPTY_TREE_SHA1_BIN to produce a value of more
convenient type.

In the future the definition might change to

extern const unsigned char empty_tree_sha1_bin[20];
#define EMPTY_TREE_SHA1_BIN empty_tree_sha1_bin

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

Obey p4 views when using client specIan Wienand Sat, 12 Feb 2011 00:33:48 +0000 (16:33 -0800)

Obey p4 views when using client spec

When using the p4 client spec, this attempts to obey the client's
output preferences.

For example, a view like

//depot/foo/branch/... //client/branch/foo/...
//depot/bar/branch/... //client/branch/bar/...

will result in a directory layout in the git tree of

branch/
branch/foo
branch/bar

p4 can do various other reordering that this change doesn't support,
but we should detect it and at least fail nicely.

Signed-off-by: Ian Wienand <ianw@vmware.com>
Acked-by: Pete Wyckoff <pw@padd.com>
Acked-by: Tor Arvid Lund <torarvid@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

gitignore: add test-mktemp to ignore listÆvar Arnfjörð Bjarmason Sat, 12 Feb 2011 23:21:17 +0000 (23:21 +0000)

gitignore: add test-mktemp to ignore list

Change the .gitignore to ignore test-mktemp which is built from
test-mktemp.c. Arnout Engelen added this in 6cf6bb3 (Improve error
messages when temporary file creation fails, 2010-12-18) but forgot
to add a corresponding entry to .gitignore.

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

repo-config: add deprecation warningRené Scharfe Sat, 12 Feb 2011 13:24:10 +0000 (14:24 +0100)

repo-config: add deprecation warning

repo-config was deprecated in 5c66d0d4 on 2008-01-17. Warn the
remaining users that it has been replaced by config and is going to
be removed eventually.

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

Merge branch 'maint'Junio C Hamano Sat, 12 Feb 2011 00:01:47 +0000 (16:01 -0800)

Merge branch 'maint'

* maint:
Git 1.7.4.1
clone: fixup recurse_submodules option
svn-fe: warn about experimental status

Conflicts:
contrib/examples/git-revert.sh
contrib/svn-fe/svn-fe.txt

Git 1.7.4.1 v1.7.4.1Junio C Hamano Fri, 11 Feb 2011 22:39:55 +0000 (14:39 -0800)

Git 1.7.4.1

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

Merge branch 'jc/fsck-fixes' into maintJunio C Hamano Fri, 11 Feb 2011 22:26:10 +0000 (14:26 -0800)

Merge branch 'jc/fsck-fixes' into maint

* jc/fsck-fixes:
fsck: do not give up too early in fsck_dir()
fsck: drop unused parameter from traverse_one_object()

clone: fixup recurse_submodules optionChris Packham Thu, 10 Feb 2011 22:59:31 +0000 (11:59 +1300)

clone: fixup recurse_submodules option

The recurse_submodules option was added in ccdd3da6 to bring 'git clone'
into line with 'git fetch' and future commands. The correct option should
have been "recurse-submodules".

Signed-off-by: Chris Packham <judge.packham@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

svn-fe: warn about experimental statusJonathan Nieder Fri, 11 Feb 2011 10:36:44 +0000 (04:36 -0600)

svn-fe: warn about experimental status

svn-fe is young and some coming cleanups might involve backward
incompatible UI changes. Add some words of warning to the manual so
early adopters that are not following the project closely don't get
burned.

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

Merge branch 'maint'Junio C Hamano Thu, 10 Feb 2011 22:45:55 +0000 (14:45 -0800)

Merge branch 'maint'

* maint:
compat: helper for detecting unsigned overflow

compat: helper for detecting unsigned overflowJonathan Nieder Mon, 11 Oct 2010 02:59:26 +0000 (21:59 -0500)

compat: helper for detecting unsigned overflow

The idiom (a + b < a) works fine for detecting that an unsigned
integer has overflowed, but a more explicit

unsigned_add_overflows(a, b)

might be easier to read.

Define such a macro, expanding roughly to ((a) < UINT_MAX - (b)).
Because the expansion uses each argument only once outside of sizeof()
expressions, it is safe to use with arguments that have side effects.

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

Merge branch 'tr/merge-unborn-clobber'Junio C Hamano Thu, 10 Feb 2011 00:41:17 +0000 (16:41 -0800)

Merge branch 'tr/merge-unborn-clobber'

* tr/merge-unborn-clobber:
Exhibit merge bug that clobbers index&WT

Conflicts:
t/t7607-merge-overwrite.sh

Merge branch 'jc/unpack-trees'Junio C Hamano Thu, 10 Feb 2011 00:41:17 +0000 (16:41 -0800)

Merge branch 'jc/unpack-trees'

* jc/unpack-trees:
unpack_trees(): skip trees that are the same in all input
unpack-trees.c: cosmetic fix

Conflicts:
unpack-trees.c

Merge branch 'jc/fsck-fixes'Junio C Hamano Thu, 10 Feb 2011 00:41:17 +0000 (16:41 -0800)

Merge branch 'jc/fsck-fixes'

* jc/fsck-fixes:
fsck: do not give up too early in fsck_dir()
fsck: drop unused parameter from traverse_one_object()

Merge branch 'tr/diff-words-test'Junio C Hamano Thu, 10 Feb 2011 00:41:17 +0000 (16:41 -0800)

Merge branch 'tr/diff-words-test'

* tr/diff-words-test:
t4034 (diff --word-diff): add a minimum Perl drier test vector
t4034 (diff --word-diff): style suggestions
userdiff: simplify word-diff safeguard
t4034: bulk verify builtin word regex sanity

Merge branch 'rr/fi-import-marks-if-exists'Junio C Hamano Thu, 10 Feb 2011 00:41:16 +0000 (16:41 -0800)

Merge branch 'rr/fi-import-marks-if-exists'

* rr/fi-import-marks-if-exists:
fast-import: Introduce --import-marks-if-exists

Merge branch 'jn/unpack-lstat-failure-report'Junio C Hamano Thu, 10 Feb 2011 00:41:16 +0000 (16:41 -0800)

Merge branch 'jn/unpack-lstat-failure-report'

* jn/unpack-lstat-failure-report:
unpack-trees: handle lstat failure for existing file
unpack-trees: handle lstat failure for existing directory

Merge branch 'ef/alias-via-run-command'Junio C Hamano Thu, 10 Feb 2011 00:41:16 +0000 (16:41 -0800)

Merge branch 'ef/alias-via-run-command'

* ef/alias-via-run-command:
alias: use run_command api to execute aliases

Merge branch 'cb/setup'Junio C Hamano Thu, 10 Feb 2011 00:41:16 +0000 (16:41 -0800)

Merge branch 'cb/setup'

* cb/setup:
setup: translate symlinks in filename when using absolute paths

Merge branch 'ae/better-template-failure-report'Junio C Hamano Thu, 10 Feb 2011 00:41:16 +0000 (16:41 -0800)

Merge branch 'ae/better-template-failure-report'

* ae/better-template-failure-report:
Improve error messages when temporary file creation fails

Merge branch 'jn/cherry-pick-strategy-option'Junio C Hamano Thu, 10 Feb 2011 00:41:16 +0000 (16:41 -0800)

Merge branch 'jn/cherry-pick-strategy-option'

* jn/cherry-pick-strategy-option:
cherry-pick/revert: add support for -X/--strategy-option

Merge branch 'maint-1.7.0' into maintJunio C Hamano Thu, 10 Feb 2011 00:40:12 +0000 (16:40 -0800)

Merge branch 'maint-1.7.0' into maint

* maint-1.7.0:
fast-import: introduce "feature notes" command
fast-import: clarify documentation of "feature" command

Conflicts:
Documentation/git-fast-import.txt

fast-import: introduce "feature notes" commandJonathan Nieder Wed, 9 Feb 2011 22:43:57 +0000 (16:43 -0600)

fast-import: introduce "feature notes" command

Here is a 'feature' command for streams to use to require support for
the notemodify (N) command.

When the 'feature' facility was introduced (v1.7.0-rc0~95^2~4,
2009-12-04), the notes import feature was old news (v1.6.6-rc0~21^2~8,
2009-10-09) and it was not obvious it deserved to be a named feature.
But now that is clear, since all major non-git fast-import backends
lack support for it.

Details: on git version with this patch applied, any "feature notes"
command in the features/options section at the beginning of a stream
will be treated as a no-op. On fast-import implementations without
the feature (and older git versions), the command instead errors out
with a message like

This version of fast-import does not support feature notes.

So by declaring use of notes at the beginning of a stream, frontends
can avoid wasting time and other resources when the backend does not
support notes. (This would be especially important for backends that
do not support rewinding history after a botched import.)

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

fast-import: clarify documentation of "feature" commandJonathan Nieder Sun, 28 Nov 2010 19:43:57 +0000 (13:43 -0600)

fast-import: clarify documentation of "feature" command

The "feature" command allows streams to specify options for the import
that must not be ignored. Logically, they are part of the stream,
even though technically most supported features are synonyms to
command-line options.

Make this more obvious by being more explicit about how the analogy
between most "feature" commands and command-line options works. Treat
the feature (import-marks) that does not fit this analogy separately.

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

Documentation/merge subtree How-To: fix typoUwe Kleine-König Wed, 9 Feb 2011 09:04:43 +0000 (10:04 +0100)

Documentation/merge subtree How-To: fix typo

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

pull: Document the "--[no-]recurse-submodules" optionsJens Lehmann Mon, 7 Feb 2011 22:24:54 +0000 (23:24 +0100)

pull: Document the "--[no-]recurse-submodules" options

In commits be254a0ea9 and 7dce19d374 the handling of the new fetch options
"--[no-]recurse-submodules" had been added to git-pull.sh. But they were
not documented as the pull options they now are, so let's fix that.

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

quote.h: simplify the inclusionJonathan Nieder Wed, 5 Jan 2011 00:36:34 +0000 (18:36 -0600)

quote.h: simplify the inclusion

Attempting to include quote.h without first including strbuf.h results
in warnings:

./quote.h:33:33: warning: ‘struct strbuf’ declared inside parameter list
./quote.h:33:33: warning: its scope is only this definition or declaration, which is probably not what you want
./quote.h:34:34: warning: ‘struct strbuf’ declared inside parameter list
...

Add a toplevel declaration for struct strbuf to avoid this.

While at it, stop including system headers from quote.h. git source
files already need to include git-compat-util.h sooner to ensure the
appropriate feature test macros are defined.

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

sha1_object_info: examine cached_object store tooNguyễn Thái Ngọc Duy Sat, 5 Feb 2011 14:03:02 +0000 (21:03 +0700)

sha1_object_info: examine cached_object store too

Cached object store was added in d66b37b (Add pretend_sha1_file()
interface. - 2007-02-04) as a way to temporarily inject some objects
to object store.

But only read_sha1_file() knows about this store. While it will return
an object from this store, sha1_object_info() will happily say
"object not found".

Teach sha1_object_info() about the cached store for consistency.

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

sha1_file.c: move find_cached_object up so sha1_object_... Nguyễn Thái Ngọc Duy Sat, 5 Feb 2011 14:03:01 +0000 (21:03 +0700)

sha1_file.c: move find_cached_object up so sha1_object_info can use it

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

Add const to parse_{commit,tag}_buffer()Nguyễn Thái Ngọc Duy Sat, 5 Feb 2011 10:52:20 +0000 (17:52 +0700)

Add const to parse_{commit,tag}_buffer()

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

diff: support --cached on unborn branchesNguyễn Thái Ngọc Duy Thu, 3 Feb 2011 06:23:34 +0000 (13:23 +0700)

diff: support --cached on unborn branches

"git diff --cached" (without revision) used to mean "git diff --cached
HEAD" (i.e. the user was too lazy to type HEAD). This "correctly"
failed when there was no commit yet. But was that correctness useful?

This patch changes the definition of what particular command means.
It is a request to show what _would_ be committed without further "git
add". The internal implementation is the same "git diff --cached HEAD"
when HEAD exists, but when there is no commit yet, it compares the index
with an empty tree object to achieve the desired result.

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

gitweb: Mention optional Perl modules in INSTALLJakub Narebski Thu, 3 Feb 2011 23:20:48 +0000 (00:20 +0100)

gitweb: Mention optional Perl modules in INSTALL

Some optional additional Perl modules are required for some of extra
features. Mention those in gitweb/INSTALL.

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

post-receive-email: suppress error if description file... Sitaram Chamarty Thu, 3 Feb 2011 01:00:32 +0000 (06:30 +0530)

post-receive-email: suppress error if description file missing

Signed-off-by: Sitaram Chamarty <sitaramc@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t7407: fix line endings for mingw buildPat Thoyts Thu, 3 Feb 2011 15:31:44 +0000 (15:31 +0000)

t7407: fix line endings for mingw build

Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t4120-apply-popt: help systems with core.filemode=falseJohannes Sixt Thu, 3 Feb 2011 15:31:43 +0000 (15:31 +0000)

t4120-apply-popt: help systems with core.filemode=false

A test case verifies that filemode-only patches work as expected. Help
systems where "test -x" does not work by applying the test patch also to
the index, where the effects can be verified even on such systems.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t3509: use unconstrained initial test to setup repository.Pat Thoyts Thu, 3 Feb 2011 15:31:42 +0000 (15:31 +0000)

t3509: use unconstrained initial test to setup repository.

The first test did not run on msysGit due to the SYMLINKS constraint and
so subsequent tests failed because the test repository was not initialized.

Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

start_command: flush buffers in the WIN32 code path... Johannes Sixt Fri, 4 Feb 2011 08:41:58 +0000 (09:41 +0100)

start_command: flush buffers in the WIN32 code path as well

The POSIX code path did The Right Thing already, but we have to do the same
on Windows.

This bug caused failures in t5526-fetch-submodules, where the output of
'git fetch --recurse-submodules' was in the wrong order.

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

bundle: Use OFS_DELTA in bundle filesShawn O. Pearce Sun, 6 Feb 2011 00:58:53 +0000 (16:58 -0800)

bundle: Use OFS_DELTA in bundle files

git-bundle first appeared in 2e0afafe ("Add git-bundle") in Feb 2007,
and first shipped in Git 1.5.1.

However, OFS_DELTA is an even earlier invention, coming about in
eb32d236 ("introduce delta objects with offset to base") in Sep 2006,
and first shipped in Git 1.4.4.5.

OFS_DELTA is smaller, about 3.2%-5% smaller, and is typically faster
to access than REF_DELTA because the exact location of the delta base
is available after parsing the object header. Since all bundle aware
versions of Git are also OFS_DELTA aware, just make it the default.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Acked-by: Nicolas Pitre <nico@fluxnic.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'jl/fetch-submodule-recursive' into maintJunio C Hamano Mon, 31 Jan 2011 18:05:57 +0000 (10:05 -0800)

Merge branch 'jl/fetch-submodule-recursive' into maint

* jl/fetch-submodule-recursive:
t5526: Fix wrong argument order in "git config"

t5526: Fix wrong argument order in "git config"Jens Lehmann Mon, 31 Jan 2011 16:51:25 +0000 (17:51 +0100)

t5526: Fix wrong argument order in "git config"

This fixes a typo where the "git config" arguments "-f" and "--unset" were
swapped leading to the creation of a "--unset" file.

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

Git 1.7.4 v1.7.4Junio C Hamano Sun, 30 Jan 2011 19:53:13 +0000 (11:53 -0800)

Git 1.7.4

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

fsck: do not give up too early in fsck_dir()Junio C Hamano Wed, 26 Jan 2011 21:01:54 +0000 (13:01 -0800)

fsck: do not give up too early in fsck_dir()

When there is a random garbage file whose name happens to be 38-byte
long in a .git/objects/??/ directory, the loop terminated prematurely
without marking all the other files that it hasn't checked in the
readdir() loop.

Treat such a file just like any other garbage file, and do not break out
of the readdir() loop.

While at it, replace repeated sprintf() calls to a single one outside the
loop.

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

fsck: drop unused parameter from traverse_one_object()Junio C Hamano Wed, 26 Jan 2011 20:46:55 +0000 (12:46 -0800)

fsck: drop unused parameter from traverse_one_object()

Also add comments to seemingly unsafe pointer dereferences, that
are all safe.

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

Don't pass "--xhtml" to hightlight in gitweb.perl script.Adam Tkac Thu, 27 Jan 2011 12:51:51 +0000 (13:51 +0100)

Don't pass "--xhtml" to hightlight in gitweb.perl script.

The "--xhtml" option is supported only in highlight < 3.0. There is no option
to enforce (X)HTML output format compatible with both highlight < 3.0 and
highlight >= 3.0. However default output format is HTML so we don't need to
explicitly specify it.

Signed-off-by: Adam Tkac <atkac@redhat.com>
Helped-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'maint'Junio C Hamano Thu, 27 Jan 2011 18:27:49 +0000 (10:27 -0800)

Merge branch 'maint'

* maint:
rebase -i: clarify in-editor documentation of "exec"
tests: sanitize more git environment variables
fast-import: treat filemodify with empty tree as delete
rebase: give a better error message for bogus branch
rebase: use explicit "--" with checkout

Conflicts:
t/t9300-fast-import.sh

rebase -i: clarify in-editor documentation of "exec"Jonathan Nieder Fri, 21 Jan 2011 00:36:24 +0000 (18:36 -0600)

rebase -i: clarify in-editor documentation of "exec"

The hints in the current "instruction sheet" template look like so:

# Rebase 3f14246..a1d7e01 onto 3f14246
#
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
# x <cmd>, exec <cmd> = Run a shell command <cmd>, and stop if it fails
#
# If you remove a line here THAT COMMIT WILL BE LOST.
# However, if you remove everything, the rebase will be aborted.
#

This does not make it clear that the format of each line is

<insn> <commit id> <explanatory text that will be printed>

but the reader will probably infer that from the automatically
generated pick examples above it.

What about the "exec" instruction? By analogy, I might imagine that
the format of that line is "exec <command> <explanatory text>", and
the "x <cmd>" hint does not address that question (at first I read it
as taking an argument <cmd> that is the name of a shell). Meanwhile,
the mention of <cmd> makes the hints harder to scan as a table.

So remove the <cmd> and add some words to remind the reader that
"exec" runs a command named by the rest of the line. To make room, it
is left to the manpage to explain that that command is run using
$SHELL and that nonzero status from that command will pause the
rebase.

Wording from Junio.

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

tests: sanitize more git environment variablesJeff King Wed, 26 Jan 2011 20:33:32 +0000 (15:33 -0500)

tests: sanitize more git environment variables

These variables should generally not be set in one's
environment, but they do get set by rebase, which means
doing an interactive rebase like:

pick abcd1234 foo
exec make test

will cause false negatives in the test suite.

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

Merge branch 'jn/fast-import-empty-tree-removal' into... Junio C Hamano Thu, 27 Jan 2011 18:23:53 +0000 (10:23 -0800)

Merge branch 'jn/fast-import-empty-tree-removal' into maint

* jn/fast-import-empty-tree-removal:
fast-import: treat filemodify with empty tree as delete

fast-import: treat filemodify with empty tree as deleteJonathan Nieder Thu, 27 Jan 2011 06:07:49 +0000 (00:07 -0600)

fast-import: treat filemodify with empty tree as delete

Normal git processes do not allow one to build a tree with an empty
subtree entry without trying hard at it. This is in keeping with the
general UI philosophy: git tracks content, not empty directories.

v1.7.3-rc0~75^2 (2010-06-30) changed that by making it easy to include
an empty subtree in fast-import's active commit:

M 040000 4b825dc642cb6eb9a060e54bf8d69288fbee4904 subdir

One can trigger this by reading an empty tree (for example, the tree
corresponding to an empty root commit) and trying to move it to a
subtree. It is better and more closely analogous to 'git read-tree
--prefix' to treat such commands as requests to remove the subtree.

Noticed-by: David Barr <david.barr@cordelta.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

rebase: give a better error message for bogus branchJeff King Thu, 27 Jan 2011 00:27:11 +0000 (19:27 -0500)

rebase: give a better error message for bogus branch

When you give a non-existent branch to git-rebase, it spits
out the usage. This can be confusing, since you may
understand the usage just fine, but simply have made a
mistake in the branch name.

Before:

$ git rebase origin bogus
Usage: git rebase ...

After:

$ git rebase origin bogus
fatal: no such branch: bogus
Usage: git rebase ...

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

rebase: use explicit "--" with checkoutJeff King Thu, 27 Jan 2011 00:26:59 +0000 (19:26 -0500)

rebase: use explicit "--" with checkout

In the case of a ref/pathname conflict, checkout will
already do the right thing and checkout the ref. However,
for a non-existant ref, this has two advantages:

1. If a file with that pathname exists, rebase will
refresh the file from the index and then rebase the
current branch instead of producing an error.

2. If no such file exists, the error message using an
explicit "--" is better:

# before
$ git rebase -i origin bogus
error: pathspec 'bogus' did not match any file(s) known to git.
Could not checkout bogus

# after
$ git rebase -i origin bogus
fatal: invalid reference: bogus
Could not checkout bogus

The problems seem to be trigger-able only through "git
rebase -i", as regular git-rebase checks the validity of the
branch parameter as a ref very early on. However, it doesn't
hurt to be defensive.

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

Git 1.7.4-rc3 v1.7.4-rc3Junio C Hamano Mon, 24 Jan 2011 19:00:00 +0000 (11:00 -0800)

Git 1.7.4-rc3

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

Merge branch 'as/userdiff-pascal'Junio C Hamano Mon, 24 Jan 2011 18:54:12 +0000 (10:54 -0800)

Merge branch 'as/userdiff-pascal'

* as/userdiff-pascal:
userdiff: match Pascal class methods

Merge branch 'jn/setup-fixes'Junio C Hamano Mon, 24 Jan 2011 18:53:09 +0000 (10:53 -0800)

Merge branch 'jn/setup-fixes'

* jn/setup-fixes:
t1510: fix typo in the comment of a test
Documentation updates for 'GIT_WORK_TREE without GIT_DIR' historical usecase
Subject: setup: officially support --work-tree without --git-dir
tests: compress the setup tests
tests: cosmetic improvements to the repo-setup test
t/README: hint about using $(pwd) rather than $PWD in tests
Fix expected values of setup tests on Windows

t1510: fix typo in the comment of a testJonathan Nieder Sat, 22 Jan 2011 20:02:48 +0000 (14:02 -0600)

t1510: fix typo in the comment of a test

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

Documentation updates for 'GIT_WORK_TREE without GIT_DI... Junio C Hamano Sun, 23 Jan 2011 23:49:41 +0000 (15:49 -0800)

Documentation updates for 'GIT_WORK_TREE without GIT_DIR' historical usecase

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

Subject: setup: officially support --work-tree without... Jonathan Nieder Wed, 19 Jan 2011 12:42:30 +0000 (06:42 -0600)

Subject: setup: officially support --work-tree without --git-dir

The original intention of --work-tree was to allow people to work in a
subdirectory of their working tree that does not have an embedded .git
directory. Because their working tree, which their $cwd was in, did not
have an embedded .git, they needed to use $GIT_DIR to specify where it is,
and because this meant there was no way to discover where the root level
of the working tree was, so we needed to add $GIT_WORK_TREE to tell git
where it was.

However, this facility has long been (mis)used by people's scripts to
start git from a working tree _with_ an embedded .git directory, let git
find .git directory, and then pretend as if an unrelated directory were
the associated working tree of the .git directory found by the discovery
process. It happens to work in simple cases, and is not worth causing
"regression" to these scripts.

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

Documentation: do not treat reset --keep as a special... Jonathan Nieder Fri, 21 Jan 2011 18:37:34 +0000 (12:37 -0600)

Documentation: do not treat reset --keep as a special case

The current treatment of "git reset --keep" emphasizes how it
differs from --hard (treatment of local changes) and how it breaks
down into plumbing (git read-tree -m -u HEAD <commit> followed by git
update-ref HEAD <commit>). This can discourage people from using
it, since it might seem to be a complex or niche option.

Better to emphasize what the --keep flag is intended for --- moving
the index and worktree from one commit to another, like "git checkout"
would --- so the reader can make a more informed decision about the
appropriate situations in which to use it.

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

Correctly report corrupted objectsBjörn Steinbrink Thu, 20 Jan 2011 20:12:20 +0000 (21:12 +0100)

Correctly report corrupted objects

The errno check added in commit 3ba7a06 "A loose object is not corrupt
if it cannot be read due to EMFILE" only checked for whether errno is
not ENOENT and thus incorrectly treated "no error" as an error
condition.

Because of that, it never reached the code path that would report that
the object is corrupted and instead caused funny errors like:

fatal: failed to read object 333c4768ce595793fdab1ef3a036413e2a883853: Success

So we have to extend the check to cover the case in which the object
file was successfully read, but its contents are corrupted.

Reported-by: Will Palmer <wmpalmer@gmail.com>
Signed-off-by: Björn Steinbrink <B.Steinbrink@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

tests: compress the setup testsJonathan Nieder Wed, 19 Jan 2011 12:40:51 +0000 (06:40 -0600)

tests: compress the setup tests

New test helpers:

- setup_repo, to initialize a repository or gitfile pointing to a
repository, with core.bare and core.worktree set as specified;

- try_case, to run setup from a given directory and validate the
result, with GIT_DIR and GIT_WORK_TREE set as specified;

- try_repo, to initialize a repository and call "try_case" from the
toplevel and a subdirectory;

- run_wt_tests, to run a battery of tests that check for sane
behavior when GIT_WORK_TREE is set to various positions relative to
the .git dir and cwd.

Use these helpers to make the test shorter, less repetitive, and (one
hopes) easier to understand and modify.

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

tests: cosmetic improvements to the repo-setup testJonathan Nieder Wed, 19 Jan 2011 12:38:22 +0000 (06:38 -0600)

tests: cosmetic improvements to the repo-setup test

Give an overview in "sh t1510-repo-setup.sh --help" output.
Waste some vertical and horizontal space for clearer code.

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

Merge branch 'maint'Junio C Hamano Wed, 19 Jan 2011 16:33:54 +0000 (08:33 -0800)

Merge branch 'maint'

* maint:
exec_cmd: remove unused extern

exec_cmd: remove unused externErik Faye-Lund Mon, 10 Jan 2011 22:00:49 +0000 (23:00 +0100)

exec_cmd: remove unused extern

This definition was added by commit 77cb17e9, but it's left unused since
commit 511707d. Remove the left-over definition.

Signed-off-by: Erik Faye-Lund <kusmabite@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>