]> git.ipfire.org Git - thirdparty/git.git/log
thirdparty/git.git
10 years agoline-range: teach -L^/RE/ to search from start of file
Eric Sunshine [Tue, 6 Aug 2013 13:59:45 +0000 (09:59 -0400)] 
line-range: teach -L^/RE/ to search from start of file

The -L/RE/ option of blame/log searches from the end of the previous -L
range, if any. Add new notation -L^/RE/ to override this behavior and
search from start of file.

The new ^/RE/ syntax is valid only as the <start> argument of
-L<start>,<end>. The <end> argument, as usual, is relative to <start>.

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoline-range-format.txt: document -L/RE/ relative search
Eric Sunshine [Tue, 6 Aug 2013 13:59:44 +0000 (09:59 -0400)] 
line-range-format.txt: document -L/RE/ relative search

Option -L/RE/ of blame/log now searches relative to the previous -L
range, if any. Document this.

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agolog: teach -L/RE/ to search from end of previous -L range
Eric Sunshine [Tue, 6 Aug 2013 13:59:43 +0000 (09:59 -0400)] 
log: teach -L/RE/ to search from end of previous -L range

This is complicated slightly by having to remember the previous -L range
for each file specified via -L<range>:file.

The existing implementation coalesces ranges for each file as each -L is
parsed which makes it impossible to refer back to the previous -L range
for any particular file. Re-implement to instead store each file's set
of -L ranges verbatim, and then coalesce the ranges in a post-processing
step.

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoblame: teach -L/RE/ to search from end of previous -L range
Eric Sunshine [Tue, 6 Aug 2013 13:59:42 +0000 (09:59 -0400)] 
blame: teach -L/RE/ to search from end of previous -L range

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoline-range: teach -L/RE/ to search relative to anchor point
Eric Sunshine [Tue, 6 Aug 2013 13:59:41 +0000 (09:59 -0400)] 
line-range: teach -L/RE/ to search relative to anchor point

Range specification -L/RE/ for blame/log unconditionally begins
searching at line one. Mailing list discussion [1] suggests that, in the
presence of multiple -L options, -L/RE/ should search relative to the
endpoint of the previous -L range, if any.

Teach the parsing machinery underlying blame's and log's -L options to
accept a start point for -L/RE/ searches. Follow-up patches will upgrade
blame and log to take advantage of this ability.

[1]: http://thread.gmane.org/gmane.comp.version-control.git/229755/focus=229966

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoblame: document multiple -L support
Eric Sunshine [Tue, 6 Aug 2013 13:59:40 +0000 (09:59 -0400)] 
blame: document multiple -L support

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agot8001/t8002: blame: add tests of multiple -L options
Eric Sunshine [Tue, 6 Aug 2013 13:59:39 +0000 (09:59 -0400)] 
t8001/t8002: blame: add tests of multiple -L options

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoblame: accept multiple -L ranges
Eric Sunshine [Tue, 6 Aug 2013 13:59:38 +0000 (09:59 -0400)] 
blame: accept multiple -L ranges

git-blame accepts only a single -L option or none. Clients requiring
blame information for multiple disjoint ranges are therefore forced
either to invoke git-blame multiple times, once for each range, or only
once with no -L option to cover the entire file, both of which can be
costly.  Teach git-blame to accept multiple -L ranges.  Overlapping and
out-of-order ranges are accepted.

In this patch, the X in -LX,Y is absolute (for instance, /RE/ patterns
search from line 1), and Y is relative to X. Follow-up patches provide
more flexibility over how X is anchored.

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoblame: inline one-line function into its lone caller
Eric Sunshine [Tue, 6 Aug 2013 13:59:37 +0000 (09:59 -0400)] 
blame: inline one-line function into its lone caller

As of 25ed3412 (Refactor parse_loc; 2013-03-28),
blame.c:prepare_blame_range() became effectively a one-line function
which merely passes its arguments along to another function. This
indirection does not bring clarity to the code. Simplify by inlining
prepare_blame_range() into its lone caller.

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agorange-set: publish API for re-use by git-blame -L
Eric Sunshine [Tue, 6 Aug 2013 13:59:36 +0000 (09:59 -0400)] 
range-set: publish API for re-use by git-blame -L

git-blame is slated to accept multiple -L ranges.  git-log already
accepts multiple -L's but its implementation of range-set, which
organizes and normalizes -L ranges, is private.  Publish the small
subset of range-set API which is needed for git-blame multiple -L
support.

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoline-range-format.txt: clarify -L:regex usage form
Eric Sunshine [Tue, 6 Aug 2013 13:59:35 +0000 (09:59 -0400)] 
line-range-format.txt: clarify -L:regex usage form

blame/log documentation describes -L option as:

  -L<start>,<end>
  -L:<regex>

  <start> and <end> can take one of these forms:

    * number
    * /regex/
    * +offset or -offset
    * :regex

which is incorrect and confusing since :regex is not one of the valid
forms of <start> or <end>; in fact, it must be -L's lone argument.

Clarify by discussing :<regex> at the same indentation level as "<start>
and <end>...":

  -L<start>,<end>
  -L:<regex>

  <start> and <end> can take one of these forms:

    * number
    * /regex/
    * +offset or -offset

  If :<regex> is given in place of <start> and <end> ...

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agogit-log.txt: place each -L option variation on its own line
Eric Sunshine [Tue, 6 Aug 2013 13:59:34 +0000 (09:59 -0400)] 
git-log.txt: place each -L option variation on its own line

Standard practice in Git documentation is for each variation of an
option (such as: -p / --porcelain) to be placed on its own line in the
OPTIONS table. The -L option does not follow suit. It cuddles "-L
<start>,<end>:<file>" and "-L :<regex>:<file>", separated by a comma.
This is inconsistent and potentially confusing since the comma
separating them is typeset the same as the comma in "<start>,<end>". Fix
this by placing each variation on its own line.

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoblame: reject empty ranges -L,+0 and -L,-0
Eric Sunshine [Wed, 31 Jul 2013 08:15:45 +0000 (04:15 -0400)] 
blame: reject empty ranges -L,+0 and -L,-0

Empty ranges -L,+0 and -L,-0 are nonsensical in the context of blame yet
they are accepted (in fact, both are interpreted as -L1,Y where Y is
end-of-file). Report them as invalid.

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agot8001/t8002: blame: demonstrate acceptance of bogus -L,+0 and -L,-0
Eric Sunshine [Wed, 31 Jul 2013 08:15:44 +0000 (04:15 -0400)] 
t8001/t8002: blame: demonstrate acceptance of bogus -L,+0 and -L,-0

Empty ranges -L,+0 and -L,-0 are nonsensical in the context of blame yet
they are accepted. They should be errors. Demonstrate this shortcoming.

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoblame: reject empty ranges -LX,+0 and -LX,-0
Eric Sunshine [Wed, 31 Jul 2013 08:15:43 +0000 (04:15 -0400)] 
blame: reject empty ranges -LX,+0 and -LX,-0

Empty ranges -LX,+0 and -LX,-0 are nonsensical in the context of blame
yet they are accepted (in fact, both are interpreted as -LX,+2).  Report
them as invalid.

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agot8001/t8002: blame: demonstrate acceptance of bogus -LX,+0 and -LX,-0
Eric Sunshine [Wed, 31 Jul 2013 08:15:42 +0000 (04:15 -0400)] 
t8001/t8002: blame: demonstrate acceptance of bogus -LX,+0 and -LX,-0

Empty ranges -LX,+0 and -LX,-0 are nonsensical in the context of blame
yet they are accepted. They should be errors. Demonstrate this
shortcoming.

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agolog: fix -L bounds checking bug
Eric Sunshine [Wed, 31 Jul 2013 08:15:41 +0000 (04:15 -0400)] 
log: fix -L bounds checking bug

When 12da1d1f added -L support to git-log, a broken bounds check was
copied from git-blame -L which incorrectly allows -LX to extend one line
past end of file without reporting an error.  Instead, it generates an
empty range.  Fix this bug.

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agot4211: retire soon-to-be unimplementable tests
Eric Sunshine [Wed, 31 Jul 2013 08:15:40 +0000 (04:15 -0400)] 
t4211: retire soon-to-be unimplementable tests

58960978 and 99780b0a added tests which demonstrated bugs (crashes) in
range-set and line-log when handed empty ranges specified via "log
-LX:file" where X is one greater than the last line of the file.  After
these tests were added, it was realized that the ability to specify an
empty range is a loophole due to a bug in -L bounds checking. That bug
is slated to be fixed in a subsequent patch.

Unfortunately, the closure of this loophole makes it impossible to
continue checking range-set and line-log behavior with regard to empty
ranges since there is no other way to specify empty ranges via the
command-line.  APIs of both facilities are private (file static) so
there likewise is no way to test their behaviors programmatically.
Consequently, retire these two tests.

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agot4211: log: demonstrate -L bounds checking bug
Eric Sunshine [Wed, 31 Jul 2013 08:15:39 +0000 (04:15 -0400)] 
t4211: log: demonstrate -L bounds checking bug

A bounds checking bug allows the X in -LX to extend one line past the
end of file. For example, given a file with 5 lines, -L6 is accepted as
valid. Demonstrate this problem.

While here, also add tests to check that the remaining cases of X and Y
in -LX,Y are handled correctly at and in the vicinity of end-of-file.

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoblame: fix -L bounds checking bug
Eric Sunshine [Wed, 31 Jul 2013 08:15:38 +0000 (04:15 -0400)] 
blame: fix -L bounds checking bug

Since inception, -LX,Y has correctly reported an out-of-range error when
Y is beyond end of file, however, X was not checked, and an out-of-range
X would cause a crash.  92f9e273 (blame: prevent a segv when -L given
start > EOF; 2010-02-08) attempted to rectify this shortcoming but has
its own off-by-one error which allows X to extend one line past end of
file.  For example, given a file with 5 lines:

  git blame -L5 foo  # OK, blames line 5
  git blame -L6 foo  # accepted, no error, no output, huh?
  git blame -L7 foo  # error "fatal: file foo has only 5 lines"

Fix this bug.

In order to avoid regressing "blame foo" when foo is an empty file, the
fix is slightly more complicated than changing '<' to '<='.

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agot8001/t8002: blame: add empty file & partial-line tests
Eric Sunshine [Wed, 31 Jul 2013 08:15:37 +0000 (04:15 -0400)] 
t8001/t8002: blame: add empty file & partial-line tests

Add boundary case tests, with and without -L, for empty file; file with
one partial line; file with one full line.

The empty file test without -L is of particular interest. Historically,
this case has been supported (empty blame output) and this test protects
against regression by a subsequent patch fixing an off-by-one bug which
incorrectly accepts -LX where X is one past end-of-file.

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agot8001/t8002: blame: demonstrate -L bounds checking bug
Eric Sunshine [Wed, 31 Jul 2013 08:15:36 +0000 (04:15 -0400)] 
t8001/t8002: blame: demonstrate -L bounds checking bug

A bounds checking bug allows the X in -LX to extend one line past the
end of file. For example, given a file with 5 lines, -L6 is accepted as
valid. Demonstrate this problem.

While here, also add tests to check that the remaining cases of X and Y
in -LX,Y are handled correctly at and in the vicinity of end-of-file.

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agot8001/t8002: blame: decompose overly-large test
Eric Sunshine [Wed, 31 Jul 2013 08:15:35 +0000 (04:15 -0400)] 
t8001/t8002: blame: decompose overly-large test

Checking all bogus -L syntax forms in a single test makes it difficult
to identify the offender when one case fails. Decompose this
conglomerate test in order to check each bad syntax case separately.

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoMerge branch 'es/blame-L-breakage'
Junio C Hamano [Mon, 5 Aug 2013 17:44:39 +0000 (10:44 -0700)] 
Merge branch 'es/blame-L-breakage'

* es/blame-L-breakage:
  t8001, t8002: fix "blame -L :literal" test on NetBSD

10 years agot8001, t8002: fix "blame -L :literal" test on NetBSD
René Scharfe [Mon, 5 Aug 2013 15:21:17 +0000 (17:21 +0200)] 
t8001, t8002: fix "blame -L :literal" test on NetBSD

Sub-test 42 of t8001 and t8002 ("blame -L :literal") fails on NetBSD
with the following verbose output:

git annotate  -L:main hello.c
Author F (expected 4, attributed 3) bad
Author G (expected 1, attributed 1) good

This is not caused by different behaviour of git blame or annotate on
that platform, but by different test input, in turn caused by a sed
command that forgets to add a newline on NetBSD.  Here's the diff of the
commit that adds "goodbye" to hello.c, for Linux:

@@ -1,4 +1,5 @@
 int main(int argc, const char *argv[])
 {
puts("hello");
+ puts("goodbye");
 }

We see that it adds an extra TAB, but that's not a problem.  Here's the
same on NetBSD:

@@ -1,4 +1,4 @@
 int main(int argc, const char *argv[])
 {
puts("hello");
-}
+ puts("goodbye");}

It also adds an extra TAB, but it is missing the newline character
after the semicolon.

The following patch gets rid of the extra TAB at the beginning, but
more importantly adds the missing newline at the end in a (hopefully)
portable way, mentioned in http://sed.sourceforge.net/sedfaq4.html.
The diff becomes this, on both Linux and NetBSD:

@@ -1,4 +1,5 @@
 int main(int argc, const char *argv[])
 {
puts("hello");
+ puts("goodbye");
 }

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoMerge git://github.com/git-l10n/git-po
Junio C Hamano [Mon, 5 Aug 2013 17:38:23 +0000 (10:38 -0700)] 
Merge git://github.com/git-l10n/git-po

* git://github.com/git-l10n/git-po:
  l10n: zh_CN.po: translate 99 messages (2133t0f0u)
  l10n: vi.po (2133t)
  l10n: git.pot: v1.8.4 round 1 (99 new, 46 removed)

10 years agoMerge branch 'sb/mailmap-updates'
Junio C Hamano [Mon, 5 Aug 2013 17:11:14 +0000 (10:11 -0700)] 
Merge branch 'sb/mailmap-updates'

* sb/mailmap-updates:
  .mailmap: Multiple addresses of Michael S. Tsirkin

10 years agoMerge branch 'dn/test-reject-utf-16'
Junio C Hamano [Mon, 5 Aug 2013 17:11:10 +0000 (10:11 -0700)] 
Merge branch 'dn/test-reject-utf-16'

* dn/test-reject-utf-16:
  t3900: test rejecting log message with NULs correctly
  Add missing test file for UTF-16.

10 years agoMerge branch 'bc/commit-invalid-utf8'
Junio C Hamano [Mon, 5 Aug 2013 17:11:04 +0000 (10:11 -0700)] 
Merge branch 'bc/commit-invalid-utf8'

* bc/commit-invalid-utf8:
  commit: typofix for xxFFF[EF] check

10 years agocommit: typofix for xxFFF[EF] check
Junio C Hamano [Mon, 5 Aug 2013 16:52:28 +0000 (09:52 -0700)] 
commit: typofix for xxFFF[EF] check

We wanted to catch all codepoints that ends with FFFE and FFFF,
not with 0FFFE and 0FFFF.

Noticed and corrected by Peter Krefting.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agot3900: test rejecting log message with NULs correctly
Junio C Hamano [Mon, 5 Aug 2013 16:47:11 +0000 (09:47 -0700)] 
t3900: test rejecting log message with NULs correctly

It is not like that our longer term desire is to someday start
accept log messages with NULs in them, so it is wrong to mark a test
that demonstrates "git commit" that correctly fails given such an
input as "expect-failure".  "git commit" should fail today, and it
should fail the same way in the future given a message with NUL in it.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoAdd missing test file for UTF-16.
Brian M. Carlson [Sat, 3 Aug 2013 17:26:31 +0000 (17:26 +0000)] 
Add missing test file for UTF-16.

The test file that the UTF-16 rejection test looks for is missing, but this went
unnoticed because the test is expected to fail anyway; as a consequence, the
test fails because the file containing the commit message is missing, and not
because the test file contains a NUL byte.  Fix this by including a sample text
file containing a commit message encoded in UTF-16.

Signed-off-by: Brian M. Carlson <sandals@crustytoothpaste.net>
Tested-by: Duy Nguyen <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years ago.mailmap: Multiple addresses of Michael S. Tsirkin
Stefan Beller [Sat, 3 Aug 2013 11:54:03 +0000 (13:54 +0200)] 
.mailmap: Multiple addresses of Michael S. Tsirkin

Acked-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Stefan Beller <stefanbeller@googlemail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agol10n: zh_CN.po: translate 99 messages (2133t0f0u)
Jiang Xin [Fri, 26 Jul 2013 06:00:02 +0000 (14:00 +0800)] 
l10n: zh_CN.po: translate 99 messages (2133t0f0u)

Translate 99 new messages came from git.pot update in 28b3cff
(l10n: git.pot: v1.8.4 round 1 (99 new, 46 removed)).

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
10 years agoMerge branch 'rj/cygwin-clarify-use-of-cheating-lstat'
Junio C Hamano [Fri, 2 Aug 2013 18:01:00 +0000 (11:01 -0700)] 
Merge branch 'rj/cygwin-clarify-use-of-cheating-lstat'

Cygwin port added a "not quite correct but a lot faster and good
enough for many lstat() calls that are only used to see if the
working tree entity matches the index entry" lstat() emulation some
time ago, and it started biting us in places.  This removes it and
uses the standard lstat() that comes with Cygwin.

Recent topic that uses lstat on packed-refs file is broken when
this cheating lstat is used, and this is a simplest fix that is
also the cleanest direction to go in the long run.

* rj/cygwin-clarify-use-of-cheating-lstat:
  cygwin: Remove the Win32 l/stat() implementation

10 years agoMerge branch 'jk/cat-file-batch-optim'
Junio C Hamano [Fri, 2 Aug 2013 16:32:48 +0000 (09:32 -0700)] 
Merge branch 'jk/cat-file-batch-optim'

* jk/cat-file-batch-optim:
  Revert "cat-file: split --batch input lines on whitespace"

10 years agoRevert "cat-file: split --batch input lines on whitespace"
Junio C Hamano [Fri, 2 Aug 2013 16:29:30 +0000 (09:29 -0700)] 
Revert "cat-file: split --batch input lines on whitespace"

This reverts commit c334b87b30c1464a1ab563fe1fb8de5eaf0e5bac; the
update assumed that people only used the command to read from
"rev-list --objects" output, whose lines begin with a 40-hex object
name followed by a whitespace, but it turns out that scripts feed
random extended SHA-1 expressions (e.g. "HEAD:$pathname") in which
a whitespace has to be kept.

10 years agoGit 1.8.4-rc1 v1.8.4-rc1
Junio C Hamano [Thu, 1 Aug 2013 19:01:53 +0000 (12:01 -0700)] 
Git 1.8.4-rc1

Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoMerge branch 'ob/typofixes'
Junio C Hamano [Thu, 1 Aug 2013 18:58:32 +0000 (11:58 -0700)] 
Merge branch 'ob/typofixes'

* ob/typofixes:
  many small typofixes

10 years agoMerge branch 'ms/subtree-install-fix'
Junio C Hamano [Thu, 1 Aug 2013 18:57:25 +0000 (11:57 -0700)] 
Merge branch 'ms/subtree-install-fix'

* ms/subtree-install-fix:
  contrib/subtree: Fix make install target

10 years agoMerge branch 'jc/rm-submodule-error-message'
Junio C Hamano [Thu, 1 Aug 2013 18:57:25 +0000 (11:57 -0700)] 
Merge branch 'jc/rm-submodule-error-message'

Consolidate two messages phrased subtly differently without a good
reason.

* jc/rm-submodule-error-message:
  builtin/rm.c: consolidate error reporting for removing submodules

10 years agoMerge branch 'lf/echo-n-is-not-portable'
Junio C Hamano [Thu, 1 Aug 2013 18:52:43 +0000 (11:52 -0700)] 
Merge branch 'lf/echo-n-is-not-portable'

* lf/echo-n-is-not-portable:
  Avoid using `echo -n` anywhere

10 years agoMerge branch 'ma/hg-to-git'
Junio C Hamano [Thu, 1 Aug 2013 18:52:40 +0000 (11:52 -0700)] 
Merge branch 'ma/hg-to-git'

* ma/hg-to-git:
  hg-to-git: --allow-empty-message in git commit

10 years agoMerge branch 'jx/clean-interactive'
Junio C Hamano [Thu, 1 Aug 2013 18:52:37 +0000 (11:52 -0700)] 
Merge branch 'jx/clean-interactive'

* jx/clean-interactive:
  git-clean: implement partial matching for selection
  Documentation/git-clean: fix description for range

10 years agoRename advice.object_name_warning to objectNameWarning
Thomas Rast [Wed, 31 Jul 2013 20:23:31 +0000 (22:23 +0200)] 
Rename advice.object_name_warning to objectNameWarning

We spell config variables in camelCase instead of with_underscores.

Signed-off-by: Thomas Rast <trast@inf.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoMerge branch 'rr/rebase-autostash'
Junio C Hamano [Wed, 31 Jul 2013 19:38:29 +0000 (12:38 -0700)] 
Merge branch 'rr/rebase-autostash'

* rr/rebase-autostash:
  git-rebase: fix typo

10 years agoMerge branch 'rj/commit-slab-fix'
Junio C Hamano [Wed, 31 Jul 2013 19:38:27 +0000 (12:38 -0700)] 
Merge branch 'rj/commit-slab-fix'

* rj/commit-slab-fix:
  commit-slab.h: Fix memory allocation and addressing

10 years agoMerge branch 'jk/commit-how-to-abort-cherry-pick'
Junio C Hamano [Wed, 31 Jul 2013 19:38:23 +0000 (12:38 -0700)] 
Merge branch 'jk/commit-how-to-abort-cherry-pick'

* jk/commit-how-to-abort-cherry-pick:
  commit: tweak empty cherry pick advice for sequencer

10 years agoMerge branch 'ds/doc-two-kinds-of-tags'
Junio C Hamano [Wed, 31 Jul 2013 19:38:21 +0000 (12:38 -0700)] 
Merge branch 'ds/doc-two-kinds-of-tags'

* ds/doc-two-kinds-of-tags:
  docs/git-tag: explain lightweight versus annotated tags

10 years agoMerge branch 'rr/maint-tilde-markup-in-doc'
Junio C Hamano [Wed, 31 Jul 2013 19:38:15 +0000 (12:38 -0700)] 
Merge branch 'rr/maint-tilde-markup-in-doc'

* rr/maint-tilde-markup-in-doc:
  config doc: quote paths, fixing tilde-interpretation

10 years agoMerge branch 'mh/packed-refs-do-one-ref-recursion'
Junio C Hamano [Wed, 31 Jul 2013 19:38:11 +0000 (12:38 -0700)] 
Merge branch 'mh/packed-refs-do-one-ref-recursion'

Fix a NULL-pointer dereference during nested iterations over
references (for example, when replace references are being used).

* mh/packed-refs-do-one-ref-recursion:
  do_one_ref(): save and restore value of current_ref

10 years agoMerge branch 'jk/capabilities-doc'
Junio C Hamano [Tue, 30 Jul 2013 16:16:42 +0000 (09:16 -0700)] 
Merge branch 'jk/capabilities-doc'

* jk/capabilities-doc:
  document 'allow-tip-sha1-in-want' capability
  document 'quiet' receive-pack capability
  document 'agent' protocol capability
  docs: note that receive-pack knows side-band-64k capability
  docs: fix 'report-status' protocol capability thinko

10 years agoMerge branch 'sb/mailmap-updates'
Junio C Hamano [Tue, 30 Jul 2013 16:16:39 +0000 (09:16 -0700)] 
Merge branch 'sb/mailmap-updates'

* sb/mailmap-updates:
  .mailmap: combine more (email, name) to individual persons

10 years agoMerge branch 'bc/completion-for-bash-3.0'
Junio C Hamano [Tue, 30 Jul 2013 16:16:36 +0000 (09:16 -0700)] 
Merge branch 'bc/completion-for-bash-3.0'

* bc/completion-for-bash-3.0:
  git-completion.bash: replace zsh notation that breaks bash 3.X

10 years agocontrib/subtree: Fix make install target
Michal Sojka [Tue, 30 Jul 2013 08:16:09 +0000 (10:16 +0200)] 
contrib/subtree: Fix make install target

If the libexec directory doesn't exist, git-subtree gets installed as
$prefix/share/libexec/git-core file. This patch creates the directory
before installing git-subtree file into it.

Signed-off-by: Michal Sojka <sojkam1@fel.cvut.cz>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agomany small typofixes
Ondřej Bílka [Mon, 29 Jul 2013 08:18:21 +0000 (10:18 +0200)] 
many small typofixes

Signed-off-by: Ondřej Bílka <neleai@seznam.cz>
Reviewed-by: Marc Branchaud <marcnarc@xiplink.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agogit-rebase: fix typo
Ralf Thielow [Mon, 29 Jul 2013 04:24:43 +0000 (06:24 +0200)] 
git-rebase: fix typo

Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoAvoid using `echo -n` anywhere
Lukas Fleischer [Sat, 27 Jul 2013 12:11:33 +0000 (14:11 +0200)] 
Avoid using `echo -n` anywhere

`echo -n` is non-portable. The POSIX specification says:

    Conforming applications that wish to do prompting without <newline>
    characters or that could possibly be expecting to echo a -n, should
    use the printf utility derived from the Ninth Edition system.

Since all of the affected shell scripts use a POSIX shell shebang,
replace `echo -n` invocations with printf.

Signed-off-by: Lukas Fleischer <git@cryptocrack.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agocommit-slab.h: Fix memory allocation and addressing
Ramsay Jones [Sat, 27 Jul 2013 19:00:07 +0000 (20:00 +0100)] 
commit-slab.h: Fix memory allocation and addressing

The slab initialization code includes the calculation of the
slab 'elem_size', which is in turn used to determine the size
(capacity) of the slab. Each element of the slab represents an
array, of length 'stride', of 'elemtype'. (Note that it may be
clearer if the define_commit_slab macro parameter was called
'basetype' rather than 'elemtype'). However, the 'elem_size'
calculation incorrectly uses 'sizeof(struct slabname)' in the
expression, rather than 'sizeof(elemtype)'.

Within the slab access routine, <slabname>_at(), the given commit
'index' is transformed into an (slab#, slot#) pair used to address
the required element (a pointer to the first element of the array
of 'elemtype' associated with that commit). The current code to
calculate these address coordinates multiplies the commit index
by the 'stride' which, at least for the slab#, produces the wrong
result. Using the commit index directly, without scaling by the
'stride', produces the correct 'logical' address.

Also, when allocating a new slab, the size of the allocation only
allows for a slab containing elements of single element arrays of
'elemtype'. This should allow for elements of an array of length
'stride' of 'elemtype'. In order to fix this, we need to change
the element size parameter to xcalloc() by multiplying the current
element size (sizeof(**s->slab)) by the s->stride.

Having changed the calculation of the slot#, we now need to convert
the logical 'nth_slot', by scaling with s->stride, into the correct
physical address.

Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agocommit: tweak empty cherry pick advice for sequencer
Jeff King [Fri, 26 Jul 2013 23:39:28 +0000 (19:39 -0400)] 
commit: tweak empty cherry pick advice for sequencer

When we refuse to make an empty commit, we check whether we
are in a cherry-pick in order to give better advice on how
to proceed. We instruct the user to repeat the commit with
"--allow-empty" to force the commit, or to use "git reset"
to skip it and abort the cherry-pick.

In the case of a single cherry-pick, the distinction between
skipping and aborting is not important, as there is no more
work to be done afterwards.  When we are using the sequencer
to cherry pick a series of commits, though, the instruction
is confusing: does it skip this commit, or does it abort the
rest of the cherry-pick?

It does skip, after which the user can continue the
cherry-pick. This is the right thing to be advising the user
to do, but let's make it more clear what will happen, both
by using the word "skip", and by mentioning that the rest of
the sequence can be continued via "cherry-pick --continue"
(whether we skip or take the commit).

Noticed-by: Ramkumar Ramachandra <artagnon@gmail.com>
Helped-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agodocs/git-tag: explain lightweight versus annotated tags
Daniele Segato [Fri, 26 Jul 2013 19:06:02 +0000 (15:06 -0400)] 
docs/git-tag: explain lightweight versus annotated tags

Stress the difference between the two with a suggestion on
when the user should use one in place of the other.

Signed-off-by: Daniele Segato <daniele.segato@gmail.com>
Signed-off-by: Jeff King <peff@peff.net>
Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agol10n: vi.po (2133t)
Tran Ngoc Quan [Sat, 27 Jul 2013 01:46:06 +0000 (08:46 +0700)] 
l10n: vi.po (2133t)

Signed-off-by: Tran Ngoc Quan <vnwildman@gmail.com>
10 years agoconfig doc: quote paths, fixing tilde-interpretation
Ramkumar Ramachandra [Fri, 26 Jul 2013 10:42:02 +0000 (16:12 +0530)] 
config doc: quote paths, fixing tilde-interpretation

The --global section of git-config(1) currently reads like:

  For writing options: write to global /.gitconfig file rather than the
                                       ^
       start tilde

  repository .git/config, write to $XDG_CONFIG_HOME/git/config file if
  this file exists and the/.gitconfig file doesn’t.
                          ^
  end tilde

Instead of tilde (~) being interpreted literally, asciidoc subscripts
the text between the two tildes.  To fix this problem, use backticks (`)
to quote all the paths in the file uniformly, just like config.txt does.

Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agodocument 'allow-tip-sha1-in-want' capability
Nguyễn Thái Ngọc Duy [Fri, 26 Jul 2013 11:01:54 +0000 (18:01 +0700)] 
document 'allow-tip-sha1-in-want' capability

See 390eb36 (upload-pack: optionally allow fetching from the tips of
hidden refs - 2013-01-28) for more information.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agol10n: git.pot: v1.8.4 round 1 (99 new, 46 removed)
Jiang Xin [Fri, 26 Jul 2013 00:56:45 +0000 (08:56 +0800)] 
l10n: git.pot: v1.8.4 round 1 (99 new, 46 removed)

Generate po/git.pot from v1.8.4-rc0 for git v1.8.4 l10n round 1.

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
10 years agobuiltin/rm.c: consolidate error reporting for removing submodules
Junio C Hamano [Fri, 26 Jul 2013 06:05:17 +0000 (23:05 -0700)] 
builtin/rm.c: consolidate error reporting for removing submodules

We have two (not identical) copies of error reporting when
attempting to remove submodules that have their repositories
embedded within them.  Add a helper function so that we do not have
to repeat similar error messages with subtly different wording
without a good reason.

Noticed by Jiang Xin.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agocommit.h: drop redundant comment
Jeff King [Thu, 25 Jul 2013 20:01:00 +0000 (16:01 -0400)] 
commit.h: drop redundant comment

We mention twice that the from_ident field of struct
pretty_print_context is internal.

The first comment was added by 10f2fbf, which prepares the
struct for internal fields, and then the second by a908047,
which actually adds such a field. This was a mistake made
when re-rolling the series on the list; the comment should
have been removed from the latter commit.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoGit 1.8.4-rc0 v1.8.4-rc0
Junio C Hamano [Thu, 25 Jul 2013 02:29:07 +0000 (19:29 -0700)] 
Git 1.8.4-rc0

Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoMerge branch 'mh/multimail'
Junio C Hamano [Thu, 25 Jul 2013 02:23:03 +0000 (19:23 -0700)] 
Merge branch 'mh/multimail'

An enhanced "post-receive" hook to send e-mail messages.

* mh/multimail:
  post-receive-email: deprecate script in favor of git-multimail
  git-multimail: an improved replacement for post-receive-email

10 years agoMerge branch 'ob/typofixes'
Junio C Hamano [Thu, 25 Jul 2013 02:23:00 +0000 (19:23 -0700)] 
Merge branch 'ob/typofixes'

* ob/typofixes:
  typofix: in-code comments
  typofix: documentation
  typofix: release notes

10 years agoMerge branch 'es/contacts'
Junio C Hamano [Thu, 25 Jul 2013 02:22:57 +0000 (19:22 -0700)] 
Merge branch 'es/contacts'

A helper to read from a set of format-patch output files or a range
of commits and find those who may have insights to the code that
the changes touch by running a series of "git blame" commands.

* es/contacts:
  contrib: contacts: add documentation
  contrib: contacts: add mailmap support
  contrib: contacts: interpret committish akin to format-patch
  contrib: contacts: add ability to parse from committish
  contrib: add git-contacts helper

10 years agoMerge branch 'ml/cygwin-updates'
Junio C Hamano [Thu, 25 Jul 2013 02:22:49 +0000 (19:22 -0700)] 
Merge branch 'ml/cygwin-updates'

The tip one does _not_ revert c869753e (Force core.filemode to
false on Cygwin., 2006-12-30) on purpose, so that people can
still retain the old behaviour if they wanted to.

* ml/cygwin-updates:
  cygwin: stop forcing core.filemode=false
  Cygwin 1.7 supports mmap
  Cygwin 1.7 has thread-safe pread
  Cygwin 1.7 needs compat/regex

10 years agoMerge branch 'rj/sparse'
Junio C Hamano [Thu, 25 Jul 2013 02:21:30 +0000 (19:21 -0700)] 
Merge branch 'rj/sparse'

* rj/sparse:
  Revert "compat/unsetenv.c: Fix a sparse warning"

10 years agoMerge branch 'sb/traverse-trees-bitmask-variable-name'
Junio C Hamano [Thu, 25 Jul 2013 02:21:25 +0000 (19:21 -0700)] 
Merge branch 'sb/traverse-trees-bitmask-variable-name'

* sb/traverse-trees-bitmask-variable-name:
  traverse_trees(): clarify return value of the callback

10 years agoMerge branch 'jk/cat-file-batch-optim'
Junio C Hamano [Thu, 25 Jul 2013 02:21:21 +0000 (19:21 -0700)] 
Merge branch 'jk/cat-file-batch-optim'

If somebody wants to only know on-disk footprint of an object
without having to know its type or payload size, we can bypass a
lot of code to cheaply learn it.

* jk/cat-file-batch-optim:
  Fix some sparse warnings
  sha1_object_info_extended: pass object_info to helpers
  sha1_object_info_extended: make type calculation optional
  packed_object_info: make type lookup optional
  packed_object_info: hoist delta type resolution to helper
  sha1_loose_object_info: make type lookup optional
  sha1_object_info_extended: rename "status" to "type"
  cat-file: disable object/refname ambiguity check for batch mode

10 years agoMerge branch 'ml/avoid-using-grep-on-crlf-files'
Junio C Hamano [Thu, 25 Jul 2013 02:21:18 +0000 (19:21 -0700)] 
Merge branch 'ml/avoid-using-grep-on-crlf-files'

On systems that understand a CRLF as a line ending, tests in this
script that worked on files with CRLF line endings using "grep" to
extract matching lines may lose the CR at the end of lines that
match, causing the actual output not to match the expected output.

* ml/avoid-using-grep-on-crlf-files:
  test-lib.sh - define and use GREP_STRIPS_CR

10 years agoMerge branch 'jm/doc-ref-prune'
Junio C Hamano [Thu, 25 Jul 2013 02:21:15 +0000 (19:21 -0700)] 
Merge branch 'jm/doc-ref-prune'

* jm/doc-ref-prune:
  Documentation: fix git-prune example usage
  Documentation: remove --prune from pack-refs examples

10 years agoMerge branch 'rh/template-updates'
Junio C Hamano [Thu, 25 Jul 2013 02:21:07 +0000 (19:21 -0700)] 
Merge branch 'rh/template-updates'

* rh/template-updates:
  templates: spell ASCII in uppercase in pre-commit hook
  templates: Reformat pre-commit hook's message
  templates: Use heredoc in pre-commit hook

10 years agoMerge branch 'mh/ref-races-optim-invalidate-cached'
Junio C Hamano [Thu, 25 Jul 2013 02:21:02 +0000 (19:21 -0700)] 
Merge branch 'mh/ref-races-optim-invalidate-cached'

* mh/ref-races-optim-invalidate-cached:
  refs: do not invalidate the packed-refs cache unnecessarily

10 years agoMerge branch 'sb/misc-fixes'
Junio C Hamano [Thu, 25 Jul 2013 02:20:58 +0000 (19:20 -0700)] 
Merge branch 'sb/misc-fixes'

Assorted code cleanups and a minor fix.

* sb/misc-fixes:
  diff.c: Do not initialize a variable, which gets reassigned anyway.
  commit: Fix a memory leak in determine_author_info
  daemon.c:handle: Remove unneeded check for null pointer.

10 years agoMerge branch 'tr/line-log'
Junio C Hamano [Thu, 25 Jul 2013 02:19:24 +0000 (19:19 -0700)] 
Merge branch 'tr/line-log'

Fix "log -L" command line parsing bugs.

* tr/line-log:
  t4211: fix incorrect rebase at f8395edc (range-set: satisfy non-empty ranges invariant)
  line-log: fix "log -LN" crash when N is last line of file
  range-set: satisfy non-empty ranges invariant
  t4211: demonstrate crash when first -L encountered is empty range
  t4211: demonstrate empty -L range crash
  range-set: fix sort_and_merge_range_set() corner case bug

10 years agogit-clean: implement partial matching for selection
Jiang Xin [Wed, 24 Jul 2013 02:22:04 +0000 (10:22 +0800)] 
git-clean: implement partial matching for selection

Document for interactive git-clean says: "You also could say `c` or
`clean` above as long as the choice is unique". But it's not true,
because only hotkey `c` and full match (`clean`) could work.

Implement partial matching via find_unique function to make the
document right.

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoDocumentation/git-clean: fix description for range
Jiang Xin [Tue, 23 Jul 2013 22:22:43 +0000 (06:22 +0800)] 
Documentation/git-clean: fix description for range

The descriptions of "select by numbers" section for interactive
git-clean are borrowed from git-add, and one sentence should be
replaced.

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years ago.mailmap: combine more (email, name) to individual persons
Stefan Beller [Wed, 24 Jul 2013 17:55:18 +0000 (19:55 +0200)] 
.mailmap: combine more (email, name) to individual persons

I got more responses from people regarding the .mailmap file.
All added persons gave permission to add them to the .mailmap file.

Signed-off-by: Stefan Beller <stefanbeller@googlemail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agodocument 'quiet' receive-pack capability
Jeff King [Wed, 24 Jul 2013 08:03:43 +0000 (04:03 -0400)] 
document 'quiet' receive-pack capability

This was added in c207e34 (fix push --quiet: add 'quiet'
capability to receive-pack, 2012-01-08) but never
documented.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agodocument 'agent' protocol capability
Jeff King [Wed, 24 Jul 2013 08:03:13 +0000 (04:03 -0400)] 
document 'agent' protocol capability

This was added in ff5effd (include agent identifier in
capability string, 2012-08-03), but neither the syntax nor
the semantics were ever documented outside of the commit
message.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agodocs: note that receive-pack knows side-band-64k capability
Jeff King [Wed, 24 Jul 2013 08:01:59 +0000 (04:01 -0400)] 
docs: note that receive-pack knows side-band-64k capability

The protocol-capabilities documentation notes that any
capabilities not explicitly mentioned for receive-pack work
only for upload-pack.

Receive-pack has advertised and understood side-band-64k
since 38a81b4 (receive-pack: Wrap status reports inside
side-band-64k, 2010-02-05), but we do not mention it
explicitly. Let's do so.

Note that receive-pack does not understand side-band, which
was obsolete by that point.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agodocs: fix 'report-status' protocol capability thinko
Jeff King [Wed, 24 Jul 2013 08:01:21 +0000 (04:01 -0400)] 
docs: fix 'report-status' protocol capability thinko

The report-status capability is understood by receive-pack,
not upload-pack.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agogit-completion.bash: replace zsh notation that breaks bash 3.X
Brandon Casey [Fri, 18 Jan 2013 19:24:01 +0000 (11:24 -0800)] 
git-completion.bash: replace zsh notation that breaks bash 3.X

50c5885e (git-completion.bash: replace zsh notation that breaks bash
3.X, 2013-01-18) fixed a zsh-ism introduced earlier to append to an
array, which older versions of bash (3.0) did not grok.  This was
again broken by 734b2f05 (completion: synchronize zsh wrapper,
2013-05-08).

Cherry-pick the fix again to let those with older bash use the
completion script.

Signed-off-by: Brandon Casey <drafnel@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agot4211: fix incorrect rebase at f8395edc (range-set: satisfy non-empty ranges invariant)
Junio C Hamano [Wed, 24 Jul 2013 14:53:25 +0000 (07:53 -0700)] 
t4211: fix incorrect rebase at f8395edc (range-set: satisfy non-empty ranges invariant)

Wnen I rewrote "cat b.c | wc -l" into "wc -l <b.c" to squash in a
suggestion on the list to this series, I screwed up subsequent
rebase.  Fix it up.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agohg-to-git: --allow-empty-message in git commit
Maurício C Antunes [Sat, 20 Jul 2013 16:33:20 +0000 (13:33 -0300)] 
hg-to-git: --allow-empty-message in git commit

Do not fail to import mercurial commits with empty commit messages.

Signed-off-by: Maurício C Antunes <mauricio.antunes@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoMerge branch 'es/line-log-further-fixes' into tr/line-log
Junio C Hamano [Tue, 23 Jul 2013 19:10:06 +0000 (12:10 -0700)] 
Merge branch 'es/line-log-further-fixes' into tr/line-log

* es/line-log-further-fixes:
  line-log: fix "log -LN" crash when N is last line of file
  range-set: satisfy non-empty ranges invariant
  t4211: demonstrate crash when first -L encountered is empty range
  t4211: demonstrate empty -L range crash
  range-set: fix sort_and_merge_range_set() corner case bug
  range_set: fix coalescing bug when range is a subset of another
  t4211: fix broken test when one -L range is subset of another

10 years agoline-log: fix "log -LN" crash when N is last line of file
Eric Sunshine [Tue, 23 Jul 2013 14:28:08 +0000 (10:28 -0400)] 
line-log: fix "log -LN" crash when N is last line of file

range-set invariants are: ranges must be (1) non-empty, (2) disjoint,
(3) sorted in ascending order.

line_log_data_insert() breaks the non-empty invariant under the
following conditions: the incoming range is empty and the pathname
attached to the range has not yet been encountered. In this case,
line_log_data_insert() assigns the empty range to a new line_log_data
record without taking any action to ensure that the empty range is
eventually folded out.  Subsequent range-set functions crash or throw an
assertion failure upon encountering such an anomaly.  Fix this bug.

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Acked-by: Thomas Rast <trast@inf.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agorange-set: satisfy non-empty ranges invariant
Eric Sunshine [Tue, 23 Jul 2013 14:28:06 +0000 (10:28 -0400)] 
range-set: satisfy non-empty ranges invariant

range-set invariants are: ranges must be (1) non-empty, (2) disjoint,
(3) sorted in ascending order.

During processing, various range-set utility functions break the
invariants (for instance, by adding empty ranges), with the
expectation that a finalizing sort_and_merge_range_set() will restore
sanity.

sort_and_merge_range_set(), however, neglects to fold out empty
ranges, thus it fails to satisfy the non-empty constraint. Subsequent
range-set functions crash or throw an assertion failure upon
encountering such an anomaly. Rectify the situation by having
sort_and_merge_range_set() fold out empty ranges.

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Acked-by: Thomas Rast <trast@inf.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agot4211: demonstrate crash when first -L encountered is empty range
Eric Sunshine [Tue, 23 Jul 2013 14:28:07 +0000 (10:28 -0400)] 
t4211: demonstrate crash when first -L encountered is empty range

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Acked-by: Thomas Rast <trast@inf.ethz.ch>
Helped-by: SZEDER Gábor <szeder@ira.uka.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agot4211: demonstrate empty -L range crash
Eric Sunshine [Tue, 23 Jul 2013 14:28:05 +0000 (10:28 -0400)] 
t4211: demonstrate empty -L range crash

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Acked-by: Thomas Rast <trast@inf.ethz.ch>
Helped-by: SZEDER Gábor <szeder@ira.uka.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agorange-set: fix sort_and_merge_range_set() corner case bug
Eric Sunshine [Tue, 23 Jul 2013 14:28:04 +0000 (10:28 -0400)] 
range-set: fix sort_and_merge_range_set() corner case bug

When handed an empty range_set (range_set.nr == 0),
sort_and_merge_range_set() incorrectly sets range_set.nr to 1 at exit.
Subsequent range_set functions then access the bogus range at element
zero and crash or throw an assertion failure. Fix this bug.

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Acked-by: Thomas Rast <trast@inf.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoopen_istream: remove unneeded check for null pointer
Stefan Beller [Tue, 23 Jul 2013 13:16:04 +0000 (15:16 +0200)] 
open_istream: remove unneeded check for null pointer

'st' is allocated via xmalloc a few lines before and passed to
the stream opening functions.
The xmalloc function is written in a way that either 'st' is allocated
valid memory or xmalloc already dies.
The function calls to open_istream_* do not change 'st', as the pointer is
passed by reference and not a pointer of a pointer.

Hence 'st' cannot be null at that part of the code.

Signed-off-by: Stefan Beller <stefanbeller@googlemail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoMerge branch 'mv/merge-ff-tristate'
Junio C Hamano [Tue, 23 Jul 2013 17:09:49 +0000 (10:09 -0700)] 
Merge branch 'mv/merge-ff-tristate'

* mv/merge-ff-tristate:
  t7600: fix typo in test title

10 years agot7600: fix typo in test title
Junio C Hamano [Tue, 23 Jul 2013 17:08:40 +0000 (10:08 -0700)] 
t7600: fix typo in test title

Spotted by Ram, confirmed by Miklos.

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