gitweb.git
peel_ref: use faster deref_tag_noverifyJeff King Thu, 4 Oct 2012 07:58:15 +0000 (03:58 -0400)

peel_ref: use faster deref_tag_noverify

When we are asked to peel a ref to a sha1, we internally call
deref_tag, which will recursively parse each tagged object
until we reach a non-tag. This has the benefit that we will
verify our ability to load and parse the pointed-to object.

However, there is a performance downside: we may not need to
load that object at all (e.g., if we are listing peeled
simply listing peeled refs), or it may be a large object
that should follow a streaming code path (e.g., an annotated
tag of a large blob).

It makes more sense for peel_ref to choose the fast thing
rather than performing the extra check, for two reasons:

1. We will already sometimes short-circuit the tag parsing
in favor of a peeled entry from a packed-refs file. So
we are already favoring speed in some cases, and it is
not wise for a caller to rely on peel_ref to detect
corruption.

2. We already silently ignore much larger corruptions,
like a ref that points to a non-existent object, or a
tag object that exists but is corrupted.

2. peel_ref is not the right place to check for such a
database corruption. It is returning only the sha1
anyway, not the actual object. Any callers which use
that sha1 to load an object will soon discover the
corruption anyway, so we are really just pushing back
the discovery to later in the program.

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

gitcli: parse-options lets you omit tail of long optionsJunio C Hamano Thu, 4 Oct 2012 17:13:49 +0000 (10:13 -0700)

gitcli: parse-options lets you omit tail of long options

Describe the behaviour, but do warn people against taking it too
literally and expect an abbreviation valid today will stay valid
forever.

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

paint_down_to_common(): parse commit before relying... Junio C Hamano Thu, 4 Oct 2012 22:37:15 +0000 (15:37 -0700)

paint_down_to_common(): parse commit before relying on its timestamp

When refactoring the merge-base computation to reduce the pairwise
O(n*(n-1)) traversals to parallel O(n) traversals, the code forgot
that timestamp based heuristics needs each commit to have been
parsed. This caused an empty "git pull" to spend cycles, traversing
the history all the way down to 0 (because an unparsed commit object
has 0 timestamp, and any other commit object with positive timestamp
will be processed for its parents, all getting parsed), only to come
up with a merge message to be used.

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

l10n: de.po: fix a few minor typosSimon Ruderich Thu, 4 Oct 2012 14:23:14 +0000 (16:23 +0200)

l10n: de.po: fix a few minor typos

Signed-off-by: Simon Ruderich <simon@ruderich.org>
Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>

Update draft release notes to 1.8.0Junio C Hamano Wed, 3 Oct 2012 04:18:40 +0000 (21:18 -0700)

Update draft release notes to 1.8.0

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

Merge branch 'nd/grep-reflog'Junio C Hamano Wed, 3 Oct 2012 04:13:39 +0000 (21:13 -0700)

Merge branch 'nd/grep-reflog'

Teach the commands from the "log" family the "--grep-reflog" option
to limit output by string that appears in the reflog entry when the
"--walk-reflogs" option is in effect.

* nd/grep-reflog:
revision: make --grep search in notes too if shown
log --grep-reflog: reject the option without -g
revision: add --grep-reflog to filter commits by reflog messages
grep: prepare for new header field filter

Merge branch 'lt/mailinfo-handle-attachment-more-sanely'Junio C Hamano Wed, 3 Oct 2012 04:13:35 +0000 (21:13 -0700)

Merge branch 'lt/mailinfo-handle-attachment-more-sanely'

A patch attached as application/octet-stream (e.g. not text/*) were
mishandled, not correctly honoring Content-Transfer-Encoding
(e.g. base64).

* lt/mailinfo-handle-attachment-more-sanely:
mailinfo: don't require "text" mime type for attachments

Merge branch 'tu/gc-auto-quiet'Junio C Hamano Wed, 3 Oct 2012 04:13:27 +0000 (21:13 -0700)

Merge branch 'tu/gc-auto-quiet'

"gc --auto" notified the user that auto-packing has triggered even
under the "--quiet" option.

* tu/gc-auto-quiet:
silence git gc --auto --quiet output

t1450: the order the objects are checked is undefinedJunio C Hamano Tue, 2 Oct 2012 22:08:16 +0000 (15:08 -0700)

t1450: the order the objects are checked is undefined

When a tag T points at an object X that is of a type that is
different from what the tag records as, fsck should report it as an
error.

However, depending on the order X and T are checked individually,
the actual error message can be different. If X is checked first,
fsck remembers X's type and then when it checks T, it notices that T
records X as a wrong type (i.e. the complaint is about a broken tag
T). If T is checked first, on the other hand, fsck remembers that we
need to verify X is of the type tag records, and when it later
checks X, it notices that X is of a wrong type (i.e. the complaint
is about a broken object X).

The important thing is that fsck notices such an error and diagnoses
the issue on object X, but the test was expecting that we happen to
check objects in the order to make us detect issues with tag T, not
with object X. Remove this unwarranted assumption.

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

Merge branch 'maint'Junio C Hamano Tue, 2 Oct 2012 20:47:30 +0000 (13:47 -0700)

Merge branch 'maint'

Start preparing for 1.7.12.3Junio C Hamano Tue, 2 Oct 2012 20:44:59 +0000 (13:44 -0700)

Start preparing for 1.7.12.3

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

Merge branch 'rr/maint-submodule-unknown-cmd' into... Junio C Hamano Tue, 2 Oct 2012 20:42:32 +0000 (13:42 -0700)

Merge branch 'rr/maint-submodule-unknown-cmd' into maint

"git submodule frotz" was not diagnosed as "frotz" being an unknown
subcommand to "git submodule"; the user instead got a complaint that
"git submodule status" was run with an unknown path "frotz".

* rr/maint-submodule-unknown-cmd:
submodule: if $command was not matched, don't parse other args

Merge branch 'sp/maint-http-enable-gzip' into maintJunio C Hamano Tue, 2 Oct 2012 20:42:13 +0000 (13:42 -0700)

Merge branch 'sp/maint-http-enable-gzip' into maint

"git fetch" over http advertised that it supports "deflate", which
is much less common, and did not advertise more common "gzip" on its
Accept-Encoding header.

* sp/maint-http-enable-gzip:
Enable info/refs gzip decompression in HTTP client

Merge branch 'sp/maint-http-info-refs-no-retry' into... Junio C Hamano Tue, 2 Oct 2012 20:41:38 +0000 (13:41 -0700)

Merge branch 'sp/maint-http-info-refs-no-retry' into maint

"git fetch" over http had an old workaround for an unlikely server
misconfiguration; it turns out that this hurts debuggability of the
configuration in general, and has been reverted.

* sp/maint-http-info-refs-no-retry:
Revert "retry request without query when info/refs?query fails"

l10n: Fix to Swedish translationPeter Krefting Tue, 2 Oct 2012 07:25:32 +0000 (08:25 +0100)

l10n: Fix to Swedish translation

Fix bad translation of "Receiving objects".

Signed-off-by: Peter Krefting <peter@softwolves.pp.se>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation: mention `push.default` in git-push.txtRamkumar Ramachandra Tue, 2 Oct 2012 15:38:00 +0000 (21:08 +0530)

Documentation: mention `push.default` in git-push.txt

It already is listed in the "git config" documentation, but people
interested in pushing would first look at "git push" documentation.

Noticed-by: David Glasser
Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
Acked-by: Matthieu Moy <Matthieu.Moy@grenoble-inp.fr>
Fixed-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t4055: avoid use of sed 'a' commandJunio C Hamano Tue, 2 Oct 2012 18:50:16 +0000 (11:50 -0700)

t4055: avoid use of sed 'a' command

The 'a', 'i' and 'c' commands take a literal text to be added
followed by backslash, but then in the source we cannot indent
the literal text which makes it ugly.

We need to also remember to double the backslash inside double
quotes.

Avoid these issues altogether by having an extra line in a template
file and generate test vectors by deleting the line or replacing the
line and not using the 'a' command.

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

RelNotes/1.8.0: various typo and style fixesMichael J Gruber Tue, 2 Oct 2012 14:35:55 +0000 (16:35 +0200)

RelNotes/1.8.0: various typo and style fixes

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

Git 1.8.0-rc0 v1.8.0-rc0Junio C Hamano Mon, 1 Oct 2012 20:09:47 +0000 (13:09 -0700)

Git 1.8.0-rc0

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

Merge branch 'jk/completion-tests'Junio C Hamano Mon, 1 Oct 2012 19:59:10 +0000 (12:59 -0700)

Merge branch 'jk/completion-tests'

* jk/completion-tests:
t9902: add completion tests for "odd" filenames
t9902: add a few basic completion tests

Merge branch 'ep/malloc-check-perturb'Junio C Hamano Mon, 1 Oct 2012 19:59:06 +0000 (12:59 -0700)

Merge branch 'ep/malloc-check-perturb'

Fixes a brown-paper bag bug.

* ep/malloc-check-perturb:
MALLOC_CHECK: enable it, unless disabled explicitly

Merge branch 'da/mergetool-custom'Junio C Hamano Mon, 1 Oct 2012 19:58:57 +0000 (12:58 -0700)

Merge branch 'da/mergetool-custom'

The actual external command to run for mergetool backend can be
specified with difftool/mergetool.$name.cmd configuration
variables, but this mechanism was ignored for the backends we
natively support.

* da/mergetool-custom:
mergetool--lib: Allow custom commands to override built-ins

Merge branch 'os/commit-submodule-ignore'Junio C Hamano Mon, 1 Oct 2012 19:58:51 +0000 (12:58 -0700)

Merge branch 'os/commit-submodule-ignore'

"git status" honored the ignore=dirty settings in .gitmodules but
"git commit" didn't.

* os/commit-submodule-ignore:
commit: pay attention to submodule.$name.ignore in .gitmodules

Merge branch 'jc/blame-follows-renames'Junio C Hamano Mon, 1 Oct 2012 19:58:43 +0000 (12:58 -0700)

Merge branch 'jc/blame-follows-renames'

Clarify the "blame" documentation to tell the users that there is
no need to ask for "--follow".

* jc/blame-follows-renames:
git blame: document that it always follows origin across whole-file renames

Merge branch 'jk/receive-pack-unpack-error-to-pusher'Junio C Hamano Mon, 1 Oct 2012 19:58:34 +0000 (12:58 -0700)

Merge branch 'jk/receive-pack-unpack-error-to-pusher'

Send errors from "unpack-objects" and "index-pack" back to the "git
push" over the git and smart-http protocols, just like it is done
for a push over the ssh protocol.

* jk/receive-pack-unpack-error-to-pusher:
receive-pack: drop "n/a" on unpacker errors
receive-pack: send pack-processing stderr over sideband
receive-pack: redirect unpack-objects stdout to /dev/null

Merge branch 'rt/maint-clone-single'Junio C Hamano Mon, 1 Oct 2012 19:58:10 +0000 (12:58 -0700)

Merge branch 'rt/maint-clone-single'

Running "git fetch" in a repository made with "git clone --single"
slurps all the branches, defeating the point of "--single".

* rt/maint-clone-single:
clone --single: limit the fetch refspec to fetched branch

Remove the hard coded length limit on variable names... Ben Walton Sun, 30 Sep 2012 19:44:36 +0000 (20:44 +0100)

Remove the hard coded length limit on variable names in config files

Previously while reading the variable names in config files, there
was a 256 character limit with at most 128 of those characters being
used by the section header portion of the variable name. This
limitation was only enforced while reading the config files. It was
possible to write a config file that was not subsequently readable.

Instead of enforcing this limitation for both reading and writing,
remove it entirely by changing the var member of the config_file
struct to a strbuf instead of a fixed length buffer. Update all of
the parsing functions in config.c to use the strbuf instead of the
static buffer.

The parsing functions that returned the base length of the variable
name now return simply 0 for success and -1 for failure. The base
length information is obtained through the strbuf's len member.

We now send the buf member of the strbuf to external callback
functions to preserve the external api. None of the external
callers rely on the old size limitation for sizing their own buffers
so removing the limit should have no externally visible effect.

Signed-off-by: Ben Walton <bdwalton@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

diff: diff.context configuration gives default to -UJeff Muizelaar Thu, 27 Sep 2012 19:12:52 +0000 (15:12 -0400)

diff: diff.context configuration gives default to -U

Introduce a configuration variable diff.context that tells
Porcelain commands to use a non-default number of context
lines instead of 3 (the default). With this variable, users
do not have to keep repeating "git log -U8" from the command
line; instead, it becomes sufficient to say "git config
diff.context 8" just once.

Signed-off-by: Jeff Muizelaar <jmuizelaar@mozilla.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

mailinfo: don't require "text" mime type for attachmentsLinus Torvalds Sun, 30 Sep 2012 22:10:48 +0000 (15:10 -0700)

mailinfo: don't require "text" mime type for attachments

Currently "git am" does insane things if the mbox it is given contains
attachments with a MIME type that aren't "text/*".

In particular, it will still decode them, and pass them "one line at a
time" to the mail body filter, but because it has determined that they
aren't text (without actually looking at the contents, just at the mime
type) the "line" will be the encoding line (eg 'base64') rather than a
line of *content*.

Which then will cause the text filtering to fail, because we won't
correctly notice when the attachment text switches from the commit message
to the actual patch. Resulting in a patch failure, even if patch may be a
perfectly well-formed attachment, it's just that the message type may be
(for example) "application/octet-stream" instead of "text/plain".

Just remove all the bogus games with the message_type. The only difference
that code creates is how the data is passed to the filter function
(chunked per-pred-code line or per post-decode line), and that difference
is *wrong*, since chunking things per pre-decode line can never be a
sensible operation, and cannot possibly matter for binary data anyway.

This code goes all the way back to March of 2007, in commit 87ab79923463
("builtin-mailinfo.c infrastrcture changes"), and apparently Don used to
pass random mbox contents to git. However, the pre-decode vs post-decode
logic really shouldn't matter even for that case, and more importantly, "I
fed git am crap" is not a valid reason to break *real* patch attachments.

If somebody really cares, and determines that some attachment is binary
data (by looking at the data, not the MIME-type), the whole attachment
should be dismissed, rather than fed in random-sized chunks to
"handle_filter()".

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Don Zickus <dzickus@redhat.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge git://github.com/git-l10n/git-poJunio C Hamano Sun, 30 Sep 2012 06:28:20 +0000 (23:28 -0700)

Merge git://github.com/git-l10n/git-po

* 'master' of git://github.com/git-l10n/git-po:
l10n: Fixes to Swedish translation
Update Swedish translation (1967t0f0u)
l10n: zh.CN.po: msgmerge git.pot (1142t195f630u)
l10n: Update git.pot (825 new, 24 removed messages)

Update draft release notes to 1.8.0Junio C Hamano Sun, 30 Sep 2012 05:50:53 +0000 (22:50 -0700)

Update draft release notes to 1.8.0

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

Sync with 1.7.12.2Junio C Hamano Sun, 30 Sep 2012 06:22:53 +0000 (23:22 -0700)

Sync with 1.7.12.2

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

Git 1.7.12.2 v1.7.12.2Junio C Hamano Sun, 30 Sep 2012 05:33:25 +0000 (22:33 -0700)

Git 1.7.12.2

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

Merge branch 'maint' of git://github.com/git-l10n/git... Junio C Hamano Sun, 30 Sep 2012 06:20:13 +0000 (23:20 -0700)

Merge branch 'maint' of git://github.com/git-l10n/git-po into maint

Update German and Simplified Chinese translations.

* 'maint' of git://github.com/git-l10n/git-po:
l10n: de.po: correct translation of a 'rebase' message
l10n: Improve many translation for zh_CN
l10n: Unify the translation for '(un)expected'

Merge branch 'jc/maint-log-grep-all-match-1' into maintJunio C Hamano Sun, 30 Sep 2012 05:30:56 +0000 (22:30 -0700)

Merge branch 'jc/maint-log-grep-all-match-1' into maint

* jc/maint-log-grep-all-match-1:
grep.c: make two symbols really file-scope static this time
t7810-grep: test --all-match with multiple --grep and --author options
t7810-grep: test interaction of multiple --grep and --author options
t7810-grep: test multiple --author with --all-match
t7810-grep: test multiple --grep with and without --all-match
t7810-grep: bring log --grep tests in common form
grep.c: mark private file-scope symbols as static
log: document use of multiple commit limiting options
log --grep/--author: honor --all-match honored for multiple --grep patterns
grep: show --debug output only once
grep: teach --debug option to dump the parse tree

Merge branch 'jc/maint-mailinfo-mime-attr' into maintJunio C Hamano Sun, 30 Sep 2012 05:30:47 +0000 (22:30 -0700)

Merge branch 'jc/maint-mailinfo-mime-attr' into maint

* jc/maint-mailinfo-mime-attr:
mailinfo: do not concatenate charset= attribute values from mime headers

Merge branch 'rr/maint-submodule-unknown-cmd'Junio C Hamano Sun, 30 Sep 2012 05:28:32 +0000 (22:28 -0700)

Merge branch 'rr/maint-submodule-unknown-cmd'

* rr/maint-submodule-unknown-cmd:
submodule: if $command was not matched, don't parse other args

Merge branch 'rs/archive-zip-utf8'Junio C Hamano Sun, 30 Sep 2012 05:28:28 +0000 (22:28 -0700)

Merge branch 'rs/archive-zip-utf8'

With another reroll, it looks like the series is as polished as it
could be.

* rs/archive-zip-utf8:
archive-zip: write extended timestamp
archive-zip: support UTF-8 paths
Revert "archive-zip: support UTF-8 paths"
archive-zip: support UTF-8 paths

Merge branch 'jk/smart-http-switch'Junio C Hamano Sun, 30 Sep 2012 05:28:24 +0000 (22:28 -0700)

Merge branch 'jk/smart-http-switch'

Allows users to turn off smart-http when talking to dumb-only
servers.

* jk/smart-http-switch:
remote-curl: let users turn off smart http
remote-curl: rename is_http variable

Merge branch 'sp/maint-http-enable-gzip'Junio C Hamano Sun, 30 Sep 2012 05:28:20 +0000 (22:28 -0700)

Merge branch 'sp/maint-http-enable-gzip'

Allows a more common 'gzip' Accept-Encoding to be used.

* sp/maint-http-enable-gzip:
Enable info/refs gzip decompression in HTTP client

Merge branch 'sp/maint-http-info-refs-no-retry'Junio C Hamano Sun, 30 Sep 2012 05:28:16 +0000 (22:28 -0700)

Merge branch 'sp/maint-http-info-refs-no-retry'

Kills an old workaround for a unlikely server misconfiguration that
hurts debuggability.

* sp/maint-http-info-refs-no-retry:
Revert "retry request without query when info/refs?query fails"

Merge branch 'aw/rebase-i-edit-todo'Junio C Hamano Sun, 30 Sep 2012 05:28:12 +0000 (22:28 -0700)

Merge branch 'aw/rebase-i-edit-todo'

Teach an option to edit the insn sheet to "git rebase -i".

* aw/rebase-i-edit-todo:
rebase -i: suggest using --edit-todo to fix an unknown instruction
rebase -i: Add tests for "--edit-todo"
rebase -i: Teach "--edit-todo" action
rebase -i: Refactor help messages for todo file
rebase usage: subcommands can not be combined with -i

Merge branch 'js/rebase-exec-command-not-found'Junio C Hamano Sun, 30 Sep 2012 05:28:05 +0000 (22:28 -0700)

Merge branch 'js/rebase-exec-command-not-found'

* js/rebase-exec-command-not-found:
rebase -i: fix misleading error message after 'exec no-such' instruction

Merge branch 'rr/test-use-shell-path-not-shell'Junio C Hamano Sun, 30 Sep 2012 05:27:56 +0000 (22:27 -0700)

Merge branch 'rr/test-use-shell-path-not-shell'

Fixes a brown-paper bag bug.

* rr/test-use-shell-path-not-shell:
test-lib: use $SHELL_PATH, not $SHELL

revision: make --grep search in notes too if shownNguyễn Thái Ngọc Duy Sat, 29 Sep 2012 04:41:29 +0000 (11:41 +0700)

revision: make --grep search in notes too if shown

Notes are shown after commit body. From user perspective it looks
pretty much like commit body and they may assume --grep would search
in that part too.

Make it so.

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

log --grep-reflog: reject the option without -gJunio C Hamano Sat, 29 Sep 2012 18:59:52 +0000 (11:59 -0700)

log --grep-reflog: reject the option without -g

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

revision: add --grep-reflog to filter commits by reflog... Nguyễn Thái Ngọc Duy Sat, 29 Sep 2012 04:41:28 +0000 (11:41 +0700)

revision: add --grep-reflog to filter commits by reflog messages

Similar to --author/--committer which filters commits by author and
committer header fields. --grep-reflog adds a fake "reflog" header to
commit and a grep filter to search on that line.

All rules to --author/--committer apply except no timestamp stripping.

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

grep: prepare for new header field filterNguyễn Thái Ngọc Duy Sat, 29 Sep 2012 04:41:27 +0000 (11:41 +0700)

grep: prepare for new header field filter

grep supports only author and committer headers, which have the same
special treatment that later headers may or may not have. Check for
field type and only strip_timestamp() when the field is either author
or committer.

GREP_HEADER_FIELD_MAX is put in the grep_header_field enum to be
calculated automatically, correctly, as long as it's at the end of the
enum.

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

silence git gc --auto --quiet outputTobias Ulmer Mon, 24 Sep 2012 02:40:24 +0000 (04:40 +0200)

silence git gc --auto --quiet output

When --quiet is requested, gc --auto should not display messages unless
there is an error.

Signed-off-by: Tobias Ulmer <tobiasu@tmux.org>
Acked-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t9902: add completion tests for "odd" filenamesJeff King Wed, 26 Sep 2012 21:51:06 +0000 (17:51 -0400)

t9902: add completion tests for "odd" filenames

We correctly handle completion items with spaces just fine,
since we pass the lists around with newline delimiters.
However, we do not handle filenames with shell
metacharacters, as "compgen -W" performs expansion on the
list we give it.

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

t9902: add a few basic completion testsJeff King Wed, 26 Sep 2012 21:47:51 +0000 (17:47 -0400)

t9902: add a few basic completion tests

We were not testing ref or tree completion at all. Let's
give them even basic sanity checks to avoid regressions.

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

Merge git://github.com/gotgit/git-po-zh_CNJiang Xin Thu, 27 Sep 2012 23:03:43 +0000 (07:03 +0800)

Merge git://github.com/gotgit/git-po-zh_CN

* git://github.com/gotgit/git-po-zh_CN:
l10n: zh.CN.po: msgmerge git.pot (1142t195f630u)

Merge branch 'maint'Jiang Xin Thu, 27 Sep 2012 22:53:54 +0000 (06:53 +0800)

Merge branch 'maint'

* maint:
l10n: de.po: correct translation of a 'rebase' message
l10n: Improve many translation for zh_CN
l10n: Unify the translation for '(un)expected'

Merge branch 'l10n-thynson' of git://github.com/thynson... Jiang Xin Thu, 27 Sep 2012 22:49:08 +0000 (06:49 +0800)

Merge branch 'l10n-thynson' of git://github.com/thynson/git-po-zh_CN into maint

* 'l10n-thynson' of git://github.com/thynson/git-po-zh_CN:
l10n: Improve many translation for zh_CN
l10n: Unify the translation for '(un)expected'

Merge branch 'maint' of https://github.com/ralfth/git... Jiang Xin Thu, 27 Sep 2012 22:30:11 +0000 (06:30 +0800)

Merge branch 'maint' of https://github.com/ralfth/git-po-de into maint

* 'maint' of https://github.com/ralfth/git-po-de:
l10n: de.po: correct translation of a 'rebase' message

l10n: de.po: correct translation of a 'rebase' messageRalf Thielow Mon, 24 Sep 2012 17:16:21 +0000 (19:16 +0200)

l10n: de.po: correct translation of a 'rebase' message

Noticed-by: Sascha Cunz <sascha-ml@babbelbox.org>
Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>

MALLOC_CHECK: enable it, unless disabled explicitlyRené Scharfe Wed, 26 Sep 2012 20:16:39 +0000 (22:16 +0200)

MALLOC_CHECK: enable it, unless disabled explicitly

The malloc checks in tests are currently disabled. Actually evaluate
the variable for turning them off and enable them if it's unset.

Also use this opportunity to give it the more descriptive and
consistent name TEST_NO_MALLOC_CHECK.

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

l10n: Fixes to Swedish translationPeter Krefting Wed, 26 Sep 2012 07:06:36 +0000 (08:06 +0100)

l10n: Fixes to Swedish translation

Fix bad translation of "Receiving objects".
Make translation of push.default message narrower, to make it fit 80
columns even when prefixed.

Signed-off-by: Peter Krefting <peter@softwolves.pp.se>

submodule: if $command was not matched, don't parse... Ramkumar Ramachandra Sat, 22 Sep 2012 11:27:59 +0000 (16:57 +0530)

submodule: if $command was not matched, don't parse other args

"git submodule" command DWIMs the command line and assumes a
unspecified action word for 'status' action. This is a UI mistake
that leads to a confusing behaviour. A mistyped command name is
instead treated as a request for 'status' of the submodule with that
name, e.g.

$ git submodule show
error: pathspec 'show' did not match any file(s) known to git.
Did you forget to 'git add'?

Stop DWIMming an unknown or mistyped subcommand name as pathspec
given to unspelled "status" subcommand. "git submodule" without any
argument is still interpreted as "git submodule status", but its
value is questionable.

Adjust t7400 to match, and stop advertising the default subcommand
being 'status' which does not help much in practice, other than
promoting laziness and confusion.

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

Update draft release notes to 1.8.0Junio C Hamano Tue, 25 Sep 2012 17:44:32 +0000 (10:44 -0700)

Update draft release notes to 1.8.0

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

Merge branch 'rr/test-make-sure-we-have-git'Junio C Hamano Tue, 25 Sep 2012 17:40:24 +0000 (10:40 -0700)

Merge branch 'rr/test-make-sure-we-have-git'

Only the first test t0000 in the test suite made sure we have built
Git to be tested; move the check to test-lib so that it applies to
all tests equally.

* rr/test-make-sure-we-have-git:
t/test-lib: make sure Git has already been built

Merge branch 'js/hp-nonstop'Junio C Hamano Tue, 25 Sep 2012 17:40:21 +0000 (10:40 -0700)

Merge branch 'js/hp-nonstop'

Port to HP NonStop aka Tandem.

* js/hp-nonstop:
Port to HP NonStop

Merge branch 'js/poll-emu'Junio C Hamano Tue, 25 Sep 2012 17:40:18 +0000 (10:40 -0700)

Merge branch 'js/poll-emu'

* js/poll-emu:
make poll() work on platforms that can't recv() on a non-socket
poll() exits too early with EFAULT if 1st arg is NULL
fix some win32 specific dependencies in poll.c
make poll available for other platforms lacking it

Merge branch 'ep/malloc-check-perturb'Junio C Hamano Tue, 25 Sep 2012 17:40:14 +0000 (10:40 -0700)

Merge branch 'ep/malloc-check-perturb'

Run our test scripts with MALLOC_CHECK_ and MALLOC_PERTURB_, the
built-in memory access checking facility GNU libc has.

* ep/malloc-check-perturb:
MALLOC_CHECK: various clean-ups
Add MALLOC_CHECK_ and MALLOC_PERTURB_ libc env to the test suite for detecting heap corruption

Merge branch 'aj/xfuncname-ada'Junio C Hamano Tue, 25 Sep 2012 17:40:11 +0000 (10:40 -0700)

Merge branch 'aj/xfuncname-ada'

* aj/xfuncname-ada:
Add userdiff patterns for Ada

Merge branch 'jc/maint-mailinfo-mime-attr'Junio C Hamano Tue, 25 Sep 2012 17:39:56 +0000 (10:39 -0700)

Merge branch 'jc/maint-mailinfo-mime-attr'

When "git am" is fed an input that has multiple "Content-type: ..."
header, it did not grok charset= attribute correctly.

* jc/maint-mailinfo-mime-attr:
mailinfo: do not concatenate charset= attribute values from mime headers

Merge branch 'po/maint-docs'Junio C Hamano Tue, 25 Sep 2012 17:39:52 +0000 (10:39 -0700)

Merge branch 'po/maint-docs'

Various documentation fixups.

* po/maint-docs:
Doc branch: show -vv option and alternative
Doc clean: add See Also link
Doc add: link gitignore
Doc: separate gitignore pattern sources
Doc: shallow clone deepens _to_ new depth

Merge branch 'db/doc-custom-xmlto'Junio C Hamano Tue, 25 Sep 2012 17:39:48 +0000 (10:39 -0700)

Merge branch 'db/doc-custom-xmlto'

* db/doc-custom-xmlto:
Documentation/Makefile: Allow custom XMLTO binary

Merge branch 'maint'Junio C Hamano Tue, 25 Sep 2012 17:25:52 +0000 (10:25 -0700)

Merge branch 'maint'

* maint:
Revert "completion: fix shell expansion of items"

test-lib: use $SHELL_PATH, not $SHELLRamkumar Ramachandra Sat, 22 Sep 2012 04:55:10 +0000 (10:25 +0530)

test-lib: use $SHELL_PATH, not $SHELL

The codepath for handling "--tee" ends up relaunching the test
script under a shell, and that one has to be a Bourne. But we
incorrectly used $SHELL, which could be a non-Bourne (e.g. zsh or
csh); we have the Makefile variable $SHELL_PATH for exactly that,
so use it instead.

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

mergetool--lib: Allow custom commands to override built-insDavid Aguilar Tue, 25 Sep 2012 07:48:11 +0000 (00:48 -0700)

mergetool--lib: Allow custom commands to override built-ins

Allow users to override the default commands provided by the
mergetools/* scriptlets.

Users occasionally run into problems where they expect to be
able to override the built-in tool names. The documentation
does not explicitly mention that built-ins cannot be overridden,
so it's easy to assume that it should work.

Lift this restriction so that built-in tools are handled the
same way as user-configured tools. Add tests to guarantee this
behavior.

A nice benefit of this change is that it protects users from
having future versions of git trump their custom configuration
with a new built-in tool.

C.f.:

http://stackoverflow.com/questions/7435002/mergetool-from-gitconfig-being-ignored
http://thread.gmane.org/gmane.comp.version-control.msysgit/13188
http://thread.gmane.org/gmane.comp.version-control.git/148267

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

Revert "completion: fix shell expansion of items"Jeff King Tue, 25 Sep 2012 04:31:19 +0000 (00:31 -0400)

Revert "completion: fix shell expansion of items"

This reverts commit 25ae7cfd19c8f21721363c64163cd5d9d1135b20.

That patch does fix expansion of weird variables in some
simple tests, but it also seems to break other things, like
expansion of refs by "git checkout".

While we're sorting out the correct solution, we are much
better with the original bug (people with metacharacters in
their completions occasionally see an error message) than
the current bug (ref completion does not work at all).

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

Sync with maintJunio C Hamano Mon, 24 Sep 2012 19:50:36 +0000 (12:50 -0700)

Sync with maint

Start preparation for 1.7.12.2Junio C Hamano Mon, 24 Sep 2012 19:50:00 +0000 (12:50 -0700)

Start preparation for 1.7.12.2

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

Merge branch 'jc/maint-blame-no-such-path' into maintJunio C Hamano Mon, 24 Sep 2012 19:40:02 +0000 (12:40 -0700)

Merge branch 'jc/maint-blame-no-such-path' into maint

Even during a conflicted merge, "git blame $path" always meant to
blame uncommitted changes to the "working tree" version; make it
more useful by showing cleanly merged parts as coming from the other
branch that is being merged.

This incidentally fixes an unrelated problem on a case insensitive
filesystem, where "git blame MAKEFILE" run in a history that has
"Makefile" but not "MAKEFILE" did not say "No such file MAKEFILE in
HEAD" but pretended as if "MAKEFILE" was a newly added file.

* jc/maint-blame-no-such-path:
blame: allow "blame file" in the middle of a conflicted merge
blame $path: avoid getting fooled by case insensitive filesystems

Merge branch 'dj/fetch-all-tags' into maintJunio C Hamano Mon, 24 Sep 2012 19:39:21 +0000 (12:39 -0700)

Merge branch 'dj/fetch-all-tags' into maint

"git fetch --all", when passed "--no-tags", did not honor the
"--no-tags" option while fetching from individual remotes (the same
issue existed with "--tags", but combination "--all --tags" makes
much less sense than "--all --no-tags").

* dj/fetch-all-tags:
fetch --all: pass --tags/--no-tags through to each remote
submodule: use argv_array instead of hand-building arrays
fetch: use argv_array instead of hand-building arrays
argv-array: fix bogus cast when freeing array
argv-array: add pop function

Improve the description of GIT_PS1_SHOWUPSTREAMJonathan "Duke" Leto Mon, 24 Sep 2012 17:41:26 +0000 (10:41 -0700)

Improve the description of GIT_PS1_SHOWUPSTREAM

Describe what '=' means in the output of __git_ps1 when using
GIT_PS1_SHOWUPSTREAM, which was not previously described.

Signed-off-by: Jonathan "Duke" Leto <jonathan@leto.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

archive-zip: write extended timestampRené Scharfe Mon, 24 Sep 2012 15:56:23 +0000 (17:56 +0200)

archive-zip: write extended timestamp

File modification times in ZIP files are encoded in DOS format: local
time with a granularity of two seconds. Add an extra field to all
archive entries to also record the mtime in Unix' fashion, as UTC with
a granularity of one second.

This has the desirable side-effect of convincing Info-ZIP unzip 6.00
to respect general purpose flag 11, which is used to indicate that a
file name is encoded in UTF-8. Any extra field would do, actually,
but the extended timestamp is a reasonably small one (22 bytes per
entry). Archives created by Info-ZIP zip 3.0 contain it, too (but
with ctime and atime as well).

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

commit: pay attention to submodule.$name.ignore in... Orgad Shaneh Sun, 23 Sep 2012 07:37:47 +0000 (09:37 +0200)

commit: pay attention to submodule.$name.ignore in .gitmodules

"git status" does not list a submodule with uncommitted working tree
files as modified when "submodule.$name.ignore" is set to "dirty" in
in-tree ".gitmodules" file. Both status and commit honor the setting
in $GIT_DIR/config, but "commit" does not pick it up from .gitmodules,
which is inconsistent.

Teach "git commit" to pay attention to the setting in .gitmodules as
well.

Signed-off-by: Orgad Shaneh <orgads@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git blame: document that it always follows origin acros... Junio C Hamano Fri, 21 Sep 2012 19:09:42 +0000 (12:09 -0700)

git blame: document that it always follows origin across whole-file renames

Make it clear to people who (rightly or wrongly) think that the
"--follow" option should follow origin across while-file renames
that we already do so. That would explain the output that they see
when they do give the "--follow" option to the command.

We may or may not want to do a "--no-follow" patch as a follow-up,
but that is a separate topic.

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

Merge branch 'mh/fetch-filter-refs'Junio C Hamano Fri, 21 Sep 2012 18:17:00 +0000 (11:17 -0700)

Merge branch 'mh/fetch-filter-refs'

Finishing touch to update documentation of string-list to make sure
the earlier rewrite of ref-list match logic that depends on its sort
order will not get broken.

* mh/fetch-filter-refs:
string_list API: document what "sorted" means

Merge branch 'jc/maint-log-grep-all-match-1'Junio C Hamano Fri, 21 Sep 2012 18:14:49 +0000 (11:14 -0700)

Merge branch 'jc/maint-log-grep-all-match-1'

A finishing touch to make two symbols that were meant to be file-scope
static really so.

* jc/maint-log-grep-all-match-1:
grep.c: make two symbols really file-scope static this time

remote-curl: let users turn off smart httpJeff King Thu, 20 Sep 2012 21:30:58 +0000 (17:30 -0400)

remote-curl: let users turn off smart http

Usually there is no need for users to specify whether an
http remote is smart or dumb; the protocol is designed so
that a single initial request is made, and the client can
determine the server's capability from the response.

However, some misconfigured dumb-only servers may not like
the initial request by a smart client, as it contains a
query string. Until recently, commit 703e6e7 worked around
this by making a second request. However, that commit was
recently reverted due to its side effect of masking the
initial request's error code.

Since git has had that workaround for several years, we
don't know exactly how many such misconfigured servers are
out there. The reversion of 703e6e7 assumes they are rare
enough not to worry about. Still, that reversion leaves
somebody who does run into such a server with no escape
hatch at all. Let's give them an environment variable they
can tweak to perform the "dumb" request.

This is intentionally not a documented interface. It's
overly simple and is really there for debugging in case
somebody does complain about git not working with their
server. A real user-facing interface would entail a
per-remote or per-URL config variable.

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

receive-pack: drop "n/a" on unpacker errorsJeff King Fri, 21 Sep 2012 05:38:46 +0000 (01:38 -0400)

receive-pack: drop "n/a" on unpacker errors

The output from git push currently looks like this:

$ git push dest HEAD
fatal: [some message from index-pack]
error: unpack failed: index-pack abnormal exit
To dest
! [remote rejected] HEAD -> master (n/a (unpacker error))

That n/a is meant to be "the per-ref status is not
available" but the nested parentheses just make it look
ugly. Let's turn the final line into just:

! [remote rejected] HEAD -> master (unpacker error)

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

receive-pack: send pack-processing stderr over sidebandJeff King Fri, 21 Sep 2012 05:34:55 +0000 (01:34 -0400)

receive-pack: send pack-processing stderr over sideband

Receive-pack invokes either unpack-objects or index-pack to
handle the incoming pack. However, we do not redirect the
stderr of the sub-processes at all, so it is never seen by
the client. From the initial thread adding sideband support,
which is here:

http://thread.gmane.org/gmane.comp.version-control.git/139471

it is clear that some messages are specifically kept off the
sideband (with the assumption that they are of interest only
to an administrator, not the client). The stderr of the
subprocesses is mentioned in the thread, but it's unclear if
they are included in that group, or were simply forgotten.

However, there are a few good reasons to show them to the
client:

1. In many cases, they are directly about the incoming
packfile (e.g., fsck warnings with --strict, corruption
in the packfile, etc). Without these messages, the
client just gets "unpacker error" with no extra useful
diagnosis.

2. No matter what the cause, we are probably better off
showing the errors to the client. If the client and the
server admin are not the same entity, it is probably
much easier for the client to cut-and-paste the errors
they see than for the admin to try to dig them out of a
log and correlate them with a particular session.

3. Users of the ssh transport typically already see these
stderr messages, as the remote's stderr is copied
literally by ssh. This brings other transports (http,
and push-over-git if you are crazy enough to enable it)
more in line with ssh. As a bonus for ssh users,
because the messages are now fed through the sideband
and printed by the local git, they will have "remote:"
prepended and be properly interleaved with any local
output to stderr.

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

receive-pack: redirect unpack-objects stdout to /dev... Jeff King Fri, 21 Sep 2012 05:32:52 +0000 (01:32 -0400)

receive-pack: redirect unpack-objects stdout to /dev/null

The unpack-objects command should not generally produce any
output on stdout. However, if it's given extra input after
the packfile, it will spew the remainder to stdout. When
called by receive-pack, this means we will break protocol,
since our stdout is connected to the remote send-pack.

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

Update Swedish translation (1967t0f0u)Peter Krefting Fri, 21 Sep 2012 14:54:42 +0000 (15:54 +0100)

Update Swedish translation (1967t0f0u)

Signed-off-by: Peter Krefting <peter@softwolves.pp.se>

Merge branch 'maint'Junio C Hamano Thu, 20 Sep 2012 22:55:47 +0000 (15:55 -0700)

Merge branch 'maint'

* maint:
Documentation: Document signature showing options
completion: fix shell expansion of items

Merge branch 'nd/maint-diffstat-summary' into maintJunio C Hamano Thu, 20 Sep 2012 22:55:31 +0000 (15:55 -0700)

Merge branch 'nd/maint-diffstat-summary' into maint

* nd/maint-diffstat-summary:
Revert diffstat back to English

Merge branch 'jw/doc-commit-title' into maintJunio C Hamano Thu, 20 Sep 2012 22:55:22 +0000 (15:55 -0700)

Merge branch 'jw/doc-commit-title' into maint

* jw/doc-commit-title:
Documentation: describe subject more precisely

Merge branch 'dg/run-command-child-cleanup' into maintJunio C Hamano Thu, 20 Sep 2012 22:55:12 +0000 (15:55 -0700)

Merge branch 'dg/run-command-child-cleanup' into maint

* dg/run-command-child-cleanup:
run-command.c: fix broken list iteration in clear_child_for_cleanup

Merge branch 'jc/mailinfo-RE' into maintJunio C Hamano Thu, 20 Sep 2012 22:55:03 +0000 (15:55 -0700)

Merge branch 'jc/mailinfo-RE' into maint

* jc/mailinfo-RE:
mailinfo: strip "RE: " prefix

Merge branch 'sn/ls-remote-get-url-doc' into maintJunio C Hamano Thu, 20 Sep 2012 22:54:57 +0000 (15:54 -0700)

Merge branch 'sn/ls-remote-get-url-doc' into maint

* sn/ls-remote-get-url-doc:
ls-remote: document the '--get-url' option

Merge branch 'nd/log-n-doc' into maintJunio C Hamano Thu, 20 Sep 2012 22:54:43 +0000 (15:54 -0700)

Merge branch 'nd/log-n-doc' into maint

* nd/log-n-doc:
doc: move rev-list option -<n> from git-log.txt to rev-list-options.txt

Merge branch 'nd/maint-remote-remove' into maintJunio C Hamano Thu, 20 Sep 2012 22:53:31 +0000 (15:53 -0700)

Merge branch 'nd/maint-remote-remove' into maint

* nd/maint-remote-remove:
remote: prefer subcommand name 'remove' to 'rm'

grep.c: make two symbols really file-scope static this... Junio C Hamano Thu, 20 Sep 2012 21:20:09 +0000 (14:20 -0700)

grep.c: make two symbols really file-scope static this time

Adding a declaration at the beginning is not sufficient for obvious
reasons. The definition has to be made static.

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

clone --single: limit the fetch refspec to fetched... Ralf Thielow Thu, 20 Sep 2012 18:04:08 +0000 (20:04 +0200)

clone --single: limit the fetch refspec to fetched branch

After running "git clone --single", the resulting repository has the
usual default "+refs/heads/*:refs/remotes/origin/*" wildcard fetch
refspec installed, which means that a subsequent "git fetch" will
end up grabbing all the other branches.

Update the fetch refspec to cover only the singly cloned ref instead
to correct this.

That means:
If "--single" is used without "--branch" or "--mirror", the
fetch refspec covers the branch on which remote's HEAD points to.
If "--single" is used with "--branch", it'll cover only the branch
specified in the "--branch" option.
If "--single" is combined with "--mirror", then it'll cover all
refs of the cloned repository.
If "--single" is used with "--branch" that specifies a tag, then
it'll cover only the ref for this tag.

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

remote-curl: rename is_http variableJeff King Thu, 20 Sep 2012 17:00:22 +0000 (13:00 -0400)

remote-curl: rename is_http variable

We don't actually care whether the connection is http or
not; what we care about is whether it might be smart http.
Rename the variable to be more accurate, which will make it
easier to later make smart-http optional.

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

Documentation: Document signature showing optionsStephen Boyd Thu, 20 Sep 2012 08:10:38 +0000 (01:10 -0700)

Documentation: Document signature showing options

The pretty formats for GPG signatures were introduced but never
documented. Use the documentation from the commit that introduced them.
Do the same for the --show-signature option added to git log and
friends.

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

Enable info/refs gzip decompression in HTTP clientShawn O. Pearce Wed, 19 Sep 2012 23:12:02 +0000 (16:12 -0700)

Enable info/refs gzip decompression in HTTP client

Some HTTP servers try to use gzip compression on the /info/refs
request to save transfer bandwidth. Repositories with many tags
may find the /info/refs request can be gzipped to be 50% of the
original size due to the few but often repeated bytes used (hex
SHA-1 and commonly digits in tag names).

For most HTTP requests enable "Accept-Encoding: gzip" ensuring
the /info/refs payload can use this encoding format.

Only request gzip encoding from servers. Although deflate is
supported by libcurl, most servers have standardized on gzip
encoding for compression as that is what most browsers support.
Asking for deflate increases request sizes by a few bytes, but is
unlikely to ever be used by a server.

Disable the Accept-Encoding header on probe RPCs as response bodies
are supposed to be exactly 4 bytes long, "0000". The HTTP headers
requesting and indicating compression use more space than the data
transferred in the body.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>