gitweb.git
Merge branch 'th/diff-no-index-fixes'Junio C Hamano Thu, 5 Jul 2012 06:40:38 +0000 (23:40 -0700)

Merge branch 'th/diff-no-index-fixes'

"git diff --no-index" did not correctly handle relative paths and
did not give correct exit codes when run under "--quiet" option.

* th/diff-no-index-fixes:
diff-no-index: exit(1) if 'diff --quiet <repo file> <external file>' finds changes
diff: handle relative paths in no-index

Merge branch 'hv/remote-end-hung-up'Junio C Hamano Thu, 5 Jul 2012 06:40:11 +0000 (23:40 -0700)

Merge branch 'hv/remote-end-hung-up'

When we get disconnected while expecting a response from the remote
side because authentication failed, we issued an error message "The
remote side hung up unexpectedly."

Give hint that it may be a permission problem in the message when we
can reasonably suspect it.

* hv/remote-end-hung-up:
remove the impression of unexpectedness when access is denied

Fix formatting in git-config(1)Andreas Schwab Sat, 23 Jun 2012 13:18:00 +0000 (15:18 +0200)

Fix formatting in git-config(1)

This fixes two formatting bugs in the git-config documentation:

- in the column.ui entry don't indent the last paragraph so that it isn't
formatted as a literal paragraph
- in the push.default entry separate the last paragraph from the
nested list.

Signed-off-by: Andreas Schwab <schwab@linux-m68k.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Sync with i18n-po updates in maintJunio C Hamano Mon, 2 Jul 2012 22:37:54 +0000 (15:37 -0700)

Sync with i18n-po updates in maint

# By Peter Krefting
# Via Junio C Hamano (1) and Peter Krefting (1)
* maint:
Update Swedish translation (1066t0f0u)

Merge branch 'maint' of git://github.com/git-l10n/git... Junio C Hamano Mon, 2 Jul 2012 22:36:52 +0000 (15:36 -0700)

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

Update Swedish translation (1066t0f0u)

Update Swedish translation (1066t0f0u)Peter Krefting Sun, 1 Jul 2012 22:04:09 +0000 (23:04 +0100)

Update Swedish translation (1066t0f0u)

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

Third batch for 1.7.12Junio C Hamano Thu, 28 Jun 2012 22:35:37 +0000 (15:35 -0700)

Third batch for 1.7.12

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

Merge branch 'fc/git-prompt-script'Junio C Hamano Thu, 28 Jun 2012 22:21:00 +0000 (15:21 -0700)

Merge branch 'fc/git-prompt-script'

Split a rather heavy-ish "git completion" script out to create a
separate "git prompting" script, to help lazy-autoloading of the
completion part while making prompting part always available.

Merge branch 'js/submodule-relative'Junio C Hamano Thu, 28 Jun 2012 22:20:55 +0000 (15:20 -0700)

Merge branch 'js/submodule-relative'

Teach "git submodule" deal with nested submodule structure where a
module is contained within a module whose origin is specified as a
relative URL to its superproject's origin.

Merge branch 'lk/more-helpful-status-hints'Junio C Hamano Thu, 28 Jun 2012 22:20:35 +0000 (15:20 -0700)

Merge branch 'lk/more-helpful-status-hints'

Give finer classification to various states of paths in conflicted
state and offer advice messages in the "git status" output.

Merge branch 'lk/rebase-i-x'Junio C Hamano Thu, 28 Jun 2012 22:20:23 +0000 (15:20 -0700)

Merge branch 'lk/rebase-i-x'

Teach "-x <cmd>" to "rebase -i" to insert "exec <cmd>" after each
commit in the resulting history.

Merge branch 'jc/rev-list-simplify-merges-first-parent'Junio C Hamano Thu, 28 Jun 2012 22:20:16 +0000 (15:20 -0700)

Merge branch 'jc/rev-list-simplify-merges-first-parent'

When "--simplify-merges/by-decoration" is given together with
"--first-parent" to "git log", the combination of these options
makes the simplification logic to use in-core commit objects that
haven't been examined for relevance, either producing incorrect
result or taking too long to produce any output. Teach the
simplification logic to ignore commits that the first-parent
traversal logic ignored when both are in effect to work around the
issue.

Merge branch 'hv/submodule-update-nuke-submodules'Junio C Hamano Thu, 28 Jun 2012 22:20:08 +0000 (15:20 -0700)

Merge branch 'hv/submodule-update-nuke-submodules'

"git add" allows adding a regular file to the path where a submodule
used to exist, but "git update-index" does not allow an equivalent
operation to Porcelain writers.

Merge branch 'nd/exclude-workaround-top-heavy'Junio C Hamano Thu, 28 Jun 2012 22:19:57 +0000 (15:19 -0700)

Merge branch 'nd/exclude-workaround-top-heavy'

Attempt to optimize matching with an exclude pattern with a deep
directory hierarchy by taking the part that specifies leading path
without wildcard literally.

Merge branch 'nd/stream-pack-objects'Junio C Hamano Thu, 28 Jun 2012 22:19:51 +0000 (15:19 -0700)

Merge branch 'nd/stream-pack-objects'

"pack-objects" learned to read large loose blobs using the streaming API,
without the need to hold everything in core at once.

Merge branch 'nd/stream-index-pack'Junio C Hamano Thu, 28 Jun 2012 22:19:42 +0000 (15:19 -0700)

Merge branch 'nd/stream-index-pack'

Use streaming API to read from the object store to avoid having to hold
a large blob object in-core while running index-pack.

Merge branch 'mm/verify-filename-fix'Junio C Hamano Thu, 28 Jun 2012 22:19:31 +0000 (15:19 -0700)

Merge branch 'mm/verify-filename-fix'

"git diff COPYING HEAD:COPYING" gave a nonsense error message that
claimed that the treeish HEAD did not have COPYING in it.

Merge branch 'jk/diff-no-index-pager'Junio C Hamano Thu, 28 Jun 2012 22:19:11 +0000 (15:19 -0700)

Merge branch 'jk/diff-no-index-pager'

"git diff --no-index" did not work with pagers correctly.

Second batch for 1.7.12Junio C Hamano Mon, 25 Jun 2012 18:31:07 +0000 (11:31 -0700)

Second batch for 1.7.12

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

Merge branch 'lp/no-cmd-http-fetch'Junio C Hamano Mon, 25 Jun 2012 18:25:48 +0000 (11:25 -0700)

Merge branch 'lp/no-cmd-http-fetch'

Remove unused declarations of nonexisting functions from a header
file.

* lp/no-cmd-http-fetch:
builtin.h: remove unused cmd_<foo> declarations

Merge branch 'cn/cherry-pick-range-docs'Junio C Hamano Mon, 25 Jun 2012 18:25:38 +0000 (11:25 -0700)

Merge branch 'cn/cherry-pick-range-docs'

The command line argument of "git cherry-pick maint master..next" is
just an ordinary revision range, which is unintuitive and at least
deserves documentation.

* cn/cherry-pick-range-docs:
git-cherry-pick.txt: clarify the use of revision range notation
Documentation: --no-walk is no-op if range is specified

Merge branch 'lm/git-blame-el'Junio C Hamano Mon, 25 Jun 2012 18:25:12 +0000 (11:25 -0700)

Merge branch 'lm/git-blame-el'

eLisp fixes for a contrib/ script.

* lm/git-blame-el:
git-blame.el: Do not use bare 0 to mean (point-min)
git-blame.el: Use with-current-buffer where appropriate
git-blame.el: Do not use goto-line in lisp code

Merge branch 'rs/ipv6-ssh-url'Junio C Hamano Mon, 25 Jun 2012 18:25:06 +0000 (11:25 -0700)

Merge branch 'rs/ipv6-ssh-url'

ssh:// URLs to IPv6 hosts with custom port number were parsed
incorrectly.

* rs/ipv6-ssh-url:
git: Wrong parsing of ssh urls with IPv6 literals ignores port

Merge branch 'jc/ustar-checksum-is-unsigned'Junio C Hamano Mon, 25 Jun 2012 18:24:57 +0000 (11:24 -0700)

Merge branch 'jc/ustar-checksum-is-unsigned'

"git archive" incorrectly computed the header checksum; the symptom
was observed only when using pathnames with hi-bit set.

* jc/ustar-checksum-is-unsigned:
archive: ustar header checksum is computed unsigned

Merge branch 'rs/git-blame-mapcar-mapc'Junio C Hamano Mon, 25 Jun 2012 18:24:52 +0000 (11:24 -0700)

Merge branch 'rs/git-blame-mapcar-mapc'

* rs/git-blame-mapcar-mapc:
git-blame.el: use mapc instead of mapcar

Merge branch 'rr/doc-commit'Junio C Hamano Mon, 25 Jun 2012 18:24:42 +0000 (11:24 -0700)

Merge branch 'rr/doc-commit'

* rr/doc-commit:
commit: document a couple of options

Merge branch 'nd/i18n-misc'Junio C Hamano Mon, 25 Jun 2012 18:24:37 +0000 (11:24 -0700)

Merge branch 'nd/i18n-misc'

Restructure the way message strings are created, in preparation for
marking them for i18n.

* nd/i18n-misc:
rerere: remove i18n legos in result message
notes-merge: remove i18n legos in merge result message
reflog: remove i18n legos in pruning message

Merge branch 'nd/i18n-branch-lego'Junio C Hamano Mon, 25 Jun 2012 18:24:20 +0000 (11:24 -0700)

Merge branch 'nd/i18n-branch-lego'

Restructure the way message strings are created, in preparation for
marking them for i18n.

* nd/i18n-branch-lego:
Remove i18n legos in notifying new branch tracking setup

Merge branch 'jk/no-more-asciidoc7'Junio C Hamano Mon, 25 Jun 2012 18:24:10 +0000 (11:24 -0700)

Merge branch 'jk/no-more-asciidoc7'

We no longer use AsciiDoc7 syntax in our documentation and favor a
more modern style.

* jk/no-more-asciidoc7:
docs: drop antique comment from Makefile
docs: drop asciidoc7compatible flag

Merge branch 'maint'Junio C Hamano Mon, 25 Jun 2012 18:21:33 +0000 (11:21 -0700)

Merge branch 'maint'

* maint:
git-submodule.sh: fix filename in comment.
git-add--interactive.perl: Remove two unused variables

git-submodule.sh: fix filename in comment.Michał Górny Mon, 25 Jun 2012 10:56:59 +0000 (12:56 +0200)

git-submodule.sh: fix filename in comment.

Signed-off-by: Michał Górny <mgorny@gentoo.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-add--interactive.perl: Remove two unused variablesThomas Badie Sun, 24 Jun 2012 21:37:34 +0000 (23:37 +0200)

git-add--interactive.perl: Remove two unused variables

The patch 8f0bef6 refactored this script and made the variable $fh
unneeded in subs diff_applies and patch_update_file, but forgot to
remove them.

Signed-off-by: Thomas Badie <badie@lrde.epita.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'maint'Junio C Hamano Fri, 22 Jun 2012 21:35:51 +0000 (14:35 -0700)

Merge branch 'maint'

* maint:
Documentation: Fix misspellings

Documentation: Fix misspellingsLeila Muhtasib Fri, 22 Jun 2012 20:03:01 +0000 (16:03 -0400)

Documentation: Fix misspellings

Signed-off-by: Leila Muhtasib <muhtasib@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'vr/help-per-platform'Junio C Hamano Fri, 22 Jun 2012 18:07:28 +0000 (11:07 -0700)

Merge branch 'vr/help-per-platform'

* vr/help-per-platform:
Restore use of 'help.format' configuration property in 'git help'

Restore use of 'help.format' configuration property... Pat Thoyts Fri, 22 Jun 2012 12:48:46 +0000 (13:48 +0100)

Restore use of 'help.format' configuration property in 'git help'

Commit 1cc8af0 "help: use HTML as the default help format on Windows"
lost the ability to make use of the help.format config value by forcing
the use of a compiled in default if no command-line argument was provided.
This commit restores the use of the help.format value if one is
available, overriding the compiled default.

Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

diff-no-index: exit(1) if 'diff --quiet <repo file... Tim Henigan Thu, 21 Jun 2012 18:09:51 +0000 (14:09 -0400)

diff-no-index: exit(1) if 'diff --quiet <repo file> <external file>' finds changes

When running 'git diff --quiet <file1> <file2>', if file1 or file2
is outside the repository, it will exit(0) even if the files differ.
It should exit(1) when they differ.

This happens because 'diff_no_index' looks at the 'found_changes'
member from 'diff_options' to determine if changes were made. This
is the wrong thing to do, since it is only set if xdiff is actually
run and it finds a change (the diff machinery will optimize out the
xdiff call when it is not necessary) and in that case HAS_CHANGED
flag needs to be taken into account.

Use diff_result_code() that knows all these details for the correct
exit value instead.

Signed-off-by: Tim Henigan <tim.henigan@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

diff: handle relative paths in no-indexJeff King Thu, 21 Jun 2012 18:09:50 +0000 (14:09 -0400)

diff: handle relative paths in no-index

When diff-no-index is given a relative path to a file outside the
repository, it aborts with error. However, if the file is given
using an absolute path, the diff runs as expected. The two cases
should be treated the same.

Tests and commit message by Tim Henigan.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Tim Henigan <tim.henigan@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Sync with 1.7.11.1Junio C Hamano Thu, 21 Jun 2012 21:52:23 +0000 (14:52 -0700)

Sync with 1.7.11.1

The first batch for 1.7.12Junio C Hamano Thu, 21 Jun 2012 21:51:39 +0000 (14:51 -0700)

The first batch for 1.7.12

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

Git 1.7.11.1 v1.7.11.1Junio C Hamano Thu, 21 Jun 2012 20:16:46 +0000 (13:16 -0700)

Git 1.7.11.1

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

Merge branch 'jk/maint-t1304-setfacl'Junio C Hamano Thu, 21 Jun 2012 21:42:43 +0000 (14:42 -0700)

Merge branch 'jk/maint-t1304-setfacl'

Works around a false test failure caused by a bug in ecryptofs.

* jk/maint-t1304-setfacl:
t1304: improve setfacl prerequisite setup

Merge branch 'vr/help-per-platform'Junio C Hamano Thu, 21 Jun 2012 21:42:38 +0000 (14:42 -0700)

Merge branch 'vr/help-per-platform'

We used to always default to "man" format even on platforms where
"man" viewer is not widely available.

* vr/help-per-platform:
help: use HTML as the default help format on Windows

Merge branch 'jc/ls-files-i-dir'Junio C Hamano Thu, 21 Jun 2012 21:42:06 +0000 (14:42 -0700)

Merge branch 'jc/ls-files-i-dir'

"git ls-files --exclude=t -i" did not consider anything under t/
as excluded, as it did not pay attention to exclusion of leading
paths while walking the index. Other two users of excluded() are
also updated.

* jc/ls-files-i-dir:
dir.c: make excluded() file scope static
unpack-trees.c: use path_excluded() in check_ok_to_remove()
builtin/add.c: use path_excluded()
path_excluded(): update API to less cache-entry centric
ls-files -i: micro-optimize path_excluded()
ls-files -i: pay attention to exclusion of leading paths

Merge branch 'jk/version-string'Junio C Hamano Thu, 21 Jun 2012 21:42:01 +0000 (14:42 -0700)

Merge branch 'jk/version-string'

Teaches git native protocol agents to show software version over the
wire.

* jk/version-string:
http: get default user-agent from git_user_agent
version: add git_user_agent function
move git_version_string into version.c

Merge branch 'jc/request-pull-match-tagname'Junio C Hamano Thu, 21 Jun 2012 21:41:57 +0000 (14:41 -0700)

Merge branch 'jc/request-pull-match-tagname'

"git request-pull $url dev" when the tip of "dev" branch was tagged
with "ext4-for-linus" used the contents from the tag in the output
but still asked the "dev" branch to be pulled, not the tag.

* jc/request-pull-match-tagname:
request-pull: really favor a matching tag

Merge branch 'jk/clone-local'Junio C Hamano Thu, 21 Jun 2012 21:41:53 +0000 (14:41 -0700)

Merge branch 'jk/clone-local'

"git clone --local $path" started its life as an experiment to
optionally use link/copy when cloning a repository on the disk, but
we didn't deprecate it after we made the option a no-op to always
use the optimization.

The command learns "--no-local" option to turn this off, as a more
explicit alternative over use of file:// URL.

* jk/clone-local:
clone: allow --no-local to turn off local optimizations
docs/clone: mention that --local may be ignored

Merge branch 'jc/bundle-complete-notice'Junio C Hamano Thu, 21 Jun 2012 21:41:44 +0000 (14:41 -0700)

Merge branch 'jc/bundle-complete-notice'

Running "git bundle verify" on a bundle that records a complete
history said "it requires these 0 commits".

* jc/bundle-complete-notice:
tweak "bundle verify" of a complete history

Kick off post 1.7.11 cycleJunio C Hamano Thu, 21 Jun 2012 20:18:49 +0000 (13:18 -0700)

Kick off post 1.7.11 cycle

I haven't decided what to call this one, 1.7.12, 1.8.0, or even 2.0.
Given that summer is a relatively slow season, I suspect 1.7.12 is
the most likely outcome, but we will see.

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

docs: always define git-relative-html-prefix attributeJeff King Thu, 21 Jun 2012 06:24:10 +0000 (02:24 -0400)

docs: always define git-relative-html-prefix attribute

Commit fe77b41 introduced a new attribute to let the linkgit macro
create cross-directory HTML references from the technical/ and howto/
subdirectories back to the main documentation. We define that attribute
to "../" on the command-line when building inside those subdirectories,
and otherwise leave it unset under the assumption that it would default
to being blank. Instead, asciidoc omits the link entirely, leading to
broken documentation. Fix this by defining git-relative-html-prefix to
blank in asciidoc.conf (and an instance on the command-line, when
present, will override it).

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

completion: respect $GIT_DIRSZEDER Gábor Wed, 9 May 2012 00:44:35 +0000 (02:44 +0200)

completion: respect $GIT_DIR

The __gitdir() helper function finds out the path of the git
repository by running 'git rev-parse --git-dir'. However, it has a
shortcut first to avoid the overhead of running a git command in a
subshell when the current directory is at the top of the work tree,
i.e. when it contains a '.git' subdirectory.

If the 'GIT_DIR' environment variable is set then it specifies the
path to the git repository, and the autodetection of the '.git'
directory is not necessary. However, $GIT_DIR is only taken into
acocunt by 'git rev-parse --git-dir', and the check for the '.git'
subdirectory is performed first, so it wins over the path given in
$GIT_DIR.

There are several completion (helper) functions that depend on
__gitdir(), and when the above case triggers the completion script
will do weird things, like offering refs, aliases, or stashes from a
different repository, or displaying wrong or broken prompt, etc.

So check first whether $GIT_DIR is set, and only proceed with checking
the '.git' directory in the current directory if it isn't. 'git
rev-parse' would also check whether the path in $GIT_DIR is a proper
'.git' directory, i.e. 'HEAD', 'refs/', and 'objects/' are present and
accessible, but we don't have to be that thorough for the bash prompt.
And we've lived with an equally permissive check for '.git' in the
current working directory for years anyway.

Signed-off-by: SZEDER Gábor <szeder@ira.uka.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

remove the impression of unexpectedness when access... Heiko Voigt Tue, 19 Jun 2012 18:24:50 +0000 (20:24 +0200)

remove the impression of unexpectedness when access is denied

If a server accessed through ssh is denying access git will currently
issue the message

"fatal: The remote end hung up unexpectedly"

as the last line. This sounds as if something really ugly just happened.
Since this is a quite typical situation in which users regularly get
we do not say that if it happens at the beginning when reading the
remote heads.

If its in the very first beginning of reading the remote heads it is
very likely an authentication error or a missing repository.

If it happens later during reading the remote heads we still indicate
that it happened during this initial contact phase.

Signed-off-by: Heiko Voigt <hvoigt@hvoigt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-commit-tree(1): update synopsisJunio C Hamano Tue, 19 Jun 2012 18:36:57 +0000 (11:36 -0700)

git-commit-tree(1): update synopsis

Even with many new kinds of options, the command still takes the
single <tree> as the first argument.

Probably we would want to update the command to allow it to take
<tree>-ish at the end for consistency.

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

Documentation: spelling fixesMiklos Vajna Tue, 19 Jun 2012 17:56:09 +0000 (19:56 +0200)

Documentation: spelling fixes

Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

verify_filename(): ask the caller to chose the kind... Matthieu Moy Mon, 18 Jun 2012 18:18:21 +0000 (20:18 +0200)

verify_filename(): ask the caller to chose the kind of diagnosis

verify_filename() can be called in two different contexts. Either we
just tried to interpret a string as an object name, and it fails, so
we try looking for a working tree file (i.e. we finished looking at
revs that come earlier on the command line, and the next argument
must be a pathname), or we _know_ that we are looking for a
pathname, and shouldn't even try interpreting the string as an
object name.

For example, with this change, we get:

$ git log COPYING HEAD:inexistant
fatal: HEAD:inexistant: no such path in the working tree.
Use '-- <path>...' to specify paths that do not exist locally.
$ git log HEAD:inexistant
fatal: Path 'inexistant' does not exist in 'HEAD'

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

sha1_name: do not trigger detailed diagnosis for file... Matthieu Moy Mon, 18 Jun 2012 18:18:20 +0000 (20:18 +0200)

sha1_name: do not trigger detailed diagnosis for file arguments

diagnose_invalid_sha1_path() is meant to be called to diagnose a
misspelt <treeish>:<pathname> when <pathname> does not exist in
<treeish>. However, the code may call it if <treeish>:<pathname> is
invalid (which triggers another call with only_to_die == 1), but for
another reason. This happens when calling e.g.

git log existing-file HEAD:existing-file

because existing-file is a path and not a revision, the code
verifies that the arguments that follow to be paths. This leads to
an incorrect message like "existing-file does not exist in HEAD",
even though the path exists in HEAD.

Check that the search for <pathname> in <treeish> fails before
triggering the diagnosis.

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

Git 1.7.11 v1.7.11Junio C Hamano Sun, 17 Jun 2012 21:07:15 +0000 (14:07 -0700)

Git 1.7.11

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

Sync with 1.7.10.5Junio C Hamano Sun, 17 Jun 2012 21:05:53 +0000 (14:05 -0700)

Sync with 1.7.10.5

Git 1.7.10.5 v1.7.10.5Junio C Hamano Sun, 17 Jun 2012 21:04:15 +0000 (14:04 -0700)

Git 1.7.10.5

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

Do not autosquash in case of an implied interactive... Vincent van Ravesteijn Thu, 24 May 2012 13:57:26 +0000 (13:57 +0000)

Do not autosquash in case of an implied interactive rebase

The option to autosquash is only used in case of an interactive rebase.
When merges are preserved, rebase uses an interactive rebase internally,
but in this case autosquash should still be disabled.

Signed-off-by: Vincent van Ravesteijn <vfr@lyx.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'js/maint-fast-export-mark-error' into... Junio C Hamano Sun, 17 Jun 2012 21:00:03 +0000 (14:00 -0700)

Merge branch 'js/maint-fast-export-mark-error' into maint

"git fast-export" did not give a readable error message when the same
mark erroneously appeared twice in the --import-marks input.

Merge git://github.com/git-l10n/git-poJunio C Hamano Fri, 15 Jun 2012 22:01:16 +0000 (15:01 -0700)

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

Updated Italian translations.

* git://github.com/git-l10n/git-po:
l10n: it.po: translate 212 new messages

Merge branch 'as/diff-shortstat-ignore-binary'Junio C Hamano Fri, 15 Jun 2012 22:00:53 +0000 (15:00 -0700)

Merge branch 'as/diff-shortstat-ignore-binary'

# By Alexander Strasser
* as/diff-shortstat-ignore-binary:
diff: Only count lines in show_shortstats

diff: Only count lines in show_shortstatsAlexander Strasser Fri, 15 Jun 2012 21:50:30 +0000 (23:50 +0200)

diff: Only count lines in show_shortstats

Do not mix byte and line counts. Binary files have byte counts;
skip them when accumulating line insertions/deletions.

The regression was introduced in e18872b.

Signed-off-by: Alexander Strasser <eclipse7@gmx.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

do not run pager with diff --no-index --quietJeff King Fri, 15 Jun 2012 20:32:55 +0000 (16:32 -0400)

do not run pager with diff --no-index --quiet

There is no point in running a pager when --quiet is given,
since we are producing no output. The regular diff code path
handles this already, because --quiet implies --exit-code,
and we check for --exit-code when deciding not to run the
pager.

However, the "quiet implies exit-code" logic is done in
diff_setup_done, and the no-index code path sets up its
pager before running diff_setup_done, and misses this case.

We can fix this by reordering our initialization.
Currently we do:

1. read command line arguments into diff_options

2. Set pager if EXIT_CODE not requested

3. always set EXIT_CODE, since we are emulating
traditional diff

4. call diff_setup_done

We can fix the problem by moving pager initialization (step
2) after step 4. But step 3 must come after step 2 (since we
want to know whether the _user_ requested --exit-code, not
whether we turned it on unconditionally). So we must move
both.

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

fix pager.diff with diff --no-indexJeff King Fri, 15 Jun 2012 20:29:48 +0000 (16:29 -0400)

fix pager.diff with diff --no-index

git-diff does not rely on the git wrapper to setup its
pager; instead, it sets it up on its own after seeing
whether --quiet or --exit-code has been specified. After
diff_no_index was split off from cmd_diff, commit b3fde6c
(git diff --no-index: default to page like other diff
frontends, 2008-05-26) duplicated the one-liner from
cmd_diff to turn on the pager.

Later, commit 8f0359f (Allow pager of diff command be
enabled/disabled, 2008-07-21) taught the the version in
cmd_diff to respect the pager.diff config, but the version
in diff_no_index was left behind. This meant that

git -c pager.diff=0 diff a b

would not use a pager, but

git -c pager.diff=0 diff --no-index a b

would. Let's fix it by factoring out a common function.

While we're there, let's update the antiquated comment,
which claims that the pager interferes with propagating the
exit code; this has not been the case since ea27a18 (spawn
pager via run_command interface, 2008-07-22).

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

perl/Makefile: install Git::SVN::* when NO_PERL_MAKEMAK... Jonathan Nieder Fri, 15 Jun 2012 18:05:05 +0000 (13:05 -0500)

perl/Makefile: install Git::SVN::* when NO_PERL_MAKEMAKER=yes, too

v1.7.11-rc1~12^2~2 (2012-05-27) and friends split some git-svn code
into separate modules but did not update the fallback rules to install
them when NO_PERL_MAKEMAKER is set. Add the appropriate rules so
users without MakeMaker can use git-svn again.

Affected modules: Git::SVN::Prompt, Git::SVN::Fetcher,
Git::SVN::Editor, Git::SVN::Ra, Git::SVN::Memoize::YAML.

Reported-by: Adam Roben <adam@roben.org>
Signed-off-by: Jonathan Nieder <jrnieder@gmali.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

perl/Makefile.PL: warn about duplicate module list... Jonathan Nieder Fri, 15 Jun 2012 18:14:46 +0000 (13:14 -0500)

perl/Makefile.PL: warn about duplicate module list in perl/Makefile

Adding or removing a module requires modifying both files to support
builds with and without MakeMaker. Add a comment to remind patch
authors and reviewers at the crucial moment.

Longer term, it would be nicer to maintain a single list, perhaps in a
separate file used by both build systems.

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

builtin.h: remove unused cmd_<foo> declarationsLuka Perkov Thu, 14 Jun 2012 20:23:37 +0000 (22:23 +0200)

builtin.h: remove unused cmd_<foo> declarations

These were left in builtin.h after they were converted into
stand-alone programs or removed after experiments finished.

Signed-off-by: Luka Perkov <lists@lukaperkov.net>
Helped-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-cherry-pick.txt: clarify the use of revision range... Carlos Martín Nieto Fri, 15 Jun 2012 14:33:16 +0000 (16:33 +0200)

git-cherry-pick.txt: clarify the use of revision range notation

When given a set of commits, cherry-pick will apply the changes for
all of them. Specifying a simple range will also work as expected.

This can lead the user to think that

git cherry-pick A B..C

may apply A and then B..C, but that is not what happens.

Instead the revs are given to a single invocation of rev-list, which
will consider A and C as positive revs and B as a negative one. The
commit A will not be used if it is an ancestor of B.

Add a note about this and add an example with this particular
syntax, which has shown up on the list a few times.

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

Documentation: --no-walk is no-op if range is specifiedCarlos Martín Nieto Fri, 15 Jun 2012 14:33:15 +0000 (16:33 +0200)

Documentation: --no-walk is no-op if range is specified

The existing description can be misleading and cause the reader to
think that --no-walk will do something if they specify a range in the
command line instead of a set of revs.

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

t7400: avoid path mangling issuesJohannes Sixt Thu, 14 Jun 2012 12:10:27 +0000 (14:10 +0200)

t7400: avoid path mangling issues

A recently introduced test uses an absolute path. But when run on Windows
using the MSYS bash, such a path is mangled into a Windows style path when
it is passed to 'git config'. The subsequent 'test' then compares the
mangled path to the unmangled version and reports a failure.

A path beginning with two slashes denotes a network directory
(//server/share path) and is not mangled. Use that trick to side-step the
issue. Just in case that 'git submodule init' regresses in such a way that
it accesses the URL, use a path name that is unlikely to exist on POSIX
systems, and that cannot be a server name on Windows.

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

git-blame.el: Do not use bare 0 to mean (point-min)Lawrence Mitchell Thu, 14 Jun 2012 09:38:00 +0000 (10:38 +0100)

git-blame.el: Do not use bare 0 to mean (point-min)

Signed-off-by: Lawrence Mitchell <wence@gmx.li>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-blame.el: Use with-current-buffer where appropriateLawrence Mitchell Thu, 14 Jun 2012 09:37:59 +0000 (10:37 +0100)

git-blame.el: Use with-current-buffer where appropriate

In git-blame-filter and git-blame-create-overlay we want to save
(along with the values of point and mark) the current-buffer in scope
when calling the functions. The idiom

(save-excursion
(set-buffer buf)
...)

will correctly restore the correct buffer, but will not save the
values of point and mark in buf (only in the buffer current when the
save-excursion call is executed). The intention of these functions is
to save the current buffer from the calling scope and the values of
point and mark in the buffer they are modifying. The correct idiom
for this is

(with-current-buffer buf
(save-excursion
...))

Signed-off-by: Rüdiger Sonderfeld <ruediger@c-plusplus.de>
Signed-off-by: Lawrence Mitchell <wence@gmx.li>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-blame.el: Do not use goto-line in lisp codeRüdiger Sonderfeld Thu, 14 Jun 2012 09:37:58 +0000 (10:37 +0100)

git-blame.el: Do not use goto-line in lisp code

goto-line is a user-level command, instead use the lisp-level
construct recommended in Emacs documentation.

Signed-off-by: Rüdiger Sonderfeld <ruediger@c-plusplus.de>
Signed-off-by: Lawrence Mitchell <wence@gmx.li>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

status: better advices when splitting a commit (during... Lucien Kong Sun, 10 Jun 2012 11:17:38 +0000 (13:17 +0200)

status: better advices when splitting a commit (during rebase -i)

Add new informative help messages at the output of 'git status' when
the user is splitting a commit. The code figures this state by
comparing the contents of the following files in the .git/ directory:
- HEAD
- ORIG_HEAD
- rebase-merge/amend
- rebase-merge/orig-head

Signed-off-by: Lucien Kong <Lucien.Kong@ensimag.imag.fr>
Signed-off-by: Valentin Duperray <Valentin.Duperray@ensimag.imag.fr>
Signed-off-by: Franck Jonas <Franck.Jonas@ensimag.imag.fr>
Signed-off-by: Thomas Nguy <Thomas.Nguy@ensimag.imag.fr>
Signed-off-by: Huynh Khoi Nguyen Nguyen <Huynh-Khoi-Nguyen.Nguyen@ensimag.imag.fr>
Signed-off-by: Matthieu Moy <Matthieu.Moy@grenoble-inp.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

status: don't suggest "git rm" or "git add" if not... Lucien Kong Tue, 5 Jun 2012 20:21:26 +0000 (22:21 +0200)

status: don't suggest "git rm" or "git add" if not appropriate

The display of the advice '(use git add/rm [...])' (when there are
unmerged files) after running 'git status' is now depending of the
mark, whether it's 'both deleted', 'deleted by us/them' or others. For
instance, when there is just one file that's marked as 'both deleted',
'git status' shows '(use git rm [...])' and if there are two files,
one as 'both deleted' and the other as 'added by them', the advice is
'(use git add/rm [...])'.

The previous tests in t7512-status-help.sh are updated.

Test about the case of only 'both deleted' is added in
t7060-wtstatus.sh

Signed-off-by: Lucien Kong <Lucien.Kong@ensimag.imag.fr>
Signed-off-by: Valentin Duperray <Valentin.Duperray@ensimag.imag.fr>
Signed-off-by: Franck Jonas <Franck.Jonas@ensimag.imag.fr>
Signed-off-by: Thomas Nguy <Thomas.Nguy@ensimag.imag.fr>
Signed-off-by: Huynh Khoi Nguyen Nguyen <Huynh-Khoi-Nguyen.Nguyen@ensimag.imag.fr>
Signed-off-by: Matthieu Moy <Matthieu.Moy@grenoble-inp.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t7512-status-help.sh: better advices for git statusLucien Kong Tue, 5 Jun 2012 20:21:25 +0000 (22:21 +0200)

t7512-status-help.sh: better advices for git status

The following tests include several cases in which the user needs to
run 'git status' to know his current situation, whether there're
conflicts or he's in rebase/bisect/am/cherry-pick progress.

One of the test is about the set of the advice.statushints config key
to 'false' in .git/config.

Signed-off-by: Lucien Kong <Lucien.Kong@ensimag.imag.fr>
Signed-off-by: Valentin Duperray <Valentin.Duperray@ensimag.imag.fr>
Signed-off-by: Franck Jonas <Franck.Jonas@ensimag.imag.fr>
Signed-off-by: Thomas Nguy <Thomas.Nguy@ensimag.imag.fr>
Signed-off-by: Huynh Khoi Nguyen Nguyen <Huynh-Khoi-Nguyen.Nguyen@ensimag.imag.fr>
Signed-off-by: Matthieu Moy <Matthieu.Moy@grenoble-inp.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

wt-status.*: better advices for git status addedLucien Kong Tue, 5 Jun 2012 20:21:24 +0000 (22:21 +0200)

wt-status.*: better advices for git status added

This patch provides new informative help messages in the display of
'git status' (at the top) during conflicts, rebase, am, bisect or
cherry-pick process.

The new messages are not shown when using options such as -s or
--porcelain. The messages about the current situation of the user are
always displayed but the advices on what the user needs to do in order
to resume a rebase/bisect/am/commit after resolving conflicts can be
hidden by setting advice.statushints to 'false' in the config file.

Thus, information about the updated advice.statushints key are added
in Documentation/config.txt.

Also, the test t7060-wt-status.sh is now working with the new help
messages. Tests about suggestions of "git rm" are also added.

Signed-off-by: Lucien Kong <Lucien.Kong@ensimag.imag.fr>
Signed-off-by: Valentin Duperray <Valentin.Duperray@ensimag.imag.fr>
Signed-off-by: Franck Jonas <Franck.Jonas@ensimag.imag.fr>
Signed-off-by: Thomas Nguy <Thomas.Nguy@ensimag.imag.fr>
Signed-off-by: Huynh Khoi Nguyen Nguyen <Huynh-Khoi-Nguyen.Nguyen@ensimag.imag.fr>
Signed-off-by: Matthieu Moy <Matthieu.Moy@grenoble-inp.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

l10n: it.po: translate 212 new messagesMarco Paolone Thu, 14 Jun 2012 12:14:31 +0000 (14:14 +0200)

l10n: it.po: translate 212 new messages

Signed-off-by: Marco Paolone <marcopaolone@gmail.com>
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>

rebase -i: teach "--exec <cmd>"Lucien Kong Tue, 12 Jun 2012 08:05:12 +0000 (10:05 +0200)

rebase -i: teach "--exec <cmd>"

During an interactive rebase session, it is sometimes desirable to
run tests on each commit in the resulting history. This can be done
by adding "exec <test command>" when editing the insn sheet, but the
command used for testing is often the same for all resulting commits.

By passing "--exec <cmd>" from the command line, automatically add
these "exec" lines after each commit in the final history. To work
well with the --autosquash option, these are added at the end of
each run of "fixup" and "squash".

Helped-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Lucien Kong <Lucien.Kong@ensimag.imag.fr>
Signed-off-by: Valentin Duperray <Valentin.Duperray@ensimag.imag.fr>
Signed-off-by: Franck Jonas <Franck.Jonas@ensimag.imag.fr>
Signed-off-by: Thomas Nguy <Thomas.Nguy@ensimag.imag.fr>
Signed-off-by: Huynh Khoi Nguyen Nguyen <Huynh-Khoi-Nguyen.Nguyen@ensimag.imag.fr>
Signed-off-by: Matthieu Moy <Matthieu.Moy@grenoble-inp.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

revision: ignore side parents while running simplify... Junio C Hamano Fri, 8 Jun 2012 21:56:03 +0000 (14:56 -0700)

revision: ignore side parents while running simplify-merges

The simplify_merges() function needs to look at all history chain to
find the closest ancestor that is relevant after the simplification,
but after --first-parent traversal, side parents haven't been marked
for relevance (they are irrelevant by definition due to the nature
of first-parent-only traversal) nor culled from the parents list of
resulting commits.

We cannot simply remove these side parents from the parents list, as
the output phase still wants to see the parents. Instead, teach
simplify_one() and its callees to ignore the later parents.

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

git: Wrong parsing of ssh urls with IPv6 literals ignor... René Scharfe Tue, 12 Jun 2012 18:46:56 +0000 (20:46 +0200)

git: Wrong parsing of ssh urls with IPv6 literals ignores port

If we encounter an address part shaped like "[HOST]:PORT", we skip the opening
bracket and replace the closing one with a NUL. The variable host then points
to HOST and we've cut off the PORT part. Thus, when we go looking for it using
host a bit later, we can't find it. Start at end instead, which either points
to the colon, if present, or is equal to host.

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

Merge branch 'rj/gitweb-test-sans-date-parser'Junio C Hamano Wed, 13 Jun 2012 18:48:54 +0000 (11:48 -0700)

Merge branch 'rj/gitweb-test-sans-date-parser'

Regression fix to t9501 introduced at 0f3ddd4

* rj/gitweb-test-sans-date-parser:
gitweb: Skip 'modification times' tests when no date parser available

Merge branch 'fc/git-complete-helper-fix'Junio C Hamano Wed, 13 Jun 2012 18:47:11 +0000 (11:47 -0700)

Merge branch 'fc/git-complete-helper-fix'

* fc/git-complete-helper-fix:
completion: put main git and gitk completion functions back into git namespace

archive: ustar header checksum is computed unsignedJunio C Hamano Wed, 13 Jun 2012 17:42:25 +0000 (10:42 -0700)

archive: ustar header checksum is computed unsigned

POSIX.1 (pax) is pretty clear on this:

The chksum field shall be the ISO/IEC 646:1991 standard IRV
representation of the octal value of the simple sum of all octets
in the header logical record. Each octet in the header shall be
treated as an unsigned value. These values shall be added to an
unsigned integer, initialized to zero, the precision of which is
not less than 17 bits. When calculating the checksum, the chksum
field is treated as if it were all <space> characters.

so is GNU:

http://www.gnu.org/software/tar/manual/html_node/Checksumming.html

Found by 7zip folks and reported by Rafał Mużyło.

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

completion: remove credential helpers from porcelain... SZEDER Gábor Wed, 13 Jun 2012 08:11:29 +0000 (10:11 +0200)

completion: remove credential helpers from porcelain commands

Signed-off-by: SZEDER Gábor <szeder@ira.uka.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

completion: put main git and gitk completion functions... SZEDER Gábor Wed, 13 Jun 2012 08:08:50 +0000 (10:08 +0200)

completion: put main git and gitk completion functions back into git namespace

Commit 7f02f3d7 (completion: rename internal helpers _git and _gitk,
2012-05-19) renamed said functions to _main_git() and _main_gitk(),
respectively. By convention the name of our git-completion-specific
functions start with '_git' or '__git' prefix, so rename those
functions once again to put them back into our "namespace". Use the
two underscore prefix, because _git_main() could be mistaken for the
completion function of the (not yet existing) 'git main' command.

Signed-off-by: SZEDER Gábor <szeder@ira.uka.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

gitweb: Skip 'modification times' tests when no date... Ramsay Jones Tue, 12 Jun 2012 18:09:38 +0000 (19:09 +0100)

gitweb: Skip 'modification times' tests when no date parser available

The If-Modified-Since support in Gitweb is conditional on the
availability of a date parser from either the HTTP::Date or
Time::ParseDate modules. If a suitable parser is not available,
then the corresponding 'modification times' tests should be skipped.

Introduce the DATE_PARSER test prerequisite and use it to skip
all of the dependent tests.

Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Git 1.7.11-rc3 v1.7.11-rc3Junio C Hamano Tue, 12 Jun 2012 16:10:52 +0000 (09:10 -0700)

Git 1.7.11-rc3

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

Merge git://github.com/git-l10n/git-poJunio C Hamano Tue, 12 Jun 2012 16:08:35 +0000 (09:08 -0700)

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

Updates to German, Vietnamese and simplified Chinese translation.

* git://github.com/git-l10n/git-po:
l10n: de.po: translate 27 new messages
l10n: Update po/vi.po to v1.7.11.rc2.2.gb694fbb
l10n: zh_CN.po: translate 27 new messages
l10n: Update git.pot (27 new, 1 removed messages)

Merge git://github.com/ralfth/git-po-deJiang Xin Tue, 12 Jun 2012 15:41:05 +0000 (23:41 +0800)

Merge git://github.com/ralfth/git-po-de

By Ralf Thielow
via Ralf Thielow
* github.com/ralfth/git-po-de:
l10n: de.po: translate 27 new messages

Merge branch 'mm/api-credentials-doc'Junio C Hamano Tue, 12 Jun 2012 15:40:16 +0000 (08:40 -0700)

Merge branch 'mm/api-credentials-doc'

* mm/api-credentials-doc:
api-credential.txt: document that helpers field is filled-in automatically

Merge branch 'jc/fmt-merge-msg-people'Junio C Hamano Tue, 12 Jun 2012 15:33:30 +0000 (08:33 -0700)

Merge branch 'jc/fmt-merge-msg-people'

Tone down the lines that credit people involved and make them
comments, so that integrators who edit their merge messages can
still make use of the information, but lazy ones will not leave
the unverified guesses placed on the "via" line.

* jc/fmt-merge-msg-people:
fmt-merge-msg: make attribution into comment lines

api-credential.txt: document that helpers field is... Matthieu Moy Mon, 11 Jun 2012 17:51:47 +0000 (19:51 +0200)

api-credential.txt: document that helpers field is filled-in automatically

It was unclear whether the field was to be specified by the user of the
API.

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

Merge branch 'js/maint-fast-export-mark-error'Junio C Hamano Tue, 12 Jun 2012 14:27:50 +0000 (07:27 -0700)

Merge branch 'js/maint-fast-export-mark-error'

* js/maint-fast-export-mark-error:
fast-export: report SHA-1 instead of gibberish when marks exist already

fast-export: report SHA-1 instead of gibberish when... Johannes Schindelin Tue, 12 Jun 2012 13:45:16 +0000 (15:45 +0200)

fast-export: report SHA-1 instead of gibberish when marks exist already

Cc: Pieter de Bie <pdebie@ai.rug.nl>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Max Horn <max@quendi.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

l10n: de.po: translate 27 new messagesRalf Thielow Fri, 8 Jun 2012 17:15:10 +0000 (19:15 +0200)

l10n: de.po: translate 27 new messages

Translate 27 new messages came from git.pot update
in 7256fd7 (l10n: Update git.pot (27 new, 1 removed messages)).

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

update-index: allow overwriting existing submodule... Heiko Voigt Sat, 9 Jun 2012 14:27:00 +0000 (16:27 +0200)

update-index: allow overwriting existing submodule index entries

In commit e01105 Linus introduced gitlinks to update-index. He explains
that he thinks it is not the right thing to replace a gitlink with
something else.

That commit is from the very first beginnings of submodule support.
Since then we have gotten a lot closer to being able to remove a
submodule without losing its history. This check prevents such a use
case, so I think this assumption has changed.

Additionally in the git add codepath we do not have such a check, so for
consistency reasons I think removing this check is the correct thing to
do.

Signed-off-by: Heiko Voigt <hvoigt@hvoigt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-svn: use YAML format for mergeinfo cache when possibleJonathan Nieder Sat, 9 Jun 2012 22:35:35 +0000 (17:35 -0500)

git-svn: use YAML format for mergeinfo cache when possible

Since v1.7.0-rc2~11 (git-svn: persistent memoization, 2010-01-30),
git-svn has maintained some private per-repository caches in
.git/svn/.caches to avoid refetching and recalculating some
mergeinfo-related information with every "git svn fetch".

These caches use the 'nstore' format from the perl core module
Storable, which can be read and written quickly and was designed for
transfer over the wire (the 'n' stands for 'network'). This format is
endianness-independent and independent of floating-point
representation.

Unfortunately the format is *not* independent of the perl version ---
new perl versions will write files that very old perl cannot read.
Worse, the format is not independent of the size of a perl integer.
So if you toggle perl's use64bitint compile-time option, then using
'git svn fetch' on your old repositories produces errors like this:

Byte order is not compatible at ../../lib/Storable.pm (autosplit
into ../../lib/auto/Storable/_retrieve.al) line 380, at
/usr/share/perl/5.12/Memoize/Storable.pm line 21

That is, upgrading perl to a version that uses use64bitint for the
first time makes git-svn suddenly refuse to fetch in existing
repositories. Removing .git/svn/.caches lets git-svn recover.

It's time to switch to a platform independent serializer backend with
better compatibility guarantees. This patch uses YAML::Any.

Other choices were considered:

- thawing data from Data::Dumper involves "eval". Doing that without
creating a security risk is fussy.

- the JSON API works on scalars in memory and doesn't provide a
standard way to serialize straight to disk.

YAML::Any is reasonably fast and has a pleasant API. In most
backends, LoadFile() reads the entire file into a scalar anyway and
converts it as a second step, but having an interface that allows the
deserialization to happen on the fly without a temporary is still a
comfort.

YAML::Any is not a core perl module, so we take care to use it when
and only when it is available. Installations without that module
should fall back to using Storable with all its quirks, keeping their
cache files in

.git/svn/.caches/*.db

Installations with YAML peacefully coexist by keeping a separate set
of cache files in

.git/svn/.caches/*.yaml.

In most cases, switching between is a one-time thing, so it doesn't
seem worth the complication to migrate existing caches.

The upshot: after this patch, as long as YAML::Any is installed you
can move your git repository between machines with different perl
installations and "git svn fetch" will work fine. If you do not have
YAML::Any, the behavior is unchanged (and in particular does not get
any worse).

Reported-by: Sandro Weiser <sandro.weiser@informatik.tu-chemnitz.de>
Reported-by: Bdale Garbee <bdale@gag.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Eric Wong <normalperson@yhbt.net>