gitweb.git
Merge branch 'jk/faster-name-conflicts'Junio C Hamano Fri, 26 Sep 2014 21:39:43 +0000 (14:39 -0700)

Merge branch 'jk/faster-name-conflicts'

Optimize the check to see if a ref $F can be created by making sure
no existing ref has $F/ as its prefix, which especially matters in
a repository with a large number of existing refs.

* jk/faster-name-conflicts:
refs: speed up is_refname_available

Merge branch 'jk/write-packed-refs-via-stdio'Junio C Hamano Fri, 26 Sep 2014 21:39:42 +0000 (14:39 -0700)

Merge branch 'jk/write-packed-refs-via-stdio'

Optimize the code path to write out the packed-refs file, which
especially matters in a repository with a large number of refs.

* jk/write-packed-refs-via-stdio:
refs: write packed_refs file using stdio

Update draft release notes to 2.2Junio C Hamano Fri, 19 Sep 2014 18:51:14 +0000 (11:51 -0700)

Update draft release notes to 2.2

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

Sync with Git 2.1.1Junio C Hamano Fri, 19 Sep 2014 21:22:34 +0000 (14:22 -0700)

Sync with Git 2.1.1

Git 2.1.1 v2.1.1Junio C Hamano Fri, 19 Sep 2014 21:21:31 +0000 (14:21 -0700)

Git 2.1.1

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

Merge branch 'et/spell-poll-infinite-with-minus-one... Junio C Hamano Fri, 19 Sep 2014 21:05:13 +0000 (14:05 -0700)

Merge branch 'et/spell-poll-infinite-with-minus-one-only' into maint

* et/spell-poll-infinite-with-minus-one-only:
upload-pack: keep poll(2)'s timeout to -1

Merge branch 'nd/fetch-pass-quiet-to-gc-child-process... Junio C Hamano Fri, 19 Sep 2014 21:05:12 +0000 (14:05 -0700)

Merge branch 'nd/fetch-pass-quiet-to-gc-child-process' into maint

* nd/fetch-pass-quiet-to-gc-child-process:
fetch: silence git-gc if --quiet is given
fetch: convert argv_gc_auto to struct argv_array

Merge branch 'jk/prune-top-level-refs-after-packing... Junio C Hamano Fri, 19 Sep 2014 21:05:12 +0000 (14:05 -0700)

Merge branch 'jk/prune-top-level-refs-after-packing' into maint

* jk/prune-top-level-refs-after-packing:
pack-refs: prune top-level refs like "refs/foo"

Merge branch 'jk/fast-import-fixes' into maintJunio C Hamano Fri, 19 Sep 2014 21:05:12 +0000 (14:05 -0700)

Merge branch 'jk/fast-import-fixes' into maint

* jk/fast-import-fixes:
fast-import: fix buffer overflow in dump_tags
fast-import: clean up pack_data pointer in end_packfile

Merge branch 'jn/unpack-trees-checkout-m-carry-deletion... Junio C Hamano Fri, 19 Sep 2014 21:05:12 +0000 (14:05 -0700)

Merge branch 'jn/unpack-trees-checkout-m-carry-deletion' into maint

* jn/unpack-trees-checkout-m-carry-deletion:
checkout -m: attempt merge when deletion of path was staged
unpack-trees: use 'cuddled' style for if-else cascade
unpack-trees: simplify 'all other failures' case

Merge branch 'sp/pack-protocol-doc-on-shallow' into... Junio C Hamano Fri, 19 Sep 2014 21:05:11 +0000 (14:05 -0700)

Merge branch 'sp/pack-protocol-doc-on-shallow' into maint

* sp/pack-protocol-doc-on-shallow:
Document LF appearing in shallow command during send-pack/receive-pack

Merge branch 'jk/prompt-stash-could-be-packed' into... Junio C Hamano Fri, 19 Sep 2014 21:05:11 +0000 (14:05 -0700)

Merge branch 'jk/prompt-stash-could-be-packed' into maint

* jk/prompt-stash-could-be-packed:
git-prompt: do not look for refs/stash in $GIT_DIR

Merge branch 'rs/refresh-beyond-symlink' into maintJunio C Hamano Fri, 19 Sep 2014 21:05:11 +0000 (14:05 -0700)

Merge branch 'rs/refresh-beyond-symlink' into maint

* rs/refresh-beyond-symlink:
read-cache: check for leading symlinks when refreshing index

Merge branch 'lf/bundle-exclusion' into maintJunio C Hamano Fri, 19 Sep 2014 21:05:11 +0000 (14:05 -0700)

Merge branch 'lf/bundle-exclusion' into maint

* lf/bundle-exclusion:
bundle: fix exclusion of annotated tags

Merge branch 'jc/apply-ws-prefix' into maintJunio C Hamano Fri, 19 Sep 2014 21:05:10 +0000 (14:05 -0700)

Merge branch 'jc/apply-ws-prefix' into maint

* jc/apply-ws-prefix:
apply: omit ws check for excluded paths
apply: hoist use_patch() helper for path exclusion up
apply: use the right attribute for paths in non-Git patches

Conflicts:
builtin/apply.c

Merge branch 'jk/command-line-config-empty-string'... Junio C Hamano Fri, 19 Sep 2014 21:05:10 +0000 (14:05 -0700)

Merge branch 'jk/command-line-config-empty-string' into maint

* jk/command-line-config-empty-string:
config: teach "git -c" to recognize an empty string

Conflicts:
config.c

Merge branch 'jk/pretty-empty-format' into maintJunio C Hamano Fri, 19 Sep 2014 21:05:09 +0000 (14:05 -0700)

Merge branch 'jk/pretty-empty-format' into maint

* jk/pretty-empty-format:
pretty: make empty userformats truly empty
pretty: treat "--format=" as an empty userformat
revision: drop useless string offset when parsing "--pretty"

Merge branch 'jk/fsck-exit-code-fix'Junio C Hamano Fri, 19 Sep 2014 18:38:42 +0000 (11:38 -0700)

Merge branch 'jk/fsck-exit-code-fix'

"git fsck" failed to report that it found corrupt objects via its
exit status in some cases.

* jk/fsck-exit-code-fix:
fsck: return non-zero status on missing ref tips
fsck: exit with non-zero status upon error from fsck_obj()

Merge branch 'so/rebase-doc'Junio C Hamano Fri, 19 Sep 2014 18:38:42 +0000 (11:38 -0700)

Merge branch 'so/rebase-doc'

* so/rebase-doc:
Documentation/git-rebase.txt: <upstream> must be given to specify <branch>

Merge branch 'ir/makefile-typofix'Junio C Hamano Fri, 19 Sep 2014 18:38:41 +0000 (11:38 -0700)

Merge branch 'ir/makefile-typofix'

* ir/makefile-typofix:
Makefile: fix some typos in the preamble

Merge branch 'wk/pre-push-sample-hook'Junio C Hamano Fri, 19 Sep 2014 18:38:41 +0000 (11:38 -0700)

Merge branch 'wk/pre-push-sample-hook'

* wk/pre-push-sample-hook:
pre-push.sample: Write error message to stderr

Merge branch 'ss/compat-default-source-for-newer-gnu'Junio C Hamano Fri, 19 Sep 2014 18:38:41 +0000 (11:38 -0700)

Merge branch 'ss/compat-default-source-for-newer-gnu'

* ss/compat-default-source-for-newer-gnu:
compat-util: add _DEFAULT_SOURCE define

Merge branch 'mr/mark-i18n-log-rerere'Junio C Hamano Fri, 19 Sep 2014 18:38:40 +0000 (11:38 -0700)

Merge branch 'mr/mark-i18n-log-rerere'

* mr/mark-i18n-log-rerere:
builtin/log.c: mark strings for translation
rerere.h: mark string for translation

Merge branch 'js/no-test-cmp-for-binaries'Junio C Hamano Fri, 19 Sep 2014 18:38:40 +0000 (11:38 -0700)

Merge branch 'js/no-test-cmp-for-binaries'

* js/no-test-cmp-for-binaries:
t9300: use test_cmp_bin instead of test_cmp to compare binary files

Merge branch 'ta/config-add-to-empty-or-true-fix'Junio C Hamano Fri, 19 Sep 2014 18:38:40 +0000 (11:38 -0700)

Merge branch 'ta/config-add-to-empty-or-true-fix'

"git config --add section.var val" used to lose existing
section.var whose value was an empty string.

* ta/config-add-to-empty-or-true-fix:
config: avoid a funny sentinel value "a^"
make config --add behave correctly for empty and NULL values

Merge branch 'sp/doc-update-index-cacheinfo'Junio C Hamano Fri, 19 Sep 2014 18:38:39 +0000 (11:38 -0700)

Merge branch 'sp/doc-update-index-cacheinfo'

* sp/doc-update-index-cacheinfo:
Documentation: use single-parameter --cacheinfo in example

Merge branch 'rs/export-strbuf-addchars'Junio C Hamano Fri, 19 Sep 2014 18:38:39 +0000 (11:38 -0700)

Merge branch 'rs/export-strbuf-addchars'

Code clean-up.

* rs/export-strbuf-addchars:
strbuf: use strbuf_addchars() for adding a char multiple times
strbuf: export strbuf_addchars()

Merge branch 'kb/perf-trace'Junio C Hamano Fri, 19 Sep 2014 18:38:39 +0000 (11:38 -0700)

Merge branch 'kb/perf-trace'

Compilation fix for some compilers.

* kb/perf-trace:
trace: correct trace_strbuf() parameter type for !HAVE_VARIADIC_MACROS

Merge branch 'jc/parseopt-verify-short-name'Junio C Hamano Fri, 19 Sep 2014 18:38:38 +0000 (11:38 -0700)

Merge branch 'jc/parseopt-verify-short-name'

Add checks for a common programming mistake to assign the same
short option name to two separate options to help developers.

* jc/parseopt-verify-short-name:
parse-options: detect attempt to add a duplicate short option name

Merge branch 'mk/reachable-protect-detached-head'Junio C Hamano Fri, 19 Sep 2014 18:38:38 +0000 (11:38 -0700)

Merge branch 'mk/reachable-protect-detached-head'

* mk/reachable-protect-detached-head:
reachable.c: add HEAD to reachability starting commits

Merge branch 'tb/complete-diff-ignore-blank-lines'Junio C Hamano Fri, 19 Sep 2014 18:38:38 +0000 (11:38 -0700)

Merge branch 'tb/complete-diff-ignore-blank-lines'

* tb/complete-diff-ignore-blank-lines:
completion: Add --ignore-blank-lines for diff

Merge branch 'as/calloc-takes-nmemb-then-size'Junio C Hamano Fri, 19 Sep 2014 18:38:37 +0000 (11:38 -0700)

Merge branch 'as/calloc-takes-nmemb-then-size'

Code clean-up.

* as/calloc-takes-nmemb-then-size:
calloc() and xcalloc() takes nmemb and then size

Merge branch 'tb/crlf-tests'Junio C Hamano Fri, 19 Sep 2014 18:38:37 +0000 (11:38 -0700)

Merge branch 'tb/crlf-tests'

* tb/crlf-tests:
MinGW: update tests to handle a native eol of crlf
Makefile: propagate NATIVE_CRLF to C
t0027: Tests for core.eol=native, eol=lf, eol=crlf

Merge branch 'rs/simplify-http-walker'Junio C Hamano Fri, 19 Sep 2014 18:38:36 +0000 (11:38 -0700)

Merge branch 'rs/simplify-http-walker'

Code clean-up.

* rs/simplify-http-walker:
http-walker: simplify process_alternates_response() using strbuf

Merge branch 'rs/simplify-config-include'Junio C Hamano Fri, 19 Sep 2014 18:38:36 +0000 (11:38 -0700)

Merge branch 'rs/simplify-config-include'

Code clean-up.

* rs/simplify-config-include:
config: simplify git_config_include()

Merge branch 'rs/merge-tree-simplify'Junio C Hamano Fri, 19 Sep 2014 18:38:36 +0000 (11:38 -0700)

Merge branch 'rs/merge-tree-simplify'

Code clean-up.

* rs/merge-tree-simplify:
merge-tree: remove unused df_conflict arguments

Merge branch 'da/styles'Junio C Hamano Fri, 19 Sep 2014 18:38:35 +0000 (11:38 -0700)

Merge branch 'da/styles'

* da/styles:
stylefix: asterisks stick to the variable, not the type

Merge branch 'ah/grammofix'Junio C Hamano Fri, 19 Sep 2014 18:38:35 +0000 (11:38 -0700)

Merge branch 'ah/grammofix'

* ah/grammofix:
grammofix in user-facing messages

Merge branch 'rs/more-uses-of-skip-prefix'Junio C Hamano Fri, 19 Sep 2014 18:38:35 +0000 (11:38 -0700)

Merge branch 'rs/more-uses-of-skip-prefix'

Code clean-up.

* rs/more-uses-of-skip-prefix:
pack-write: simplify index_pack_lockfile using skip_prefix() and xstrfmt()
connect: simplify check_ref() using skip_prefix() and starts_with()

Merge branch 'mb/fast-import-delete-root'Junio C Hamano Fri, 19 Sep 2014 18:38:34 +0000 (11:38 -0700)

Merge branch 'mb/fast-import-delete-root'

An attempt to remove the entire tree in the "git fast-import" input
stream caused it to misbehave.

* mb/fast-import-delete-root:
fast-import: fix segfault in store_tree()
t9300: test filedelete command

Merge branch 'jp/index-with-corrupt-stages'Junio C Hamano Fri, 19 Sep 2014 18:38:34 +0000 (11:38 -0700)

Merge branch 'jp/index-with-corrupt-stages'

A broken reimplementation of Git could write an invalid index that
records both stage #0 and higher stage entries for the same path.
Notice and reject such an index, as there is no sensible fallback
(we do not know if the broken tool wanted to resolve and forgot to
remove higher stage entries, or if it wanted to unresolve and
forgot to remove the stage#0 entry).

* jp/index-with-corrupt-stages:
read_index_unmerged(): remove unnecessary loop index adjustment
read_index_from(): catch out of order entries when reading an index file

Merge branch 'jk/index-pack-threading-races'Junio C Hamano Fri, 19 Sep 2014 18:38:33 +0000 (11:38 -0700)

Merge branch 'jk/index-pack-threading-races'

When receiving an invalid pack stream that records the same object
twice, multiple threads got confused due to a race. We should
reject or correct such a stream upon receiving, but that will be a
larger change.

* jk/index-pack-threading-races:
index-pack: fix race condition with duplicate bases

Merge branch 'jk/commit-author-parsing'Junio C Hamano Fri, 19 Sep 2014 18:38:33 +0000 (11:38 -0700)

Merge branch 'jk/commit-author-parsing'

Code clean-up.

* jk/commit-author-parsing:
determine_author_info(): copy getenv output
determine_author_info(): reuse parsing functions
date: use strbufs in date-formatting functions
record_author_date(): use find_commit_header()
record_author_date(): fix memory leak on malformed commit
commit: provide a function to find a header in a buffer

Merge branch 'bb/date-iso-strict'Junio C Hamano Fri, 19 Sep 2014 18:38:32 +0000 (11:38 -0700)

Merge branch 'bb/date-iso-strict'

"log --date=iso" uses a slight variant of ISO 8601 format that is
made more human readable. A new "--date=iso-strict" option gives
datetime output that is more strictly conformant.

* bb/date-iso-strict:
pretty: provide a strict ISO 8601 date format

Merge branch 'mb/build-contrib-svn-fe'Junio C Hamano Fri, 19 Sep 2014 18:38:32 +0000 (11:38 -0700)

Merge branch 'mb/build-contrib-svn-fe'

* mb/build-contrib-svn-fe:
contrib/svn-fe: fix Makefile

Merge branch 'jk/fast-export-anonymize'Junio C Hamano Fri, 19 Sep 2014 18:38:31 +0000 (11:38 -0700)

Merge branch 'jk/fast-export-anonymize'

Sometimes users want to report a bug they experience on their
repository, but they are not at liberty to share the contents of
the repository. "fast-export" was taught an "--anonymize" option
to replace blob contents, names of people and paths and log
messages with bland and simple strings to help them.

* jk/fast-export-anonymize:
docs/fast-export: explain --anonymize more completely
teach fast-export an --anonymize option

Merge branch 'jk/send-pack-many-refspecs'Junio C Hamano Fri, 19 Sep 2014 18:38:31 +0000 (11:38 -0700)

Merge branch 'jk/send-pack-many-refspecs'

The number of refs that can be pushed at once over smart HTTP was
limited by the command line length. The limitation has been lifted
by passing these refs from the standard input of send-pack.

* jk/send-pack-many-refspecs:
send-pack: take refspecs over stdin

Documentation/git-rebase.txt: <upstream> must be given... Sergey Organov Fri, 29 Aug 2014 13:51:46 +0000 (17:51 +0400)

Documentation/git-rebase.txt: <upstream> must be given to specify <branch>

Current syntax description makes one wonder if there is any
syntactic way to distinguish between <branch> and <upstream> so that
one can specify <branch> but not <upstream>, but that is not the
case.

Make it explicit that these arguments are positional, i.e. the
earlier ones cannot be omitted if you want to give later ones.

Signed-off-by: Sergey Organov <sorganov@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

compat-util: add _DEFAULT_SOURCE defineSergey Senozhatsky Sun, 14 Sep 2014 05:33:35 +0000 (14:33 +0900)

compat-util: add _DEFAULT_SOURCE define

glibc has deprecated the use of _BSD_SOURCE define

warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE"

To make it easier to maintain a cross platform source code, that
warning can be suppressed by _DEFAULT_SOURCE.

Define both _BSD_SOURCE and _DEFAULT_SOURCE to clean-up the build.

Signed-off-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Makefile: fix some typos in the preambleIan Liu Rodrigues Sat, 13 Sep 2014 14:20:22 +0000 (11:20 -0300)

Makefile: fix some typos in the preamble

Signed-off-by: Ian Liu Rodrigues <ian.liu88@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

builtin/log.c: mark strings for translationMatthias Ruester Sun, 14 Sep 2014 22:07:10 +0000 (00:07 +0200)

builtin/log.c: mark strings for translation

Signed-off-by: Matthias Ruester <matthias.ruester@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

rerere.h: mark string for translationMatthias Ruester Sun, 14 Sep 2014 22:40:53 +0000 (00:40 +0200)

rerere.h: mark string for translation

Signed-off-by: Matthias Ruester <matthias.ruester@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-svn: delay term initializationEric Wong Sun, 14 Sep 2014 07:38:29 +0000 (07:38 +0000)

git-svn: delay term initialization

On my Debian 7 system, this fixes annoying warnings when the output
of "git svn" commands are redirected:

Unable to get Terminal Size. The TIOCGWINSZ ioctl didn't work.
The COLUMNS and LINES environment variables didn't work. The
resize program didn't work.

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

git svn: find-rev allows short switches for near matchesEric Wong Sun, 7 Sep 2014 08:35:19 +0000 (08:35 +0000)

git svn: find-rev allows short switches for near matches

Allow -B and -A to act as short aliases for --before and --after
options respectively. This reduces typing and hopefully allows
reuse of muscle memory for grep(1) users.

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

git-svn.txt: Remove mentions of repack optionsLawrence Velázquez Fri, 5 Sep 2014 03:46:25 +0000 (23:46 -0400)

git-svn.txt: Remove mentions of repack options

Git no longer seems to use these flags or their associated config keys;
when they are present, git-svn outputs a message indicating that they
are being ignored.

Signed-off-by: Lawrence Velázquez <vq@larryv.me>
Signed-off-by: Eric Wong <normalperson@yhbt.net>

git svn: info: correctly handle absolute path argsEric Wong Sun, 3 Aug 2014 01:44:08 +0000 (01:44 +0000)

git svn: info: correctly handle absolute path args

Calling "git svn info $(pwd)" would hit:
"Reading from filehandle failed at ..."
errors due to improper prefixing and canonicalization.

Strip the toplevel path from absolute filesystem paths to ensure
downstream canonicalization routines are only exposed to paths
tracked in git (or SVN).

v2:
Thanks to Andrej Manduch for originally noticing the issue
and fixing my original version of this to handle
more corner cases such as "/path/to/top/../top" and
"/path/to/top/../top/file" as shown in the new test cases.

v3:
Fix pathname portability problems pointed out by Johannes Sixt
with a hint from brian m. carlson.

Cc: Johannes Sixt <j6t@kdbg.org>
Cc: "brian m. carlson" <sandals@crustytoothpaste.net>
Signed-off-by: Andrej Manduch <amanduch@gmail.com>
Signed-off-by: Eric Wong <normalperson@yhbt.net>

git-svn: branch: avoid systematic prompt for cert/passMonard Vong Thu, 24 Jul 2014 16:25:59 +0000 (18:25 +0200)

git-svn: branch: avoid systematic prompt for cert/pass

Commands such as "git svn init/fetch/dcommit" do not prompt for client
certificate/password if they are stored in SVN config file. Make
"git svn branch" consistent with the other commands, as SVN::Client is
capable of building its own authentication baton from information in the
SVN config directory.

Signed-off-by: Monard Vong <travelingsoul86@gmail.com>
Signed-off-by: Eric Wong <normalperson@yhbt.net>

t9300: use test_cmp_bin instead of test_cmp to compare... Johannes Sixt Fri, 12 Sep 2014 19:47:34 +0000 (21:47 +0200)

t9300: use test_cmp_bin instead of test_cmp to compare binary files

test_cmp is intended to produce diff output for human consumption. The
input in one instance in t9300-fast-import.sh are binary files, however.
Use test_cmp_bin to compare the files.

This was noticed because on Windows we have a special implementation of
test_cmp in pure bash code (to ignore differences due to intermittent CR
in actual output), and bash runs into an infinite loop due to the binary
nature of the input.

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

refs: speed up is_refname_availableJeff King Wed, 10 Sep 2014 11:11:55 +0000 (07:11 -0400)

refs: speed up is_refname_available

Our filesystem ref storage does not allow D/F conflicts; so
if "refs/heads/a/b" exists, we do not allow "refs/heads/a"
to exist (and vice versa). This falls out naturally for
loose refs, where the filesystem enforces the condition. But
for packed-refs, we have to make the check ourselves.

We do so by iterating over the entire packed-refs namespace
and checking whether each name creates a conflict. If you
have a very large number of refs, this is quite inefficient,
as you end up doing a large number of comparisons with
uninteresting bits of the ref tree (e.g., we know that all
of "refs/tags" is uninteresting in the example above, yet we
check each entry in it).

Instead, let's take advantage of the fact that we have the
packed refs stored as a trie of ref_entry structs. We can
find each component of the proposed refname as we walk
through the trie, checking for D/F conflicts as we go. For a
refname of depth N (i.e., 4 in the above example), we only
have to visit N nodes. And at each visit, we can binary
search the M names at that level, for a total complexity of
O(N lg M). ("M" is different at each level, of course, but
we can take the worst-case "M" as a bound).

In a pathological case of fetching 30,000 fresh refs into a
repository with 8.5 million refs, this dropped the time to
run "git fetch" from tens of minutes to ~30s.

This may also help smaller cases in which we check against
loose refs (which we do when renaming a ref), as we may
avoid a disk access for unrelated loose directories.

Note that the tests we add appear at first glance to be
redundant with what is already in t3210. However, the early
tests are not robust; they are run with reflogs turned on,
meaning that we are not actually testing
is_refname_available at all! The operations will still fail
because the reflogs will hit D/F conflicts in the
filesystem. To get a true test, we must turn off reflogs
(but we don't want to do so for the entire script, because
the point of turning them on was to cover some other cases).

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

fsck: return non-zero status on missing ref tipsJeff King Fri, 12 Sep 2014 03:38:30 +0000 (23:38 -0400)

fsck: return non-zero status on missing ref tips

Fsck tries hard to detect missing objects, and will complain
(and exit non-zero) about any inter-object links that are
missing. However, it will not exit non-zero for any missing
ref tips, meaning that a severely broken repository may
still pass "git fsck && echo ok".

The problem is that we use for_each_ref to iterate over the
ref tips, which hides broken tips. It does at least print an
error from the refs.c code, but fsck does not ever see the
ref and cannot note the problem in its exit code. We can solve
this by using for_each_rawref and noting the error ourselves.

In addition to adding tests for this case, we add tests for
all types of missing-object links (all of which worked, but
which we were not testing).

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

config: avoid a funny sentinel value "a^"Jeff King Tue, 19 Aug 2014 06:20:00 +0000 (02:20 -0400)

config: avoid a funny sentinel value "a^"

Introduce CONFIG_REGEX_NONE as a more explicit sentinel value to say
"we do not want to replace any existing entry" and use it in the
implementation of "git config --add".

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

pre-push.sample: Write error message to stderrW. Trevor King Thu, 11 Sep 2014 20:35:30 +0000 (13:35 -0700)

pre-push.sample: Write error message to stderr

githooks(5) suggests:

Information about why the push is rejected may be sent to the user
by writing to standard error.

So follow that advice in the sample.

Signed-off-by: W. Trevor King <wking@tremily.us>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Update draft release notes to 2.2Junio C Hamano Thu, 11 Sep 2014 18:19:47 +0000 (11:19 -0700)

Update draft release notes to 2.2

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

Documentation: use single-parameter --cacheinfo in... Steffen Prohaska Thu, 11 Sep 2014 15:19:51 +0000 (17:19 +0200)

Documentation: use single-parameter --cacheinfo in example

The single-parameter form is described as the preferred way. Separate
arguments are only supported for backward compatibility. Update the
example to the recommended form.

Signed-off-by: Steffen Prohaska <prohaska@zib.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'br/imap-send-simplify-tunnel-child-process'Junio C Hamano Thu, 11 Sep 2014 17:33:37 +0000 (10:33 -0700)

Merge branch 'br/imap-send-simplify-tunnel-child-process'

Code clean-up.

* br/imap-send-simplify-tunnel-child-process:
imap-send: simplify v_issue_imap_cmd() and get_cmd_result() using starts_with()
imap-send.c: imap_folder -> imap_server_conf.folder
git-imap-send: simplify tunnel construction

Merge branch 'jk/name-decoration-alloc'Junio C Hamano Thu, 11 Sep 2014 17:33:36 +0000 (10:33 -0700)

Merge branch 'jk/name-decoration-alloc'

The API to allocate the structure to keep track of commit
decoration was cumbersome to use, inviting lazy code to
overallocate memory.

* jk/name-decoration-alloc:
log-tree: use FLEX_ARRAY in name_decoration
log-tree: make name_decoration hash static
log-tree: make add_name_decoration a public function

Merge branch 'jn/unpack-trees-checkout-m-carry-deletion'Junio C Hamano Thu, 11 Sep 2014 17:33:35 +0000 (10:33 -0700)

Merge branch 'jn/unpack-trees-checkout-m-carry-deletion'

"git checkout -m" did not switch to another branch while carrying
the local changes forward when a path was deleted from the index.

* jn/unpack-trees-checkout-m-carry-deletion:
checkout -m: attempt merge when deletion of path was staged
unpack-trees: use 'cuddled' style for if-else cascade
unpack-trees: simplify 'all other failures' case

Merge branch 'rs/list-optim'Junio C Hamano Thu, 11 Sep 2014 17:33:35 +0000 (10:33 -0700)

Merge branch 'rs/list-optim'

Fix a couple of "accumulate into a sorted list" to "accumulate and
then sort the list".

* rs/list-optim:
walker: avoid quadratic list insertion in mark_complete
sha1_name: avoid quadratic list insertion in handle_one_ref

Merge branch 'jk/fast-import-fixes'Junio C Hamano Thu, 11 Sep 2014 17:33:34 +0000 (10:33 -0700)

Merge branch 'jk/fast-import-fixes'

With sufficiently long refnames, fast-import could have overflown
an on-stack buffer.

* jk/fast-import-fixes:
fast-import: fix buffer overflow in dump_tags
fast-import: clean up pack_data pointer in end_packfile

Merge branch 'jk/prune-top-level-refs-after-packing'Junio C Hamano Thu, 11 Sep 2014 17:33:33 +0000 (10:33 -0700)

Merge branch 'jk/prune-top-level-refs-after-packing'

After "pack-refs --prune" packed refs at the top-level, it failed
to prune them.

* jk/prune-top-level-refs-after-packing:
pack-refs: prune top-level refs like "refs/foo"

Merge branch 'nd/large-blobs'Junio C Hamano Thu, 11 Sep 2014 17:33:32 +0000 (10:33 -0700)

Merge branch 'nd/large-blobs'

Teach a few codepaths to punt (instead of dying) when large blobs
that would not fit in core are involved in the operation.

* nd/large-blobs:
diff: shortcut for diff'ing two binary SHA-1 objects
diff --stat: mark any file larger than core.bigfilethreshold binary
diff.c: allow to pass more flags to diff_populate_filespec
sha1_file.c: do not die failing to malloc in unpack_compressed_entry
wrapper.c: introduce gentle xmallocz that does not die()

Merge branch 'nd/fetch-pass-quiet-to-gc-child-process'Junio C Hamano Thu, 11 Sep 2014 17:33:32 +0000 (10:33 -0700)

Merge branch 'nd/fetch-pass-quiet-to-gc-child-process'

Progress output from "git gc --auto" was visible in "git fetch -q".

* nd/fetch-pass-quiet-to-gc-child-process:
fetch: silence git-gc if --quiet is given
fetch: convert argv_gc_auto to struct argv_array

Merge branch 'dt/cache-tree-repair'Junio C Hamano Thu, 11 Sep 2014 17:33:32 +0000 (10:33 -0700)

Merge branch 'dt/cache-tree-repair'

Add a few more places in "commit" and "checkout" that make sure
that the cache-tree is fully populated in the index.

* dt/cache-tree-repair:
cache-tree: do not try to use an invalidated subtree info to build a tree
cache-tree: Write updated cache-tree after commit
cache-tree: subdirectory tests
test-dump-cache-tree: invalid trees are not errors
cache-tree: create/update cache-tree on checkout

Merge branch 'rs/ref-transaction-1'Junio C Hamano Thu, 11 Sep 2014 17:33:30 +0000 (10:33 -0700)

Merge branch 'rs/ref-transaction-1'

The second batch of the transactional ref update series.

* rs/ref-transaction-1: (22 commits)
update-ref --stdin: pass transaction around explicitly
update-ref --stdin: narrow scope of err strbuf
refs.c: make delete_ref use a transaction
refs.c: make prune_ref use a transaction to delete the ref
refs.c: remove lock_ref_sha1
refs.c: remove the update_ref_write function
refs.c: remove the update_ref_lock function
refs.c: make lock_ref_sha1 static
walker.c: use ref transaction for ref updates
fast-import.c: use a ref transaction when dumping tags
receive-pack.c: use a reference transaction for updating the refs
refs.c: change update_ref to use a transaction
branch.c: use ref transaction for all ref updates
fast-import.c: change update_branch to use ref transactions
sequencer.c: use ref transactions for all ref updates
commit.c: use ref transactions for updates
replace.c: use the ref transaction functions for updates
tag.c: use ref transactions when doing updates
refs.c: add transaction.status and track OPEN/CLOSED
refs.c: make ref_transaction_begin take an err argument
...

Merge branch 'nd/mv-code-cleaning'Junio C Hamano Thu, 11 Sep 2014 17:33:30 +0000 (10:33 -0700)

Merge branch 'nd/mv-code-cleaning'

Code clean-up.

* nd/mv-code-cleaning:
mv: no SP between function name and the first opening parenthese
mv: combine two if(s)
mv: unindent one level for directory move code
mv: move index search code out
mv: remove an "if" that's always true
mv: split submodule move preparation code out
mv: flatten error handling code block
mv: mark strings for translations

Merge branch 'mm/discourage-commit-a-to-finish-conflict... Junio C Hamano Thu, 11 Sep 2014 17:33:29 +0000 (10:33 -0700)

Merge branch 'mm/discourage-commit-a-to-finish-conflict-resolution'

* mm/discourage-commit-a-to-finish-conflict-resolution:
merge, pull: stop advising 'commit -a' in case of conflict

Merge branch 'jk/make-simplify-dependencies'Junio C Hamano Thu, 11 Sep 2014 17:33:29 +0000 (10:33 -0700)

Merge branch 'jk/make-simplify-dependencies'

Admit that keeping LIB_H up-to-date, only for those that do not use
the automatically generated dependencies, is a losing battle, and
make it conservative by making everything depend on anything.

* jk/make-simplify-dependencies:
Makefile: drop CHECK_HEADER_DEPENDENCIES code
Makefile: use `find` to determine static header dependencies
i18n: treat "make pot" as an explicitly-invoked target

Merge branch 'et/spell-poll-infinite-with-minus-one... Junio C Hamano Thu, 11 Sep 2014 17:33:28 +0000 (10:33 -0700)

Merge branch 'et/spell-poll-infinite-with-minus-one-only'

We used to pass -1000 to poll(2), expecting it to also mean "no
timeout", which should be spelled as -1.

* et/spell-poll-infinite-with-minus-one-only:
upload-pack: keep poll(2)'s timeout to -1

Merge branch 'br/http-init-fix'Junio C Hamano Thu, 11 Sep 2014 17:33:27 +0000 (10:33 -0700)

Merge branch 'br/http-init-fix'

Code clean-up.

* br/http-init-fix:
http: style fixes for curl_multi_init error check
http.c: die if curl_*_init fails

Merge branch 'rs/child-process-init'Junio C Hamano Thu, 11 Sep 2014 17:33:27 +0000 (10:33 -0700)

Merge branch 'rs/child-process-init'

Code clean-up.

* rs/child-process-init:
run-command: inline prepare_run_command_v_opt()
run-command: call run_command_v_opt_cd_env() instead of duplicating it
run-command: introduce child_process_init()
run-command: introduce CHILD_PROCESS_INIT

Merge branch 'jk/contrib-subtree-make-all'Junio C Hamano Thu, 11 Sep 2014 17:33:26 +0000 (10:33 -0700)

Merge branch 'jk/contrib-subtree-make-all'

* jk/contrib-subtree-make-all:
subtree: make "all" default target of Makefile

Merge branch 'ta/config-set-2'Junio C Hamano Thu, 11 Sep 2014 17:33:26 +0000 (10:33 -0700)

Merge branch 'ta/config-set-2'

Update git_config() users with callback functions for a very narrow
scope with calls to config-set API that lets us query a single
variable.

* ta/config-set-2:
builtin/apply.c: replace `git_config()` with `git_config_get_string_const()`
merge-recursive.c: replace `git_config()` with `git_config_get_int()`
ll-merge.c: refactor `read_merge_config()` to use `git_config_string()`
fast-import.c: replace `git_config()` with `git_config_get_*()` family
branch.c: replace `git_config()` with `git_config_get_string()
alias.c: replace `git_config()` with `git_config_get_string()`
imap-send.c: replace `git_config()` with `git_config_get_*()` family
pager.c: replace `git_config()` with `git_config_get_value()`
builtin/gc.c: replace `git_config()` with `git_config_get_*()` family
rerere.c: replace `git_config()` with `git_config_get_*()` family
fetchpack.c: replace `git_config()` with `git_config_get_*()` family
archive.c: replace `git_config()` with `git_config_get_bool()` family
read-cache.c: replace `git_config()` with `git_config_get_*()` family
http-backend.c: replace `git_config()` with `git_config_get_bool()` family
daemon.c: replace `git_config()` with `git_config_get_bool()` family

Merge branch 'ta/config-set-1'Junio C Hamano Thu, 11 Sep 2014 17:33:25 +0000 (10:33 -0700)

Merge branch 'ta/config-set-1'

Use the new caching config-set API in git_config() calls.

* ta/config-set-1:
add tests for `git_config_get_string_const()`
add a test for semantic errors in config files
rewrite git_config() to use the config-set API
config: add `git_die_config()` to the config-set API
change `git_config()` return value to void
add line number and file name info to `config_set`
config.c: fix accuracy of line number in errors
config.c: mark error and warnings strings for translation

refs: write packed_refs file using stdioJeff King Wed, 10 Sep 2014 10:03:52 +0000 (06:03 -0400)

refs: write packed_refs file using stdio

We write each line of a new packed-refs file individually
using a write() syscall (and sometimes 2, if the ref is
peeled). Since each line is only about 50-100 bytes long,
this creates a lot of system call overhead.

We can instead open a stdio handle around our descriptor and
use fprintf to write to it. The extra buffering is not a
problem for us, because nobody will read our new packed-refs
file until we call commit_lock_file (by which point we have
flushed everything).

On a pathological repository with 8.5 million refs, this
dropped the time to run `git pack-refs` from 20s to 6s.

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

fsck: exit with non-zero status upon error from fsck_obj()Jeff King Fri, 29 Aug 2014 20:31:46 +0000 (16:31 -0400)

fsck: exit with non-zero status upon error from fsck_obj()

Upon finding a corrupt loose object, we forgot to note the error to
signal it with the exit status of the entire process.

[jc: adjusted t1450 and added another test]

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

Update draft release notes to 2.2Junio C Hamano Tue, 9 Sep 2014 20:06:26 +0000 (13:06 -0700)

Update draft release notes to 2.2

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

Merge branch 'sp/pack-protocol-doc-on-shallow'Junio C Hamano Tue, 9 Sep 2014 19:54:09 +0000 (12:54 -0700)

Merge branch 'sp/pack-protocol-doc-on-shallow'

* sp/pack-protocol-doc-on-shallow:
Document LF appearing in shallow command during send-pack/receive-pack

Merge branch 'tf/imap-send-create'Junio C Hamano Tue, 9 Sep 2014 19:54:08 +0000 (12:54 -0700)

Merge branch 'tf/imap-send-create'

* tf/imap-send-create:
imap-send: create target mailbox if it is missing
imap-send: clarify CRAM-MD5 vs LOGIN documentation

Merge branch 'jk/prompt-stash-could-be-packed'Junio C Hamano Tue, 9 Sep 2014 19:54:08 +0000 (12:54 -0700)

Merge branch 'jk/prompt-stash-could-be-packed'

The prompt script checked $GIT_DIR/ref/stash file to see if there
is a stash, which was a no-no.

* jk/prompt-stash-could-be-packed:
git-prompt: do not look for refs/stash in $GIT_DIR

Merge branch 'tb/pretty-format-cd-date-format'Junio C Hamano Tue, 9 Sep 2014 19:54:07 +0000 (12:54 -0700)

Merge branch 'tb/pretty-format-cd-date-format'

Documentation update.

* tb/pretty-format-cd-date-format:
pretty: note that %cd respects the --date= option

Merge branch 'rs/inline-compat-path-macros'Junio C Hamano Tue, 9 Sep 2014 19:54:07 +0000 (12:54 -0700)

Merge branch 'rs/inline-compat-path-macros'

* rs/inline-compat-path-macros:
turn path macros into inline function

Merge branch 'rs/clean-menu-item-defn'Junio C Hamano Tue, 9 Sep 2014 19:54:06 +0000 (12:54 -0700)

Merge branch 'rs/clean-menu-item-defn'

* rs/clean-menu-item-defn:
clean: use f(void) instead of f() to declare a pointer to a function without arguments

Merge branch 'jc/config-mak-document-darwin-vs-macosx'Junio C Hamano Tue, 9 Sep 2014 19:54:05 +0000 (12:54 -0700)

Merge branch 'jc/config-mak-document-darwin-vs-macosx'

* jc/config-mak-document-darwin-vs-macosx:
config.mak.uname: add hint on uname_R for MacOS X
config.mak.uname: set NO_APPLE_COMMON_CRYPTO on older systems

Merge branch 'sb/mailsplit-dead-code-removal'Junio C Hamano Tue, 9 Sep 2014 19:54:04 +0000 (12:54 -0700)

Merge branch 'sb/mailsplit-dead-code-removal'

* sb/mailsplit-dead-code-removal:
mailsplit.c: remove dead code

Merge branch 'so/rebase-doc'Junio C Hamano Tue, 9 Sep 2014 19:54:03 +0000 (12:54 -0700)

Merge branch 'so/rebase-doc'

May need further updates to the description to explain what makes
various modes of operation to decide that the request can become a
"no-op".

* so/rebase-doc:
Documentation/git-rebase.txt: -f forces a rebase that would otherwise be a no-op

Merge branch 'sb/prepare-revision-walk-error-check'Junio C Hamano Tue, 9 Sep 2014 19:54:03 +0000 (12:54 -0700)

Merge branch 'sb/prepare-revision-walk-error-check'

* sb/prepare-revision-walk-error-check:
prepare_revision_walk(): check for return value in all places

Merge branch 'sb/blame-msg-i18n'Junio C Hamano Tue, 9 Sep 2014 19:54:03 +0000 (12:54 -0700)

Merge branch 'sb/blame-msg-i18n'

* sb/blame-msg-i18n:
builtin/blame.c: add translation to warning about failed revision walk

Merge branch 'nd/strbuf-utf8-replace'Junio C Hamano Tue, 9 Sep 2014 19:54:02 +0000 (12:54 -0700)

Merge branch 'nd/strbuf-utf8-replace'

* nd/strbuf-utf8-replace:
utf8.c: fix strbuf_utf8_replace() consuming data beyond input string

Merge branch 'sb/plug-leaks'Junio C Hamano Tue, 9 Sep 2014 19:54:01 +0000 (12:54 -0700)

Merge branch 'sb/plug-leaks'

* sb/plug-leaks:
clone.c: don't leak memory in cmd_clone
remote.c: don't leak the base branch name in format_tracking_info

Merge branch 'rs/refresh-beyond-symlink'Junio C Hamano Tue, 9 Sep 2014 19:54:01 +0000 (12:54 -0700)

Merge branch 'rs/refresh-beyond-symlink'

"git add x" where x that used to be a directory has become a
symbolic link to a directory misbehaved.

* rs/refresh-beyond-symlink:
read-cache: check for leading symlinks when refreshing index