gitweb.git
Documentation: change -L:<regex> to -L:<funcname>Matthieu Moy Mon, 20 Apr 2015 12:09:06 +0000 (14:09 +0200)

Documentation: change -L:<regex> to -L:<funcname>

The old wording was somehow implying that <start> and <end> were not
regular expressions. Also, the common case is to use a plain function
name here so <funcname> makes sense (the fact that it is a regular
expression is documented in line-range-format.txt).

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

Merge tag 'gitgui-0.20.0' of repo.or.cz/r/git-guiJunio C Hamano Sun, 19 Apr 2015 01:35:48 +0000 (18:35 -0700)

Merge tag 'gitgui-0.20.0' of repo.or.cz/r/git-gui

git-gui 0.20.0

* tag 'gitgui-0.20.0' of http://repo.or.cz/r/git-gui:
git-gui: set version 0.20
git-gui: sv.po: Update Swedish translation (547t0f0u)
git-gui i18n: Updated Bulgarian translation (547t,0f,0u)
git-gui: Makes chooser set 'gitdir' to the resolved path
git-gui: Fixes chooser not accepting gitfiles
git-gui: reinstate support for Tcl 8.4
git-gui: fix problem with gui.maxfilesdisplayed
git-gui: fix verbose loading when git path contains spaces.
git-gui/gitk: Do not depend on Cygwin's "kill" command on Windows
git-gui: add configurable tab size to the diff view
git-gui: Make git-gui lib dir configurable at runime
git-gui i18n: Updated Bulgarian translation (520t,0f,0u)
L10n: vi.po (543t): Init translation for Vietnamese
git-gui: align the new recursive checkbox with the radiobuttons.
git-gui: Add a 'recursive' checkbox in the clone menu.

t1509: update prepare script to be able to run t1509... Nguyễn Thái Ngọc Duy Sat, 18 Apr 2015 11:22:53 +0000 (18:22 +0700)

t1509: update prepare script to be able to run t1509 in chroot again

Tested on Gentoo and OpenSUSE 13.1, both x86-64

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

git-gui: set version 0.20 gitgui-0.20.0Pat Thoyts Sat, 18 Apr 2015 11:15:32 +0000 (12:15 +0100)

git-gui: set version 0.20

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

git-gui: sv.po: Update Swedish translation (547t0f0u)Peter Krefting Fri, 27 Mar 2015 09:25:32 +0000 (10:25 +0100)

git-gui: sv.po: Update Swedish translation (547t0f0u)

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

git-gui i18n: Updated Bulgarian translation (547t,0f,0u)Alexander Shopov Tue, 7 Apr 2015 15:29:46 +0000 (18:29 +0300)

git-gui i18n: Updated Bulgarian translation (547t,0f,0u)

Signed-off-by: Alexander Shopov <ash@kambanaria.org>
Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>

limit_list: avoid quadratic behavior from still_interestingJeff King Fri, 17 Apr 2015 22:11:04 +0000 (18:11 -0400)

limit_list: avoid quadratic behavior from still_interesting

When we are limiting a rev-list traversal due to
UNINTERESTING refs, we have to walk down the tips (both
interesting and uninteresting) to find where they intersect.
We keep a queue of commits to examine, pop commits off
the queue one by one, and potentially add their parents. The
size of the queue will naturally fluctuate based on the
"width" of the history graph; i.e., the number of
simultaneous lines of development. But for the most part it
will stay in the same ballpark as the initial number of tips
we fed, shrinking over time (as we hit common ancestors of
the tips). So roughly speaking, if we start with `N` tips,
we'll spend much of the time with a queue around `N` items.

For each UNINTERESTING commit we pop, we call
still_interesting to check whether marking its parents as
UNINTERESTING has made the whole queue uninteresting (in
which case we can quit early). Because the queue is stored
as a linked list, this is `O(N)`, where `N` is the number of
items in the queue. So processing a queue with `N` commits
marked UNINTERESTING (and one or more interesting commits)
will take `O(N^2)`.

If you feed a lot of positive tips, this isn't a problem.
They aren't UNINTERESTING, so they don't incur the
still_interesting check. It also isn't a problem if you
traverse from an interesting tip to some UNINTERESTING
bases. We order the queue by recency, so the interesting
commits stay at the front of the queue as we walk down them.
The linear check can exit early as soon as it sees one
interesting commit left in the queue.

But if you want to know whether an older commit is reachable
from a set of newer tips, we end up processing in the
opposite direction: from the UNINTERESTING ones down to the
interesting one. This may happen when we call:

git rev-list $commits --not --all

in check_everything_connected after a fetch. If we fetched
something much older than most of our refs, and if we have a
large number of refs, the traversal cost is dominated by the
quadratic behavior.

These commands simulate the connectivity check of such a
fetch, when you have `$n` distinct refs in the receiver:

# positive ref is 100,000 commits deep
git rev-list --all | head -100000 | tail -1 >input

# huge number of more recent negative refs
git rev-list --all | head -$n | sed s/^/^/ >>input

time git rev-list --stdin <input

Here are timings for various `n` on the linux.git
repository. The `n=1` case provides a baseline for just
walking the commits, which lets us see the still_interesting
overhead. The times marked with `+` subtract that baseline
to show just the extra time growth due to the large number
of refs. The `x` numbers show the slowdown of the adjusted
time versus the prior trial.

n | before | after
--------------------------------------------------------
1 | 0.991s | 0.848s
10000 | 1.120s (+0.129s) | 0.885s (+0.037s)
20000 | 1.451s (+0.460s, 3.5x) | 0.923s (+0.075s, 2.0x)
40000 | 2.731s (+1.740s, 3.8x) | 0.994s (+0.146s, 1.9x)
80000 | 8.235s (+7.244s, 4.2x) | 1.123s (+0.275s, 1.9x)

Each trial doubles `n`, so you can see the quadratic (`4x`)
behavior before this patch. Afterwards, we have a roughly
linear relationship.

The implementation is fairly straightforward. Whenever we do
the linear search, we cache the interesting commit we find,
and next time check it before doing another linear search.
If that commit is removed from the list or becomes
UNINTERESTING itself, then we fall back to the linear
search. This is very similar to the trick used by fce87ae
(Fix quadratic performance in rewrite_one., 2008-07-12).

I considered and rejected several possible alternatives:

1. Keep a count of UNINTERESTING commits in the queue.
This requires managing the count not only when removing
an item from the queue, but also when marking an item
as UNINTERESTING. That requires touching the other
functions which mark commits, and would require knowing
quickly which commits are in the queue (lookup in the
queue is linear, so we would need an auxiliary
structure or to also maintain an IN_QUEUE flag in each
commit object).

2. Keep a separate list of interesting commits. Drop items
from it when they are dropped from the queue, or if
they become UNINTERESTING. This again suffers from
extra complexity to maintain the list, not to mention
CPU and memory.

3. Use a better data structure for the queue. This is
something that could help the fix in fce87ae, because
we order the queue by recency, and it is about
inserting quickly in recency order. So a normal
priority queue would help there. But here, we cannot
disturb the order of the queue, which makes things
harder. We really do need an auxiliary index to track
the flag we care about, which is basically option (2)
above.

The "cache" trick is simple, and the numbers above show that
it works well in practice. This is because the length of
time it takes to find an interesting commit is proportional
to the length of time it will remain cached (i.e., if we
have to walk a long way to find it, it also means we have to
pop a lot of elements in the queue until we get rid of it
and have to find another interesting commit).

The worst case is still quadratic, though. We could have `N`
uninteresting commits at the front of the queue, followed by
`N` interesting commits, where commit `i` has parent `i+N`.
When we pop commit `i`, we will notice that the parent of
the next commit, `i+1+N` is still interesting and cache it.
But then handling commit `i+1`, we will mark its parent
`i+1+N` uninteresting, and immediately invalidate our cache.

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

type_from_string_gently: make sure length matchesJeff King Fri, 17 Apr 2015 14:52:48 +0000 (10:52 -0400)

type_from_string_gently: make sure length matches

When commit fe8e3b7 refactored type_from_string to allow
input that was not NUL-terminated, it switched to using
strncmp instead of strcmp. But this means we check only the
first "len" bytes of the strings, and ignore any remaining
bytes in the object_type_string. We should make sure that it
is also "len" bytes, or else we would accept "comm" as
"commit", and so forth.

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

config: fix settings in default_user_config templateOssi Herrala Fri, 17 Apr 2015 14:50:10 +0000 (17:50 +0300)

config: fix settings in default_user_config template

The name (not user) and email setting should be in config section
"user" and not in "core" as documented in Documentation/config.txt.

Signed-off-by: Ossi Herrala <oherrala@gmail.com>
Reviewed-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

rev-list-options.txt: complete sentence about notes... Michael J Gruber Fri, 17 Apr 2015 14:28:56 +0000 (16:28 +0200)

rev-list-options.txt: complete sentence about notes matching

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

test-lib-functions.sh: fix the second argument to some... Elia Pinto Thu, 16 Apr 2015 14:12:07 +0000 (07:12 -0700)

test-lib-functions.sh: fix the second argument to some helper functions

The second argument to test_path_is_file and test_path_is_dir
must be $2 and not $*, which instead would repeat the file
name in the error message.

Signed-off-by: Elia Pinto <gitter.spiros@gmail.com>
Reviewed-by: Matthieu Moy <Matthieu.Moy@grenoble-inp.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

attr: skip UTF8 BOM at the beginning of the input fileJunio C Hamano Thu, 16 Apr 2015 17:48:58 +0000 (10:48 -0700)

attr: skip UTF8 BOM at the beginning of the input file

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

config: use utf8_bom[] from utf.[ch] in git_parse_source()Junio C Hamano Thu, 16 Apr 2015 17:47:45 +0000 (10:47 -0700)

config: use utf8_bom[] from utf.[ch] in git_parse_source()

Because the function reads one character at the time, unfortunately
we cannot use the easier skip_utf8_bom() helper, but at least we do
not have to duplicate the constant string this way.

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

utf8-bom: introduce skip_utf8_bom() helperJunio C Hamano Thu, 16 Apr 2015 17:45:29 +0000 (10:45 -0700)

utf8-bom: introduce skip_utf8_bom() helper

With the recent change to ignore the UTF8 BOM at the beginning of
.gitignore files, we now have two codepaths that do such a skipping
(the other one is for reading the configuration files).

Introduce utf8_bom[] constant string and skip_utf8_bom() helper
and teach .gitignore code how to use it.

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

add_excludes_from_file: clarify the bom skipping logicJunio C Hamano Thu, 16 Apr 2015 18:26:29 +0000 (11:26 -0700)

add_excludes_from_file: clarify the bom skipping logic

Even though the previous step shifts where the "entry" begins, we
still iterate over the original buf[], which may begin with the
UTF-8 BOM we are supposed to be skipping. At the end of the first
line, the code grabs the contents of it starting at "entry", so
there is nothing wrong per-se, but the logic looks really confused.

Instead, move the buf pointer and shrink its size, to truly
pretend that UTF-8 BOM did not exist in the input.

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

dir: allow a BOM at the beginning of exclude filesCarlos Martín Nieto Thu, 16 Apr 2015 14:05:12 +0000 (16:05 +0200)

dir: allow a BOM at the beginning of exclude files

Some text editors like Notepad or LibreOffice write an UTF-8 BOM in
order to indicate that the file is Unicode text rather than whatever the
current locale would indicate.

If someone uses such an editor to edit a gitignore file, we are left
with those three bytes at the beginning of the file. If we do not skip
them, we will attempt to match a filename with the BOM as prefix, which
won't match the files the user is expecting.

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

Revert "merge: pass verbosity flag down to merge-recursive"Junio C Hamano Thu, 16 Apr 2015 15:03:14 +0000 (08:03 -0700)

Revert "merge: pass verbosity flag down to merge-recursive"

This reverts commit 2bf15a3330a26183adc8563dbeeacc11294b8a01, whose
intention was good, but the verbosity levels used in merge-recursive
turns out to be rather uneven. For example, a merge of two branches
with conflicting submodule updates used to report CONFLICT: output
with --quiet but no longer (which *is* desired), while the final
"Automatic merge failed; fix conflicts and then commit" message is
still shown even with --quiet (which *is* inconsistent).

Originally reported by Bryan Turner; it is too early to declare what
the concensus is, but it seems that we would need to level the
verbosity levels used in merge strategy backends before we can go
forward. In the meantime, we'd revert to the old behaviour until
that happens.

cf. $gmane/267245

parse_date_basic(): let the system handle DST conversionJunio C Hamano Wed, 15 Apr 2015 15:47:48 +0000 (08:47 -0700)

parse_date_basic(): let the system handle DST conversion

The function parses the input to compute the broken-down time in
"struct tm", and the GMT timezone offset. If the timezone offset
does not exist in the input, the broken-down time is turned into the
number of seconds since epoch both in the current timezone and in
GMT and the offset is computed as their difference.

However, we forgot to make sure tm.tm_isdst is set to -1 (i.e. let
the system figure out if DST is in effect in the current timezone
when turning the broken-down time to the number of seconds since
epoch); it is done so at the beginning of the function, but a call
to match_digit() in the function can lead to a call to gmtime_r() to
clobber the field.

Reported-by: Linus Torvalds <torvalds@linux-foundation.org>
Diagnosed-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

parse_date_basic(): return early when given a bogus... Junio C Hamano Wed, 15 Apr 2015 15:43:58 +0000 (08:43 -0700)

parse_date_basic(): return early when given a bogus timestamp

When the input does not have GMT timezone offset, the code computes
it by computing the local and GMT time for the given timestamp. But
there is no point doing so if the given timestamp is known to be a
bogus one.

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

Git 2.4.0-rc2 v2.4.0-rc2Junio C Hamano Tue, 14 Apr 2015 18:57:13 +0000 (11:57 -0700)

Git 2.4.0-rc2

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

Merge branch 'jk/colors'Junio C Hamano Tue, 14 Apr 2015 18:49:13 +0000 (11:49 -0700)

Merge branch 'jk/colors'

"diff-highlight" (in contrib/) used to show byte-by-byte
differences, which meant that multi-byte characters can be chopped
in the middle. It learned to pay attention to character boundaries
(assuming the UTF-8 payload).

* jk/colors:
diff-highlight: do not split multibyte characters

Merge branch 'jk/merge-quiet'Junio C Hamano Tue, 14 Apr 2015 18:49:12 +0000 (11:49 -0700)

Merge branch 'jk/merge-quiet'

"git merge --quiet" did not squelch messages from the underlying
merge-recursive strategy.

* jk/merge-quiet:
merge: pass verbosity flag down to merge-recursive

Merge branch 'jk/pack-corruption-post-mortem'Junio C Hamano Tue, 14 Apr 2015 18:49:11 +0000 (11:49 -0700)

Merge branch 'jk/pack-corruption-post-mortem'

Documentation update.

* jk/pack-corruption-post-mortem:
howto: document more tools for recovery corruption

Merge branch 'jc/update-instead-into-void'Junio C Hamano Tue, 14 Apr 2015 18:49:10 +0000 (11:49 -0700)

Merge branch 'jc/update-instead-into-void'

A push into an unborn branch, with "receive.denyCurrentBranch" set
to "updateInstead", did not check out the working tree as expected.

* jc/update-instead-into-void:
push-to-deploy: allow pushing into an unborn branch and updating it

Merge branch 'sb/plug-streaming-leak'Junio C Hamano Tue, 14 Apr 2015 18:49:09 +0000 (11:49 -0700)

Merge branch 'sb/plug-streaming-leak'

* sb/plug-streaming-leak:
streaming.c: fix a memleak

Merge branch 'jn/doc-fast-import-no-16-octopus-limit'Junio C Hamano Tue, 14 Apr 2015 18:49:08 +0000 (11:49 -0700)

Merge branch 'jn/doc-fast-import-no-16-octopus-limit'

Documentation update.

* jn/doc-fast-import-no-16-octopus-limit:
fast-import doc: remove suggested 16-parent limit

Merge branch 'sb/plug-wt-shortstatus-tracking-leak'Junio C Hamano Tue, 14 Apr 2015 18:49:07 +0000 (11:49 -0700)

Merge branch 'sb/plug-wt-shortstatus-tracking-leak'

* sb/plug-wt-shortstatus-tracking-leak:
wt-status.c: fix a memleak

Merge branch 'pt/enter-repo-comment-fix'Junio C Hamano Tue, 14 Apr 2015 17:34:05 +0000 (10:34 -0700)

Merge branch 'pt/enter-repo-comment-fix'

* pt/enter-repo-comment-fix:
enter_repo(): fix docs to match code

Merge branch 'jz/gitweb-conf-doc-fix'Junio C Hamano Tue, 14 Apr 2015 17:34:01 +0000 (10:34 -0700)

Merge branch 'jz/gitweb-conf-doc-fix'

* jz/gitweb-conf-doc-fix:
gitweb.conf.txt: say "build-time", not "built-time"

Merge branch 'jk/cherry-pick-docfix'Junio C Hamano Tue, 14 Apr 2015 17:33:54 +0000 (10:33 -0700)

Merge branch 'jk/cherry-pick-docfix'

* jk/cherry-pick-docfix:
cherry-pick: fix docs describing handling of empty commits

Merge branch 'iu/fix-parse-options-h-comment'Junio C Hamano Tue, 14 Apr 2015 17:33:45 +0000 (10:33 -0700)

Merge branch 'iu/fix-parse-options-h-comment'

* iu/fix-parse-options-h-comment:
parse-options.h: OPTION_{BIT,SET_INT} do not store pointer to defval

Merge branch 'jg/cguide-we-cannot-count'Junio C Hamano Tue, 14 Apr 2015 16:55:29 +0000 (09:55 -0700)

Merge branch 'jg/cguide-we-cannot-count'

* jg/cguide-we-cannot-count:
CodingGuidelines: update 'rough' rule count

CodingGuidelines: update 'rough' rule countJulian Gindi Mon, 13 Apr 2015 12:54:14 +0000 (08:54 -0400)

CodingGuidelines: update 'rough' rule count

Changed inaccurate count of "rough rules" from three to the more
generic 'a few'.

Signed-off-by: Julian Gindi <juliangindi@gmail.com>
Reviewed-by: Eric Sunshine <sunshine@sunshineco.com>
Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

grep: correctly initialize help-all optionPatrick Steinhardt Thu, 9 Apr 2015 19:59:06 +0000 (21:59 +0200)

grep: correctly initialize help-all option

The "help-all" option is being initialized with a wrong value.
While being semantically wrong this can also cause a segmentation
fault in gcc on ARMv7 hardfloat platforms with a hardened
toolchain. Fix this by initializing with a NULL value.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Reviewed-by: René Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

completion: fix global bash variable leak on __gitcompa... Márcio Almada Wed, 8 Apr 2015 05:45:58 +0000 (02:45 -0300)

completion: fix global bash variable leak on __gitcompappend

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

pack-bitmap.c: fix a memleakStefan Beller Tue, 31 Mar 2015 01:22:10 +0000 (18:22 -0700)

pack-bitmap.c: fix a memleak

Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t9814: guarantee only one source exists in git-p4 copy... Vitor Antunes Sun, 5 Apr 2015 23:08:35 +0000 (00:08 +0100)

t9814: guarantee only one source exists in git-p4 copy tests

By using a tree with multiple identical files and allowing copy detection to
choose any one of them, the check in the test is unnecessarily complex. We can
simplify by:

* Modify source file (file2) before copying the file.
* Check that only file2 is the source in the output of "p4 filelog".
* Remove all "case" statements and replace them with simple tests to check
that source is "file2".

Signed-off-by: Vitor Antunes <vitor.hda@gmail.com>
Acked-by: Luke Diamand <luke@diamand.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge tag 'l10n-2.4.0-rnd2' of git://github.com/git... Junio C Hamano Thu, 9 Apr 2015 04:15:33 +0000 (21:15 -0700)

Merge tag 'l10n-2.4.0-rnd2' of git://github.com/git-l10n/git-po

git l10n 2.4.0-rnd2

connect.c: ignore extra colon after hostnameTorsten Bögershausen Tue, 7 Apr 2015 20:03:25 +0000 (22:03 +0200)

connect.c: ignore extra colon after hostname

Ignore an extra ':' at the end of the hostname in URL's like
"ssh://example.com:/path/to/repo"

The colon is meant to separate a port number from the hostname.
If the port is empty, the colon should be ignored, see RFC 3986.

It had been working for URLs with ssh:// scheme, but was unintentionally
broken in 86ceb3, "allow ssh://user@[2001:db8::1]/repo.git"

Reported-by: Reid Woodbury Jr. <reidw@rawsound.com>
Signed-off-by: Torsten Bögershausen <tboegi@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'master' of git://github.com/alexhenrie... Jiang Xin Thu, 9 Apr 2015 00:21:39 +0000 (08:21 +0800)

Merge branch 'master' of git://github.com/alexhenrie/git-po

* 'master' of git://github.com/alexhenrie/git-po:
l10n: ca.po: update translation

l10n: TEAMS: Change repository URL of zh_CNJiang Xin Thu, 9 Apr 2015 00:00:10 +0000 (08:00 +0800)

l10n: TEAMS: Change repository URL of zh_CN

Repository URL of zh_CN l10n for Git has been changed over 2 years,
update po/TEAMS for it.

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>

l10n: ca.po: update translationAlex Henrie Wed, 8 Apr 2015 00:07:47 +0000 (18:07 -0600)

l10n: ca.po: update translation

Signed-off-by: Alex Henrie <alexhenrie24@gmail.com>

l10n: Updated Bulgarian translation of git (2305t,0f,0u)Alexander Shopov Tue, 7 Apr 2015 08:22:47 +0000 (11:22 +0300)

l10n: Updated Bulgarian translation of git (2305t,0f,0u)

Signed-off-by: Alexander Shopov <ash@kambanaria.org>

l10n: sv.po: Update Swedish translation (2305t0f0u)Peter Krefting Tue, 7 Apr 2015 07:45:20 +0000 (08:45 +0100)

l10n: sv.po: Update Swedish translation (2305t0f0u)

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

l10n: de.po: translate one messageRalf Thielow Sat, 4 Apr 2015 08:06:42 +0000 (10:06 +0200)

l10n: de.po: translate one message

Translate one message came from git.pot update in 6eebb35
(l10n: git.pot: v2.4.0 round 2 (1 update)).

Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>

diff-highlight: do not split multibyte charactersKyle J. McKay Fri, 3 Apr 2015 22:15:14 +0000 (15:15 -0700)

diff-highlight: do not split multibyte characters

When the input is UTF-8 and Perl is operating on bytes instead of
characters, a diff that changes one multibyte character to another
that shares an initial byte sequence will result in a broken diff
display as the common byte sequence prefix will be separated from
the rest of the bytes in the multibyte character.

For example, if a single line contains only the unicode character
U+C9C4 (encoded as UTF-8 0xEC, 0xA7, 0x84) and that line is then
changed to the unicode character U+C9C0 (encoded as UTF-8 0xEC,
0xA7, 0x80), when operating on bytes diff-highlight will show only
the single byte change from 0x84 to 0x80 thus creating invalid UTF-8
and a broken diff display.

Fix this by putting Perl into character mode when splitting the line
and then back into byte mode after the split is finished.

The utf8::xxx functions require Perl 5.8 so we require that as well.

Also, since we are mucking with code in the split_line function, we
change a '*' quantifier to a '+' quantifier when matching the $COLOR
expression which has the side effect of speeding everything up while
eliminating useless '' elements in the returned array.

Reported-by: Yi EungJun <semtlenori@gmail.com>
Signed-off-by: Kyle J. McKay <mackyle@gmail.com>
Acked-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

l10n: fr.po v2.4.0 round 2Jean-Noel Avila Sat, 4 Apr 2015 16:04:56 +0000 (18:04 +0200)

l10n: fr.po v2.4.0 round 2

Signed-off-by: Jean-Noel Avila <jn.avila@free.fr>

l10n: ru: updated Russian translationDimitriy Ryazantcev Fri, 3 Apr 2015 13:30:14 +0000 (16:30 +0300)

l10n: ru: updated Russian translation

Signed-off-by: Dimitriy Ryazantcev <dimitriy.ryazantcev@gmail.com>

l10n: vi.po(2305t): Updated 1 new stringTran Ngoc Quan Fri, 3 Apr 2015 01:54:35 +0000 (08:54 +0700)

l10n: vi.po(2305t): Updated 1 new string

Signed-off-by: Tran Ngoc Quan <vnwildman@gmail.com>

l10n: zh_CN: for git v2.4.0 l10n round 2Jiang Xin Fri, 3 Apr 2015 00:39:57 +0000 (08:39 +0800)

l10n: zh_CN: for git v2.4.0 l10n round 2

Translate 1 update message (2305t0f0u) for git v2.4.0 l10n round 2.

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>

l10n: git.pot: v2.4.0 round 2 (1 update)Jiang Xin Fri, 3 Apr 2015 00:16:53 +0000 (08:16 +0800)

l10n: git.pot: v2.4.0 round 2 (1 update)

Generate po/git.pot from v2.4.0-rc1 for git v2.4.0 l10n round 2.

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>

Merge branch 'master' of git://github.com/git-l10n... Jiang Xin Fri, 3 Apr 2015 00:13:24 +0000 (08:13 +0800)

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

* 'master' of git://github.com/git-l10n/git-po:
l10n: de.po: translate 'symbolic link' as 'symbolische Verknüpfung'
l10n: de.po: translate 99 new messages
l10n: de.po: fix messages with abbreviated hashs
l10n: de.po: add space before ellipsis
l10n: vi.po: Updated Vietnamese translation
l10n: zh_CN: translations for git v2.4.0-rc0
l10n: fr.po v2.4.0-rc0 round 1
l10n: ca.po: update translation
l10n: ru: updated Russian translation
l10n: sv.po: Update Swedish translation (2305t0f0u)
l10n: git.pot: v2.4.0 round 1 (99 new, 92 removed)
l10n: ru: added Russian translation
l10n: de.po: fix negation for commit -a with paths

merge: pass verbosity flag down to merge-recursiveJeff King Thu, 2 Apr 2015 21:39:52 +0000 (17:39 -0400)

merge: pass verbosity flag down to merge-recursive

This makes "git merge --quiet" really quiet when we call
into merge-recursive.

Note that we can't just pass our flag down as-is; the two
parts of the code use different scales. We center at "0" as
normal for git-merge (with "--quiet" giving a negative
value), but merge-recursive uses "2" as its center. This
patch passes a negative value to merge-recursive rather than
"1", though, as otherwise the user would have to use "-qqq"
to squelch all messages (but the downside is that the user
cannot distinguish between levels 0-2 if without resorting
to the GIT_MERGE_VERBOSITY variable).

We may want to review and renormalize the message severities
in merge-recursive, but that does not have to happen now.
This is at least in improvement in the sense that we are
respecting "--quiet" at all.

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

Git 2.4.0-rc1 v2.4.0-rc1Junio C Hamano Thu, 2 Apr 2015 19:46:06 +0000 (12:46 -0700)

Git 2.4.0-rc1

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

Merge branch 'sb/atomic-push'Junio C Hamano Thu, 2 Apr 2015 19:34:43 +0000 (12:34 -0700)

Merge branch 'sb/atomic-push'

* sb/atomic-push:
send-pack: unify error messages for unsupported capabilities

init: don't set core.worktree when initializing /.gitJeff King Thu, 2 Apr 2015 18:37:40 +0000 (14:37 -0400)

init: don't set core.worktree when initializing /.git

If you create a git repository in the root directory with
"git init /", we erroneously write a core.worktree entry.
This isn't _wrong_, in the sense that it's OK to set
core.worktree when we don't need to. But it is unnecessarily
surprising if you later move the .git directory to another
path (which usually moves the relative working tree, but is
foiled if there is an explicit worktree set).

The problem is that we check whether core.worktree is
necessary by seeing if we can make the git_dir by
concatenating "/.git" onto the working tree. That would lead
to "//.git" in this instance, but we actually have "/.git"
(without the doubled slash).

We can fix this by special-casing the root directory. I also
split the logic out into its own function to make the
conditional a bit more readable (and used skip_prefix, which
I think makes it a little more obvious what is going on).

No tests, as we would need to be able to write to "/" to do
so. I did manually confirm that:

sudo git init /
cd /
git rev-parse --show-toplevel
git config core.worktree

still finds the top-level correctly (as "/"), and does not
set any core.worktree variable.

Signed-off-by: Jeff King <peff@peff.net>
Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

push --signed: tighten what the receiving end can ask... Junio C Hamano Thu, 2 Apr 2015 01:00:36 +0000 (18:00 -0700)

push --signed: tighten what the receiving end can ask to sign

Instead of blindly trusting the receiving side to give us a sensible
nonce to sign, limit the length (max 256 bytes) and the alphabet
(alnum and a few selected punctuations, enough to encode in base64)
that can be used in nonce.

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

send-pack: unify error messages for unsupported capabil... Ralf Thielow Thu, 2 Apr 2015 17:28:48 +0000 (19:28 +0200)

send-pack: unify error messages for unsupported capabilities

If --signed is not supported, the error message names the remote
"receiving end". If --atomic is not supported, the error message
names the remote "server". Unify the naming to "receiving end"
as we're in the context of "push".

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

l10n: de.po: translate 'symbolic link' as 'symbolische... Matthias Rüster Sun, 29 Mar 2015 01:46:32 +0000 (03:46 +0200)

l10n: de.po: translate 'symbolic link' as 'symbolische Verknüpfung'

The use of 'symbolische Verknüpfung' for 'symbolic link' is more common
than 'symbolischer Verweis'.

Signed-off-by: Matthias Rüster <matthias.ruester@gmail.com>
Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>

l10n: de.po: translate 99 new messagesRalf Thielow Fri, 27 Mar 2015 15:58:26 +0000 (16:58 +0100)

l10n: de.po: translate 99 new messages

Translate 99 messages came from git.pot update in c2ea120
(l10n: git.pot: v2.4.0 round 1 (99 new, 92 removed)).

Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>

l10n: de.po: fix messages with abbreviated hashsRalf Thielow Tue, 24 Mar 2015 18:37:47 +0000 (19:37 +0100)

l10n: de.po: fix messages with abbreviated hashs

The three dots in messages where the hash is abbreviated
were misinterpreted and are fixed with this commit.

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

l10n: de.po: add space before ellipsisPhillip Sz Sat, 21 Mar 2015 12:52:37 +0000 (13:52 +0100)

l10n: de.po: add space before ellipsis

Signed-off-by: Phillip Sz <phillip.szelat@gmail.com>
Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>

howto: document more tools for recovery corruptionJeff King Wed, 1 Apr 2015 21:08:56 +0000 (17:08 -0400)

howto: document more tools for recovery corruption

Long ago, I documented a corruption recovery I did and gave
some C code that I used to help find a flipped bit. I had
to fix a similar case recently, and I ended up writing a few
more tools. I hope nobody ever has to use these, but it
does not hurt to share them, just in case.

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

push-to-deploy: allow pushing into an unborn branch... Junio C Hamano Wed, 1 Apr 2015 06:15:45 +0000 (23:15 -0700)

push-to-deploy: allow pushing into an unborn branch and updating it

Setting receive.denycurrentbranch to updateinstead and pushing into
the current branch, when the working tree and the index is truly
clean, is supposed to reset the working tree and the index to match
the tree of the pushed commit. This did not work when pushing into
an unborn branch.

The code that drives push-to-checkout hook needs no change, as the
interface is defined so that hook can decide what to do when the
push is coming to an unborn branch and take an appropriate action
since the beginning.

Acked-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

fast-import doc: remove suggested 16-parent limitJonathan Nieder Tue, 31 Mar 2015 23:18:07 +0000 (16:18 -0700)

fast-import doc: remove suggested 16-parent limit

Merges with an absurd number of parents are still a bad idea because
they do not render well in tools like gitk, but if they are present
in the repository being imported into git then there's no need to
avoid reproducing them faithfully.

In olden times, before v1.6.0-rc0~194 (2008-06-27), git commit-tree
and higher-level tools built on top of it were limited to writing 16
parents for a commit. Nowadays normal git operations are happy to
write more parents when asked, so the motivation for this note in the
fast-import documentation is gone and we can remove it.

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

Sync with 2.3.5Junio C Hamano Tue, 31 Mar 2015 21:58:38 +0000 (14:58 -0700)

Sync with 2.3.5

* maint:
Git 2.3.5
docs: clarify what git-rebase's "-p" / "--preserve-merges" does

Git 2.3.5 v2.3.5Junio C Hamano Tue, 31 Mar 2015 21:57:10 +0000 (14:57 -0700)

Git 2.3.5

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

Merge branch 'ss/pull-rebase-preserve' into maintJunio C Hamano Tue, 31 Mar 2015 21:54:11 +0000 (14:54 -0700)

Merge branch 'ss/pull-rebase-preserve' into maint

* ss/pull-rebase-preserve:
docs: clarify what git-rebase's "-p" / "--preserve-merges" does
docs: clarify "preserve" option wording for git-pull

Merge branch 'jc/report-path-error-to-dir' into maintJunio C Hamano Tue, 31 Mar 2015 21:53:08 +0000 (14:53 -0700)

Merge branch 'jc/report-path-error-to-dir' into maint

Code clean-up.

* jc/report-path-error-to-dir:
report_path_error(): move to dir.c

Merge branch 'ph/push-doc-cas' into maintJunio C Hamano Tue, 31 Mar 2015 21:52:23 +0000 (14:52 -0700)

Merge branch 'ph/push-doc-cas' into maint

* ph/push-doc-cas:
git-push.txt: clean up force-with-lease wording

gitweb.conf.txt: say "build-time", not "built-time"Jérôme Zago Thu, 3 Apr 2014 20:49:47 +0000 (22:49 +0200)

gitweb.conf.txt: say "build-time", not "built-time"

"build-time" is used everywhere else.

Signed-off-by: Jérôme Zago <git-patch@agt-the-walker.net>
Reviewed-by: Jakub Narębski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

streaming.c: fix a memleakJohn Keeping Tue, 31 Mar 2015 01:22:11 +0000 (18:22 -0700)

streaming.c: fix a memleak

When stream_blob_to_fd() opens an input stream with a filter, the
filter gets discarded upon calling close_istream() before the
function returns in the normal case. However, when we fail to open
the stream, we failed to discard the filter.

By discarding the filter in the failure case, give a consistent
life-time rule of the filter to the callers; otherwise the callers
need to conditionally discard the filter themselves, and this
function does not give enough hint for the caller to do so
correctly.

Signed-off-by: John Keeping <john@keeping.me.uk>
Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

enter_repo(): fix docs to match codePaul Tan Tue, 31 Mar 2015 13:39:27 +0000 (21:39 +0800)

enter_repo(): fix docs to match code

In b3256eb (standardize and improve lookup rules for external local
repos), enter_repo() was modified to use a different precedence
ordering of suffixes for DWIM of the repository path, and to ensure
that the repository path is actually valid instead of just testing
for existence.

However, the documentation was not modified to reflect these
changes. Fix the documentation to match the code.

Documentation contributed by Jeff King.

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

wt-status.c: fix a memleakStefan Beller Tue, 31 Mar 2015 01:22:09 +0000 (18:22 -0700)

wt-status.c: fix a memleak

wt_shortstatus_print_tracking() calls shorten_unambiguous_ref(),
which returns a newly allocated memory the caller takes ownership
of; it is necessary to free `base` when the function is done with
it.

Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

line-log.c: fix a memleakStefan Beller Tue, 31 Mar 2015 01:22:07 +0000 (18:22 -0700)

line-log.c: fix a memleak

The `filepair` is assigned new memory with any iteration via
process_diff_filepair, so free it before the current iteration ends.

Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

cherry-pick: fix docs describing handling of empty... Jeff King Tue, 31 Mar 2015 01:08:54 +0000 (21:08 -0400)

cherry-pick: fix docs describing handling of empty commits

Commit b27cfb0 (git-cherry-pick: Add keep-redundant-commits
option, 2012-04-20), added the --keep-redundant-commits
option, and switched the default behavior (without that
option) to silently ignore empty commits. Later, the second
half of that commit was reverted in ac2b0e8 (cherry-pick:
regression fix for empty commits, 2012-05-29), but the
documentation added for --keep-redundant-commits was never
updated to match. Let's do so now.

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

sha1_file: squelch "packfile cannot be accessed" warningsJeff King Tue, 31 Mar 2015 00:47:38 +0000 (20:47 -0400)

sha1_file: squelch "packfile cannot be accessed" warnings

When we find an object in a packfile index, we make sure we
can still open the packfile itself (or that it is already
open), as it might have been deleted by a simultaneous
repack. If we can't access the packfile, we print a warning
for the user and tell the caller that we don't have the
object (we can then look in other packfiles, or find a loose
version, before giving up).

The warning we print to the user isn't really accomplishing
anything, and it is potentially confusing to users. In the
normal case, it is complete noise; we find the object
elsewhere, and the user does not have to care that we racily
saw a packfile index that became stale. It didn't affect the
operation at all.

A possibly more interesting case is when we later can't find
the object, and report failure to the user. In this case the
warning could be considered a clue toward that ultimate
failure. But it's not really a useful clue in practice. We
wouldn't even print it consistently (since we are racing
with another process, we might not even see the .idx file,
or we might win the race and open the packfile, completing
the operation).

This patch drops the warning entirely (not only from the
fill_pack_entry site, but also from an identical use in
pack-objects). If we did find the warning interesting in the
error case, we could stuff it away and reveal it to the user
when we later die() due to the broken object. But that
complexity just isn't worth it.

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

l10n: vi.po: Updated Vietnamese translationTran Ngoc Quan Fri, 27 Mar 2015 09:04:44 +0000 (16:04 +0700)

l10n: vi.po: Updated Vietnamese translation

Signed-off-by: Tran Ngoc Quan <vnwildman@gmail.com>

l10n: zh_CN: translations for git v2.4.0-rc0Jiang Xin Mon, 16 Feb 2015 13:34:19 +0000 (21:34 +0800)

l10n: zh_CN: translations for git v2.4.0-rc0

Translate 99 updated messages (2305t0f0u) for git v2.4.0-rc0.

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>

Merge branch 'fr-v2.4.0-rc0' of git://github.com/jnavil... Jiang Xin Tue, 31 Mar 2015 01:38:47 +0000 (09:38 +0800)

Merge branch 'fr-v2.4.0-rc0' of git://github.com/jnavila/git

* 'fr-v2.4.0-rc0' of git://github.com/jnavila/git:
l10n: fr.po v2.4.0-rc0 round 1

docs: clarify what git-rebase's "-p" / "--preserve... Sebastian Schuberth Mon, 30 Mar 2015 09:29:46 +0000 (11:29 +0200)

docs: clarify what git-rebase's "-p" / "--preserve-merges" does

Ignoring a merge can be read as ignoring the changes a merge commit
introduces altogether, as if the entire side branch the merge commit
merged was removed from the history. But that is not what happens
if "-p" is not specified. What happens is that the individual
commits a merge commit introduces are replayed in order, and only
any possible merge conflict resolutions or manual amendments to the
merge commit are ignored.

Get this straight in the docs.

Also, do not say that merge commits are *tried* to be recreated. As that is
true almost everywhere it is better left unsaid.

Signed-off-by: Sebastian Schuberth <sschuberth@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

l10n: fr.po v2.4.0-rc0 round 1Jean-Noel Avila Sun, 29 Mar 2015 07:54:56 +0000 (09:54 +0200)

l10n: fr.po v2.4.0-rc0 round 1

Signed-off-by: Jean-Noel Avila <jn.avila@free.fr>

parse-options.h: OPTION_{BIT,SET_INT} do not store... Ivan Ukhov Sun, 29 Mar 2015 08:32:55 +0000 (10:32 +0200)

parse-options.h: OPTION_{BIT,SET_INT} do not store pointer to defval

When 20d1c652 (parse-options: remove unused OPT_SET_PTR, 2014-03-30)
removed OPT_SET_PTR, the comment in the header that describes what
the option did to defval field was left behind by mistake. Remove
it.

Signed-off-by: Ivan Ukhov <ivan.ukhov@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

l10n: ca.po: update translationAlex Henrie Sat, 28 Mar 2015 21:07:36 +0000 (15:07 -0600)

l10n: ca.po: update translation

Signed-off-by: Alex Henrie <alexhenrie24@gmail.com>

Sync with maintJunio C Hamano Sat, 28 Mar 2015 16:42:49 +0000 (09:42 -0700)

Sync with maint

* maint:
Prepare for 2.3.5
2.3.2 release notes: typofix

RelNotes: minor doc updatesJunio C Hamano Sat, 28 Mar 2015 16:41:51 +0000 (09:41 -0700)

RelNotes: minor doc updates

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

Merge branch 'ph/push-doc-cas'Junio C Hamano Sat, 28 Mar 2015 16:37:53 +0000 (09:37 -0700)

Merge branch 'ph/push-doc-cas'

* ph/push-doc-cas:
git-push.txt: clean up force-with-lease wording

Merge branch 'ss/pull-rebase-preserve'Junio C Hamano Sat, 28 Mar 2015 16:37:51 +0000 (09:37 -0700)

Merge branch 'ss/pull-rebase-preserve'

* ss/pull-rebase-preserve:
docs: clarify "preserve" option wording for git-pull

Prepare for 2.3.5Junio C Hamano Sat, 28 Mar 2015 16:36:30 +0000 (09:36 -0700)

Prepare for 2.3.5

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

Merge branch 'sg/completion-gitcomp-nl-for-refs' into... Junio C Hamano Sat, 28 Mar 2015 16:33:15 +0000 (09:33 -0700)

Merge branch 'sg/completion-gitcomp-nl-for-refs' into maint

Code clean-up.

* sg/completion-gitcomp-nl-for-refs:
completion: use __gitcomp_nl() for completing refs

Merge branch 'jk/simplify-csum-file-sha1fd-check' into... Junio C Hamano Sat, 28 Mar 2015 16:33:15 +0000 (09:33 -0700)

Merge branch 'jk/simplify-csum-file-sha1fd-check' into maint

Code simplification.

* jk/simplify-csum-file-sha1fd-check:
sha1fd_check: die when we cannot open the file

Merge branch 'tg/test-index-v4' into maintJunio C Hamano Sat, 28 Mar 2015 16:33:14 +0000 (09:33 -0700)

Merge branch 'tg/test-index-v4' into maint

A test fix.

* tg/test-index-v4:
t1700: make test pass with index-v4

Merge branch 'nd/doc-git-index-version' into maintJunio C Hamano Sat, 28 Mar 2015 16:33:13 +0000 (09:33 -0700)

Merge branch 'nd/doc-git-index-version' into maint

Doc clean-up.

* nd/doc-git-index-version:
git.txt: list index versions in plain English

Merge branch 'ct/prompt-untracked-fix' into maintJunio C Hamano Sat, 28 Mar 2015 16:33:12 +0000 (09:33 -0700)

Merge branch 'ct/prompt-untracked-fix' into maint

The prompt script (in contrib/) did not show the untracked sign
when working in a subdirectory without any untracked files.

* ct/prompt-untracked-fix:
git prompt: use toplevel to find untracked files

Merge branch 'ws/grep-quiet-no-pager' into maintJunio C Hamano Sat, 28 Mar 2015 16:33:11 +0000 (09:33 -0700)

Merge branch 'ws/grep-quiet-no-pager' into maint

Even though "git grep --quiet" is run merely to ask for the exit
status, we spawned the pager regardless. Stop doing that.

* ws/grep-quiet-no-pager:
grep: fix "--quiet" overwriting current output

Merge branch 'jc/submitting-patches-mention-send-email... Junio C Hamano Sat, 28 Mar 2015 16:33:10 +0000 (09:33 -0700)

Merge branch 'jc/submitting-patches-mention-send-email' into maint

Recommend format-patch and send-email for those who want to submit
patches to this project.

* jc/submitting-patches-mention-send-email:
SubmittingPatches: encourage users to use format-patch and send-email

Merge branch 'jk/cleanup-failed-clone' into maintJunio C Hamano Sat, 28 Mar 2015 16:33:09 +0000 (09:33 -0700)

Merge branch 'jk/cleanup-failed-clone' into maint

An failure early in the "git clone" that started creating the
working tree and repository could have resulted in some directories
and files left without getting cleaned up.

* jk/cleanup-failed-clone:
clone: drop period from end of die_errno message
clone: initialize atexit cleanup handler earlier

Merge branch 'jk/fetch-pack' into maintJunio C Hamano Sat, 28 Mar 2015 16:33:08 +0000 (09:33 -0700)

Merge branch 'jk/fetch-pack' into maint

"git fetch" that fetches a commit using the allow-tip-sha1-in-want
extension could have failed to fetch all the requested refs.

* jk/fetch-pack:
fetch-pack: remove dead assignment to ref->new_sha1
fetch_refs_via_pack: free extra copy of refs
filter_ref: make a copy of extra "sought" entries
filter_ref: avoid overwriting ref->old_sha1 with garbage

Merge branch 'tg/fix-check-order-with-split-index'... Junio C Hamano Sat, 28 Mar 2015 16:33:07 +0000 (09:33 -0700)

Merge branch 'tg/fix-check-order-with-split-index' into maint

The split-index mode introduced at v2.3.0-rc0~41 was broken in the
codepath to protect us against a broken reimplementation of Git
that writes an invalid index with duplicated index entries, etc.

* tg/fix-check-order-with-split-index:
read-cache: fix reading of split index

Merge branch 'jk/prune-with-corrupt-refs' into maintJunio C Hamano Sat, 28 Mar 2015 16:33:06 +0000 (09:33 -0700)

Merge branch 'jk/prune-with-corrupt-refs' into maint

"git prune" used to largely ignore broken refs when deciding which
objects are still being used, which could spread an existing small
damage and make it a larger one.

* jk/prune-with-corrupt-refs:
refs.c: drop curate_packed_refs
repack: turn on "ref paranoia" when doing a destructive repack
prune: turn on ref_paranoia flag
refs: introduce a "ref paranoia" flag
t5312: test object deletion code paths in a corrupted repository