gitweb.git
diff: avoid repeated scanning while looking for funcnameRené Scharfe Sun, 26 Sep 2010 16:26:56 +0000 (18:26 +0200)

diff: avoid repeated scanning while looking for funcname

For each hunk, xdl_find_func searches the preimage for a function name
until the beginning of the file. If the file does not contain any
function names, this search has complexity O(n^2) in the number of
hunks n.

Instead, inline xdl_find_func() and keep track of up to which line we
have scanned already and the contents of the last funcname line that
we have found.

Noticed and a different approach proposed by Clemens Buchacher.
This alternative solution was done by René Scharfe.

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

t0004 (unwritable files): simplify error handlingJonathan Nieder Tue, 7 Sep 2010 01:50:17 +0000 (20:50 -0500)

t0004 (unwritable files): simplify error handling

Instead of

... normal test script ...
status=$?
... cleanup ...
(exit $status)

set up cleanup commands with test_when_finished. This makes the
test script a little shorter, and more importantly, it ensures errors
during cleanup are reported.

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

rev-list-options: clarify --parents and --childrenMichael J Gruber Thu, 30 Sep 2010 15:31:43 +0000 (17:31 +0200)

rev-list-options: clarify --parents and --children

Make it clearer that --parents resp. --children list the parent resp.
child commits next to each commit, so that I understand next time.

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

blame,cat-file --textconv: Don't assume mode is ``S_IFR... Kirill Smelkov Wed, 29 Sep 2010 11:35:24 +0000 (15:35 +0400)

blame,cat-file --textconv: Don't assume mode is ``S_IFREF | 0664''

We need to get the correct mode when blame reads the source from the
working tree, the index, or trees. This allows us to omit running
textconv filters on symbolic links.

Signed-off-by: Kirill Smelkov <kirr@landau.phys.spbu.ru>
Reviewed-by: Matthieu Moy <Matthieu.Moy@grenoble-inp.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

blame,cat-file: Demonstrate --textconv is wrongly runni... Kirill Smelkov Wed, 29 Sep 2010 11:35:23 +0000 (15:35 +0400)

blame,cat-file: Demonstrate --textconv is wrongly running converter on symlinks

git blame --textconv is wrongly calling the textconv filter on
symlinks: symlinks are stored as blobs whose content is the target of
the link, and blame calls the textconv filter on a temporary file
filled-in with the content of this blob.

For example:

$ git blame -C -C regular-file.pdf
Error: May not be a PDF file (continuing anyway)
Error: PDF file is damaged - attempting to reconstruct xref table...
Error: Couldn't find trailer dictionary
Error: Couldn't read xref table
Warning: program returned non-zero exit code #1
fatal: unable to read files to diff

That errors come from pdftotext run on symlink.pdf being extracted to
/tmp/ with one-line plain-text content pointing to link destination.

So several failures are demonstrated here:

- git cat-file --textconv :symlink.bin # also HEAD:symlink.bin
- git blame --textconv symlink.bin
- git blame -C -C --textconv regular-file # but also looks on symlink.bin

At present they all fail with something like.

E: /tmp/j3ELEs_symlink.bin is not "binary" file

NOTE: git diff doesn't try to textconv the pathnames, it runs the
textual diff without textconv, which is the expected behavior.

Signed-off-by: Kirill Smelkov <kirr@landau.phys.spbu.ru>
Reviewed-by: Matthieu Moy <Matthieu.Moy@grenoble-inp.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

blame,cat-file: Prepare --textconv tests for correctly... Kirill Smelkov Wed, 29 Sep 2010 11:35:22 +0000 (15:35 +0400)

blame,cat-file: Prepare --textconv tests for correctly-failing conversion program

The textconv filter is sometimes incorrectly ran on a temporary file
whose content is the target of a symbolic link, instead of actual file
content. Prepare to test this by marking the content of the file to
convert with "bin:", and let the helper die if "bin:" is not found in
the file content.

NOTE: I've changed $@ to $1 in helper becase textconv program "should
take a single argument" (see Documentation/gitattributes.txt), so
making this more explicit makes sense and also helps to avoid
problems with feeding arguments to echo.

Signed-off-by: Kirill Smelkov <kirr@landau.phys.spbu.ru>
Reviewed-by: Matthieu Moy <Matthieu.Moy@grenoble-inp.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Start 1.7.4 cycleJunio C Hamano Wed, 29 Sep 2010 21:07:59 +0000 (14:07 -0700)

Start 1.7.4 cycle

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

Merge branch 'tr/send-email-refuse-sending-unedited... Junio C Hamano Wed, 29 Sep 2010 22:26:12 +0000 (15:26 -0700)

Merge branch 'tr/send-email-refuse-sending-unedited-cover-letter'

* tr/send-email-refuse-sending-unedited-cover-letter:
send-email: Refuse to send cover-letter template subject

Merge branch 'ab/send-email-catfile'Junio C Hamano Wed, 29 Sep 2010 20:50:02 +0000 (13:50 -0700)

Merge branch 'ab/send-email-catfile'

* ab/send-email-catfile:
send-email: use catfile() to concatenate files

Merge branch 'jc/grep-header-all-match-fix'Junio C Hamano Wed, 29 Sep 2010 20:49:57 +0000 (13:49 -0700)

Merge branch 'jc/grep-header-all-match-fix'

* jc/grep-header-all-match-fix:
log --author: take union of multiple "author" requests
grep: move logic to compile header pattern into a separate helper

Merge branch 'jc/no-branch-name-with-dash-at-front'Junio C Hamano Wed, 29 Sep 2010 20:49:38 +0000 (13:49 -0700)

Merge branch 'jc/no-branch-name-with-dash-at-front'

* jc/no-branch-name-with-dash-at-front:
disallow branch names that start with a hyphen

Merge branch 'jn/gitweb-test-lib'Junio C Hamano Wed, 29 Sep 2010 20:49:28 +0000 (13:49 -0700)

Merge branch 'jn/gitweb-test-lib'

* jn/gitweb-test-lib:
t/gitweb-lib.sh: Use tabs for indent consistently
t/gitweb-lib.sh: Use GIT_BUILD_DIR

Merge branch 'bc/fortran-userdiff'Junio C Hamano Wed, 29 Sep 2010 20:49:23 +0000 (13:49 -0700)

Merge branch 'bc/fortran-userdiff'

* bc/fortran-userdiff:
userdiff.c: add builtin fortran regex patterns

Merge branch 'jk/read-tree-empty'Junio C Hamano Wed, 29 Sep 2010 20:49:18 +0000 (13:49 -0700)

Merge branch 'jk/read-tree-empty'

* jk/read-tree-empty:
read-tree: deprecate syntax without tree-ish args

Merge branch 'rr/format-patch-count-without-merges'Junio C Hamano Wed, 29 Sep 2010 20:49:09 +0000 (13:49 -0700)

Merge branch 'rr/format-patch-count-without-merges'

* rr/format-patch-count-without-merges:
format-patch: Don't go over merge commits
t4014-format-patch: Call test_tick before committing

Merge branch 'jc/pickaxe-grep'Junio C Hamano Wed, 29 Sep 2010 20:49:03 +0000 (13:49 -0700)

Merge branch 'jc/pickaxe-grep'

* jc/pickaxe-grep:
diff/log -G<pattern>: tests
git log/diff: add -G<regexp> that greps in the patch text
diff: pass the entire diff-options to diffcore_pickaxe()
gitdiffcore doc: update pickaxe description

Merge branch 'gb/shell-ext'Junio C Hamano Wed, 29 Sep 2010 20:48:44 +0000 (13:48 -0700)

Merge branch 'gb/shell-ext'

* gb/shell-ext:
shell: Display errors from improperly-formatted command lines
shell: Rewrite documentation and improve error message
Add sample commands for git-shell
Add interactive mode to git-shell for user-friendliness
Allow creation of arbitrary git-shell commands

Merge branch 'rr/fmt-merge-msg'Junio C Hamano Wed, 29 Sep 2010 20:48:20 +0000 (13:48 -0700)

Merge branch 'rr/fmt-merge-msg'

* rr/fmt-merge-msg:
t6200-fmt-merge-msg: Exercise '--log' to configure shortlog length
t6200-fmt-merge-msg: Exercise 'merge.log' to configure shortlog length
merge: Make 'merge.log' an integer or boolean option
merge: Make '--log' an integer option for number of shortlog entries
fmt_merge_msg: Change fmt_merge_msg API to accept shortlog_len

Conflicts:
builtin/merge.c

Merge branch 'po/etc-gitattributes'Junio C Hamano Wed, 29 Sep 2010 20:47:51 +0000 (13:47 -0700)

Merge branch 'po/etc-gitattributes'

* po/etc-gitattributes:
Add global and system-wide gitattributes

Conflicts:
Documentation/config.txt
Makefile

MinGW: avoid collisions between "tags" and "TAGS"Junio C Hamano Tue, 28 Sep 2010 21:08:38 +0000 (16:08 -0500)

MinGW: avoid collisions between "tags" and "TAGS"

On case insensitive filesystems, "tags" and "TAGS" target will try to
overwrite the same file. Allow MinGW to use "ETAGS" instead.

These two targets do produce real files; do not put them on .PHONY target
list.

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>

diff: trivial fix for --output file error messageMatthieu Moy Wed, 29 Sep 2010 07:26:23 +0000 (09:26 +0200)

diff: trivial fix for --output file error message

The option argument is either after the equal sign in --output=... or in
the next command-line argument. optarg is the reliable way to access it.

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

send-email: Use To: headers in patch filesStephen Boyd Wed, 29 Sep 2010 07:26:44 +0000 (00:26 -0700)

send-email: Use To: headers in patch files

It's a minor annoyance when you take the painstaking time to setup To:
headers for each patch in a large series, and then go out to send the
series with git-send-email and watch git ignore the To: headers in the
patch files.

Therefore, always add To: headers from a patch file to the To: headers
for that message. Keep the prompt for the blanket To: header so as to
not break scripts (and user expectations). This means even if a patch
has a To: header, git will prompt for the To: address. Otherwise, we'll
need to introduce interface breakage to either request the header for
each patch missing a To: header or default the header to whatever To:
address is found first (be it in a patch or from user input). Both of
these options don't seem very obvious/useful.

Reported-by: Viresh Kumar <viresh.kumar@st.com>
Signed-off-by: Stephen Boyd <bebarino@gmail.com>
Tested-by: Viresh Kumar <viresh.kumar@st.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

user-manual: fix anchor name Finding-comments-With... Michael J Gruber Tue, 28 Sep 2010 11:16:07 +0000 (13:16 +0200)

user-manual: fix anchor name Finding-comments-With-given-Content

Change the anchor name to

Finding-commits-With-given-Content

so that it corresponds to the actual content there.

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

user-manual: be consistent in illustrations to 'git... Kirill Smelkov Tue, 28 Sep 2010 08:20:24 +0000 (12:20 +0400)

user-manual: be consistent in illustrations to 'git rebase'

Since we use a-b-c for mywork commits in one place, I think it would be
logical to also use a-b-c too in other illustration on this topic.

Signed-off-by: Kirill Smelkov <kirr@mns.spb.ru>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

stash: simplify parsing fixesJon Seymour Mon, 27 Sep 2010 15:32:45 +0000 (01:32 +1000)

stash: simplify parsing fixes

This patch simplifies Brian's fix for the recent regression by:

* eliminating the extra loop
* eliminating use of git rev-parse for parsing flags
* making use of the for opt idiom for the retained loop
* eliminating the redundant -- case

The patch has been tested with the tests in current maint.

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

diff: add synonyms for -M, -C, -BKevin Ballard Mon, 27 Sep 2010 23:58:26 +0000 (16:58 -0700)

diff: add synonyms for -M, -C, -B

Add new long-form options --detect-renames[=<n>], --detect-copies[=<n>],
and --break-rewrites[=[<n>][/<m>]] as synonyms for the -M, -C, and -B
options (respectively).

Signed-off-by: Kevin Ballard <kevin@sb.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

merge-recursive: option to specify rename thresholdKevin Ballard Mon, 27 Sep 2010 23:58:25 +0000 (16:58 -0700)

merge-recursive: option to specify rename threshold

The recursive merge strategy turns on rename detection but leaves the
rename threshold at the default. Add a strategy option to allow the user
to specify a rename threshold to use.

Signed-off-by: Kevin Ballard <kevin@sb.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

mergetool-lib: make the three-way diff the default... Dan McGee Mon, 27 Sep 2010 15:19:09 +0000 (10:19 -0500)

mergetool-lib: make the three-way diff the default for vim/gvim

The original vimdiff/gvimdiff configuration is now available by using
'vimdiff2' or 'gvimdiff2' as the preferred merge tool.

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

Git 1.7.3.1 v1.7.3.1Junio C Hamano Wed, 29 Sep 2010 16:42:53 +0000 (09:42 -0700)

Git 1.7.3.1

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

stash: fix git stash branch regression when branch... Jon Seymour Tue, 28 Sep 2010 13:19:52 +0000 (23:19 +1000)

stash: fix git stash branch regression when branch creation fails

"git stash branch <branch> <stash>" started discarding the stash
when the branch creation fails. It should have kept the stash
intact when aborting.

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

stash drops the stash even if creating the branch fails... Tomas Carnecky Tue, 28 Sep 2010 13:19:51 +0000 (23:19 +1000)

stash drops the stash even if creating the branch fails because it already exists

This bug was disovered by someone on IRC when he tried to

$ git stash branch <branch> <stash>

while <branch> already existed. In that case the stash is dropped even
though it isn't applied on any branch, so the stash is effectively lost.

Signed-off-by: Tomas Carnecky <tom@dbservice.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

daemon: allow more than one host address given via... Alexander Sulfrian Mon, 30 Aug 2010 11:30:51 +0000 (13:30 +0200)

daemon: allow more than one host address given via --listen

When the host has more than one interfaces, daemon can listen to all
of them by not giving any --listen option, or listen to only one.
Teach it to accept more than one --listen options.

Remove the hostname information form the die, if no socket could be
created. It would only trigger when no interface out of either all
interface or the ones specified on the command line with --listen
options, can be listened to and so the user does know which "host" was
asked.

Signed-off-by: Alexander Sulfrian <alexander@sulfrian.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

daemon: add helper function named_sock_setupAlexander Sulfrian Mon, 30 Aug 2010 11:30:50 +0000 (13:30 +0200)

daemon: add helper function named_sock_setup

Add named_sock_setup as helper function for socksetup to make it
easier to create more than one listen sockets. named_sock_setup could
be called more than one time and add the new sockets to the supplied
socklist_p.

Signed-off-by: Alexander Sulfrian <alexander@sulfrian.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Fix missing 'does' in man-page for 'git checkout'Linus Torvalds Mon, 27 Sep 2010 19:14:57 +0000 (12:14 -0700)

Fix missing 'does' in man-page for 'git checkout'

Reported-by: Rainer Standke <rainer.standke@krankikom.de>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation: pack.compression: explain how to recompressJan Krüger Mon, 27 Sep 2010 12:21:58 +0000 (14:21 +0200)

Documentation: pack.compression: explain how to recompress

Add a small remark about how to recompress all existing objects after
changing the compression level for pack files.

Signed-off-by: Jan Krüger <jk@jk.gs>
Acked-by: Nicolas Pitre <nico@fluxnic.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

repack: add -F flag to let user choose between --no... Jan Krüger Mon, 27 Sep 2010 12:19:36 +0000 (14:19 +0200)

repack: add -F flag to let user choose between --no-reuse-delta/object

In 479b56ba ('make "repack -f" imply "pack-objects --no-reuse-object"'),
git repack -f was changed to include recompressing all objects on the
zlib level on the assumption that if the user wants to spend that much
time already, some more time won't hurt (and recompressing is useful if
the user changed the zlib compression level).

However, "some more time" can be quite long with very big repositories,
so some users are going to appreciate being able to choose. If we are
going to give them the choice, --no-reuse-object will probably be
interesting a lot less frequently than --no-reuse-delta. Hence, this
reverts -f to the old behaviour (--no-reuse-delta) and adds a new -F
option that replaces the current -f.

Measurements taken using this patch on a current clone of git.git
indicate a 17% decrease in time being made available to users:

git repack -Adf 34.84s user 0.56s system 145% cpu 24.388 total
git repack -AdF 38.79s user 0.56s system 133% cpu 29.394 total

Signed-off-by: Jan Krüger <jk@jk.gs>
Acked-by: Nicolas Pitre <nico@fluxnic.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

perl: use "use warnings" instead of -wÆvar Arnfjörð Bjarmason Fri, 24 Sep 2010 20:00:53 +0000 (20:00 +0000)

perl: use "use warnings" instead of -w

Change the Perl scripts to turn on lexical warnings instead of setting
the global $^W variable via the -w switch.

The -w sets warnings for all code that interpreter runs, while "use
warnings" is lexically scoped. The former is probably not what the
authors wanted.

As an auxiliary benefit it's now possible to build Git with:

PERL_PATH='/usr/bin/env perl'

Which would previously result in failures, since "#!/usr/bin/env perl -w"
doesn't work as a shebang.

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

perl: bump the required Perl version to 5.8 from 5... Ævar Arnfjörð Bjarmason Fri, 24 Sep 2010 20:00:52 +0000 (20:00 +0000)

perl: bump the required Perl version to 5.8 from 5.6.[21]

Formalize our dependency on perl 5.8, bumped from 5.6.[12]. We already
used the three-arg form of open() which was introduced in 5.6.1, but
t/t9700/test.pl explicitly depended on 5.6.2.

However git-add--interactive.pl has been failing on the 5.6 line since
it was introduced in v1.5.0-rc0~12^2~2 back in 2006 due to this open
syntax:

sub run_cmd_pipe {
my $fh = undef;
open($fh, '-|', @_) or die;
return <$fh>;
}

Which when executed dies on "Can't use an undefined value as
filehandle reference". Several of our tests also fail on 5.6 (even
more when compiled with NO_PERL_MAKEMAKER=1):

t2016-checkout-patch.sh
t3904-stash-patch.sh
t3701-add-interactive.sh
t7105-reset-patch.sh
t7501-commit.sh
t9700-perl-git.sh

Our code is bitrotting on 5.6 with no-one interested in fixing it, and
pinning us to such an ancient release of Perl is keeping us from using
useful features introduced in the 5.8 release.

The 5.6 series is now over 10 years old, and the 5.6.2 maintenance
release almost 7. 5.8 on the other hand is more than 8 years old.

All the modern Unix-like operating systems have now upgraded to it or
a later version, and 5.8 packages are available for old IRIX, AIX
Solaris and Tru64 systems.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Acked-by: Tor Arntsen <tor@spacetec.no>
Acked-by: Randal L. Schwartz <merlyn@stonehenge.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-send-email.perl: Add --to-cmdJoe Perches Fri, 24 Sep 2010 17:03:00 +0000 (10:03 -0700)

git-send-email.perl: Add --to-cmd

Add the ability to use a command line --to-cmd=cmd
to create the list of "To:" addresses.

Used a shared routine for --cc-cmd and --to-cmd.

Did not use IPC::Open2, leaving that for Ævar if
ever he decides to fix the other bugs he might find.

Signed-off-by: Joe Perches <joe@perches.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Makefile: add CC to TRACK_CFLAGSÆvar Arnfjörð Bjarmason Sun, 12 Sep 2010 22:37:45 +0000 (22:37 +0000)

Makefile: add CC to TRACK_CFLAGS

Change the git make process so that everything's rebuilt if the CC is
changed. Before we wouldn't rebuilt if e.g. the CC variable was
changed from gcc to clang.

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

dir.c: squelch false uninitialized memory warningPat Notz Thu, 16 Sep 2010 20:53:22 +0000 (14:53 -0600)

dir.c: squelch false uninitialized memory warning

GCC 4.4.4 on MacOS incorrectly warns about potential use of uninitialized memory.

Signed-off-by: Pat Notz <patnotz@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-send-email.perl: ensure $domain is defined before... Brandon Casey Mon, 27 Sep 2010 03:18:01 +0000 (22:18 -0500)

git-send-email.perl: ensure $domain is defined before using it

valid_fqdn() may attempt to operate on an undefined value if
Net::Domain::domainname fails to determine the domain name. This causes
perl to emit unpleasant warnings.

So, add a check for whether $domain has been defined before using it.

Signed-off-by: Brandon Casey <drafnel@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

wt-status.c: don't leak directory entries when processi... Brandon Casey Mon, 27 Sep 2010 02:49:13 +0000 (21:49 -0500)

wt-status.c: don't leak directory entries when processing untracked,ignored

When iterating through the list of directory entries, searching for
untracked entries, only the entries added to the string_list were free'd.
The rest (tracked or not matching the pathspec) were leaked.

Ditto for the "ignored" loop.

Rearrange the loops so that all entries are free'd.

Signed-off-by: Brandon Casey <drafnel@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t6050 (replace): fix bogus "fetch branch with replaceme... Christian Couder Sun, 26 Sep 2010 05:20:18 +0000 (07:20 +0200)

t6050 (replace): fix bogus "fetch branch with replacement" test

The test was missing some "&&" at the end of some lines and it
was wrong because, as the replacement refs were not fetched,
the commits from the parallel branch should not show up. This
was found by Elijah Newren.

This is fixed by checking that after the branch from HASH6 is
fetched, the commits from the parallel branch don't show up,
and then by fetching the replacement refs and checking that
they do show up afterwards.

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

Documentation: Refer to git-commit-tree in git-filter... Wesley J. Landaker Mon, 13 Sep 2010 14:59:54 +0000 (08:59 -0600)

Documentation: Refer to git-commit-tree in git-filter-branch help

Currently, the help for git filter-branch refers users of --env-filter
to git-commit for information about environment variables affecting
commits. However, this information is not contained in the git-commit
help, but is very explicitly detailed in git-commit-tree.

Signed-off-by: Wesley J. Landaker <wjl@icecavern.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

update comment and documentation for :/foo syntaxMatthieu Moy Fri, 24 Sep 2010 16:43:59 +0000 (18:43 +0200)

update comment and documentation for :/foo syntax

The documentation in revisions.txt did not match the implementation, and
the comment in sha1_name.c was incomplete.

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

Improvements to `git checkout -h`Daniel Knittl-Frank Fri, 24 Sep 2010 16:21:59 +0000 (18:21 +0200)

Improvements to `git checkout -h`

be a little more verbose about what each option does

Signed-off-by: Daniel Knittl-Frank <knittl89+git@googlemail.com>
Reviewed-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

contrib/completion: --no-index option to git diffMichael J Gruber Thu, 23 Sep 2010 12:33:51 +0000 (14:33 +0200)

contrib/completion: --no-index option to git diff

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

get_author_ident_from_commit(): remove useless quotingUwe Kleine-König Thu, 23 Sep 2010 09:22:10 +0000 (11:22 +0200)

get_author_ident_from_commit(): remove useless quoting

The command 's/'\''/'\''\'\'\''/g' only triples single quotes:

$ echo "What's up?" | sed 's/'\''/'\''\'\'\''/g'
What'''s up?

This doesn't hurt as compared to a single single quote it only adds an
empty string, but it makes the script needlessly complicated and hard to
understand. The useful quoting is done by s/'\''/'\''\\'\'\''/g at the
beginning of the script and only once for all three variables.

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

prefer test -h over test -L in shell scriptsJeff King Wed, 22 Sep 2010 00:35:59 +0000 (20:35 -0400)

prefer test -h over test -L in shell scripts

Even though "-L" is POSIX, the former is more portable, and
we tend to prefer it already.

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

Enable highlight executable path as a configuration... Christopher Wilson Tue, 21 Sep 2010 07:25:19 +0000 (00:25 -0700)

Enable highlight executable path as a configuration option

Allow build-time/run-time configuration of the highlight executable
(must be the one from http://www.andre-simon.de due to assumptions
about parameters and output). Defaults to previous behavior which
assumes that highlight is available on the server PATH. However, if
this is not the case, the path to the highlight executable can be
configured at build time as a configuration variable

HIGHLIGHT_BIN = /path/to/highlight

or at runtime by configuring GITWEB_CONFIG

$highlight_bin = /path/to/highlight

Signed-off-by: Christopher Wilson <cwilson@cdwilson.us>
Acked-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

CodingGuidelines: spell Arithmetic Expansion with ... Junio C Hamano Wed, 22 Sep 2010 19:15:37 +0000 (12:15 -0700)

CodingGuidelines: spell Arithmetic Expansion with $(($var))

POSIX wants shells to support both "N" and "$N" and requires them to yield
the same answer to $((N)) and $(($N)), but we should aim for portability
in a case like this, especially when the price we pay to do so is so
small, i.e. a few extra dollars.

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

t1503: Fix arithmetic expansion syntax error when using... Ramsay Jones Tue, 21 Sep 2010 17:45:09 +0000 (18:45 +0100)

t1503: Fix arithmetic expansion syntax error when using dash

On systems which have dash as /bin/sh, such as Ubuntu, the final
test (master@{n} for various n) fails with a syntax error while
processing an arithmetic expansion. The syntax error is caused by
using a bare name ('N') as a variable reference in the expression.

In order to avoid the syntax error, we spell the variable reference
as '$N' rather than simply 'N'.

Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

remote-helpers: build in platform independent directoryMichael J Gruber Fri, 17 Sep 2010 21:00:53 +0000 (23:00 +0200)

remote-helpers: build in platform independent directory

The build directory which is used by distutils depends on the platform
(e.g. build/lib on Fedora 13, build/lib.linux-i686-2.6 on Ubuntu 9.04).
But test-lib.sh expects to find the build in build/lib which can cause
t5800-remote-helpers.sh to fail early.

Override distutils' choice so that the build is always in build/lib.

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

strbuf.h: fix comment typoPat Notz Thu, 16 Sep 2010 20:53:23 +0000 (14:53 -0600)

strbuf.h: fix comment typo

Signed-off-by: Pat Notz <patnotz@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

builtin/revert.c: don't dereference a NULL pointerBrandon Casey Mon, 27 Sep 2010 17:29:45 +0000 (12:29 -0500)

builtin/revert.c: don't dereference a NULL pointer

cherry-pick will segfault when transplanting a root commit if the --ff
option is used. This happens because the "parent" pointer is set to NULL
when the commit being cherry-picked has no parents. Later, when "parent"
is dereferenced, the cherry-pick segfaults.

Fix this by checking whether "parent" is NULL before dereferencing it and
add a test for this case of cherry-picking a root commit with --ff.

Reported-by: Zbyszek Szmek <zbyszek@in.waw.pl>
Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-stash: fix flag parsingBrian Gernhardt Fri, 24 Sep 2010 22:15:34 +0000 (18:15 -0400)

git-stash: fix flag parsing

Currently git-stash uses `git rev-parse --no-revs -- "$@"` to set its
FLAGS variable. This is the same as `FLAGS="-- $@"`. It should use
`git rev-parse --no-revs --flags "$@"`, but that eats any "-q" or
"--quiet" argument. So move the check for quiet before rev-parse.

Signed-off-by: Brian Gernhardt <brian@gernhardtsoftware.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t/t3903-stash: improve testing of git-stash showBrandon Casey Fri, 24 Sep 2010 20:40:38 +0000 (15:40 -0500)

t/t3903-stash: improve testing of git-stash show

Recently, the 'stash show' functionality was broken for the case when a
stash-like argument was supplied. Since, commit 9bf09e, 'stash show' when
supplied a stash-like argument prints nothing and still exists with a zero
status. Unfortunately, the flaw slipped through the test suite cracks
since the output of 'stash show' was not verified to be correct.

Improve and expand on the existing tests so that this flaws is detected.

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

git-svn: fix processing of decorated commit hashesMathias Lafeldt Thu, 23 Sep 2010 22:05:03 +0000 (00:05 +0200)

git-svn: fix processing of decorated commit hashes

The function working_head_info() fails to parse commit hashes if they
are decorated (i.e. log.decorate is true), causing dcommit, rebase, and
other vital git-svn commands to malfunction.

This patch disables decorated log output with --no-decorate.

[ew: wrapped long line]

Signed-off-by: Mathias Lafeldt <misfire@debugon.org>
Acked-by: Eric Wong <normalperson@yhbt.net>

git-svn: check_cherry_pick should exclude commits alrea... Steven Walter Thu, 2 Sep 2010 22:32:06 +0000 (18:32 -0400)

git-svn: check_cherry_pick should exclude commits already in our history

The merge-base between @$parents and $merge_tip may have been reached
through a merge commit. This means that some commits that are ancestors
of @$parents will not be ancestors of $merge_base. The mergeinfo
property will not list commits that are ancestors of @$parents, so we
need to explicitly exclude them.

[ew: squashed and cleaned up test case from Steven]

Signed-off-by: Steven Walter <stevenrwalter@gmail.com>
Acked-by: Eric Wong <normalperson@yhbt.net>

Documentation/git-svn: discourage "noMetadata"Eric Wong Sat, 21 Aug 2010 18:52:14 +0000 (18:52 +0000)

Documentation/git-svn: discourage "noMetadata"

"noMetadata" is a sometimes harmful option, so better document
its behavior and limitations.

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

do not search functions for patch IDClemens Buchacher Sun, 19 Sep 2010 09:59:28 +0000 (11:59 +0200)

do not search functions for patch ID

Visual aids, such as the function name in the hunk
header, are not necessary for the purposes of
computing a patch ID.

This is a performance optimization.

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

add rebase patch id testsClemens Buchacher Sun, 19 Sep 2010 09:59:27 +0000 (11:59 +0200)

add rebase patch id tests

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

diff: don't use pathname-based diff drivers for symlinksJeff King Tue, 21 Sep 2010 21:01:24 +0000 (17:01 -0400)

diff: don't use pathname-based diff drivers for symlinks

When we're diffing symlinks, we consider the contents to be
the pathname that the symlink points to. When a user sets up
a userdiff driver like "*.pdf diff=pdf", their "diff.pdf.*"
config generally tells us what to do with the content of
pdf files.

With the current code, we will actually process a symlink
like "link.pdf" using a configured pdf driver, meaning we
are using contents which consist of a pathname with
configuration that is expecting contents that consist of an
actual pdf file.

The most noticeable example of this would have been
textconv; however, it was already protected in its own
textconv-specific code path. We can still see the breakage
with something like "diff.*.binary", though. You could
also see it with diff.*.funcname, though it is a bit harder
to trigger accidentally there.

This patch adds a check for S_ISREG lower in the callstack
than the textconv-specific check, which should block use of
any userdiff config for non-regular files. We can drop the
check in the textconv code, which is now redundant.

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

git-reset.txt: make modes description more consistentMichael J Gruber Wed, 15 Sep 2010 20:47:44 +0000 (22:47 +0200)

git-reset.txt: make modes description more consistent

Currently, the structure of the individual mode entries is different
which makes it difficult to grasp the differences between the modes.
Also, the same items are named differently (e.g. <commit>, "the named
commit", "the given commit", "the commit being switched to").

Structure and word all mode entries consistently.

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

git-reset.txt: point to git-checkoutMichael J Gruber Wed, 15 Sep 2010 20:47:43 +0000 (22:47 +0200)

git-reset.txt: point to git-checkout

for the case of updating a file in index and worktree, or from the index
to the worktree.

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

git-reset.txt: use "working tree" consistentlyMichael J Gruber Wed, 15 Sep 2010 20:47:42 +0000 (22:47 +0200)

git-reset.txt: use "working tree" consistently

as per git help glossary

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

git-reset.txt: reset --soft is not a no-opMichael J Gruber Wed, 15 Sep 2010 20:47:41 +0000 (22:47 +0200)

git-reset.txt: reset --soft is not a no-op

Make it clearer that git reset --soft actually does something (changing
HEAD). While it is mentioned in the previous paragraph already it can
be easily overlooked otherwise.

Also, git reset --soft does not look at the index nor the worktree, so
there is no "good order" requirement.

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

git-reset.txt: reset does not change files in targetMichael J Gruber Wed, 15 Sep 2010 20:47:40 +0000 (22:47 +0200)

git-reset.txt: reset does not change files in target

git-reset obviously cannot change files in an existing commit. Make it
not sound as if it could: reset can change HEAD and, in that sense, can
change which state a file in HEAD is in.

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

git-reset.txt: clarify branch vs. branch headMichael J Gruber Wed, 15 Sep 2010 20:47:39 +0000 (22:47 +0200)

git-reset.txt: clarify branch vs. branch head

"Change the branch" can be misunderstood to mean "change which branch is
checked out". Make it clearer that git-reset changes the branch head of
the currently checked out branch.

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

Git 1.7.3 v1.7.3Junio C Hamano Sat, 18 Sep 2010 21:55:08 +0000 (14:55 -0700)

Git 1.7.3

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

Merge branch 'js/ls-files-x-doc'Junio C Hamano Sat, 18 Sep 2010 21:46:44 +0000 (14:46 -0700)

Merge branch 'js/ls-files-x-doc'

* js/ls-files-x-doc:
ls-files documentation: reword for consistency
git-ls-files.txt: clarify -x/--exclude option

Conflicts:
Documentation/git-ls-files.txt

git-rebase--interactive.sh: replace cut with ${v%% *}Chris Johnsen Fri, 17 Sep 2010 21:42:51 +0000 (16:42 -0500)

git-rebase--interactive.sh: replace cut with ${v%% *}

Some versions of cut do not cope well with lines that do not end in
an LF. In this case, we can completely avoid cut by using the
${var%% *} parameter expansion (suggested by Brandon Casey).

I found this problem when t3404's "avoid unnecessary reset" failed
due to the "rebase -i" not avoiding updating the tested timestamp.

On a Mac OS X 10.4.11 system:

% printf '%s' 'foo bar' | /usr/bin/cut -d ' ' -f 1
cut: stdin: Illegal byte sequence

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

t/t7300: workaround ancient touch by rearranging argumentsBrandon Casey Wed, 15 Sep 2010 20:58:22 +0000 (15:58 -0500)

t/t7300: workaround ancient touch by rearranging arguments

The ancient touch on Solaris 7 thinks that a decimal number supplied as
the first argument specifies a date_time to give to the files specified by
the remaining arguments. In this case, it fails to parse '1' as a proper
date_time and exits with a failure status. Workaround this flaw by
rearranging the arguments supplied to touch so that a non-digit appears
first and touch will not be confused.

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

Merge branch 'bg/fix-t7003'Junio C Hamano Thu, 16 Sep 2010 14:43:41 +0000 (07:43 -0700)

Merge branch 'bg/fix-t7003'

* bg/fix-t7003:
t7003: Use test_commit instead of custom function

ls-files documentation: reword for consistencyJunio C Hamano Thu, 16 Sep 2010 00:34:20 +0000 (17:34 -0700)

ls-files documentation: reword for consistency

Similar to descriptions of other options, state what -x does in imperative
mood. Start sentences for -X and --exclude-per-directory options in
capital letters.

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

git-ls-files.txt: clarify -x/--exclude optionJay Soffian Wed, 15 Sep 2010 23:56:48 +0000 (19:56 -0400)

git-ls-files.txt: clarify -x/--exclude option

Since b5227d8, -x/--exclude does not apply to cached files.
This is easy to miss unless you read the discussion in the
EXCLUDE PATTERNS section. Clarify that the option applies
to untracked files and direct the reader to EXCLUDE PATTERNS.

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

Git 1.7.3 rc2 v1.7.3-rc2Junio C Hamano Wed, 15 Sep 2010 19:47:37 +0000 (12:47 -0700)

Git 1.7.3 rc2

Merge branch 'dr/maint-ls-tree-prefix-recursion-fix'Junio C Hamano Wed, 15 Sep 2010 19:41:13 +0000 (12:41 -0700)

Merge branch 'dr/maint-ls-tree-prefix-recursion-fix'

* dr/maint-ls-tree-prefix-recursion-fix:
ls-tree $di $dir: do not mistakenly recurse into directories

Merge branch 'os/fix-rebase-diff-no-prefix'Junio C Hamano Wed, 15 Sep 2010 19:40:33 +0000 (12:40 -0700)

Merge branch 'os/fix-rebase-diff-no-prefix'

* os/fix-rebase-diff-no-prefix:
Add --src/dst-prefix to git-formt-patch in git-rebase.sh

Merge branch 'jl/fix-test'Junio C Hamano Wed, 15 Sep 2010 19:40:12 +0000 (12:40 -0700)

Merge branch 'jl/fix-test'

* jl/fix-test:
t1020: Get rid of 'cd "$HERE"' at the start of each test
t2016 (checkout -p): add missing &&
t1302 (core.repositoryversion): style tweaks
t2105 (gitfile): add missing &&
t1450 (fsck): remove dangling objects
tests: subshell indentation stylefix
Several tests: cd inside subshell instead of around

Merge branch 'ch/filter-branch-deprecate-remap-to-ancestor'Junio C Hamano Wed, 15 Sep 2010 19:39:32 +0000 (12:39 -0700)

Merge branch 'ch/filter-branch-deprecate-remap-to-ancestor'

* ch/filter-branch-deprecate-remap-to-ancestor:
filter-branch: retire --remap-to-ancestor

Merge branch 'ch/maint-cannot-create-bundle-error'Junio C Hamano Wed, 15 Sep 2010 19:39:22 +0000 (12:39 -0700)

Merge branch 'ch/maint-cannot-create-bundle-error'

* ch/maint-cannot-create-bundle-error:
bundle: detect if bundle file cannot be created

Merge branch 'ks/recursive-rename-add-identical'Junio C Hamano Wed, 15 Sep 2010 19:39:12 +0000 (12:39 -0700)

Merge branch 'ks/recursive-rename-add-identical'

* ks/recursive-rename-add-identical:
RE: [PATCH] Avoid rename/add conflict when contents are identical

Merge git://repo.or.cz/git-guiJunio C Hamano Wed, 15 Sep 2010 19:34:37 +0000 (12:34 -0700)

Merge git://repo.or.cz/git-gui

* 'master' of git://repo.or.cz/git-gui:
git-gui 0.13
git-gui: avoid mis-encoding the copyright message on Windows.
git-gui: Update Swedish translation (521t).
git-gui: ensure correct application termination in git-gui--askpass
git-gui: handle textconv filter on Windows and in development
git-gui: use shell to launch textconv filter in "blame"
git-gui: display error launching blame as a message box.
git-gui: Make usage statement visible on Windows.

disallow branch names that start with a hyphenJunio C Hamano Tue, 14 Sep 2010 20:09:20 +0000 (13:09 -0700)

disallow branch names that start with a hyphen

The current command line parser is overly lax in places and allows a
branch whose name begins with a hyphen e.g. "-foo" to be created, but the
parseopt infrastructure in general does not like to parse anything that
begins with a dash as a short-hand refname. "git checkout -foo" won't
work, nor will "git branch -d -foo" (even though "git branch -d -- -foo"
works, it does so by mistake; we should not be taking anything but
pathspecs after double-dash).

All the codepaths that create a new branch ref, including the destination
of "branch -m src dst", use strbuf_check_branch_ref() to validate if the
given name is suitable as a branch name. Tighten it to disallow a branch
that begins with a hyphen.

You can still get rid of historical mistakes with

$ git update-ref -d refs/heads/-foo

and third-party Porcelains are free to keep using update-ref to create
refs with a path component that begins with "-".

Issue originally raised by Clemens Buchacher.

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

mergetool-lib: add a three-way diff view for vim/gvimDan McGee Wed, 15 Sep 2010 02:21:43 +0000 (21:21 -0500)

mergetool-lib: add a three-way diff view for vim/gvim

When the base version is available, use a three-way, four panel view by
default. This shows the (local, base, remote) revisions up top and the
merged result by itself in the lower pane. All revisions will still scroll
together by default, and the cursor still defaults to the merged result edit
pane.

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

mergetool-lib: combine vimdiff and gvimdiff run blocksDan McGee Wed, 15 Sep 2010 02:21:42 +0000 (21:21 -0500)

mergetool-lib: combine vimdiff and gvimdiff run blocks

They are nearly identical outside of the foreground flag, which can safely
be passed to both vim and gvim. The merge tool itself is named in
$merge_tool_path.

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

git-gui 0.13 gitgui-0.13.0Pat Thoyts Tue, 14 Sep 2010 21:42:37 +0000 (22:42 +0100)

git-gui 0.13

Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>

send-email: use catfile() to concatenate filesÆvar Arnfjörð Bjarmason Tue, 14 Sep 2010 19:02:24 +0000 (19:02 +0000)

send-email: use catfile() to concatenate files

Change send-email to use Perl's catfile() function instead of
"$dir/$file". If send-email is given a $dir that ends with a / we'll
end up printing a double slashed path like "dir//mtfnpy.patch".

This doesn't cause any problems since Perl's IO layer will handle it,
but it looks ugly.

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

git-gui: avoid mis-encoding the copyright message on... Pat Thoyts Mon, 13 Sep 2010 19:41:42 +0000 (20:41 +0100)

git-gui: avoid mis-encoding the copyright message on Windows.

On Windows the tcl script file will use the system encoding and attempting
to convert the copyright mis-encodes the string. Instead, keep the message
as ASCII and substitute in the correct unicode character when running.

Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>

git-gui: Update Swedish translation (521t).Peter Krefting Sun, 12 Sep 2010 20:13:29 +0000 (21:13 +0100)

git-gui: Update Swedish translation (521t).

Signed-off-by: Peter Krefting <peter@softwolves.pp.se>
Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>

t7003: Use test_commit instead of custom functionBrian Gernhardt Fri, 10 Sep 2010 22:06:36 +0000 (18:06 -0400)

t7003: Use test_commit instead of custom function

t7003-filter-branch.sh had a make_commit() function that was identical
to test_commit() in test-lib.sh except that it used tr to create a
lowercase file name from the uppercase branch name instead of
appending ".t".

Not only is this unneeded code duplication, it also was something
simply waiting to fail on case-insensitive file systems. So replace
all uses of make_commit with test_commit.

While we're editing the setup, chain it together with && so that
failures early in the sequence don't get lost and add a commit graph.

Signed-off-by: Brian Gernhardt <brian@gernhardtsoftware.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

log --author: take union of multiple "author" requestsJunio C Hamano Mon, 13 Sep 2010 05:15:35 +0000 (22:15 -0700)

log --author: take union of multiple "author" requests

In the olden days,

log --author=me --committer=him --grep=this --grep=that

used to be turned into:

(OR (HEADER-AUTHOR me)
(HEADER-COMMITTER him)
(PATTERN this)
(PATTERN that))

showing my patches that do not have any "this" nor "that", which was
totally useless.

80235ba ("log --author=me --grep=it" should find intersection, not union,
2010-01-17) improved it greatly to turn the same into:

(ALL-MATCH
(HEADER-AUTHOR me)
(HEADER-COMMITTER him)
(OR (PATTERN this) (PATTERN that)))

That is, "show only patches by me and committed by him, that have either
this or that", which is a lot more natural thing to ask.

We however need to be a bit more clever when the user asks more than one
"author" (or "committer"); because a commit has only one author (and one
committer), they ought to be interpreted as asking for union to be useful.
The current implementation simply added another author/committer pattern
at the same top-level for ALL-MATCH to insist on matching all, finding
nothing.

Turn

log --author=me --author=her \
--committer=him --committer=you \
--grep=this --grep=that

into

(ALL-MATCH
(OR (HEADER-AUTHOR me) (HEADER-AUTHOR her))
(OR (HEADER-COMMITTER him) (HEADER-COMMITTER you))
(OR (PATTERN this) (PATTERN that)))

instead.

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

grep: move logic to compile header pattern into a separ... Junio C Hamano Mon, 13 Sep 2010 02:30:48 +0000 (19:30 -0700)

grep: move logic to compile header pattern into a separate helper

The callers should be queuing only GREP_PATTERN_HEAD elements to the
header_list queue; simplify the switch and guard it with an assert.

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

t/gitweb-lib.sh: Use tabs for indent consistentlyJakub Narebski Sun, 12 Sep 2010 09:41:05 +0000 (11:41 +0200)

t/gitweb-lib.sh: Use tabs for indent consistently

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

t/gitweb-lib.sh: Use GIT_BUILD_DIRJakub Narebski Sun, 12 Sep 2010 09:41:04 +0000 (11:41 +0200)

t/gitweb-lib.sh: Use GIT_BUILD_DIR

Use "$GIT_BUILD_DIR" instead of "$TEST_DIRECTORY/.." (both defined in
t/test-lib.sh) in t/gitweb-lib.sh. It better describes the intent.

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

Merge branch 'maint'Junio C Hamano Sun, 12 Sep 2010 20:53:03 +0000 (13:53 -0700)

Merge branch 'maint'

* maint:
t3101: modernise style
compat/nedmalloc: don't force NDEBUG on the rest of git

Conflicts:
Makefile

ls-tree $di $dir: do not mistakenly recurse into direct... Junio C Hamano Sat, 11 Sep 2010 18:47:09 +0000 (11:47 -0700)

ls-tree $di $dir: do not mistakenly recurse into directories

When applying two pathspecs, one of which is named as a prefix to the
other, we mistakenly recursed into the shorter one.

Noticed and fixed by David Reis.

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

t3101: modernise styleJunio C Hamano Sat, 11 Sep 2010 17:53:29 +0000 (10:53 -0700)

t3101: modernise style

Also add a few " &&" cascade that were missing.

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