Code

git.git
14 years agot1510: setup case #28
Nguyễn Thái Ngọc Duy [Fri, 26 Nov 2010 15:32:27 +0000 (22:32 +0700)]
t1510: setup case #28

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agot1510: setup case #27
Nguyễn Thái Ngọc Duy [Fri, 26 Nov 2010 15:32:26 +0000 (22:32 +0700)]
t1510: setup case #27

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agot1510: setup case #26
Nguyễn Thái Ngọc Duy [Fri, 26 Nov 2010 15:32:25 +0000 (22:32 +0700)]
t1510: setup case #26

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agot1510: setup case #25
Nguyễn Thái Ngọc Duy [Fri, 26 Nov 2010 15:32:24 +0000 (22:32 +0700)]
t1510: setup case #25

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agot1510: setup case #24
Nguyễn Thái Ngọc Duy [Fri, 26 Nov 2010 15:32:23 +0000 (22:32 +0700)]
t1510: setup case #24

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agot1510: setup case #23
Nguyễn Thái Ngọc Duy [Fri, 26 Nov 2010 15:32:22 +0000 (22:32 +0700)]
t1510: setup case #23

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agot1510: setup case #22
Nguyễn Thái Ngọc Duy [Fri, 26 Nov 2010 15:32:21 +0000 (22:32 +0700)]
t1510: setup case #22

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agot1510: setup case #21
Nguyễn Thái Ngọc Duy [Fri, 26 Nov 2010 15:32:20 +0000 (22:32 +0700)]
t1510: setup case #21

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agot1510: setup case #20
Nguyễn Thái Ngọc Duy [Fri, 26 Nov 2010 15:32:19 +0000 (22:32 +0700)]
t1510: setup case #20

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agot1510: setup case #19
Nguyễn Thái Ngọc Duy [Fri, 26 Nov 2010 15:32:18 +0000 (22:32 +0700)]
t1510: setup case #19

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agot1510: setup case #18
Nguyễn Thái Ngọc Duy [Fri, 26 Nov 2010 15:32:17 +0000 (22:32 +0700)]
t1510: setup case #18

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agot1510: setup case #17
Nguyễn Thái Ngọc Duy [Fri, 26 Nov 2010 15:32:16 +0000 (22:32 +0700)]
t1510: setup case #17

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agot1510: setup case #16
Nguyễn Thái Ngọc Duy [Fri, 26 Nov 2010 15:32:15 +0000 (22:32 +0700)]
t1510: setup case #16

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agot1510: setup case #15
Nguyễn Thái Ngọc Duy [Fri, 26 Nov 2010 15:32:14 +0000 (22:32 +0700)]
t1510: setup case #15

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agot1510: setup case #14
Nguyễn Thái Ngọc Duy [Fri, 26 Nov 2010 15:32:13 +0000 (22:32 +0700)]
t1510: setup case #14

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agot1510: setup case #13
Nguyễn Thái Ngọc Duy [Fri, 26 Nov 2010 15:32:12 +0000 (22:32 +0700)]
t1510: setup case #13

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agot1510: setup case #12
Nguyễn Thái Ngọc Duy [Fri, 26 Nov 2010 15:32:11 +0000 (22:32 +0700)]
t1510: setup case #12

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agot1510: setup case #11
Nguyễn Thái Ngọc Duy [Fri, 26 Nov 2010 15:32:10 +0000 (22:32 +0700)]
t1510: setup case #11

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agot1510: setup case #10
Nguyễn Thái Ngọc Duy [Fri, 26 Nov 2010 15:32:09 +0000 (22:32 +0700)]
t1510: setup case #10

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agot1510: setup case #9
Nguyễn Thái Ngọc Duy [Fri, 26 Nov 2010 15:32:08 +0000 (22:32 +0700)]
t1510: setup case #9

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agot1510: setup case #8
Nguyễn Thái Ngọc Duy [Fri, 26 Nov 2010 15:32:07 +0000 (22:32 +0700)]
t1510: setup case #8

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agot1510: setup case #7
Nguyễn Thái Ngọc Duy [Fri, 26 Nov 2010 15:32:06 +0000 (22:32 +0700)]
t1510: setup case #7

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agot1510: setup case #6
Nguyễn Thái Ngọc Duy [Fri, 26 Nov 2010 15:32:05 +0000 (22:32 +0700)]
t1510: setup case #6

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agot1510: setup case #5
Nguyễn Thái Ngọc Duy [Fri, 26 Nov 2010 15:32:04 +0000 (22:32 +0700)]
t1510: setup case #5

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agot1510: setup case #4
Nguyễn Thái Ngọc Duy [Fri, 26 Nov 2010 15:32:03 +0000 (22:32 +0700)]
t1510: setup case #4

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agot1510: setup case #3
Nguyễn Thái Ngọc Duy [Fri, 26 Nov 2010 15:32:02 +0000 (22:32 +0700)]
t1510: setup case #3

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agot1510: setup case #2
Nguyễn Thái Ngọc Duy [Fri, 26 Nov 2010 15:32:01 +0000 (22:32 +0700)]
t1510: setup case #2

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agot1510: setup case #1
Nguyễn Thái Ngọc Duy [Fri, 26 Nov 2010 15:32:00 +0000 (22:32 +0700)]
t1510: setup case #1

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agot1510: setup case #0
Nguyễn Thái Ngọc Duy [Fri, 26 Nov 2010 15:31:59 +0000 (22:31 +0700)]
t1510: setup case #0

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agoAdd t1510 and basic rules that run repo setup
Nguyễn Thái Ngọc Duy [Fri, 26 Nov 2010 15:31:58 +0000 (22:31 +0700)]
Add t1510 and basic rules that run repo setup

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agobuiltins: print setup info if repo is found
Nguyễn Thái Ngọc Duy [Fri, 26 Nov 2010 15:31:57 +0000 (22:31 +0700)]
builtins: print setup info if repo is found

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agohttp-fetch: rework url handling
Tay Ray Chuan [Thu, 25 Nov 2010 08:21:10 +0000 (16:21 +0800)]
http-fetch: rework url handling

Do away with a second url variable, rewritten_url, and make url
non-const. This is safe because the functions called with url (ie.
get_http_walker() and walker_fetch()) do not modify it (ie. marked with
const char *).

Also, replace code that adds a trailing slash with a call to
str_end_url_with_slash().

Signed-off-by: Tay Ray Chuan <rctay89@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agohttp-push: add trailing slash at arg-parse time, instead of later on
Tay Ray Chuan [Thu, 25 Nov 2010 08:21:09 +0000 (16:21 +0800)]
http-push: add trailing slash at arg-parse time, instead of later on

That way, we don't have to update repo->path and repo->path_len again
after adding the trailing slash.

Signed-off-by: Tay Ray Chuan <rctay89@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agohttp-push: check path length before using it
Tay Ray Chuan [Thu, 25 Nov 2010 08:21:08 +0000 (16:21 +0800)]
http-push: check path length before using it

We use path_len to skip the base url/path, but we do not know for sure
if path does indeed contain the base url/path. Check if this is so.

Helped-by: Johnathan Nieder <jrnieder@gmail.com>
Signed-off-by: Tay Ray Chuan <rctay89@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agohttp-push: Normalise directory names when pushing to some WebDAV servers
Tay Ray Chuan [Thu, 25 Nov 2010 08:21:07 +0000 (16:21 +0800)]
http-push: Normalise directory names when pushing to some WebDAV servers

Fix a bug when pushing to WebDAV servers which do not use a trailing
slash for collection names. The previous implementation fails to see
that the requested resource "refs/" is the same resource as "refs"
and loads every reference twice (once for refs/ and once for refs).

This implementation normalises every collection name by appending a
trailing slash if necessary.

This can be tested with old versions of Apache (such as the WebDAV
server of GMX, Apache 2.0.63).

Based-on-patch-by: Gabriel Corona <gabriel.corona@enst-bretagne.fr>
Signed-off-by: Tay Ray Chuan <rctay89@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agohttp-backend: use end_url_with_slash()
Tay Ray Chuan [Thu, 25 Nov 2010 08:21:06 +0000 (16:21 +0800)]
http-backend: use end_url_with_slash()

Signed-off-by: Tay Ray Chuan <rctay89@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agourl: add str wrapper for end_url_with_slash()
Tay Ray Chuan [Thu, 25 Nov 2010 08:21:05 +0000 (16:21 +0800)]
url: add str wrapper for end_url_with_slash()

Helped-by: Johnathan Nieder <jrnieder@gmail.com>
Signed-off-by: Tay Ray Chuan <rctay89@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agoshift end_url_with_slash() from http.[ch] to url.[ch]
Tay Ray Chuan [Thu, 25 Nov 2010 08:21:04 +0000 (16:21 +0800)]
shift end_url_with_slash() from http.[ch] to url.[ch]

This allows non-http/curl users to access it too (eg. http-backend.c).

Update include headers in end_url_with_slash() users too.

Signed-off-by: Tay Ray Chuan <rctay89@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agot5550-http-fetch: add test for http-fetch
Tay Ray Chuan [Thu, 25 Nov 2010 08:21:03 +0000 (16:21 +0800)]
t5550-http-fetch: add test for http-fetch

Signed-off-by: Tay Ray Chuan <rctay89@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agot5550-http-fetch: add missing '&&'
Tay Ray Chuan [Thu, 25 Nov 2010 08:21:02 +0000 (16:21 +0800)]
t5550-http-fetch: add missing '&&'

Signed-off-by: Tay Ray Chuan <rctay89@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agoMerge branch 'en/and-cascade-tests'
Junio C Hamano [Fri, 26 Nov 2010 22:45:37 +0000 (14:45 -0800)]
Merge branch 'en/and-cascade-tests'

* en/and-cascade-tests:
  t7300: add a missing SYMLINKS prerequisite

14 years agot7300: add a missing SYMLINKS prerequisite
Johannes Sixt [Thu, 25 Nov 2010 08:03:39 +0000 (09:03 +0100)]
t7300: add a missing SYMLINKS prerequisite

The test fails on Windows since 2dec68c (tests: add missing &&, batch 2).

Even though this test allocates and leaves behind files, subsequent tests
do not depend on this, so it is safe to just skip it.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agoMerge branch 'cb/maint-orphan-merge-noclobber'
Junio C Hamano [Wed, 24 Nov 2010 23:55:36 +0000 (15:55 -0800)]
Merge branch 'cb/maint-orphan-merge-noclobber'

* cb/maint-orphan-merge-noclobber:
  do not overwrite untracked during merge from unborn branch

14 years agoMerge branch 'ao/send-email-irt'
Junio C Hamano [Wed, 24 Nov 2010 23:55:32 +0000 (15:55 -0800)]
Merge branch 'ao/send-email-irt'

* ao/send-email-irt:
  git-send-email.perl: make initial In-Reply-To apply only to first email
  t9001: send-email interation with --in-reply-to and --chain-reply-to

14 years agoMerge branch 'jk/add-e-doc'
Junio C Hamano [Wed, 24 Nov 2010 23:55:29 +0000 (15:55 -0800)]
Merge branch 'jk/add-e-doc'

* jk/add-e-doc:
  docs: give more hints about how "add -e" works
  docs: give more hints about how "add -e" works

14 years agoMerge branch 'rs/opt-help-text'
Junio C Hamano [Wed, 24 Nov 2010 23:55:19 +0000 (15:55 -0800)]
Merge branch 'rs/opt-help-text'

* rs/opt-help-text:
  verify-tag: document --verbose
  branch: improve --verbose description
  archive: improve --verbose description
  Describe various forms of "be quiet" using OPT__QUIET
  add OPT__FORCE
  add description parameter to OPT__QUIET
  add description parameter to OPT__DRY_RUN
  add description parameter to OPT__VERBOSE

14 years agoMerge branch 'kb/maint-rebase-autosquash'
Junio C Hamano [Wed, 24 Nov 2010 23:55:15 +0000 (15:55 -0800)]
Merge branch 'kb/maint-rebase-autosquash'

* kb/maint-rebase-autosquash:
  rebase: teach --autosquash to match on sha1 in addition to message
  rebase: better rearranging of fixup!/squash! lines with --autosquash

14 years agoMerge branch 'mm/phrase-remote-tracking'
Junio C Hamano [Wed, 24 Nov 2010 23:55:05 +0000 (15:55 -0800)]
Merge branch 'mm/phrase-remote-tracking'

* mm/phrase-remote-tracking:
  git-branch.txt: mention --set-upstream as a way to change upstream configuration
  user-manual: remote-tracking can be checked out, with detached HEAD
  user-manual.txt: explain better the remote(-tracking) branch terms
  Change incorrect "remote branch" to "remote tracking branch" in C code
  Change incorrect uses of "remote branch" meaning "remote-tracking"
  Change "tracking branch" to "remote-tracking branch"
  everyday.txt: change "tracking branch" to "remote-tracking branch"
  Change remote tracking to remote-tracking in non-trivial places
  Replace "remote tracking" with "remote-tracking"
  Better "Changed but not updated" message in git-status

14 years agoMerge branch 'en/and-cascade-tests'
Junio C Hamano [Wed, 24 Nov 2010 23:51:49 +0000 (15:51 -0800)]
Merge branch 'en/and-cascade-tests'

* en/and-cascade-tests: (25 commits)
  t4124 (apply --whitespace): use test_might_fail
  t3404: do not use 'describe' to implement test_cmp_rev
  t3404 (rebase -i): introduce helper to check position of HEAD
  t3404 (rebase -i): move comment to description
  t3404 (rebase -i): unroll test_commit loops
  t3301 (notes): use test_expect_code for clarity
  t1400 (update-ref): use test_must_fail
  t1502 (rev-parse --parseopt): test exit code from "-h"
  t6022 (renaming merge): chain test commands with &&
  test-lib: introduce test_line_count to measure files
  tests: add missing &&, batch 2
  tests: add missing &&
  Introduce sane_unset and use it to ensure proper && chaining
  t7800 (difftool): add missing &&
  t7601 (merge-pull-config): add missing &&
  t7001 (mv): add missing &&
  t6016 (rev-list-graph-simplify-history): add missing &&
  t5602 (clone-remote-exec): add missing &&
  t4026 (color): remove unneeded and unchained command
  t4019 (diff-wserror): add lots of missing &&
  ...

Conflicts:
t/t7006-pager.sh

14 years agodocs: default to more modern toolset
Jeff King [Fri, 19 Nov 2010 17:54:24 +0000 (12:54 -0500)]
docs: default to more modern toolset

When the ASCIIDOC8 and ASCIIDOC_NO_ROFF knobs were built,
many people were still on asciidoc 7 and using older
versions of docbook-xsl. These days, even the almost
2-year-old Debian stable needs these knobs turned.

So let's turn them by default. The new knobs ASCIIDOC7 and
ASCIIDOC_ROFF can be used to get the old behavior if people
are on older systems.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agofast-import: treat SIGUSR1 as a request to access objects early
Jonathan Nieder [Mon, 22 Nov 2010 08:16:02 +0000 (02:16 -0600)]
fast-import: treat SIGUSR1 as a request to access objects early

It can be tedious to wait for a multi-million-revision import.
Unfortunately it is hard to spy on the import because fast-import
works by continuously streaming out objects, without updating the pack
index or refs until a checkpoint command or the end of the stream.

So allow the impatient operator to request checkpoints by sending a
signal, like so:

killall -USR1 git-fast-import

When receiving such a signal, fast-import would schedule a checkpoint
to take place after the current top-level command (usually a "commit"
or "blob" request) finishes.

Caveats: just like ordinary checkpoint commands, such requests slow
down the import.  Switching to a new pack at a suboptimal moment is
also likely to result in a less dense initial collection of packs.
That's the price.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agovcs-svn: Implement Prop-delta handling
David Barr [Sat, 20 Nov 2010 00:57:46 +0000 (18:57 -0600)]
vcs-svn: Implement Prop-delta handling

The rules for what file is used as delta source for each file are not
documented in dump-load-format.txt.  Luckily, the Apache Software
Foundation repository has rich enough examples to figure out most of
the rules:

Node-action: replace implies the empty property set and empty text as
preimage for deltas.  Otherwise, if a copyfrom source is given, that
node is the preimage for deltas.  Lastly, if none of the above applies
and the node path exists in the current revision, then that version
forms the basis.

[jn: refactored, with tests]

Signed-off-by: David Barr <david.barr@cordelta.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agovcs-svn: Sharpen parsing of property lines
Jonathan Nieder [Sat, 20 Nov 2010 00:54:45 +0000 (18:54 -0600)]
vcs-svn: Sharpen parsing of property lines

Prepare to add a new type of property line (the 'D' line) to
handle property deltas.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agovcs-svn: Split off function for handling of individual properties
Jonathan Nieder [Sat, 20 Nov 2010 00:54:20 +0000 (18:54 -0600)]
vcs-svn: Split off function for handling of individual properties

The handle_property function is the part of read_props that would be
interesting for most people: semantics of properties rather than the
algorithm for parsing them.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agovcs-svn: Make source easier to read on small screens
Jonathan Nieder [Sat, 20 Nov 2010 00:53:54 +0000 (18:53 -0600)]
vcs-svn: Make source easier to read on small screens

Remove some newlines from handle_node() that are not needed for
clarity.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agovcs-svn: More dump format sanity checks
Jonathan Nieder [Sat, 20 Nov 2010 00:53:34 +0000 (18:53 -0600)]
vcs-svn: More dump format sanity checks

Node-action: change is not appropriate when switching between file and
directory or adding a new file.  Current svn-fe silently accepts such
nodes and the resulting tree has missing files in the "changed when
meant to add" case.

Node-action: add requires some content (text or directory); there is
no such thing as an "intent to add" node in svn dumps.  Current svn-fe
accepts such contentless adds but produces an invalid fast-import
stream that refers to nonexistent mark :0 in response.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agovcs-svn: Reject path nodes without Node-action
Jonathan Nieder [Sat, 20 Nov 2010 00:52:59 +0000 (18:52 -0600)]
vcs-svn: Reject path nodes without Node-action

It would be better to flag such errors and let the import proceed
anyway, but for now it is simpler not to worry about recovery
from such weird cases.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agovcs-svn: Delay read of per-path properties
Jonathan Nieder [Sat, 20 Nov 2010 00:52:28 +0000 (18:52 -0600)]
vcs-svn: Delay read of per-path properties

The mode for each file in an svn-format dump is kept in the properties
section.  The properties section is read as soon as possible to allow
the correct mode to be filled in when registering the file with the
repo_tree lib.

To support nodes with a missing properties section, svn-fe determines
the mode in three stages:

 - The kind (directory or file) of the node is read from the dump and
   used to make an initial estimate (040000 or 100644).
 - Properties are read in and allowed to override this for symlinks
   and executables.
 - If there is no properties section, the mode from the previous
   content of the path is left alone, overriding the above
   considerations.

This is a bit of a mess, and worse, it would get even more complicated
once we start to support property deltas.  If we could only register
the file with a provisional value for mode and then change it later
when properties say so, the procedure would be much simpler.

... oh, right, we can.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agovcs-svn: Combine repo_replace and repo_modify functions
Jonathan Nieder [Sat, 20 Nov 2010 00:51:50 +0000 (18:51 -0600)]
vcs-svn: Combine repo_replace and repo_modify functions

There are two functions to change the staged content for a path in the
svn importer's active commit: repo_replace, which changes the text and
returns the mode, and repo_modify, which changes the text and mode and
returns nothing.

Worse, there are more subtle differences:

 - A mark of 0 passed to repo_modify means "use the existing content".
   repo_replace uses it as mark :0 and produces a corrupt stream.

 - When passed a path that is not part of the active commit,
   repo_replace returns without doing anything.  repo_modify
   transparently adds a new directory entry.

Get rid of both and introduce a new function with the best features of
both: repo_modify_path modifies the mode, content, or both for a path,
depending on which arguments are zero.  If no such dirent already
exists, it does nothing and reports the error by returning 0.
Otherwise, the return value is the resulting mode.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agovcs-svn: Replace = Delete + Add
Jonathan Nieder [Sat, 20 Nov 2010 00:49:55 +0000 (18:49 -0600)]
vcs-svn: Replace = Delete + Add

Simplify by reducing the "Node-action: replace" case to "Node-action:
add".  This way, the main part of handle_node() only has to deal with
"add" and "change" nodes.

Functional change: replacing a symlink or executable without setting
properties will reset the mode.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agovcs-svn: handle_node: Handle deletion case early
Jonathan Nieder [Sat, 20 Nov 2010 00:49:17 +0000 (18:49 -0600)]
vcs-svn: handle_node: Handle deletion case early

Take care of "Node-action: delete" as soon as possible, so we can stop
worrying about that case in the rest of the function.

Functional change: catch deletion nodes with features that would not
apply to them (text, properties, or origin data) and error out for
those cases.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agovcs-svn: Use mark to indicate nodes with included text
Jonathan Nieder [Sat, 20 Nov 2010 00:48:51 +0000 (18:48 -0600)]
vcs-svn: Use mark to indicate nodes with included text

Allocate a mark if needed as soon as possible so later code can use
"if (mark)" to check if this node has text attached rather than
explicitly checking for Text-content-length.

While at it, reject directory nodes with text attached; the presence
of such a node would indicate a bug in the dump generator or svn-fe's
understanding.  In the long term, it would be nice to be able to
continue parsing and save the error for later, but for now it is
simpler to error out right away.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agovcs-svn: Unclutter handle_node by introducing have_props var
Jonathan Nieder [Sat, 20 Nov 2010 00:47:41 +0000 (18:47 -0600)]
vcs-svn: Unclutter handle_node by introducing have_props var

It is possible for a path node in an SVN-format dump file to leave out
the properties section.  svn-fe handles this by carrying over the
properties (in particular, file type) from the old version of that
node.

To support this, handle_node tests several times whether a
Prop-content-length field is present.  Ancient Subversion actually
leaves out the Prop-content-length field even for nodes with
properties, so that's not quite the right check.  Besides, this detail
of mechanism is distracting when the question at hand is instead what
content the new node should have.

So introduce a local have_props variable.  The semantics are the same
as before; the adaptations to support ancient streams that leave out
the prop-content-length can wait until someone needs them.

Signed-off-by: Jonathan Nieder <jrnieer@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agovcs-svn: Eliminate node_ctx.mark global
Jonathan Nieder [Sat, 20 Nov 2010 00:46:54 +0000 (18:46 -0600)]
vcs-svn: Eliminate node_ctx.mark global

The mark variable is only used in handle_node().  Its life is
very short and simple: first, a new mark number is allocated if
this node has text attached, then that mark is recorded in the
in-core tree being built up, and lastly the mark is communicated
to fast-import in the stream along with the associated text.

A new reader may worry about interaction with other code, especially
since mark is not initialized to zero in handle_node() itself.
Disperse such worries by making it local.  No functional change
intended.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agovcs-svn: Eliminate node_ctx.srcRev global
Jonathan Nieder [Sat, 20 Nov 2010 00:46:22 +0000 (18:46 -0600)]
vcs-svn: Eliminate node_ctx.srcRev global

The srcRev variable is only used in handle_node(); its purpose
is to hold the old mode for a path, to only be used if properties
are not being changed.  Narrow its scope to make its meaningful
lifetime more obvious.

No functional change intended.  Add some tests as a sanity-check
for the simplest case (no renames).

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agovcs-svn: Check for errors from open()
Jonathan Nieder [Sat, 20 Nov 2010 00:46:06 +0000 (18:46 -0600)]
vcs-svn: Check for errors from open()

test-svn-fe segfaults when passed a bogus path.  Simplify debugging by
exiting with a meaningful error message instead.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agovcs-svn: Allow simple v3 dumps (no deltas yet)
David Barr [Thu, 18 Nov 2010 05:03:51 +0000 (23:03 -0600)]
vcs-svn: Allow simple v3 dumps (no deltas yet)

Since the dumpfile version 1 days, the Subversion dump format
gained some new fields:

 - a unique identifier for the repository (version 2 format)
 - whether the text and properties for a node should be
   interpreted as deltas
 - checksums for a delta's preimage
 - SHA-1 sums as alternatives to the existing MD5 checksums for
   copy source and the payload (delta).

For now what is relevant to us is the Text-delta and Prop-delta
fields, since not noticing these causes a dump file to be
misinterpreted (see the previous commit).

[jn: with tests]

Signed-off-by: David Barr <david.barr@cordelta.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agovcs-svn: Error out for v3 dumps
Jonathan Nieder [Thu, 18 Nov 2010 05:02:48 +0000 (23:02 -0600)]
vcs-svn: Error out for v3 dumps

By ignoring the Text-Delta and Prop-Delta node fields, current svn-fe
happily mistakes deltas for full text and instead of cleanly erroring
out, it produces a valid but semantically bogus fast-import stream
when fed a dump file in the modern "svnadmin dump --deltas" format.

Dump file parsers are supposed to ignore header fields they don't
understand (to allow for backward-compatible extensions), but they are
also supposed to check the SVN-fs-dump-format-version header to
prevent misinterpretation of non backward-compatible extensions.
Do so.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agoMerge branch 'maint'
Junio C Hamano [Wed, 24 Nov 2010 21:24:49 +0000 (13:24 -0800)]
Merge branch 'maint'

* maint:
  imap-send: link against libcrypto for HMAC and others
  git-send-email.perl: Deduplicate "to:" and "cc:" entries with names
  mingw: do not set errno to 0 on success

14 years agoMerge branch 'jl/maint-pull-tags-doc' into maint
Junio C Hamano [Wed, 24 Nov 2010 20:47:42 +0000 (12:47 -0800)]
Merge branch 'jl/maint-pull-tags-doc' into maint

* jl/maint-pull-tags-doc:
  pull: Remove --tags option from manpage

14 years agoMerge branch 'kb/maint-diff-ws-check' into maint
Junio C Hamano [Wed, 24 Nov 2010 20:47:27 +0000 (12:47 -0800)]
Merge branch 'kb/maint-diff-ws-check' into maint

* kb/maint-diff-ws-check:
  diff: handle lines containing only whitespace and tabs better
  test-lib: extend test_decode_color to handle more color codes

14 years agoMerge branch 'jm/mailmap' into maint
Junio C Hamano [Wed, 24 Nov 2010 20:47:18 +0000 (12:47 -0800)]
Merge branch 'jm/mailmap' into maint

* jm/mailmap:
  t4203: do not let "git shortlog" DWIM based on tty
  t4203 (mailmap): stop hardcoding commit ids and dates
  mailmap: fix use of freed memory

14 years agoMerge branch 'tr/maint-git-repack-tmpfile' into maint
Junio C Hamano [Wed, 24 Nov 2010 20:47:10 +0000 (12:47 -0800)]
Merge branch 'tr/maint-git-repack-tmpfile' into maint

* tr/maint-git-repack-tmpfile:
  repack: place temporary packs under .git/objects/pack/

14 years agoMerge branch 'jk/maint-apply-no-binary' into maint
Junio C Hamano [Wed, 24 Nov 2010 20:47:04 +0000 (12:47 -0800)]
Merge branch 'jk/maint-apply-no-binary' into maint

* jk/maint-apply-no-binary:
  apply: don't segfault on binary files with missing data

14 years agoMerge branch 'jn/send-pack-error' into maint
Junio C Hamano [Wed, 24 Nov 2010 20:46:46 +0000 (12:46 -0800)]
Merge branch 'jn/send-pack-error' into maint

* jn/send-pack-error:
  send-pack: avoid redundant "pack-objects died with strange error"

14 years agoMerge branch 'ak/submodule-sync' into maint
Junio C Hamano [Wed, 24 Nov 2010 20:46:40 +0000 (12:46 -0800)]
Merge branch 'ak/submodule-sync' into maint

* ak/submodule-sync:
  submodule sync: Update "submodule.<name>.url" for empty directories

14 years agoMerge branch 'jk/maint-rev-list-nul' into maint
Junio C Hamano [Wed, 24 Nov 2010 20:46:32 +0000 (12:46 -0800)]
Merge branch 'jk/maint-rev-list-nul' into maint

* jk/maint-rev-list-nul:
  rev-list: handle %x00 NUL in user format

14 years agoMerge branch 'cb/diff-fname-optim' into maint
Junio C Hamano [Wed, 24 Nov 2010 20:46:26 +0000 (12:46 -0800)]
Merge branch 'cb/diff-fname-optim' into maint

* cb/diff-fname-optim:
  diff: avoid repeated scanning while looking for funcname
  do not search functions for patch ID
  add rebase patch id tests

14 years agoMerge branch 'jk/no-textconv-symlink' into maint
Junio C Hamano [Wed, 24 Nov 2010 20:46:20 +0000 (12:46 -0800)]
Merge branch 'jk/no-textconv-symlink' into maint

* jk/no-textconv-symlink:
  diff: don't use pathname-based diff drivers for symlinks

14 years agoMerge branch 'dk/maint-blame-el' into maint
Junio C Hamano [Wed, 24 Nov 2010 20:46:17 +0000 (12:46 -0800)]
Merge branch 'dk/maint-blame-el' into maint

* dk/maint-blame-el:
  git-blame.el: Add (require 'format-spec)

14 years agoMerge branch 'aw/git-p4-deletion' into maint
Junio C Hamano [Wed, 24 Nov 2010 20:46:14 +0000 (12:46 -0800)]
Merge branch 'aw/git-p4-deletion' into maint

* aw/git-p4-deletion:
  Fix handling of git-p4 on deleted files

14 years agoMerge branch 'kf/post-receive-sample-hook' into maint
Junio C Hamano [Wed, 24 Nov 2010 20:45:39 +0000 (12:45 -0800)]
Merge branch 'kf/post-receive-sample-hook' into maint

* kf/post-receive-sample-hook:
  post-receive-email: ensure sent messages are not empty

14 years agoMerge branch 'jk/repack-reuse-object' into maint
Junio C Hamano [Wed, 24 Nov 2010 20:45:07 +0000 (12:45 -0800)]
Merge branch 'jk/repack-reuse-object' into maint

* jk/repack-reuse-object:
  Documentation: pack.compression: explain how to recompress
  repack: add -F flag to let user choose between --no-reuse-delta/object

Conflicts:
Documentation/git-repack.txt

14 years agoMerge branch 'bc/fix-cherry-pick-root' into maint
Junio C Hamano [Wed, 24 Nov 2010 20:44:46 +0000 (12:44 -0800)]
Merge branch 'bc/fix-cherry-pick-root' into maint

* bc/fix-cherry-pick-root:
  builtin/revert.c: don't dereference a NULL pointer

14 years agoMerge branch 'uk/fix-author-ident-sed-script' into maint
Junio C Hamano [Wed, 24 Nov 2010 20:44:41 +0000 (12:44 -0800)]
Merge branch 'uk/fix-author-ident-sed-script' into maint

* uk/fix-author-ident-sed-script:
  get_author_ident_from_commit(): remove useless quoting

14 years agoMerge branch 'ab/makefile-track-cc' into maint
Junio C Hamano [Wed, 24 Nov 2010 20:44:35 +0000 (12:44 -0800)]
Merge branch 'ab/makefile-track-cc' into maint

* ab/makefile-track-cc:
  Makefile: add CC to TRACK_CFLAGS

14 years agoMerge branch 'mg/reset-doc' into maint
Junio C Hamano [Wed, 24 Nov 2010 20:44:26 +0000 (12:44 -0800)]
Merge branch 'mg/reset-doc' into maint

* mg/reset-doc:
  git-reset.txt: make modes description more consistent
  git-reset.txt: point to git-checkout
  git-reset.txt: use "working tree" consistently
  git-reset.txt: reset --soft is not a no-op
  git-reset.txt: reset does not change files in target
  git-reset.txt: clarify branch vs. branch head

14 years agoMerge branch 'tr/send-email-refuse-sending-unedited-cover-letter' into maint
Junio C Hamano [Wed, 24 Nov 2010 20:44:12 +0000 (12:44 -0800)]
Merge branch 'tr/send-email-refuse-sending-unedited-cover-letter' into maint

* tr/send-email-refuse-sending-unedited-cover-letter:
  send-email: Refuse to send cover-letter template subject

14 years agoimap-send: link against libcrypto for HMAC and others
Diego Elio Pettenò [Wed, 24 Nov 2010 20:03:53 +0000 (21:03 +0100)]
imap-send: link against libcrypto for HMAC and others

When using stricter linkers, such as GNU gold or Darwin ld, transitive
dependencies are not counted towards symbol resolution. If we don't link
imap-send to libcrypto, we'll have undefined references to the HMAC_*,
EVP_* and ERR_* functions families.

Signed-off-by: Diego Elio Pettenò <flameeyes@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agofast-import: insert new object entries at start of hash bucket
David Barr [Tue, 23 Nov 2010 07:53:48 +0000 (01:53 -0600)]
fast-import: insert new object entries at start of hash bucket

More often than not, find_object is called for recently inserted objects.
Optimise for this case by inserting new entries at the start of the chain.
This doesn't affect the cost of new inserts but reduces the cost of find
and insert for existing object entries.

Signed-off-by: David Barr <david.barr@cordelta.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agogit-send-email.perl: Deduplicate "to:" and "cc:" entries with names
Joe Perches [Sat, 20 Nov 2010 23:06:05 +0000 (15:06 -0800)]
git-send-email.perl: Deduplicate "to:" and "cc:" entries with names

If an email address in the "to:" list is in the style
"First Last <email@domain.tld>", ie: not just a bare
address like "email@domain.tld", and the same named
entry style exists in the "cc:" list, the current
logic will not remove the entry from the "cc:" list.

Add logic to better deduplicate the "cc:" list by also
matching the email address with angle brackets.

Signed-off-by: Joe Perches <joe@perches.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agoreflogs: clear flags properly in corner case
Jeff King [Mon, 22 Nov 2010 04:42:53 +0000 (23:42 -0500)]
reflogs: clear flags properly in corner case

The reflog-walking mechanism is based on the regular
revision traversal. We just rewrite the parents of each
commit in fake_reflog_parent to point to the commit in the
next reflog entry instead of the real parents.

However, the regular revision traversal tries not to show
the same commit twice, and so sets the SHOWN flag on each
commit it shows. In a reflog, however, we may want to see
the same commit more than once if it appears in the reflog
multiple times (which easily happens, for example, if you do
a reset to a prior state).

The fake_reflog_parent function takes care of this by
clearing flags, including SHOWN. Unfortunately, it does so
at the very end of the function, and it is possible to
return early from the function if there is no fake parent to
set up (e.g., because we are at the very first reflog entry
on the branch). In such a case the flag is not cleared, and
the entry is skipped by the revision traversal machinery as
already shown.

You can see this by walking the log of a ref which is set to
its very first commit more than once (the test below shows
such a situation). In this case the reflog walk will fail to
show the entry for the initial creation of the ref.

We don't want to simply move the flag-clearing to the top of
the function; we want to make sure flags set during the
fake-parent installation are also cleared. Instead, let's
hoist the flag-clearing out of the fake_reflog_parent
function entirely. It's not really about fake parents
anyway, and the only caller is the get_revision machinery.

Reported-by: Martin von Zweigbergk <martin.von.zweigbergk@gmail.com>
Signed-off-by: Jeff King <peff@peff.net>
Acked-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agorebase --abort: do not update branch ref
Martin von Zweigbergk [Sun, 21 Nov 2010 11:11:21 +0000 (12:11 +0100)]
rebase --abort: do not update branch ref

If a non-interactive rebase of a ref fails at commit X and is aborted by
the user, the ref will be updated twice. First to point at X (with the
reflog message "rebase finished: $head_name onto $onto"), and then back
to $orig_head. It should not be updated at all.

Signed-off-by: Martin von Zweigbergk <martin.von.zweigbergk@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agot9010 (svn-fe): Eliminate dependency on svn perl bindings
Ramkumar Ramachandra [Mon, 11 Oct 2010 03:00:40 +0000 (22:00 -0500)]
t9010 (svn-fe): Eliminate dependency on svn perl bindings

Running test t9010 without the SVN:: perl modules currently errors
out, for no good reason.  We can make these tests easier to read and
run by not using the perl libsvn bindings and instead duplicating only
the relevant code from lib-git-svn.sh.

Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agoget_cwd_relative(): do not misinterpret root path
Nguyễn Thái Ngọc Duy [Sat, 20 Nov 2010 06:50:51 +0000 (13:50 +0700)]
get_cwd_relative(): do not misinterpret root path

Commit 490544b (get_cwd_relative(): do not misinterpret suffix as
subdirectory) handles case where:

dir = "/path/work";
cwd = "/path/work-xyz";

When it comes to the end of get_cwd_relative(), dir is at '\0' and cwd
is at '-'. The rest of cwd, "-xyz", clearly cannot be the relative
path from dir to cwd. However there is another case where:

dir = "/";          /* or even "c:/" */
cwd = "/path/to/here";

In this special case, while *cwd == 'p', which is not a path
separator, the rest of cwd, "path/to/here", can be returned as a
relative path from dir to cwd.

Handle this case and make t1509 pass again.

Reported-by: Albert Strasheim <fullung@gmail.com>
Reported-by: Matthijs Kooijman <matthijs@stdin.nl>
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agomingw: do not set errno to 0 on success
Erik Faye-Lund [Tue, 23 Nov 2010 19:53:08 +0000 (20:53 +0100)]
mingw: do not set errno to 0 on success

Currently do_lstat always sets errno to 0 on success. This incorrectly
overwrites previous errors.

Fetch the error-code into a temporary variable instead, and assign that
to errno on failure.

Signed-off-by: Erik Faye-Lund <kusmabite@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agowin32: use our own dirent.h
Erik Faye-Lund [Tue, 23 Nov 2010 18:38:29 +0000 (19:38 +0100)]
win32: use our own dirent.h

The mingw-runtime implemenation of opendir, readdir and closedir
sets errno to 0 on success, something that POSIX explicitly
forbids. 3ba7a06 ("A loose object is not corrupt if it cannot be
read due to EMFILE") introduce a dependency on this behaviour,
leading to a broken "git clone" on Windows.

compat/mingw.c contains an implementation of readdir, and
compat/msvc.c contains implementations of opendir and closedir.

Move these to compat/win32/dirent.[ch], and change to our own DIR
structure at the same time.

This provides a generic Win32-implementation of opendir, readdir
and closedir which works on both MinGW and MSVC and does not reset
errno, and as a result git clone is working again on Windows.

Signed-off-by: Erik Faye-Lund <kusmabite@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agomsvc: opendir: handle paths ending with a slash
Erik Faye-Lund [Tue, 23 Nov 2010 18:38:28 +0000 (19:38 +0100)]
msvc: opendir: handle paths ending with a slash

Signed-off-by: Erik Faye-Lund <kusmabite@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agowin32: dirent: handle errors
Erik Faye-Lund [Tue, 23 Nov 2010 18:38:27 +0000 (19:38 +0100)]
win32: dirent: handle errors

Previously all error conditions were ignored. Be nice, and set errno
when we should.

Signed-off-by: Erik Faye-Lund <kusmabite@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agomsvc: opendir: do not start the search
Erik Faye-Lund [Tue, 23 Nov 2010 18:38:26 +0000 (19:38 +0100)]
msvc: opendir: do not start the search

compat/mingw.c's readdir expects to be the one that starts the search,
and if it isn't, then the first entry will be missing or incorrect.

Fix this by removing the call to _findfirst, and initializing dd_handle
to INVALID_HANDLE_VALUE.

At the same time, make sure we use FindClose instead of _findclose,
which is symmetric to readdir's FindFirstFile. Take into account that
the find-handle might already be closed by readdir.

Signed-off-by: Erik Faye-Lund <kusmabite@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>