gitweb.git
Merge branch 'ss/mergetools-tortoise'Junio C Hamano Thu, 7 Feb 2013 22:42:01 +0000 (14:42 -0800)

Merge branch 'ss/mergetools-tortoise'

Update mergetools to work better with newer merge helper tortoise ships.

* ss/mergetools-tortoise:
mergetools: teach tortoisemerge to handle filenames with SP correctly
mergetools: support TortoiseGitMerge

Merge branch 'jk/mergetool'Junio C Hamano Thu, 7 Feb 2013 22:41:57 +0000 (14:41 -0800)

Merge branch 'jk/mergetool'

Cleans up mergetool/difftool combo.

* jk/mergetool:
mergetools: simplify how we handle "vim" and "defaults"
mergetool--lib: don't call "exit" in setup_tool
mergetool--lib: improve show_tool_help() output
mergetools/vim: remove redundant diff command
git-difftool: use git-mergetool--lib for "--tool-help"
git-mergetool: don't hardcode 'mergetool' in show_tool_help
git-mergetool: remove redundant assignment
git-mergetool: move show_tool_help to mergetool--lib

Merge branch 'jk/doc-makefile-cleanup'Junio C Hamano Thu, 7 Feb 2013 22:41:51 +0000 (14:41 -0800)

Merge branch 'jk/doc-makefile-cleanup'

* jk/doc-makefile-cleanup:
Documentation/Makefile: clean up MAN*_TXT lists

Merge branch 'jk/remote-helpers-doc'Junio C Hamano Thu, 7 Feb 2013 22:41:45 +0000 (14:41 -0800)

Merge branch 'jk/remote-helpers-doc'

"git help remote-helpers" did not work; 'remote-helpers' is not
a subcommand name but a concept, so its documentation should have
been in gitremote-helpers, not git-remote-helpers.

* jk/remote-helpers-doc:
Rename {git- => git}remote-helpers.txt

Merge branch 'sb/run-command-fd-error-reporting'Junio C Hamano Thu, 7 Feb 2013 22:41:42 +0000 (14:41 -0800)

Merge branch 'sb/run-command-fd-error-reporting'

* sb/run-command-fd-error-reporting:
run-command: be more informative about what failed

Merge branch 'nd/branch-error-cases'Junio C Hamano Thu, 7 Feb 2013 22:41:38 +0000 (14:41 -0800)

Merge branch 'nd/branch-error-cases'

Fix various error messages and conditions in "git branch", e.g. we
advertised "branch -d/-D" to remove one or more branches but actually
implemented removal of zero or more branches---request to remove no
branches was not rejected.

* nd/branch-error-cases:
branch: let branch filters imply --list
docs: clarify git-branch --list behavior
branch: mark more strings for translation
branch: give a more helpful message on redundant arguments
branch: reject -D/-d without branch name

Merge branch 'sb/gpg-i18n'Junio C Hamano Thu, 7 Feb 2013 22:41:34 +0000 (14:41 -0800)

Merge branch 'sb/gpg-i18n'

* sb/gpg-i18n:
gpg: allow translation of more error messages

Merge branch 'jk/python-styles'Junio C Hamano Thu, 7 Feb 2013 22:41:31 +0000 (14:41 -0800)

Merge branch 'jk/python-styles'

* jk/python-styles:
CodingGuidelines: add Python coding guidelines

Merge branch 'ab/gitweb-use-same-scheme'Junio C Hamano Thu, 7 Feb 2013 22:41:24 +0000 (14:41 -0800)

Merge branch 'ab/gitweb-use-same-scheme'

Avoid mixed contents on a page coming via http and https when
gitweb is hosted on a https server.

* ab/gitweb-use-same-scheme:
gitweb: refer to picon/gravatar images over the same scheme

Update draft release notes to 1.8.2Junio C Hamano Wed, 6 Feb 2013 00:20:16 +0000 (16:20 -0800)

Update draft release notes to 1.8.2

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

Merge branch 'jn/auto-depend-workaround-buggy-ccache'Junio C Hamano Wed, 6 Feb 2013 00:13:52 +0000 (16:13 -0800)

Merge branch 'jn/auto-depend-workaround-buggy-ccache'

An age-old workaround to prevent buggy versions of ccache from
breaking the auto-generation of dependencies, which unfortunately
is still relevant because some people use ancient distros.

* jn/auto-depend-workaround-buggy-ccache:
Makefile: explicitly set target name for autogenerated dependencies

Merge branch 'ta/doc-no-small-caps'Junio C Hamano Wed, 6 Feb 2013 00:13:32 +0000 (16:13 -0800)

Merge branch 'ta/doc-no-small-caps'

Update documentation to change "GIT" which was a poor-man's small
caps to "Git". The latter was the intended spelling.

Also change "git" spelled in all-lowercase to "Git" when it refers
to the system as the whole or the concept it embodies, as opposed to
the command the end users would type.

* ta/doc-no-small-caps:
Documentation: StGit is the right spelling, not StGIT
Documentation: describe the "repository" in repository-layout
Documentation: add a description for 'gitfile' to glossary
Documentation: do not use undefined terms git-dir and git-file
Documentation: the name of the system is 'Git', not 'git'
Documentation: avoid poor-man's small caps GIT

Merge branch 'jc/fake-ancestor-with-non-blobs'Junio C Hamano Wed, 6 Feb 2013 00:13:11 +0000 (16:13 -0800)

Merge branch 'jc/fake-ancestor-with-non-blobs'

Rebasing the history of superproject with change in the submodule
was broken since v1.7.12.

* jc/fake-ancestor-with-non-blobs:
apply: diagnose incomplete submodule object name better
apply: simplify build_fake_ancestor()
git-am: record full index line in the patch used while rebasing

Merge branch 'sb/gpg-plug-fd-leak'Junio C Hamano Wed, 6 Feb 2013 00:12:43 +0000 (16:12 -0800)

Merge branch 'sb/gpg-plug-fd-leak'

We forgot to close the file descriptor reading from "gpg" output,
killing "git log --show-signature" on a long history.

* sb/gpg-plug-fd-leak:
gpg: close stderr once finished with it in verify_signed_buffer()

Merge branch 'ft/transport-report-segv'Junio C Hamano Wed, 6 Feb 2013 00:12:32 +0000 (16:12 -0800)

Merge branch 'ft/transport-report-segv'

A failure to push due to non-ff while on an unborn branch
dereferenced a NULL pointer when showing an error message.

* ft/transport-report-segv:
push: fix segfault when HEAD points nowhere

Update draft release notes to 1.8.2Junio C Hamano Mon, 4 Feb 2013 18:44:26 +0000 (10:44 -0800)

Update draft release notes to 1.8.2

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

Merge branch 'maint'Junio C Hamano Mon, 4 Feb 2013 18:26:11 +0000 (10:26 -0800)

Merge branch 'maint'

* maint:
Start preparing for 1.8.1.3

Merge branch 'jk/remote-helpers-in-python-3'Junio C Hamano Mon, 4 Feb 2013 18:25:34 +0000 (10:25 -0800)

Merge branch 'jk/remote-helpers-in-python-3'

Prepare remote-helper test written in Python to be run with Python3.

* jk/remote-helpers-in-python-3:
git_remote_helpers: remove GIT-PYTHON-VERSION upon "clean"
git-remote-testpy: fix path hashing on Python 3
git-remote-testpy: call print as a function
git-remote-testpy: don't do unbuffered text I/O
git-remote-testpy: hash bytes explicitly
svn-fe: allow svnrdump_sim.py to run with Python 3
git_remote_helpers: use 2to3 if building with Python 3
git_remote_helpers: force rebuild if python version changes
git_remote_helpers: fix input when running under Python 3
git_remote_helpers: allow building with Python 3

Merge branch 'pw/git-p4-on-cygwin'Junio C Hamano Mon, 4 Feb 2013 18:25:30 +0000 (10:25 -0800)

Merge branch 'pw/git-p4-on-cygwin'

Improve "git p4" on Cygwin.

* pw/git-p4-on-cygwin: (21 commits)
git p4: introduce gitConfigBool
git p4: avoid shell when calling git config
git p4: avoid shell when invoking git config --get-all
git p4: avoid shell when invoking git rev-list
git p4: avoid shell when mapping users
git p4: disable read-only attribute before deleting
git p4 test: use test_chmod for cygwin
git p4: cygwin p4 client does not mark read-only
git p4 test: avoid wildcard * in windows
git p4 test: use LineEnd unix in windows tests too
git p4 test: newline handling
git p4: scrub crlf for utf16 files on windows
git p4: remove unreachable windows \r\n conversion code
git p4 test: translate windows paths for cygwin
git p4 test: start p4d inside its db dir
git p4 test: use client_view in t9806
git p4 test: avoid loop in client_view
git p4 test: use client_view to build the initial client
git p4: generate better error message for bad depot path
git p4: remove unused imports
...

Merge branch 'jk/read-commit-buffer-data-after-free'Junio C Hamano Mon, 4 Feb 2013 18:25:18 +0000 (10:25 -0800)

Merge branch 'jk/read-commit-buffer-data-after-free'

Clarify the ownership rule for commit->buffer field, which some
callers incorrectly accessed without making sure it is populated.

* jk/read-commit-buffer-data-after-free:
logmsg_reencode: lazily load missing commit buffers
logmsg_reencode: never return NULL
commit: drop useless xstrdup of commit message

Merge branch 'mm/add-u-A-sans-pathspec'Junio C Hamano Mon, 4 Feb 2013 18:25:13 +0000 (10:25 -0800)

Merge branch 'mm/add-u-A-sans-pathspec'

Forbid "git add -u" and "git add -A" without pathspec run from a
subdirectory, to train people to type "." (or ":/") to make the
choice of default does not matter.

* mm/add-u-A-sans-pathspec:
add: warn when -u or -A is used without pathspec

Merge branch 'jc/push-reject-reasons'Junio C Hamano Mon, 4 Feb 2013 18:25:04 +0000 (10:25 -0800)

Merge branch 'jc/push-reject-reasons'

Improve error and advice messages given locally when "git push"
refuses when it cannot compute fast-forwardness by separating these
cases from the normal "not a fast-forward; merge first and push
again" case.

* jc/push-reject-reasons:
push: finishing touches to explain REJECT_ALREADY_EXISTS better
push: introduce REJECT_FETCH_FIRST and REJECT_NEEDS_FORCE
push: further simplify the logic to assign rejection reason
push: further clean up fields of "struct ref"

Merge branch 'jk/config-parsing-cleanup'Junio C Hamano Mon, 4 Feb 2013 18:24:50 +0000 (10:24 -0800)

Merge branch 'jk/config-parsing-cleanup'

Configuration parsing for tar.* configuration variables were
broken. Introduce a new config-keyname parser API to make the
callers much less error prone.

* jk/config-parsing-cleanup:
reflog: use parse_config_key in config callback
help: use parse_config_key for man config
submodule: simplify memory handling in config parsing
submodule: use parse_config_key when parsing config
userdiff: drop parse_driver function
convert some config callbacks to parse_config_key
archive-tar: use parse_config_key when parsing config
config: add helper function for parsing key names

Merge branch 'jc/custom-comment-char'Junio C Hamano Mon, 4 Feb 2013 18:23:49 +0000 (10:23 -0800)

Merge branch 'jc/custom-comment-char'

Allow a configuration variable core.commentchar to customize the
character used to comment out the hint lines in the edited text from
the default '#'.

* jc/custom-comment-char:
Allow custom "comment char"

Start preparing for 1.8.1.3Junio C Hamano Mon, 4 Feb 2013 18:21:10 +0000 (10:21 -0800)

Start preparing for 1.8.1.3

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

Merge branch 'bc/git-p4-for-python-2.4' into maintJunio C Hamano Mon, 4 Feb 2013 18:04:57 +0000 (10:04 -0800)

Merge branch 'bc/git-p4-for-python-2.4' into maint

* bc/git-p4-for-python-2.4:
INSTALL: git-p4 does not support Python 3
git-p4.py: support Python 2.4
git-p4.py: support Python 2.5

Merge branch 'nd/edit-branch-desc-while-detached' into... Junio C Hamano Mon, 4 Feb 2013 18:04:44 +0000 (10:04 -0800)

Merge branch 'nd/edit-branch-desc-while-detached' into maint

Attempt to "branch --edit-description" an existing branch, while
being on a detached HEAD, errored out.

* nd/edit-branch-desc-while-detached:
branch: no detached HEAD check when editing another branch's description

Merge branch 'jn/do-not-drop-username-when-reading... Junio C Hamano Mon, 4 Feb 2013 18:04:26 +0000 (10:04 -0800)

Merge branch 'jn/do-not-drop-username-when-reading-from-etc-mailname' into maint

We used to stuff "user@" and then append what we read from
/etc/mailname to come up with a default e-mail ident, but a bug lost
the "user@" part.

* jn/do-not-drop-username-when-reading-from-etc-mailname:
ident: do not drop username when reading from /etc/mailname

Merge branch 'jk/cvsimport-does-not-work-with-cvsps3... Junio C Hamano Mon, 4 Feb 2013 18:04:22 +0000 (10:04 -0800)

Merge branch 'jk/cvsimport-does-not-work-with-cvsps3' into maint

* jk/cvsimport-does-not-work-with-cvsps3:
git-cvsimport.txt: cvsps-2 is deprecated

Merge branch 'dl/am-hg-locale' into maintJunio C Hamano Mon, 4 Feb 2013 18:04:10 +0000 (10:04 -0800)

Merge branch 'dl/am-hg-locale' into maint

"git am" did not parse datestamp correctly from Hg generated patch,
when it is run in a locale outside C (or en)

* dl/am-hg-locale:
am: invoke perl's strftime in C locale

Merge branch 'jc/help' into maintJunio C Hamano Mon, 4 Feb 2013 18:04:06 +0000 (10:04 -0800)

Merge branch 'jc/help' into maint

* jc/help:
help: include <common-cmds.h> only in one file

Merge branch 'jc/merge-blobs' into maintJunio C Hamano Mon, 4 Feb 2013 18:03:41 +0000 (10:03 -0800)

Merge branch 'jc/merge-blobs' into maint

* jc/merge-blobs:
Makefile: Replace merge-file.h with merge-blobs.h in LIB_H
merge-tree: fix d/f conflicts
merge-tree: add comments to clarify what these functions are doing
merge-tree: lose unused "resolve_directories"
merge-tree: lose unused "flags" from merge_list
Which merge_file() function do you mean?

Merge branch 'jc/doc-maintainer' into maintJunio C Hamano Mon, 4 Feb 2013 18:03:35 +0000 (10:03 -0800)

Merge branch 'jc/doc-maintainer' into maint

* jc/doc-maintainer:
howto/maintain: document "### match next" convention in jch/pu branch
howto/maintain: mark titles for asciidoc
Documentation: update "howto maintain git"

Merge branch 'bc/fix-array-syntax-for-3.0-in-completion... Junio C Hamano Mon, 4 Feb 2013 18:03:13 +0000 (10:03 -0800)

Merge branch 'bc/fix-array-syntax-for-3.0-in-completion-bash' into maint

Command line completion code was inadvertently made incompatible with
older versions of bash by using a newer array notation.

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

Makefile: explicitly set target name for autogenerated... Jonathan Nieder Fri, 18 Nov 2011 23:23:24 +0000 (17:23 -0600)

Makefile: explicitly set target name for autogenerated dependencies

"gcc -MF depfile -MMD -MP -c -o path/to/file.o" produces a makefile
snippet named "depfile" describing what files are needed to build the
target given by "-o". When ccache versions before v3.0pre0~187 (Fix
handling of the -MD and -MDD options, 2009-11-01) run, they execute

gcc -MF depfile -MMD -MP -E

instead to get the final content for hashing. Notice that the "-c -o"
combination is replaced by "-E". The result is a target name without
a leading path.

Thus when building git with such versions of ccache with
COMPUTE_HEADER_DEPENDENCIES enabled, the generated makefile snippets
define dependencies for the wrong target:

$ make builtin/add.o
GIT_VERSION = 1.7.8.rc3
* new build flags or prefix
CC builtin/add.o
$ head -1 builtin/.depend/add.o.d
add.o: builtin/add.c cache.h git-compat-util.h compat/bswap.h strbuf.h \

After a change in a header file, object files in a subdirectory are
not automatically rebuilt by "make":

$ touch cache.h
$ make builtin/add.o
$

Luckily we can prevent trouble by explicitly supplying the name of the
target to ccache and gcc, using the -MQ option. Do so.

Reported-and-tested-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Reported-by: : 허종만 <jongman.heo@samsung.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Reviewed-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

mergetools: teach tortoisemerge to handle filenames... Sven Strickroth Fri, 1 Feb 2013 20:16:30 +0000 (21:16 +0100)

mergetools: teach tortoisemerge to handle filenames with SP correctly

TortoiseGitMerge, unlike TortoiseMerge, can be told to handle paths
with spaces in them by using -option "$FILE" (not -option:"$FILE",
which does not work for such paths) syntax.

This change was necessary because of MSYS path mangling [1], the ":"
after the "base" etc. arguments to TortoiseMerge caused the whole
argument instead of just the file name to be quoted in case of file
names with spaces. So TortoiseMerge was passed

"-base:new file.txt"

instead of

-base:"new file.txt"

(including the quotes). To work around this, TortoiseGitMerge does not
require the ":" after the arguments anymore which fixes handling file
names with spaces [2] (as written above).

[1] http://www.mingw.org/wiki/Posix_path_conversion
[2] https://github.com/msysgit/msysgit/issues/57

Signed-off-by: Sven Strickroth <email@cs-ware.de>
Reported-by: Sebastian Schuberth <sschuberth@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Rename {git- => git}remote-helpers.txtJohn Keeping Thu, 31 Jan 2013 21:59:50 +0000 (21:59 +0000)

Rename {git- => git}remote-helpers.txt

When looking up a topic via "git help <topic>", git-help prepends "git-"
to topics that are the names of commands (either builtin or found on the
path) and "git" (no hyphen) to any other topic name.

"git-remote-helpers" is not the name of a command, so "git help
remote-helpers" looks for "gitremote-helpers" and does not find it.

Fix this by renaming "git-remote-helpers.txt" to
"gitremote-helpers.txt".

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

run-command: be more informative about what failedStephen Boyd Thu, 31 Jan 2013 02:01:05 +0000 (18:01 -0800)

run-command: be more informative about what failed

While debugging an error with verify_signed_buffer() the error
messages from run-command weren't very useful:

error: cannot create pipe for gpg: Too many open files
error: could not run gpg.

because they didn't indicate *which* pipe couldn't be created.

Print which pipe failed to be created in the error message so we
can more easily debug similar problems in the future.

For example, the above error now prints:

error: cannot create standard error pipe for gpg: Too many open files
error: could not run gpg.

Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation: StGit is the right spelling, not StGITThomas Ackermann Fri, 1 Feb 2013 18:08:56 +0000 (19:08 +0100)

Documentation: StGit is the right spelling, not StGIT

They refer themselves as such at https://gna.org/projects/stgit/

Signed-off-by: Thomas Ackermann <th.acker@arcor.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation: describe the "repository" in repository... Junio C Hamano Fri, 1 Feb 2013 19:26:35 +0000 (11:26 -0800)

Documentation: describe the "repository" in repository-layout

Update the introductory part and concisely explain how gitfile is
handled, what it is used for and for what effect.

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

Documentation: add a description for 'gitfile' to glossaryThomas Ackermann Fri, 1 Feb 2013 18:11:24 +0000 (19:11 +0100)

Documentation: add a description for 'gitfile' to glossary

Signed-off-by: Thomas Ackermann <th.acker@arcor.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation: do not use undefined terms git-dir and... Thomas Ackermann Fri, 1 Feb 2013 18:07:56 +0000 (19:07 +0100)

Documentation: do not use undefined terms git-dir and git-file

We will add gitfile to the glossary in a separate commit.

Signed-off-by: Thomas Ackermann <th.acker@arcor.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation: the name of the system is 'Git', not... Thomas Ackermann Mon, 21 Jan 2013 19:17:53 +0000 (20:17 +0100)

Documentation: the name of the system is 'Git', not 'git'

Signed-off-by: Thomas Ackermann <th.acker@arcor.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation: avoid poor-man's small caps GITThomas Ackermann Mon, 21 Jan 2013 19:16:20 +0000 (20:16 +0100)

Documentation: avoid poor-man's small caps GIT

In the earlier days, we used to spell the name of the system as GIT,
to simulate as if it were typeset with capital G and IT in small
caps. Later we stopped doing so at around 1.6.5 days.

Let's stop doing so throughout the documentation. The name to refer
to the whole system (and the concept it embodies) is "Git"; the
command end-users type is "git". And document this in the coding
guideline.

Signed-off-by: Thomas Ackermann <th.acker@arcor.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Update draft release notes to 1.8.2Junio C Hamano Fri, 1 Feb 2013 20:52:08 +0000 (12:52 -0800)

Update draft release notes to 1.8.2

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

Merge branch 'nd/edit-branch-desc-while-detached'Junio C Hamano Fri, 1 Feb 2013 20:40:52 +0000 (12:40 -0800)

Merge branch 'nd/edit-branch-desc-while-detached'

Attempt to "branch --edit-description" an existing branch, while
being on a detached HEAD, errored out.

* nd/edit-branch-desc-while-detached:
branch: no detached HEAD check when editing another branch's description

Merge branch 'jk/gc-auto-after-fetch'Junio C Hamano Fri, 1 Feb 2013 20:40:16 +0000 (12:40 -0800)

Merge branch 'jk/gc-auto-after-fetch'

Help "fetch only" repositories that do not trigger "gc --auto"
often enough.

* jk/gc-auto-after-fetch:
fetch-pack: avoid repeatedly re-scanning pack directory
fetch: run gc --auto after fetching

Merge branch 'bc/git-p4-for-python-2.4'Junio C Hamano Fri, 1 Feb 2013 20:40:10 +0000 (12:40 -0800)

Merge branch 'bc/git-p4-for-python-2.4'

With small updates to remove dependency on newer features of
Python, keep git-p4 usable with older Python.

* bc/git-p4-for-python-2.4:
INSTALL: git-p4 does not support Python 3
git-p4.py: support Python 2.4
git-p4.py: support Python 2.5

Merge branch 'jn/do-not-drop-username-when-reading... Junio C Hamano Fri, 1 Feb 2013 20:40:05 +0000 (12:40 -0800)

Merge branch 'jn/do-not-drop-username-when-reading-from-etc-mailname'

We used to stuff "user@" and then append what we read from
/etc/mailname to come up with a default e-mail ident, but a bug
lost the "user@" part. This is to fix it.

* jn/do-not-drop-username-when-reading-from-etc-mailname:
ident: do not drop username when reading from /etc/mailname

Merge branch 'jk/cvsimport-does-not-work-with-cvsps3'Junio C Hamano Fri, 1 Feb 2013 20:39:59 +0000 (12:39 -0800)

Merge branch 'jk/cvsimport-does-not-work-with-cvsps3'

Warn people that other tools are more recommendable over
cvsimport+cvsps2 combo when doing a one-shot import, and cvsimport
will not work with cvsps3.

* jk/cvsimport-does-not-work-with-cvsps3:
git-cvsimport.txt: cvsps-2 is deprecated

Merge branch 'jc/do-not-let-random-file-interfere-with... Junio C Hamano Fri, 1 Feb 2013 20:39:46 +0000 (12:39 -0800)

Merge branch 'jc/do-not-let-random-file-interfere-with-completion-tests'

Scripts to test bash completion was inherently flaky as it was
affected by whatever random things the user may have on $PATH.

* jc/do-not-let-random-file-interfere-with-completion-tests:
t9902: protect test from stray build artifacts

Merge branch 'as/test-cleanup'Junio C Hamano Fri, 1 Feb 2013 20:39:42 +0000 (12:39 -0800)

Merge branch 'as/test-cleanup'

* as/test-cleanup:
t7102 (reset): don't hardcode SHA-1 in expected outputs

Merge branch 'jc/no-git-config-in-clone'Junio C Hamano Fri, 1 Feb 2013 20:39:36 +0000 (12:39 -0800)

Merge branch 'jc/no-git-config-in-clone'

We stopped paying attention to $GIT_CONFIG environment that points
at a single configuration file from any command other than "git config"
quite a while ago, but "git clone" internally set, exported, and
then unexported the variable during its operation unnecessarily.

* jc/no-git-config-in-clone:
clone: do not export and unexport GIT_CONFIG

Merge branch 'nd/fetch-depth-is-broken'Junio C Hamano Fri, 1 Feb 2013 20:39:24 +0000 (12:39 -0800)

Merge branch 'nd/fetch-depth-is-broken'

"git fetch --depth" was broken in at least three ways. The
resulting history was deeper than specified by one commit, it was
unclear how to wipe the shallowness of the repository with the
command, and documentation was misleading.

* nd/fetch-depth-is-broken:
fetch: elaborate --depth action
upload-pack: fix off-by-one depth calculation in shallow clone
fetch: add --unshallow for turning shallow repo into complete one

Documentation/Makefile: clean up MAN*_TXT listsJeff King Fri, 1 Feb 2013 19:41:14 +0000 (14:41 -0500)

Documentation/Makefile: clean up MAN*_TXT lists

We keep a list of the various files that end up as man1,
man5, etc. Let's break these single-line lists into sorted
multi-line lists, which makes diffs that touch them much
easier to read.

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

apply: diagnose incomplete submodule object name betterJunio C Hamano Fri, 1 Feb 2013 03:33:27 +0000 (19:33 -0800)

apply: diagnose incomplete submodule object name better

"git am -3" uses this function to build a tree that records how the
preimage the patch was created from would have looked like. An
abbreviated object name on the index line is ordinarily sufficient
for us to figure out the object name the preimage tree would have
contained, but a change to a submodule by definition shows an object
name of a submodule commit which our repository should not have, and
get_sha1_blob() is not an appropriate way to read it (or get_sha1()
for that matter).

Use get_sha1_hex() and complain if we do not find a full object name
there.

We could read from the payload part of the patch to learn the full
object name of the commit, but the primary user "git rebase" has
been fixed to give us a full object name, so this should suffice
for now.

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

apply: simplify build_fake_ancestor()Junio C Hamano Fri, 1 Feb 2013 03:19:44 +0000 (19:19 -0800)

apply: simplify build_fake_ancestor()

The local variable sha1_ptr in the build_fake_ancestor() function
used to either point at the null_sha1[] (if the ancestor did not
have the path) or at sha1[] (if we read the object name into the
local array), but 7a98869 (apply: get rid of --index-info in favor
of --build-fake-ancestor, 2007-09-17) made the "missing in the
ancestor" case unnecessary, hence sha1_ptr, when used, always points
at the local array.

Get rid of the unneeded variable, and restructure the if/else
cascade a bit to make it easier to read. There should be no
behaviour change.

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

git-am: record full index line in the patch used while... Junio C Hamano Fri, 1 Feb 2013 03:26:21 +0000 (19:26 -0800)

git-am: record full index line in the patch used while rebasing

Earlier, a230949 (am --rebasing: get patch body from commit, not
from mailbox, 2012-06-26) learned to regenerate patch body from the
commit object while rebasing, instead of reading from the rebase-am
front-end. While doing so, it used "git diff-tree" but without
giving it the "--full-index" option.

This does not matter for in-repository objects; during rebasing, any
abbreviated object name should uniquely identify them.

But we may be rebasing a commit that contains a change to a gitlink,
in which case we usually should not have the object (it names a
commit in the submodule). A full object name is necessary to later
reconstruct a fake ancestor index for them.

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

branch: let branch filters imply --listJeff King Thu, 31 Jan 2013 06:46:11 +0000 (01:46 -0500)

branch: let branch filters imply --list

Currently, a branch filter like `--contains`, `--merged`, or
`--no-merged` is ignored when we are not in listing mode.
For example:

git branch --contains=foo bar

will create the branch "bar" from the current HEAD, ignoring
the `--contains` argument entirely. This is not very
helpful. There are two reasonable behaviors for git here:

1. Flag an error; the arguments do not make sense.

2. Implicitly go into `--list` mode

This patch chooses the latter, as it is more convenient, and
there should not be any ambiguity with attempting to create
a branch; using `--contains` and not wanting to list is
nonsensical.

That leaves the case where an explicit modification option
like `-d` is given. We already catch the case where
`--list` is given alongside `-d` and flag an error. With
this patch, we will also catch the use of `--contains` and
other filter options alongside `-d`.

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

docs: clarify git-branch --list behaviorJeff King Thu, 31 Jan 2013 06:45:46 +0000 (01:45 -0500)

docs: clarify git-branch --list behavior

It was not clear from the "description" section of git-branch(1)
that using a <pattern> meant that you _had_ to use the --list
option. Let's clarify that, and while we're at it, reword some
clunky and ambiguous sentences.

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

gpg: close stderr once finished with it in verify_signe... Stephen Boyd Thu, 31 Jan 2013 18:18:40 +0000 (10:18 -0800)

gpg: close stderr once finished with it in verify_signed_buffer()

Failing to close the stderr pipe in verify_signed_buffer() causes
git to run out of file descriptors if there are many calls to
verify_signed_buffer(). An easy way to trigger this is to run

git log --show-signature --merges | grep "key"

on the linux kernel git repo. Eventually it will fail with

error: cannot create pipe for gpg: Too many open files
error: could not run gpg.

Close the stderr pipe so that this can't happen.

Suggested-by: Jeff King <peff@peff.net>
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

gpg: allow translation of more error messagesStephen Boyd Thu, 31 Jan 2013 02:01:06 +0000 (18:01 -0800)

gpg: allow translation of more error messages

Mark these strings for translation so that error messages are
printed in the user's language of choice.

Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

push: fix segfault when HEAD points nowhereFraser Tweedale Thu, 31 Jan 2013 12:22:51 +0000 (22:22 +1000)

push: fix segfault when HEAD points nowhere

After a push of a branch other than the current branch fails in
a no-ff error and if you are still on an unborn branch, the code
recently added to report the failure dereferenced a null pointer
while checking the name of the current branch.

Signed-off-by: Fraser Tweedale <frase@frase.id.au>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge git://ozlabs.org/~paulus/gitkJunio C Hamano Wed, 30 Jan 2013 21:52:44 +0000 (13:52 -0800)

Merge git://ozlabs.org/~paulus/gitk

* git://ozlabs.org/~paulus/gitk:
gitk: Ignore gitk-wish buildproduct

CodingGuidelines: add Python coding guidelinesJohn Keeping Wed, 30 Jan 2013 20:47:32 +0000 (20:47 +0000)

CodingGuidelines: add Python coding guidelines

These are kept short by simply deferring to PEP-8. Most of the Python
code in Git is already very close to this style (some things in contrib/
are not).

Rationale for version suggestions:

- Amongst the noise in [1], there isn't any disagreement about using
2.6 as a base (see also [2]), although Brandon Casey recently added
support for 2.4 and 2.5 to git-p4 [3].

- Restricting ourselves to 2.6+ makes aiming for Python 3 compatibility
significantly easier [4].

- Advocating Python 3 support in all scripts is currently unrealistic
because:

- 'p4 -G' provides output in a format that is very hard to use with
Python 3 (and its documentation claims Python 3 is unsupported).

- Mercurial does not support Python 3.

- Bazaar does not support Python 3.

- But we should try to make new scripts compatible with Python 3
because all new Python development is happening on version 3 and the
Python community will eventually stop supporting Python 2 [5].

- Python 3.1 is required to support the 'surrogateescape' error handler
for encoding/decodng filenames to/from Unicode strings and Python 3.0
is not longer supported.

[1] http://thread.gmane.org/gmane.comp.version-control.git/210329
[2] http://article.gmane.org/gmane.comp.version-control.git/210429
[3] http://thread.gmane.org/gmane.comp.version-control.git/214579
[4] http://docs.python.org/3.3/howto/pyporting.html#try-to-support-python-2-6-and-newer-only
[5] http://www.python.org/dev/peps/pep-0404/

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

git_remote_helpers: remove GIT-PYTHON-VERSION upon... Junio C Hamano Wed, 30 Jan 2013 19:30:10 +0000 (11:30 -0800)

git_remote_helpers: remove GIT-PYTHON-VERSION upon "clean"

fadf8c7 (git_remote_helpers: force rebuild if python version changes, 2013-01-20)
started using a marker file to keep track of the version of Python interpreter
used for the last build, but forgot to remove it when asked to "make clean".

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

INSTALL: git-p4 does not support Python 3Junio C Hamano Wed, 30 Jan 2013 19:17:59 +0000 (11:17 -0800)

INSTALL: git-p4 does not support Python 3

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

branch: mark more strings for translationNguyễn Thái Ngọc Duy Mon, 28 Jan 2013 01:18:16 +0000 (08:18 +0700)

branch: mark more strings for translation

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

Merge branch 'nd/edit-branch-desc-while-detached' into... Junio C Hamano Wed, 30 Jan 2013 17:01:41 +0000 (09:01 -0800)

Merge branch 'nd/edit-branch-desc-while-detached' into HEAD

* nd/edit-branch-desc-while-detached:
branch: no detached HEAD check when editing another branch's description

branch: give a more helpful message on redundant argumentsNguyễn Thái Ngọc Duy Mon, 28 Jan 2013 01:18:15 +0000 (08:18 +0700)

branch: give a more helpful message on redundant arguments

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

branch: reject -D/-d without branch nameNguyễn Thái Ngọc Duy Mon, 28 Jan 2013 01:18:14 +0000 (08:18 +0700)

branch: reject -D/-d without branch name

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

branch: no detached HEAD check when editing another... Nguyễn Thái Ngọc Duy Mon, 28 Jan 2013 01:18:13 +0000 (08:18 +0700)

branch: no detached HEAD check when editing another branch's description

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

Merge branch 'rr/minimal-stat'Junio C Hamano Wed, 30 Jan 2013 16:53:02 +0000 (08:53 -0800)

Merge branch 'rr/minimal-stat'

Some reimplementations of Git does not write all the stat info back
to the index due to their implementation limitations (e.g. jgit
running on Java). A configuration option can tell Git to ignore
changes to most of the stat fields and only pay attention to mtime
and size, which these implementations can reliably update. This
avoids excessive revalidation of contents.

* rr/minimal-stat:
Enable minimal stat checking

Merge branch 'nd/magic-pathspec-from-root'Junio C Hamano Wed, 30 Jan 2013 16:52:53 +0000 (08:52 -0800)

Merge branch 'nd/magic-pathspec-from-root'

When giving arguments without "--" disambiguation, object names
that come earlier on the command line must not be interpretable as
pathspecs and pathspecs that come later on the command line must
not be interpretable as object names. Tweak the disambiguation
rule so that ":/" (no other string before or after) is always
interpreted as a pathspec, to avoid having to say "git cmd -- :/".

* nd/magic-pathspec-from-root:
grep: avoid accepting ambiguous revision
Update :/abc ambiguity check

Merge branch 'maint'Junio C Hamano Wed, 30 Jan 2013 16:07:30 +0000 (08:07 -0800)

Merge branch 'maint'

* maint:
README: update stale and/or incorrect information

Merge branch 'tb/t0050-maint' into maintJunio C Hamano Wed, 30 Jan 2013 15:47:46 +0000 (07:47 -0800)

Merge branch 'tb/t0050-maint' into maint

Update tests that were expecting to fail due to a bug that was
fixed earlier.

* tb/t0050-maint:
t0050: Use TAB for indentation
t0050: honor CASE_INSENSITIVE_FS in add (with different case)
t0050: known breakage vanished in merge (case change)

gitk: Ignore gitk-wish buildproductChristian Couder Wed, 23 Jan 2013 20:00:35 +0000 (12:00 -0800)

gitk: Ignore gitk-wish buildproduct

gitk, when bound into the git.git project tree, used to live at the
root level, but in 62ba514 (Move gitk to its own subdirectory,
2007-11-17) it was moved to a subdirectory. The code used to track
changes to TCLTK_PATH (which should cause gitk to be rebuilt to
point at the new interpreter) was left in the main Makefile instead
of being moved to the new Makefile that was created for the gitk
project.

Also add .gitignore file to list build artifacts for the gitk
project.

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>

Merge branch 'nd/fix-directory-attrs-off-by-one' into... Junio C Hamano Tue, 29 Jan 2013 19:18:54 +0000 (11:18 -0800)

Merge branch 'nd/fix-directory-attrs-off-by-one' into maint

The attribute mechanism didn't allow limiting attributes to be
applied to only a single directory itself with "path/" like the
exclude mechanism does. The initial implementation of this that was
merged to 'maint' and 1.8.1.1 had severe performance degradations.

* nd/fix-directory-attrs-off-by-one:
attr: avoid calling find_basename() twice per path
attr: fix off-by-one directory component length calculation

Merge branch 'ph/rebase-preserve-all-merges' into maintJunio C Hamano Tue, 29 Jan 2013 19:18:31 +0000 (11:18 -0800)

Merge branch 'ph/rebase-preserve-all-merges' into maint

"git rebase --preserve-merges" lost empty merges in recent versions
of Git.

* ph/rebase-preserve-all-merges:
rebase --preserve-merges: keep all merge commits including empty ones

README: update stale and/or incorrect informationJunio C Hamano Tue, 29 Jan 2013 19:10:58 +0000 (11:10 -0800)

README: update stale and/or incorrect information

Ramkumar Ramachandra noticed that the old address for the marc
archive no longer works. Update it to its marc.info address,
and also refer to the gmane site.

Remove the reference to "note from the maintainer", which is not
usually followed by any useful discussion on status, direction nor
tasks.

Also replace the reference to "What's in git.git" with "What's
cooking".

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

mergetools: simplify how we handle "vim" and "defaults"David Aguilar Sun, 27 Jan 2013 00:46:12 +0000 (16:46 -0800)

mergetools: simplify how we handle "vim" and "defaults"

Remove the exceptions for "vim" and "defaults" in the mergetool library
so that every filename in mergetools/ matches 1:1 with the name of a
valid built-in tool.

Define the trivial fallback definition of shell functions in-line in
git-mergetool-lib script, instead of dot-sourcing them from another
file. The result is much easier to follow.

[jc: squashed in an update from John Keeping as well]

Signed-off-by: David Aguilar <davvid@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

gitweb: refer to picon/gravatar images over the same... Andrej E Baranov Mon, 28 Jan 2013 23:41:32 +0000 (00:41 +0100)

gitweb: refer to picon/gravatar images over the same scheme

With the current code, the images from picon and gravatar are
requested over http://, and browsers give mixed contents warning
when gitweb is served over https://.

Just drop the scheme: part from the URL, so that these external
sites are accessed over https:// in such a case.

Signed-off-by: Andrej E Baranov <admin@andrej-andb.ru>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Update draft release notes to 1.8.2Junio C Hamano Mon, 28 Jan 2013 19:19:59 +0000 (11:19 -0800)

Update draft release notes to 1.8.2

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

Sync with 1.8.1.2Junio C Hamano Mon, 28 Jan 2013 19:18:32 +0000 (11:18 -0800)

Sync with 1.8.1.2

Git 1.8.1.2 v1.8.1.2Junio C Hamano Mon, 28 Jan 2013 19:17:54 +0000 (11:17 -0800)

Git 1.8.1.2

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

Merge branch 'ss/help-htmlpath-config-doc' into maintJunio C Hamano Mon, 28 Jan 2013 19:13:31 +0000 (11:13 -0800)

Merge branch 'ss/help-htmlpath-config-doc' into maint

* ss/help-htmlpath-config-doc:
config.txt: Document help.htmlpath config parameter

Merge branch 'nd/attr-debug-fix' into maintJunio C Hamano Mon, 28 Jan 2013 19:13:07 +0000 (11:13 -0800)

Merge branch 'nd/attr-debug-fix' into maint

* nd/attr-debug-fix:
attr: make it build with DEBUG_ATTR again

Merge branch 'ds/completion-silence-in-tree-path-probe... Junio C Hamano Mon, 28 Jan 2013 19:12:47 +0000 (11:12 -0800)

Merge branch 'ds/completion-silence-in-tree-path-probe' into maint

* ds/completion-silence-in-tree-path-probe:
git-completion.bash: silence "not a valid object" errors

Merge branch 'jn/maint-trim-vim-contrib' into maintJunio C Hamano Mon, 28 Jan 2013 19:12:36 +0000 (11:12 -0800)

Merge branch 'jn/maint-trim-vim-contrib' into maint

* jn/maint-trim-vim-contrib:
contrib/vim: simplify instructions for old vim support

Merge branch 'pe/doc-email-env-is-trumped-by-config... Junio C Hamano Mon, 28 Jan 2013 19:12:31 +0000 (11:12 -0800)

Merge branch 'pe/doc-email-env-is-trumped-by-config' into maint

* pe/doc-email-env-is-trumped-by-config:
git-commit-tree(1): correct description of defaults

Merge branch 'mk/complete-tcsh' into maintJunio C Hamano Mon, 28 Jan 2013 19:11:51 +0000 (11:11 -0800)

Merge branch 'mk/complete-tcsh' into maint

Command line completion for "tcsh" emitted an unwanted space
after completing a single directory name.

* mk/complete-tcsh:
Prevent space after directories in tcsh completion

Merge branch 'ap/status-ignored-in-ignored-directory... Junio C Hamano Mon, 28 Jan 2013 19:10:25 +0000 (11:10 -0800)

Merge branch 'ap/status-ignored-in-ignored-directory' into maint

Output from "git status --ignored" did not work well when used with
"--untracked".

* ap/status-ignored-in-ignored-directory:
status: always report ignored tracked directories
git-status: Test --ignored behavior
dir.c: Make git-status --ignored more consistent

Merge branch 'er/stop-recommending-parsecvs' into maintJunio C Hamano Mon, 28 Jan 2013 19:09:37 +0000 (11:09 -0800)

Merge branch 'er/stop-recommending-parsecvs' into maint

* er/stop-recommending-parsecvs:
Remove the suggestion to use parsecvs, which is currently broken.

Merge branch 'mh/ceiling' into maintJunio C Hamano Mon, 28 Jan 2013 19:07:18 +0000 (11:07 -0800)

Merge branch 'mh/ceiling' into maint

An element on GIT_CEILING_DIRECTORIES list that does not name the
real path to a directory (i.e. a symbolic link) could have caused
the GIT_DIR discovery logic to escape the ceiling.

* mh/ceiling:
string_list_longest_prefix(): remove function
setup_git_directory_gently_1(): resolve symlinks in ceiling paths
longest_ancestor_length(): require prefix list entries to be normalized
longest_ancestor_length(): take a string_list argument for prefixes
longest_ancestor_length(): use string_list_split()
Introduce new function real_path_if_valid()
real_path_internal(): add comment explaining use of cwd
Introduce new static function real_path_internal()

Merge branch 'tb/t0050-maint'Junio C Hamano Mon, 28 Jan 2013 18:59:28 +0000 (10:59 -0800)

Merge branch 'tb/t0050-maint'

Update tests that were expecting to fail due to a bug that was
fixed earlier.

* tb/t0050-maint:
t0050: Use TAB for indentation
t0050: honor CASE_INSENSITIVE_FS in add (with different case)
t0050: known breakage vanished in merge (case change)

Merge branch 'dl/am-hg-locale'Junio C Hamano Mon, 28 Jan 2013 18:59:24 +0000 (10:59 -0800)

Merge branch 'dl/am-hg-locale'

Datestamp recorded in "Hg" format patch was reformatted incorrectly
to an e-mail looking date using locale dependant strftime, causing
patch application to fail.

* dl/am-hg-locale:
am: invoke perl's strftime in C locale

Merge branch 'jc/help'Junio C Hamano Mon, 28 Jan 2013 18:59:15 +0000 (10:59 -0800)

Merge branch 'jc/help'

A header file that has the definition of a static array was
included in two places, wasting the space.

* jc/help:
help: include <common-cmds.h> only in one file

Merge branch 'bc/fix-array-syntax-for-3.0-in-completion... Junio C Hamano Mon, 28 Jan 2013 18:59:07 +0000 (10:59 -0800)

Merge branch 'bc/fix-array-syntax-for-3.0-in-completion-bash'

Fix use of an array notation that older versions of bash do not
understand.

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

add: warn when -u or -A is used without pathspecMatthieu Moy Mon, 28 Jan 2013 09:16:33 +0000 (10:16 +0100)

add: warn when -u or -A is used without pathspec

Most Git commands that can be used with or without pathspec operate
tree-wide by default, the pathspec being used to restrict their
scope. A few exceptions are: 'git grep', 'git clean', 'git add -u'
and 'git add -A'. When run in a subdirectory without pathspec, they
operate only on paths in the current directory.

The inconsistency of 'git add -u' and 'git add -A' is particularly
problematic since other 'git add' subcommands (namely 'git add -p'
and 'git add -e') are tree-wide by default. It also means that "git
add -u && git commit" will record a state that is different from
what is recorded with "git commit -a".

Flipping the default now is unacceptable, so let's start training
users to type 'git add -u|-A :/' or 'git add -u|-A .' explicitly, to
prepare for the next steps:

* forbid 'git add -u|-A' without pathspec (like 'git add' without
option)

* much later, maybe, re-allow 'git add -u|-A' without pathspec, that
will add all tracked and modified files, or all files, tree-wide.

A nice side effect of this patch is that it makes the :/ magic
pathspec easier to discover for users.

When the command is called from the root of the tree, there is no
ambiguity and no need to change the behavior, hence no need to warn.

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

git-remote-testpy: fix path hashing on Python 3John Keeping Sun, 27 Jan 2013 14:50:56 +0000 (14:50 +0000)

git-remote-testpy: fix path hashing on Python 3

When this change was originally made (0846b0c - git-remote-testpy:
hash bytes explicitly , I didn't realise that the "hex" encoding we
chose is a "bytes to bytes" encoding so it just fails with an error
on Python 3 in the same way as the original code.

It is not possible to provide a single code path that works on
Python 2 and Python 3 since Python 2.x will attempt to decode the
string before encoding it, which fails for strings that are not
valid in the default encoding. Python 3.1 introduced the
"surrogateescape" error handler which handles this correctly and
permits a bytes -> unicode -> bytes round-trip to be lossless. As
the original came from reading the filesystem path, we convert them
back into the original bytes encoded in sys.getfilesystemencoding().

At this point Python 3.0 is unsupported so we don't go out of our
way to try to support it.

Helped-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: John Keeping <john@keeping.me.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>