gitweb.git
clean: preserve nested git worktree in subdirectoriesJunio C Hamano Thu, 15 Mar 2012 08:04:12 +0000 (01:04 -0700)

clean: preserve nested git worktree in subdirectories

remove_dir_recursively() has a check to avoid removing the directory it
was asked to remove without recursing into it and report success when the
directory is the top level of a working tree of a nested git repository,
to protect such a repository from "clean -f" (without double -f). If a
working tree of a nested git repository is in a subdirectory of a toplevel
project, however, this protection did not apply by mistake; we forgot to
pass the REMOVE_DIR_KEEP_NESTED_GIT down to the recursive removal
codepath.

This requires us to also teach the higher level not to remove the
directory it is asked to remove, when the recursed invocation did not
remove the directory it was asked to remove due to a nested git
repository, as it is not an error to leave the parent directories of such
a nested repository.

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

remove_dir_recursively(): Add flag for skipping removal... Junio C Hamano Thu, 15 Mar 2012 14:58:54 +0000 (15:58 +0100)

remove_dir_recursively(): Add flag for skipping removal of toplevel dir

Add the REMOVE_DIR_KEEP_TOPLEVEL flag to remove_dir_recursively() for
deleting everything inside the given directory, but _not_ the given
directory itself.

Note that this does not pass the REMOVE_DIR_KEEP_NESTED_GIT flag, if set,
to the recursive invocations of remove_dir_recursively(). It is likely to
be a a bug that has been present since REMOVE_DIR_KEEP_NESTED_GIT was
introduced (a0f4afb), but this commit keeps the same behaviour for now.

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

t5704: fix nonportable sed/grep usagesThomas Rast Tue, 6 Mar 2012 14:50:37 +0000 (15:50 +0100)

t5704: fix nonportable sed/grep usages

OS X's sed and grep would complain with (respectively)

sed: 1: "/^-/{p;q}": extra characters at the end of q command
grep: Regular expression too big

For sed, use an explicit ; to terminate the q command.

For grep, spell the "40 hex digits" explicitly in the regex, which
should be safe as other tests already use this and we haven't got
breakage reports on OS X about them.

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

Merge branch 'maint-1.7.8' into maintJunio C Hamano Tue, 6 Mar 2012 20:05:09 +0000 (12:05 -0800)

Merge branch 'maint-1.7.8' into maint

By Thomas Rast
* maint-1.7.8:
Document the --histogram diff option

Merge branch 'maint-1.7.7' into maint-1.7.8Junio C Hamano Tue, 6 Mar 2012 20:04:48 +0000 (12:04 -0800)

Merge branch 'maint-1.7.7' into maint-1.7.8

By Thomas Rast
* maint-1.7.7:
Document the --histogram diff option

Document the --histogram diff optionThomas Rast Tue, 6 Mar 2012 13:15:02 +0000 (14:15 +0100)

Document the --histogram diff option

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

Git 1.7.9.3 v1.7.9.3Junio C Hamano Mon, 5 Mar 2012 22:29:07 +0000 (14:29 -0800)

Git 1.7.9.3

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

Merge branch 'jc/doc-merge-options' into maintJunio C Hamano Mon, 5 Mar 2012 22:28:14 +0000 (14:28 -0800)

Merge branch 'jc/doc-merge-options' into maint

* jc/doc-merge-options:
Documentation/merge-options.txt: group "ff" related options together

Merge branch 'cn/maint-rev-list-doc' into maintJunio C Hamano Mon, 5 Mar 2012 22:27:36 +0000 (14:27 -0800)

Merge branch 'cn/maint-rev-list-doc' into maint

* cn/maint-rev-list-doc:
Documentation: use {asterisk} in rev-list-options.txt when needed

fast-import: zero all of 'struct tag' to silence valgrindThomas Rast Mon, 5 Mar 2012 13:48:49 +0000 (14:48 +0100)

fast-import: zero all of 'struct tag' to silence valgrind

When running t9300, valgrind (correctly) complains about an
uninitialized value in write_crash_report:

==2971== Use of uninitialised value of size 8
==2971== at 0x4164F4: sha1_to_hex (hex.c:70)
==2971== by 0x4073E4: die_nicely (fast-import.c:468)
==2971== by 0x43284C: die (usage.c:86)
==2971== by 0x40420D: main (fast-import.c:2731)
==2971== Uninitialised value was created by a heap allocation
==2971== at 0x4C29B3D: malloc (vg_replace_malloc.c:263)
==2971== by 0x433645: xmalloc (wrapper.c:35)
==2971== by 0x405DF5: pool_alloc (fast-import.c:619)
==2971== by 0x407755: pool_calloc.constprop.14 (fast-import.c:634)
==2971== by 0x403F33: main (fast-import.c:3324)

Fix this by zeroing all of the 'struct tag'. We would only need to
zero out the 'sha1' field, but this way seems more future-proof.

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

Update draft release notes to 1.7.9.3 for the last... Junio C Hamano Mon, 5 Mar 2012 06:21:30 +0000 (22:21 -0800)

Update draft release notes to 1.7.9.3 for the last time

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

Merge branch 'cn/maint-branch-with-bad' into maintJunio C Hamano Mon, 5 Mar 2012 06:17:52 +0000 (22:17 -0800)

Merge branch 'cn/maint-branch-with-bad' into maint

* cn/maint-branch-with-bad:
branch: don't assume the merge filter ref exists

Conflicts:
t/t3200-branch.sh

Merge branch 'jn/maint-gitweb-invalid-regexp' into... Junio C Hamano Mon, 5 Mar 2012 06:17:47 +0000 (22:17 -0800)

Merge branch 'jn/maint-gitweb-invalid-regexp' into maint

* jn/maint-gitweb-invalid-regexp:
gitweb: Handle invalid regexp in regexp search

Merge branch 'nd/maint-verify-objects' into maintJunio C Hamano Mon, 5 Mar 2012 06:17:41 +0000 (22:17 -0800)

Merge branch 'nd/maint-verify-objects' into maint

* nd/maint-verify-objects:
rev-list: fix --verify-objects --quiet becoming --objects
rev-list: remove BISECT_SHOW_TRIED flag

Merge branch 'jk/maint-avoid-streaming-filtered-content... Junio C Hamano Mon, 5 Mar 2012 06:16:40 +0000 (22:16 -0800)

Merge branch 'jk/maint-avoid-streaming-filtered-contents' into maint

* jk/maint-avoid-streaming-filtered-contents:
do not stream large files to pack when filters are in use
teach dry-run convert_to_git not to require a src buffer
teach convert_to_git a "dry run" mode

Merge branch 'jb/filter-ignore-sigpipe' into maintJunio C Hamano Mon, 5 Mar 2012 06:16:35 +0000 (22:16 -0800)

Merge branch 'jb/filter-ignore-sigpipe' into maint

* jb/filter-ignore-sigpipe:
Ignore SIGPIPE when running a filter driver

Merge branch 'sp/smart-http-failure-to-push' into maintJunio C Hamano Mon, 5 Mar 2012 06:16:33 +0000 (22:16 -0800)

Merge branch 'sp/smart-http-failure-to-push' into maint

* sp/smart-http-failure-to-push:
: Mask SIGPIPE on the command channel going to a transport helper
disconnect from remote helpers more gently

Conflicts:
transport-helper.c

Merge branch 'tr/maint-bundle-long-subject' into maintJunio C Hamano Mon, 5 Mar 2012 06:16:30 +0000 (22:16 -0800)

Merge branch 'tr/maint-bundle-long-subject' into maint

* tr/maint-bundle-long-subject:
t5704: match tests to modern style
strbuf: improve strbuf_get*line documentation
bundle: use a strbuf to scan the log for boundary commits
bundle: put strbuf_readline_fd in strbuf.c with adjustments

http.proxy: also mention https_proxy and all_proxyClemens Buchacher Sun, 4 Mar 2012 16:50:43 +0000 (17:50 +0100)

http.proxy: also mention https_proxy and all_proxy

The current wording of the http.proxy documentation suggests that
http_proxy is somehow equivalent to http.proxy. However, while
http.proxy (by the means of curl's CURLOPT_PROXY option) overrides the
proxy for both HTTP and HTTPS protocols, the http_proxy environment
variable is used only for HTTP. But since the docs mention only
http_proxy, a user might expect it to apply to all HTTP-like protocols.

Avoid any such misunderstanding by explicitly mentioning https_proxy and
all_proxy as well.

Also replace linkgit:curl[1] with a literal 'curl(1)', because the
former gets translated to a dead link in the HTML pages.

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

t0300: work around bug in dash 0.5.6Michael J Gruber Sat, 3 Mar 2012 00:37:35 +0000 (19:37 -0500)

t0300: work around bug in dash 0.5.6

The construct 'while IFS== read' makes dash 0.5.6 execute
read without changing IFS, which results in test breakages
all over the place in t0300. Neither dash 0.5.5.1 and older
nor dash 0.5.7 and newer are affected: The problem was
introduded resp. fixed by the commits

55c46b7 ([BUILTIN] Honor tab as IFS whitespace when
splitting fields in readcmd, 2009-08-11)

1d806ac ([VAR] Do not poplocalvars prematurely on regular
utilities, 2010-05-27)

in http://git.kernel.org/?p=utils/dash/dash.git

Putting 'IFS==' before that line makes all versions of dash
work.

This looks like a dash bug, not a misinterpretation of the
standard. However, it's worth working around for two
reasons. One, this version of dash was released in Fedora
14-16, so the bug is found in the wild. And two, at least
one other shell, Solaris /bin/sh, choked on this by
persisting IFS after the read invocation. That is not a
shell we usually care about, and I think this use of IFS is
acceptable by POSIX (which allows other behavior near
"special builtins", but "read" is not one of those). But it
seems that this may be a subtle, not-well-tested case for
some shells. Given that the workaround is so simple, it's
worth just being defensive.

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

t5512 (ls-remote): modernize styleTom Grennan Sat, 3 Mar 2012 02:15:34 +0000 (18:15 -0800)

t5512 (ls-remote): modernize style

Prepare expected output inside test_expect_success that uses it.
Also remove excess blank lines.

Signed-off-by: Tom Grennan <tmgrennan@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

tests: fix spurious error when run directly with Solari... Stefano Lattarini Fri, 2 Mar 2012 18:48:36 +0000 (19:48 +0100)

tests: fix spurious error when run directly with Solaris /usr/xpg4/bin/sh

If any test script is run directly with Solaris 10 /usr/xpg4/bin/sh or
/bin/ksh, it fails spuriously with a message like:

t0000-basic.sh[31]: unset: bad argument count

This happens because those shells bail out when encountering a call to
"unset" with no arguments, and such unset call could take place in
'test-lib.sh'. Fix that issue, and add a proper comment to ensure we
don't regress in this respect.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation: do not assume that n > 1 in <rev>~$nJunio C Hamano Wed, 29 Feb 2012 19:13:22 +0000 (11:13 -0800)

Documentation: do not assume that n > 1 in <rev>~$n

We explained <rev>~<n> as <n>th generation grand-parent, but a reader got
confused by the "grand-" part when <n> is 1.

Reword it with "ancestor"; with the "generation" and "following only the
first parents" around there, what we try to describe should be clear
enough now.

Noticed-by: Luke Diamand <luke@diamand.org>
Helped-by: Thomas Rast <trast@inf.ethz.ch>
Helped-by: Andreas Ericsson <ae@op5.se>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation fixes in git-configLibor Pechacek Thu, 1 Mar 2012 10:59:45 +0000 (11:59 +0100)

Documentation fixes in git-config

Variable names must start with an alphabetic character, regexp config key
matching has its limits, sentence grammar.

Signed-off-by: Libor Pechacek <lpechacek@suse.cz>
Acked-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation: use {asterisk} in rev-list-options.txt... Carlos Martín Nieto Tue, 28 Feb 2012 15:35:48 +0000 (16:35 +0100)

Documentation: use {asterisk} in rev-list-options.txt when needed

Text between two '*' is emphasized in AsciiDoc and makes explanations in
rev-list-options.txt on glob-related options very confusing, as the
rendered text would be missing two asterisks and the text between them
would be emphasized instead.

Use '{asterisk}' where needed to make them show up as asterisks in the
rendered text.

Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
Acked-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

gitweb: Handle invalid regexp in regexp searchJakub Narebski Tue, 28 Feb 2012 18:41:47 +0000 (19:41 +0100)

gitweb: Handle invalid regexp in regexp search

When using regexp search ('sr' parameter / $search_use_regexp variable
is true), check first that regexp is valid.

Without this patch we would get an error from Perl during search (if
searching is performed by gitweb), or highlighting matches substring
(if applicable), if user provided invalid regexp... which means broken
HTML, with error page (including HTTP headers) generated after gitweb
already produced some output.

Add test that illustrates such error: for example for regexp "*\.git"
we would get the following error:

Quantifier follows nothing in regex; marked by <-- HERE in m/* <-- HERE \.git/
at /var/www/cgi-bin/gitweb.cgi line 3084.

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

rev-list: fix --verify-objects --quiet becoming --objectsNguyễn Thái Ngọc Duy Tue, 28 Feb 2012 14:00:00 +0000 (21:00 +0700)

rev-list: fix --verify-objects --quiet becoming --objects

When --quiet is specified, finish_object() is called instead of
show_object(). The latter is in charge of --verify-objects and
will be skipped if --quiet is specified.

Move the code up to finish_object(). Also pass the quiet flag along
and make it always call show_* functions to avoid similar problems in
future.

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

rev-list: remove BISECT_SHOW_TRIED flagNguyễn Thái Ngọc Duy Tue, 28 Feb 2012 13:59:59 +0000 (20:59 +0700)

rev-list: remove BISECT_SHOW_TRIED flag

Since c99f069 (bisect--helper: remove "--next-vars" option as it is
now useless - 2009-04-21), this flag has always been off. Remove the
flag and all related code.

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

Update draft release notes to 1.7.9.3Junio C Hamano Mon, 27 Feb 2012 23:36:08 +0000 (15:36 -0800)

Update draft release notes to 1.7.9.3

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

Merge branch 'pj/remote-set-branches-usage-fix' into... Junio C Hamano Mon, 27 Feb 2012 23:33:33 +0000 (15:33 -0800)

Merge branch 'pj/remote-set-branches-usage-fix' into maint

* pj/remote-set-branches-usage-fix:
remote: fix set-branches usage and documentation

Conflicts:
builtin/remote.c

Merge branch 'jn/gitweb-unborn-head' into maintJunio C Hamano Mon, 27 Feb 2012 23:33:26 +0000 (15:33 -0800)

Merge branch 'jn/gitweb-unborn-head' into maint

* jn/gitweb-unborn-head:
gitweb: Fix "heads" view when there is no current branch

Merge branch 'jn/ancient-meld-support' into maintJunio C Hamano Mon, 27 Feb 2012 23:33:07 +0000 (15:33 -0800)

Merge branch 'jn/ancient-meld-support' into maint

* jn/ancient-meld-support:
mergetools/meld: Use --help output to detect --output support

Merge branch 'tr/merge-edit-guidance' into maintJunio C Hamano Mon, 27 Feb 2012 23:31:50 +0000 (15:31 -0800)

Merge branch 'tr/merge-edit-guidance' into maint

* tr/merge-edit-guidance:
merge: add instructions to the commit message when editing

CodingGuidelines: do not use 'which' in shell scriptsTim Henigan Fri, 24 Feb 2012 23:12:58 +0000 (18:12 -0500)

CodingGuidelines: do not use 'which' in shell scripts

During the code review of a recent patch, it was noted that shell scripts
must not use 'which $cmd' to check the availability of the command $cmd.
The output of the command is not machine parseable and its exit code is
not reliable across platforms.

It is better to use 'type' to accomplish this task.

Signed-off-by: Tim Henigan <tim.henigan@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

CodingGuidelines: Add a note about spaces after redirectionTim Henigan Fri, 24 Feb 2012 23:12:57 +0000 (18:12 -0500)

CodingGuidelines: Add a note about spaces after redirection

During code review of some patches, it was noted that redirection operators
should have space before, but no space after them.

Signed-off-by: Tim Henigan <tim.henigan@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

branch: don't assume the merge filter ref existsCarlos Martín Nieto Mon, 27 Feb 2012 15:11:53 +0000 (16:11 +0100)

branch: don't assume the merge filter ref exists

print_ref_list looks up the merge_filter_ref and assumes that a valid
pointer is returned. When the object doesn't exist, it tries to
dereference a NULL pointer. This can be the case when git branch
--merged is given an argument that isn't a valid commit name.

Check whether the lookup returns a NULL pointer and die with an error
if it does. Add a test, while we're at it.

Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

post-receive-email: match up $LOGBEGIN..$LOGEND pairs... Michael Haggerty Mon, 27 Feb 2012 18:34:10 +0000 (19:34 +0100)

post-receive-email: match up $LOGBEGIN..$LOGEND pairs correctly

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

post-receive-email: remove unused variableMichael Haggerty Mon, 27 Feb 2012 18:34:09 +0000 (19:34 +0100)

post-receive-email: remove unused variable

prep_for_email neither is passed a fourth argument nor uses it.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Document accumulated fixes since 1.7.9.2Junio C Hamano Mon, 27 Feb 2012 01:08:59 +0000 (17:08 -0800)

Document accumulated fixes since 1.7.9.2

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

Merge branch 'jc/add-refresh-unmerged' into maintJunio C Hamano Mon, 27 Feb 2012 01:06:23 +0000 (17:06 -0800)

Merge branch 'jc/add-refresh-unmerged' into maint

* jc/add-refresh-unmerged:
refresh_index: do not show unmerged path that is outside pathspec

Merge branch 'js/configure-libintl' into maintJunio C Hamano Mon, 27 Feb 2012 01:04:53 +0000 (17:04 -0800)

Merge branch 'js/configure-libintl' into maint

* js/configure-libintl:
configure: don't use -lintl when there is no gettext support

Sync with 1.7.8.5Junio C Hamano Mon, 27 Feb 2012 00:42:35 +0000 (16:42 -0800)

Sync with 1.7.8.5

Git 1.7.8.5 v1.7.8.5Junio C Hamano Mon, 27 Feb 2012 00:40:20 +0000 (16:40 -0800)

Git 1.7.8.5

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

grep -P: Fix matching ^ and $Michał Kiedrowicz Sat, 25 Feb 2012 09:24:28 +0000 (10:24 +0100)

grep -P: Fix matching ^ and $

When "git grep" is run with -P/--perl-regexp, it doesn't match ^ and $ at
the beginning/end of the line. This is because PCRE normally matches ^
and $ at the beginning/end of the whole text, not for each line, and "git
grep" passes a large chunk of text (possibly containing many lines) to
pcre_exec() and then splits the text into lines.

This makes "git grep -P" behave differently from "git grep -E" and also
from "grep -P" and "pcregrep":

$ cat file
a
b
$ git grep --no-index -P '^ ' file
$ git grep --no-index -E '^ ' file
file: b
$ grep -c -P '^ ' file
b
$ pcregrep -c '^ ' file
b

Reported-by: Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Signed-off-by: Michał Kiedrowicz <michal.kiedrowicz@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

am: don't infloop for an empty input fileJim Meyering Sat, 25 Feb 2012 17:34:26 +0000 (18:34 +0100)

am: don't infloop for an empty input file

git-am.sh's check_patch_format function would attempt to preview
the patch to guess its format, but would go into an infinite loop
when the patch file happened to be empty. The solution: exit the
loop when "read" fails, not when the line var, "$l1" becomes empty.

Signed-off-by: Jim Meyering <meyering@redhat.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

rebase -m: only call "notes copy" when rewritten exists... Andrew Wong Sat, 25 Feb 2012 04:31:22 +0000 (23:31 -0500)

rebase -m: only call "notes copy" when rewritten exists and is non-empty

This prevents a shell error complaining rebase-merge/rewritten doesn't exist.

Signed-off-by: Andrew Wong <andrew.kw.w@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-p4: remove bash-ism in t9800Pete Wyckoff Sun, 26 Feb 2012 15:37:27 +0000 (10:37 -0500)

git-p4: remove bash-ism in t9800

This works in both bash and dash:

$ bash -c 'VAR=1 env' | grep VAR
VAR=1
$ dash -c 'VAR=1 env' | grep VAR
VAR=1

But environment variables assigned this way are not necessarily propagated
through a function in POSIX compliant shells:

$ bash -c 'f() { "$@"
}; VAR=1 f "env"' | grep VAR
VAR=1
$ dash -c 'f() { "$@"
}; VAR=1 f "env"' | grep VAR

Fix constructs like this, in particular, setting variables through
test_must_fail.

Based-on-patch-by: Vitor Antunes <vitor.hda@gmail.com>
Signed-off-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-p4: remove bash-ism in t9809Pete Wyckoff Sun, 26 Feb 2012 15:37:26 +0000 (10:37 -0500)

git-p4: remove bash-ism in t9809

Plain old $# works to count the number of arguments in
either bash or dash, even if the arguments have spaces.

Based-on-patch-by: Vitor Antunes <vitor.hda@gmail.com>
Signed-off-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-p4: fix submit regression with clientSpec and subdi... Pete Wyckoff Sun, 26 Feb 2012 01:06:25 +0000 (20:06 -0500)

git-p4: fix submit regression with clientSpec and subdir clone

When the --use-client-spec is given to clone, and the clone
path is a subset of the full tree as specified in the client,
future submits will go to the wrong place.

Factor out getClientSpec() so both clone/sync and submit can
use it. Introduce getClientRoot() that is needed for the client
spec case, and use it instead of p4Where().

Test the five possible submit behaviors (add, modify, rename,
copy, delete).

Reported-by: Laurent Charrière <lcharriere@promptu.com>
Signed-off-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-p4: set useClientSpec variable on initial clonePete Wyckoff Sun, 26 Feb 2012 01:06:24 +0000 (20:06 -0500)

git-p4: set useClientSpec variable on initial clone

If --use-client-spec was given, set the matching configuration
variable. This is necessary to ensure that future submits
work properly.

The alternatives of requiring the user to set it, or providing
a command-line option on every submit, are error prone.

Signed-off-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Makefile: add thread-utils.h to LIB_HDmitry V. Levin Fri, 24 Feb 2012 23:42:42 +0000 (03:42 +0400)

Makefile: add thread-utils.h to LIB_H

Starting with commit v1.7.8-165-g0579f91, grep.h includes
thread-utils.h, so the latter has to be added to LIB_H.

Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
Acked-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

do not stream large files to pack when filters are... Jeff King Fri, 24 Feb 2012 22:10:17 +0000 (17:10 -0500)

do not stream large files to pack when filters are in use

Because git's object format requires us to specify the
number of bytes in the object in its header, we must know
the size before streaming a blob into the object database.
This is not a problem when adding a regular file, as we can
get the size from stat(). However, when filters are in use
(such as autocrlf, or the ident, filter, or eol
gitattributes), we have no idea what the ultimate size will
be.

The current code just punts on the whole issue and ignores
filter configuration entirely for files larger than
core.bigfilethreshold. This can generate confusing results
if you use filters for large binary files, as the filter
will suddenly stop working as the file goes over a certain
size. Rather than try to handle unknown input sizes with
streaming, this patch just turns off the streaming
optimization when filters are in use.

This has a slight performance regression in a very specific
case: if you have autocrlf on, but no gitattributes, a large
binary file will avoid the streaming code path because we
don't know beforehand whether it will need conversion or
not. But if you are handling large binary files, you should
be marking them as such via attributes (or at least not
using autocrlf, and instead marking your text files as
such). And the flip side is that if you have a large
_non_-binary file, there is a correctness improvement;
before we did not apply the conversion at all.

The first half of the new t1051 script covers these failures
on input. The second half tests the matching output code
paths. These already work correctly, and do not need any
adjustment.

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

teach dry-run convert_to_git not to require a src bufferJeff King Fri, 24 Feb 2012 22:05:03 +0000 (17:05 -0500)

teach dry-run convert_to_git not to require a src buffer

When we call convert_to_git in dry-run mode, it may still
want to look at the source buffer, because some CRLF
conversion modes depend on analyzing the source to determine
whether it is in fact convertible CRLF text.

However, the main motivation for convert_to_git's dry-run
mode is that we would decide which method to use to acquire
the blob's data (streaming versus in-core). Requiring this
source analysis creates a chicken-and-egg problem. We are
better off simply guessing that anything we can't analyze
will end up needing conversion.

This patch lets a caller specify a NULL src buffer when
using dry-run mode (and only dry-run mode). A non-zero
return value goes from "we would convert" to "we might
convert"; a zero return value remains "we would definitely
not convert".

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

teach convert_to_git a "dry run" modeJeff King Fri, 24 Feb 2012 22:02:37 +0000 (17:02 -0500)

teach convert_to_git a "dry run" mode

Some callers may want to know whether convert_to_git will
actually do anything before performing the conversion
itself (e.g., to decide whether to stream or handle blobs
in-core). This patch lets callers specify the dry run mode
by passing a NULL destination buffer. The return value,
instead of indicating whether conversion happened, will
indicate whether conversion would occur.

For readability, we also include a wrapper function which
makes it more obvious we are not actually performing the
conversion.

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

t5704: match tests to modern styleThomas Rast Thu, 23 Feb 2012 09:42:23 +0000 (10:42 +0100)

t5704: match tests to modern style

The test did not adhere to the current style on several counts:

. empty lines around the test blocks, but within the test string
. ': > file' or even just '> file' with an extra space
. inconsistent indentation
. hand-rolled commits instead of using test_commit

Fix all of them.

There's a catch to the last point: test_commit creates a tag, which the
original test did not create. We still change it to test_commit, and
explicitly delete the tags, so as to highlight that the test relies on not
having them.

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

strbuf: improve strbuf_get*line documentationThomas Rast Thu, 23 Feb 2012 09:42:21 +0000 (10:42 +0100)

strbuf: improve strbuf_get*line documentation

Clarify strbuf_getline() documentation, and add the missing documentation
for strbuf_getwholeline() and strbuf_getwholeline_fd().

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

README: point to Documentation/SubmittingPatchesMatthieu Moy Thu, 23 Feb 2012 12:52:06 +0000 (13:52 +0100)

README: point to Documentation/SubmittingPatches

It was indeed not obvious for new contributors to find this document in
the source tree, since there were no reference to it outside the
Documentation/ directory.

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

Document merge.branchdesc configuration variableJunio C Hamano Thu, 23 Feb 2012 19:20:15 +0000 (11:20 -0800)

Document merge.branchdesc configuration variable

This was part of the "branch description" feature in the larger
"help people communicate better during their pull based workflow"
topic, but was never documented.

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

disconnect from remote helpers more gentlyJeff King Thu, 23 Feb 2012 10:04:34 +0000 (05:04 -0500)

disconnect from remote helpers more gently

When git spawns a remote helper program (like git-remote-http),
the last thing we do before closing the pipe to the child
process is to send a blank line, telling the helper that we
are done issuing commands. However, the helper may already
have exited, in which case the parent git process will
receive SIGPIPE and die.

In particular, this can happen with the remote-curl helper
when it encounters errors during a push. The helper reports
individual errors for each ref back to git-push, and then
exits with a non-zero exit code. Depending on the exact
timing of the write, the parent process may or may not
receive SIGPIPE.

This causes intermittent test failure in t5541.8, and is a
side effect of 5238cbf (remote-curl: Fix push status report
when all branches fail). Before that commit, remote-curl
would not send the final blank line to indicate that the
list of status lines was complete; it would just exit,
closing the pipe. The parent git-push would notice the
closed pipe while reading the status report and exit
immediately itself, propagating the failing exit code. But
post-5238cbf, remote-curl completes the status list before
exiting, git-push actually runs to completion, and then it
tries to cleanly disconnect the helper, leading to the
SIGPIPE race above.

This patch drops all error-checking when sending the final
"we are about to hang up" blank line to helpers. There is
nothing useful for the parent process to do about errors at
that point anyway, and certainly failing to send our "we are
done with commands" line to a helper that has already exited
is not a problem.

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

bundle: use a strbuf to scan the log for boundary commitsThomas Rast Wed, 22 Feb 2012 19:34:23 +0000 (20:34 +0100)

bundle: use a strbuf to scan the log for boundary commits

The first part of the bundle header contains the boundary commits, and
could be approximated by

# v2 git bundle
$(git rev-list --pretty=oneline --boundary <ARGS> | grep ^-)

git-bundle actually spawns exactly this rev-list invocation, and does
the grepping internally.

There was a subtle bug in the latter step: it used fgets() with a
1024-byte buffer. If the user has sufficiently long subjects (e.g.,
by not adhering to the git oneline-subject convention in the first
place), the 'oneline' format can easily overflow the buffer. fgets()
then returns the rest of the line in the next call(s). If one of
these remaining parts started with '-', git-bundle would mistakenly
insert it into the bundle thinking it was a boundary commit.

Fix it by using strbuf_getwholeline() instead, which handles arbitrary
line lengths correctly.

Note that on the receiving side in parse_bundle_header() we were
already using strbuf_getwholeline_fd(), so that part is safe.

Reported-by: Jannis Pohlmann <jannis.pohlmann@codethink.co.uk>
Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

bundle: put strbuf_readline_fd in strbuf.c with adjustmentsThomas Rast Wed, 22 Feb 2012 19:34:22 +0000 (20:34 +0100)

bundle: put strbuf_readline_fd in strbuf.c with adjustments

The comment even said that it should eventually go there. While at
it, match the calling convention and name of the function to the
strbuf_get*line family. So it now is strbuf_getwholeline_fd.

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

Git 1.7.9.2 v1.7.9.2Junio C Hamano Thu, 23 Feb 2012 01:48:01 +0000 (17:48 -0800)

Git 1.7.9.2

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

Documentation/merge-options.txt: group "ff" related... Junio C Hamano Wed, 22 Feb 2012 22:27:07 +0000 (14:27 -0800)

Documentation/merge-options.txt: group "ff" related options together

The --ff-only option was not described next to --ff and --no-ff options in
"git merge" documentation, even though these three are logically together,
describing how to choose one of three possibilities.

Also the description for '--ff' and '--no-ff' discussed what '--ff' means,
and mentioned '--no-ff' as if it were a side-note to '--ff'.

Make them into three top-level entries and list them together. This way,
it would be more clear that the user can choose one from these three.

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

completion: use tabs for indentationPhilip Jägenstedt Wed, 22 Feb 2012 08:58:13 +0000 (09:58 +0100)

completion: use tabs for indentation

CodingGuidlines confidently declares "We use tabs for indentation."
It would be a shame if it were caught lying.

Signed-off-by: Philip Jägenstedt <philip@foolip.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

completion: remove stale "to submit patches" documentationPhilip Jägenstedt Wed, 22 Feb 2012 08:58:12 +0000 (09:58 +0100)

completion: remove stale "to submit patches" documentation

It was out-of-sync with the reality of who works on this
script. Defer (silently) to Documentation/SubmittingPatches
like all other code.

Signed-off-by: Philip Jägenstedt <philip@foolip.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Update draft release notes to 1.7.9.2Junio C Hamano Tue, 21 Feb 2012 23:16:34 +0000 (15:16 -0800)

Update draft release notes to 1.7.9.2

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

Merge branch 'cb/receive-pack-keep-errors' into maintJunio C Hamano Tue, 21 Feb 2012 23:14:41 +0000 (15:14 -0800)

Merge branch 'cb/receive-pack-keep-errors' into maint

* cb/receive-pack-keep-errors:
do not override receive-pack errors

Merge branch 'cb/transfer-no-progress' into maintJunio C Hamano Tue, 21 Feb 2012 23:14:37 +0000 (15:14 -0800)

Merge branch 'cb/transfer-no-progress' into maint

* cb/transfer-no-progress:
push/fetch/clone --no-progress suppresses progress output

Merge branch 'jk/git-dir-lookup' into maintJunio C Hamano Tue, 21 Feb 2012 23:13:16 +0000 (15:13 -0800)

Merge branch 'jk/git-dir-lookup' into maint

* jk/git-dir-lookup:
standardize and improve lookup rules for external local repos

Merge branch 'jc/diff-stat-scaler' into maintJunio C Hamano Tue, 21 Feb 2012 23:00:33 +0000 (15:00 -0800)

Merge branch 'jc/diff-stat-scaler' into maint

* jc/diff-stat-scaler:
diff --stat: show bars of same length for paths with same amount of changes

Merge branch 'zj/term-columns' into maintJunio C Hamano Tue, 21 Feb 2012 23:00:15 +0000 (15:00 -0800)

Merge branch 'zj/term-columns' into maint

* zj/term-columns:
pager: find out the terminal width before spawning the pager

Merge branch 'cb/maint-rev-list-verify-object' into... Junio C Hamano Tue, 21 Feb 2012 22:59:35 +0000 (14:59 -0800)

Merge branch 'cb/maint-rev-list-verify-object' into maint

* cb/maint-rev-list-verify-object:
git rev-list: fix invalid typecast

Merge branch 'cb/maint-t5541-make-server-port-portable... Junio C Hamano Tue, 21 Feb 2012 22:57:40 +0000 (14:57 -0800)

Merge branch 'cb/maint-t5541-make-server-port-portable' into maint

* cb/maint-t5541-make-server-port-portable:
t5541: check error message against the real port number used

Merge branch 'dp/i18n-libcharset' into maintJunio C Hamano Tue, 21 Feb 2012 22:57:14 +0000 (14:57 -0800)

Merge branch 'dp/i18n-libcharset' into maint

* dp/i18n-libcharset:
Makefile: introduce CHARSET_LIB to link with -lcharset

Merge branch 'jk/grep-binary-attribute' into maintJunio C Hamano Tue, 21 Feb 2012 22:57:05 +0000 (14:57 -0800)

Merge branch 'jk/grep-binary-attribute' into maint

* jk/grep-binary-attribute:
grep: pre-load userdiff drivers when threaded
grep: load file data after checking binary-ness
grep: respect diff attributes for binary-ness
grep: cache userdiff_driver in grep_source
grep: drop grep_buffer's "name" parameter
convert git-grep to use grep_source interface
grep: refactor the concept of "grep source" into an object
grep: move sha1-reading mutex into low-level code
grep: make locking flag global

Merge branch 'nd/diffstat-gramnum' into maintJunio C Hamano Tue, 21 Feb 2012 22:56:39 +0000 (14:56 -0800)

Merge branch 'nd/diffstat-gramnum' into maint

* nd/diffstat-gramnum:
Use correct grammar in diffstat summary line

Merge branch 'nd/find-pack-entry-recent-cache-invalidat... Junio C Hamano Tue, 21 Feb 2012 22:56:36 +0000 (14:56 -0800)

Merge branch 'nd/find-pack-entry-recent-cache-invalidation' into maint

* nd/find-pack-entry-recent-cache-invalidation:
find_pack_entry(): do not keep packed_git pointer locally
sha1_file.c: move the core logic of find_pack_entry() into fill_pack_entry()

Merge branch 'tt/profile-build-fix' into maintJunio C Hamano Tue, 21 Feb 2012 22:56:06 +0000 (14:56 -0800)

Merge branch 'tt/profile-build-fix' into maint

* tt/profile-build-fix:
Makefile: fix syntax for older make
Fix build problems related to profile-directed optimization

Merge branch 'fc/zsh-completion' into maintJunio C Hamano Tue, 21 Feb 2012 22:55:50 +0000 (14:55 -0800)

Merge branch 'fc/zsh-completion' into maint

* fc/zsh-completion:
completion: simplify __gitcomp and __gitcomp_nl implementations
completion: use ls -1 instead of rolling a loop to do that ourselves
completion: work around zsh option propagation bug

Ignore SIGPIPE when running a filter driverJehan Bing Mon, 20 Feb 2012 20:53:37 +0000 (12:53 -0800)

Ignore SIGPIPE when running a filter driver

If a filter is not defined or if it fails, git should behave as if the
filter is a no-op passthru.

However, if the filter exits before reading all the content, depending on
the timing, git could be killed with SIGPIPE when it tries to write to the
pipe connected to the filter.

Ignore SIGPIPE while processing the filter to give us a chance to check
the return value from a failed write, in order to detect and act on this
mode of failure in a more controlled way.

Signed-off-by: Jehan Bing <jehan@orb.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

completion: Allow dash as the first character for __git_ps1Christian Hammerl Mon, 20 Feb 2012 12:17:53 +0000 (13:17 +0100)

completion: Allow dash as the first character for __git_ps1

If the argument for `__git_ps1` begins with a dash, `printf` tries to
interpret it as an option which results in an error message.
The problem is solved by adding '--' before the argument to tell
`printf` to not interpret the following argument as an option.
Adding '--' directly to the argument does not help because the argument
is enclosed by double quotes.

Signed-off-by: Christian Hammerl <info@christian-hammerl.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Update draft release notes to 1.7.9.2Junio C Hamano Mon, 20 Feb 2012 08:14:00 +0000 (00:14 -0800)

Update draft release notes to 1.7.9.2

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

configure: don't use -lintl when there is no gettext... John Szakmeister Sat, 18 Feb 2012 19:38:04 +0000 (14:38 -0500)

configure: don't use -lintl when there is no gettext support

The current configure script uses -lintl if gettext is not found in the C
library, but does so before checking if there is libintl.h available in
the first place, in which case we would later define NO_GETTEXT.

Instead, check for the existence of libintl.h first. Only when libintl.h
exists and libintl is not in libc, ask for -lintl.

Signed-off-by: John Szakmeister <john@szakmeister.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

remote: fix set-branches usage and documentationPhilip Jägenstedt Sat, 18 Feb 2012 11:17:47 +0000 (12:17 +0100)

remote: fix set-branches usage and documentation

The canonical order of command line arguments is always to have dashed
commands before other parameters, but the "git remote set-branches"
subcommand was described to take "name" before an optional "--add".

Signed-off-by: Philip Jägenstedt <philip@foolip.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

gitweb: Fix 'grep' search for multiple matches in fileJakub Narebski Wed, 15 Feb 2012 16:37:06 +0000 (17:37 +0100)

gitweb: Fix 'grep' search for multiple matches in file

Commit ff7f218 (gitweb: Fix file links in "grep" search, 2012-01-05),
added $file_href variable, to reduce duplication and have the fix
applied in single place.

Unfortunately it made variable defined inside the loop, not taking into
account the fact that $file_href was set only if file changed.
Therefore for files with multiple matches $file_href was undefined for
second and subsequent matches.

Fix this bug by moving $file_href declaration outside loop.

Adds tests for almost all forms of sarch in gitweb, which were missing
from testuite. Note that it only tests if there are no warnings, and
it doesn't check that gitweb finds what it should find.

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

refresh_index: do not show unmerged path that is outsid... Junio C Hamano Fri, 17 Feb 2012 18:11:05 +0000 (10:11 -0800)

refresh_index: do not show unmerged path that is outside pathspec

When running "git add --refresh <pathspec>", we incorrectly showed the
path that is unmerged even if it is outside the specified pathspec, even
though we did honor pathspec and refreshed only the paths that matched.

Note that this cange does not affect "git update-index --refresh"; for
hysterical raisins, it does not take a pathspec (it takes real paths) and
more importantly itss command line options are parsed and executed one by
one as they are encountered, so "git update-index --refresh foo" means
"first refresh the index, and then update the entry 'foo' by hashing the
contents in file 'foo'", not "refresh only entry 'foo'".

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

gitweb: Fix "heads" view when there is no current branchJakub Narebski Wed, 15 Feb 2012 15:36:41 +0000 (16:36 +0100)

gitweb: Fix "heads" view when there is no current branch

In a repository whose HEAD points to an unborn branch with no commits,
"heads" view and "summary" view (which shows what is shown in "heads"
view) compared the object names of commits at the tip of branches with the
output from "git rev-parse HEAD", which caused comparison of a string with
undef and resulted in a warning in the server log.

This can happen if non-bare repository (with default 'master' branch)
is updated not via committing but by other means like push to it, or
Gerrit. It can happen also just after running "git checkout --orphan
<new branch>" but before creating any new commit on this branch.

Rewrite the comparison so that it also works when $head points at nothing;
in such a case, no branch can be "the current branch", add a test for it.
While at it, rename local variable $head to $head_at, as it points to
current commit rather than current branch name (HEAD contents).

The code still incorrectly shows all branches that point at the same
commit as what HEAD points as "the current branch", even when HEAD is
detached. Fixing this bug is outside the scope of this patch.

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

Update draft release notes to 1.7.9.2Junio C Hamano Thu, 16 Feb 2012 22:26:32 +0000 (14:26 -0800)

Update draft release notes to 1.7.9.2

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

Merge branch 'jc/checkout-out-of-unborn' into maintJunio C Hamano Thu, 16 Feb 2012 22:18:06 +0000 (14:18 -0800)

Merge branch 'jc/checkout-out-of-unborn' into maint

* jc/checkout-out-of-unborn:
git checkout -b: allow switching out of an unborn branch

Merge branch 'jc/maint-mailmap-output' into maintJunio C Hamano Thu, 16 Feb 2012 22:18:03 +0000 (14:18 -0800)

Merge branch 'jc/maint-mailmap-output' into maint

* jc/maint-mailmap-output:
mailmap: always return a plain mail address from map_user()

Merge branch 'jk/prompt-fallback-to-tty' into maintJunio C Hamano Thu, 16 Feb 2012 22:18:00 +0000 (14:18 -0800)

Merge branch 'jk/prompt-fallback-to-tty' into maint

* jk/prompt-fallback-to-tty:
prompt: fall back to terminal if askpass fails
prompt: clean up strbuf usage

Merge branch 'jn/gitweb-search-utf-8' into maintJunio C Hamano Thu, 16 Feb 2012 22:17:58 +0000 (14:17 -0800)

Merge branch 'jn/gitweb-search-utf-8' into maint

* jn/gitweb-search-utf-8:
gitweb: Allow UTF-8 encoded CGI query parameters and path_info

Merge branch 'jc/maint-commit-ignore-i-t-a' into maintJunio C Hamano Thu, 16 Feb 2012 22:08:00 +0000 (14:08 -0800)

Merge branch 'jc/maint-commit-ignore-i-t-a' into maint

* jc/maint-commit-ignore-i-t-a:
commit: ignore intent-to-add entries instead of refusing

Conflicts:
cache-tree.c

Merge branch 'mm/empty-loose-error-message' into maintJunio C Hamano Thu, 16 Feb 2012 22:00:25 +0000 (14:00 -0800)

Merge branch 'mm/empty-loose-error-message' into maint

* mm/empty-loose-error-message:
fsck: give accurate error message on empty loose object files

Merge branch 'nk/ctype-for-perf' into maintJunio C Hamano Thu, 16 Feb 2012 22:00:16 +0000 (14:00 -0800)

Merge branch 'nk/ctype-for-perf' into maint

* nk/ctype-for-perf:
ctype: implement islower/isupper macro
ctype.c only wants git-compat-util.h

Merge branch 'jx/i18n-more-marking' into maintJunio C Hamano Thu, 16 Feb 2012 21:59:53 +0000 (13:59 -0800)

Merge branch 'jx/i18n-more-marking' into maint

* jx/i18n-more-marking:
i18n: format_tracking_info "Your branch is behind" message
i18n: git-commit whence_s "merge/cherry-pick" message

man: rearrange git synopsis to fit in 80 linesZbigniew Jędrzejewski-Szmek Tue, 14 Feb 2012 23:54:21 +0000 (00:54 +0100)

man: rearrange git synopsis to fit in 80 lines

The line was extended in 2dd8c3 ('git: add --info-path and --man-path
options'), and the formatted man output stopped fitting into the 80
column window.

Signed-off-by: Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

completion: --list option for git-branchRalf Thielow Wed, 15 Feb 2012 20:36:58 +0000 (21:36 +0100)

completion: --list option for git-branch

Signed-off-by: Ralf Thielow <ralf.thielow@googlemail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'rt/completion-branch-edit-desc' into... Junio C Hamano Thu, 16 Feb 2012 20:33:46 +0000 (12:33 -0800)

Merge branch 'rt/completion-branch-edit-desc' into maint

* rt/completion-branch-edit-desc:
completion: --edit-description option for git-branch

diff --stat: show bars of same length for paths with... Junio C Hamano Tue, 14 Feb 2012 21:49:11 +0000 (13:49 -0800)

diff --stat: show bars of same length for paths with same amount of changes

When commit 3ed74e6 (diff --stat: ensure at least one '-' for deletions,
and one '+' for additions, 2006-09-28) improved the output for files with
tiny modifications, we accidentally broke the logic to ensure that two
equal sized changes are shown with the bars of the same length, even when
rounding errors exist.

Compute the length of the graph bars, using the same "non-zero changes is
shown with at least one column" scaling logic, but by scaling the sum of
additions and deletions to come up with the total length of the bar (this
ensures that two equal sized changes result in bars of the same length),
and then scaling the smaller of the additions or deletions. The other side
is computed as the difference between the two.

This makes the apportioning between additions and deletions less accurate
due to rounding errors, but it is much less noticeable than two files with
the same amount of change showing bars of different length.

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