gitweb.git
Merge branch 'pf/editor-ignore-sigint' into maintJunio C Hamano Mon, 14 Jan 2013 15:32:25 +0000 (07:32 -0800)

Merge branch 'pf/editor-ignore-sigint' into maint

The behaviour visible to the end users was confusing, when they
attempt to kill a process spawned in the editor that was in turn
launched by Git with SIGINT (or SIGQUIT), as Git would catch that
signal and die. We ignore these signals now.

* pf/editor-ignore-sigint:
fix compilation with NO_PTHREADS
launch_editor: propagate signals from editor to git
run-command: do not warn about child death from terminal
launch_editor: ignore terminal signals while editor has control
launch_editor: refactor to use start/finish_command
run-command: drop silent_exec_failure arg from wait_or_whine

Merge branch 'mk/maint-graph-infinity-loop' into maintJunio C Hamano Mon, 14 Jan 2013 15:32:18 +0000 (07:32 -0800)

Merge branch 'mk/maint-graph-infinity-loop' into maint

* mk/maint-graph-infinity-loop:
graph.c: infinite loop in git whatchanged --graph -m

Makefile: add description on PERL/PYTHON_PATHJunio C Hamano Mon, 14 Jan 2013 06:48:07 +0000 (22:48 -0800)

Makefile: add description on PERL/PYTHON_PATH

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

Update draft release notes to 1.8.2Junio C Hamano Sat, 12 Jan 2013 02:51:09 +0000 (18:51 -0800)

Update draft release notes to 1.8.2

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

Merge branch 'jk/maint-fast-import-doc-reorder'Junio C Hamano Sat, 12 Jan 2013 02:35:07 +0000 (18:35 -0800)

Merge branch 'jk/maint-fast-import-doc-reorder'

* jk/maint-fast-import-doc-reorder:
git-fast-import(1): reorganise options
git-fast-import(1): combine documentation of --[no-]relative-marks

Merge branch 'jk/shortlog-no-wrap-doc'Junio C Hamano Sat, 12 Jan 2013 02:35:01 +0000 (18:35 -0800)

Merge branch 'jk/shortlog-no-wrap-doc'

* jk/shortlog-no-wrap-doc:
git-shortlog(1): document behaviour of zero-width wrap

Merge branch 'rs/zip-with-uncompressed-size-in-the... Junio C Hamano Sat, 12 Jan 2013 02:34:55 +0000 (18:34 -0800)

Merge branch 'rs/zip-with-uncompressed-size-in-the-header'

Improve compatibility of our zip output to fill uncompressed size
in the header, which we can do without seeking back (even though it
should not be necessary).

* rs/zip-with-uncompressed-size-in-the-header:
archive-zip: write uncompressed size into header even with streaming

Merge branch 'rs/zip-tests'Junio C Hamano Sat, 12 Jan 2013 02:34:43 +0000 (18:34 -0800)

Merge branch 'rs/zip-tests'

Update zip tests to skip some that cannot be handled on platform
unzip.

* rs/zip-tests:
t5003: check if unzip supports symlinks
t5000, t5003: move ZIP tests into their own script
t0024, t5000: use test_lazy_prereq for UNZIP
t0024, t5000: clear variable UNZIP, use GIT_UNZIP instead

Merge branch 'jn/xml-depends-on-asciidoc-conf'Junio C Hamano Sat, 12 Jan 2013 02:34:38 +0000 (18:34 -0800)

Merge branch 'jn/xml-depends-on-asciidoc-conf'

* jn/xml-depends-on-asciidoc-conf:
docs: manpage XML depends on asciidoc.conf

Merge branch 'jk/unify-exit-code-by-receiving-signal'Junio C Hamano Sat, 12 Jan 2013 02:34:32 +0000 (18:34 -0800)

Merge branch 'jk/unify-exit-code-by-receiving-signal'

The internal logic had to deal with two representations of a death
of a child process by a signal.

* jk/unify-exit-code-by-receiving-signal:
run-command: encode signal death as a positive integer

Merge branch 'jc/merge-blobs'Junio C Hamano Sat, 12 Jan 2013 02:34:24 +0000 (18:34 -0800)

Merge branch 'jc/merge-blobs'

Update the disused merge-tree proof-of-concept code.

* jc/merge-blobs:
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/format-patch-reroll'Junio C Hamano Sat, 12 Jan 2013 02:34:10 +0000 (18:34 -0800)

Merge branch 'jc/format-patch-reroll'

Teach "format-patch" to prefix v4- to its output files for the
fourth iteration of a patch series, to make it easier for the
submitter to keep separate copies for iterations.

* jc/format-patch-reroll:
format-patch: give --reroll-count a short synonym -v
format-patch: document and test --reroll-count
format-patch: add --reroll-count=$N option
get_patch_filename(): split into two functions
get_patch_filename(): drop "just-numbers" hack
get_patch_filename(): simplify function signature
builtin/log.c: stop using global patch_suffix
builtin/log.c: drop redundant "numbered_files" parameter from make_cover_letter()
builtin/log.c: drop unused "numbered" parameter from make_cover_letter()

Merge branch 'maint'Junio C Hamano Sat, 12 Jan 2013 02:33:27 +0000 (18:33 -0800)

Merge branch 'maint'

Merge branch 'as/api-allocation-doc' into maintJunio C Hamano Sat, 12 Jan 2013 00:51:01 +0000 (16:51 -0800)

Merge branch 'as/api-allocation-doc' into maint

* as/api-allocation-doc:
api-allocation-growing.txt: encourage better variable naming

Merge branch 'jk/enable-test-lint-by-default' into... Junio C Hamano Sat, 12 Jan 2013 00:49:37 +0000 (16:49 -0800)

Merge branch 'jk/enable-test-lint-by-default' into maint

We have two simple and quick tests to catch common mistakes when
writing test scripts, but we did not run them by default when
running tests.

* jk/enable-test-lint-by-default:
tests: turn on test-lint by default

Merge branch 'ap/merge-stop-at-prepare-commit-msg-failu... Junio C Hamano Sat, 12 Jan 2013 00:49:01 +0000 (16:49 -0800)

Merge branch 'ap/merge-stop-at-prepare-commit-msg-failure' into maint

"git merge" started calling prepare-commit-msg hook like "git
commit" does some time ago, but forgot to pay attention to the exit
status of the hook.

* ap/merge-stop-at-prepare-commit-msg-failure:
merge: Honor prepare-commit-msg return code

Merge branch 'jc/submittingpatches' into maintJunio C Hamano Sat, 12 Jan 2013 00:48:54 +0000 (16:48 -0800)

Merge branch 'jc/submittingpatches' into maint

* jc/submittingpatches:
SubmittingPatches: give list and maintainer addresses
SubmittingPatches: remove overlong checklist
SubmittingPatches: mention subsystems with dedicated repositories
SubmittingPatches: who am I and who cares?

Merge branch 'os/gitweb-highlight-uncaptured' into... Junio C Hamano Sat, 12 Jan 2013 00:48:30 +0000 (16:48 -0800)

Merge branch 'os/gitweb-highlight-uncaptured' into maint

"gitweb", when sorting by age to show repositories with new
activities first, used to sort repositories with absolutely nothing
in it early, which was not very useful.

* os/gitweb-highlight-uncaptured:
gitweb: fix error in sanitize when highlight is enabled

Merge branch 'jn/less-reconfigure' into maintJunio C Hamano Sat, 12 Jan 2013 00:48:03 +0000 (16:48 -0800)

Merge branch 'jn/less-reconfigure' into maint

When autoconf is used, any build on a different commit always ran
"config.status --recheck" even when unnecessary.

* jn/less-reconfigure:
build: do not automatically reconfigure unless configure.ac changed

Merge branch 'kb/maint-bundle-doc' into maintJunio C Hamano Sat, 12 Jan 2013 00:47:56 +0000 (16:47 -0800)

Merge branch 'kb/maint-bundle-doc' into maint

* kb/maint-bundle-doc:
Documentation: full-ness of a bundle is significant for cloning
Documentation: correct example restore from bundle

Merge branch 'as/test-name-alias-uniquely' into maintJunio C Hamano Sat, 12 Jan 2013 00:47:34 +0000 (16:47 -0800)

Merge branch 'as/test-name-alias-uniquely' into maint

* as/test-name-alias-uniquely:
Use longer alias names in subdirectory tests

Merge branch 'jn/warn-on-inaccessible-loosen' into... Junio C Hamano Sat, 12 Jan 2013 00:47:07 +0000 (16:47 -0800)

Merge branch 'jn/warn-on-inaccessible-loosen' into maint

When attempting to read the XDG-style $HOME/.config/git/config and
finding that $HOME/.config/git is a file, we gave a wrong error
message, instead of treating the case as "a custom config file does
not exist there" and moving on.

* jn/warn-on-inaccessible-loosen:
config: exit on error accessing any config file
doc: advertise GIT_CONFIG_NOSYSTEM
config: treat user and xdg config permission problems as errors
config, gitignore: failure to access with ENOTDIR is ok

Merge branch 'ja/directory-attrs' into maintJunio C Hamano Sat, 12 Jan 2013 00:46:46 +0000 (16:46 -0800)

Merge branch 'ja/directory-attrs' 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.

* ja/directory-attrs:
Add directory pattern matching to attributes

Merge branch 'jc/fetch-ignore-symref' into maintJunio C Hamano Sat, 12 Jan 2013 00:45:44 +0000 (16:45 -0800)

Merge branch 'jc/fetch-ignore-symref' into maint

"git fetch --mirror" and fetch that uses other forms of refspec with
wildcard used to attempt to update a symbolic ref that match the
wildcard on the receiving end, which made little sense (the real ref
that is pointed at by the symbolic ref would be updated anyway).

Symbolic refs no longer are affected by such a fetch.

* jc/fetch-ignore-symref:
fetch: ignore wildcarded refspecs that update local symbolic refs

Merge branch 'ss/svn-prompt' into maintJunio C Hamano Sat, 12 Jan 2013 00:45:06 +0000 (16:45 -0800)

Merge branch 'ss/svn-prompt' into maint

The way "git svn" asked for password using SSH_ASKPASS and
GIT_ASKPASS was not in line with the rest of the system.

* ss/svn-prompt:
git-svn, perl/Git.pm: extend and use Git->prompt method for querying users
perl/Git.pm: Honor SSH_ASKPASS as fallback if GIT_ASKPASS is not set
git-svn, perl/Git.pm: add central method for prompting passwords

clone: do not export and unexport GIT_CONFIGJunio C Hamano Fri, 11 Jan 2013 22:43:42 +0000 (14:43 -0800)

clone: do not export and unexport GIT_CONFIG

Earlier, dc87183 (use GIT_CONFIG only in "git config", not other
programs, 2008-06-30) made sure that the environment variable is
never used outside "git config", but "git clone", after creating a
directory for the new repository and until the init_db() function
populates its .git/ directory, exported the variable for no good
reason. No hook will run from init_db() and more importantly no
hook can run until init_db() finishes creation of the new
repository, so it cannot be used by any invocation of "git config"
by definition.

Stop doing the useless export/unexport.

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

fetch: elaborate --depth actionNguyễn Thái Ngọc Duy Fri, 11 Jan 2013 09:05:48 +0000 (16:05 +0700)

fetch: elaborate --depth action

--depth is explained as deepen, but the way it's applied, it can
shorten the history as well. Keen users may have noticed the
implication by the phrase "the specified number of commits from the
tip of each remote branch". Put "shorten" in the description to make
it clearer.

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

upload-pack: fix off-by-one depth calculation in shallo... Nguyễn Thái Ngọc Duy Fri, 11 Jan 2013 09:05:47 +0000 (16:05 +0700)

upload-pack: fix off-by-one depth calculation in shallow clone

get_shallow_commits() is used to determine the cut points at a given
depth (i.e. the number of commits in a chain that the user likes to
get). However we count current depth up to the commit "commit" but we
do the cutting at its parents (i.e. current depth + 1). This makes
upload-pack always return one commit more than requested. This patch
fixes it.

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

fetch: add --unshallow for turning shallow repo into... Nguyễn Thái Ngọc Duy Fri, 11 Jan 2013 09:05:46 +0000 (16:05 +0700)

fetch: add --unshallow for turning shallow repo into complete one

The user can do --depth=2147483647 (*) for restoring complete repo
now. But it's hard to remember. Any other numbers larger than the
longest commit chain in the repository would also do, but some
guessing may be involved. Make easy-to-remember --unshallow an alias
for --depth=2147483647.

Make upload-pack recognize this special number as infinite depth. The
effect is essentially the same as before, except that upload-pack is
more efficient because it does not have to traverse to the bottom
anymore.

The chance of a user actually wanting exactly 2147483647 commits
depth, not infinite, on a repository with a history that long, is
probably too small to consider. The client can learn to add or
subtract one commit to avoid the special treatment when that actually
happens.

(*) This is the largest positive number a 32-bit signed integer can
contain. JGit and older C Git store depth as "int" so both are OK
with this number. Dulwich does not support shallow clone.

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

git-completion.bash: silence "not a valid object" errorsDylan Smith Fri, 11 Jan 2013 08:06:22 +0000 (03:06 -0500)

git-completion.bash: silence "not a valid object" errors

Trying to complete the command

git show master:./file

would cause a "Not a valid object name" error to be output on standard
error. Silence the error so it won't appear on the command line.

Signed-off-by: Dylan Smith <dylan.ah.smith@gmail.com>
Reviewed-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

clone: forbid --bare --separate-git-dir <dir>Nguyễn Thái Ngọc Duy Fri, 11 Jan 2013 03:09:59 +0000 (10:09 +0700)

clone: forbid --bare --separate-git-dir <dir>

The --separate-git-dir option was introduced to make it simple to put
the git directory somewhere outside the worktree, for example when
cloning a repository for use as a submodule.

It was not intended for use when creating a bare repository. In that
case there is no worktree and it is more natural to directly clone the
repository and create a .git file as separate steps:

git clone --bare /path/to/repo.git bar.git
printf 'gitdir: bar.git\n' >foo.git

Forbid the combination, making the command easier to explain.

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

contrib/vim: simplify instructions for old vim supportJonathan Nieder Thu, 10 Jan 2013 20:54:27 +0000 (12:54 -0800)

contrib/vim: simplify instructions for old vim support

Rely on the upstream filetype.vim instead of duplicating its rules in
git's instructions for syntax highlighting support on pre-7.2 vim
versions.

The result is a shorter contrib/vim/README. More importantly, it lets
us punt on maintenance of the autocmd rules.

So now when we fix the upstream gitsendemail rule in light of commit
eed6ca7, new git users stuck on old vim reading contrib/vim/README can
automagically get the fix without any further changes needed to git.

Once the world has moved on to vim 7.2+ completely, we can get rid of
these instructions, but for now if they are this simple it's
effortless to keep them.

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

t0008: avoid brace expansionRené Scharfe Thu, 10 Jan 2013 21:24:52 +0000 (22:24 +0100)

t0008: avoid brace expansion

Brace expansion is a shell feature that's not required by POSIX and not
supported by dash nor NetBSD's sh. Explicitly list all combinations
instead. Also avoid calling touch by creating the test files with a
redirection instead, as suggested by Junio.

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

Merge branch 'maint'Junio C Hamano Thu, 10 Jan 2013 22:38:00 +0000 (14:38 -0800)

Merge branch 'maint'

* maint:
Prepare for 1.8.1.1
Makefile: detect when PYTHON_PATH changes (cherry-picked)

Update draft release notes to 1.8.2Junio C Hamano Thu, 10 Jan 2013 22:36:23 +0000 (14:36 -0800)

Update draft release notes to 1.8.2

Prepare for 1.8.1.1Junio C Hamano Thu, 10 Jan 2013 22:17:13 +0000 (14:17 -0800)

Prepare for 1.8.1.1

Makefile: detect when PYTHON_PATH changesChristian Couder Tue, 18 Dec 2012 15:26:38 +0000 (16:26 +0100)

Makefile: detect when PYTHON_PATH changes

When make is run, the python scripts are created from *.py files that
are changed to use the python given by PYTHON_PATH. And PYTHON_PATH
is set by default to /usr/bin/python on Linux.

However, next time make is run with a different value in PYTHON_PATH,
we failed to regenerate these scripts.

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Acked-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'ta/remove-stale-translated-tut' into... Junio C Hamano Thu, 10 Jan 2013 22:11:18 +0000 (14:11 -0800)

Merge branch 'ta/remove-stale-translated-tut' into maint

* ta/remove-stale-translated-tut:
Remove Documentation/pt_BR/gittutorial.txt

Merge branch 'tb/test-t9810-no-sed-i' into maintJunio C Hamano Thu, 10 Jan 2013 22:10:40 +0000 (14:10 -0800)

Merge branch 'tb/test-t9810-no-sed-i' into maint

* tb/test-t9810-no-sed-i:
t9810: Do not use sed -i

Merge branch 'tb/test-t9020-no-which' into maintJunio C Hamano Thu, 10 Jan 2013 22:10:36 +0000 (14:10 -0800)

Merge branch 'tb/test-t9020-no-which' into maint

* tb/test-t9020-no-which:
t9020: which is not portable

Merge branch 'mh/pthreads-autoconf' into maintJunio C Hamano Thu, 10 Jan 2013 22:04:26 +0000 (14:04 -0800)

Merge branch 'mh/pthreads-autoconf' into maint

* mh/pthreads-autoconf:
configure.ac: fix pthreads detection on Mac OS X

Merge branch 'jc/same-encoding' into maintJunio C Hamano Thu, 10 Jan 2013 22:04:24 +0000 (14:04 -0800)

Merge branch 'jc/same-encoding' into maint

* jc/same-encoding:
format_commit_message(): simplify calls to logmsg_reencode()

Merge branch 'sp/shortlog-missing-lf' into maintJunio C Hamano Thu, 10 Jan 2013 22:04:22 +0000 (14:04 -0800)

Merge branch 'sp/shortlog-missing-lf' into maint

* sp/shortlog-missing-lf:
strbuf_add_wrapped*(): Remove unused return value
shortlog: fix wrapping lines of wraplen

Merge branch 'md/gitweb-sort-by-age' into maintJunio C Hamano Thu, 10 Jan 2013 22:04:21 +0000 (14:04 -0800)

Merge branch 'md/gitweb-sort-by-age' into maint

* md/gitweb-sort-by-age:
gitweb: Sort projects with undefined ages last

Merge branch 'nd/invalidate-i-t-a-cache-tree' into... Junio C Hamano Thu, 10 Jan 2013 22:04:19 +0000 (14:04 -0800)

Merge branch 'nd/invalidate-i-t-a-cache-tree' into maint

* nd/invalidate-i-t-a-cache-tree:
cache-tree: invalidate i-t-a paths after generating trees
cache-tree: fix writing cache-tree when CE_REMOVE is present
cache-tree: replace "for" loops in update_one with "while" loops
cache-tree: remove dead i-t-a code in verify_cache()

Merge branch 'jk/repack-ref-racefix' into maintJunio C Hamano Thu, 10 Jan 2013 22:04:17 +0000 (14:04 -0800)

Merge branch 'jk/repack-ref-racefix' into maint

* jk/repack-ref-racefix:
refs: do not use cached refs in repack_without_ref

Merge branch 'rb/http-cert-cred-no-username-prompt... Junio C Hamano Thu, 10 Jan 2013 22:03:54 +0000 (14:03 -0800)

Merge branch 'rb/http-cert-cred-no-username-prompt' into maint

* rb/http-cert-cred-no-username-prompt:
http.c: Avoid username prompt for certifcate credentials

Merge branch 'jc/comment-cygwin-win32api-in-makefile'Junio C Hamano Thu, 10 Jan 2013 21:47:43 +0000 (13:47 -0800)

Merge branch 'jc/comment-cygwin-win32api-in-makefile'

* jc/comment-cygwin-win32api-in-makefile:
Makefile: add comment on CYGWIN_V15_WIN32API

Merge branch 'as/api-allocation-doc'Junio C Hamano Thu, 10 Jan 2013 21:47:40 +0000 (13:47 -0800)

Merge branch 'as/api-allocation-doc'

* as/api-allocation-doc:
api-allocation-growing.txt: encourage better variable naming

Merge branch 'rs/leave-base-name-in-name-field-of-tar'Junio C Hamano Thu, 10 Jan 2013 21:47:35 +0000 (13:47 -0800)

Merge branch 'rs/leave-base-name-in-name-field-of-tar'

Improve compatibility with implementations of "tar" that do not
like empty name field in header (with the additional prefix field
holding everything).

* rs/leave-base-name-in-name-field-of-tar:
archive-tar: split long paths more carefully

Merge branch 'jl/interrupt-clone-remove-separate-git... Junio C Hamano Thu, 10 Jan 2013 21:47:30 +0000 (13:47 -0800)

Merge branch 'jl/interrupt-clone-remove-separate-git-dir'

When "git clone --separate-git-dir" is interrupted, we failed to
remove the real location we created the repository.

* jl/interrupt-clone-remove-separate-git-dir:
clone: support atomic operation with --separate-git-dir

Merge branch 'as/dir-c-cleanup'Junio C Hamano Thu, 10 Jan 2013 21:47:25 +0000 (13:47 -0800)

Merge branch 'as/dir-c-cleanup'

Refactor and generally clean up the directory traversal API
implementation.

* as/dir-c-cleanup:
dir.c: rename free_excludes() to clear_exclude_list()
dir.c: refactor is_path_excluded()
dir.c: refactor is_excluded()
dir.c: refactor is_excluded_from_list()
dir.c: rename excluded() to is_excluded()
dir.c: rename excluded_from_list() to is_excluded_from_list()
dir.c: rename path_excluded() to is_path_excluded()
dir.c: rename cryptic 'which' variable to more consistent name
Improve documentation and comments regarding directory traversal API
api-directory-listing.txt: update to match code

Merge branch 'jk/config-uname'Junio C Hamano Thu, 10 Jan 2013 21:47:20 +0000 (13:47 -0800)

Merge branch 'jk/config-uname'

Move the bits to set fallback default based on the platform from
the main Makefile to a separate file, so that it can be included in
Makefiles in subdirectories.

* jk/config-uname:
Makefile: hoist uname autodetection to config.mak.uname

Merge branch 'nd/wildmatch'Junio C Hamano Thu, 10 Jan 2013 21:47:15 +0000 (13:47 -0800)

Merge branch 'nd/wildmatch'

Allows pathname patterns in .gitignore and .gitattributes files
with double-asterisks "foo/**/bar" to match any number of directory
hierarchies.

* nd/wildmatch:
wildmatch: replace variable 'special' with better named ones
compat/fnmatch: respect NO_FNMATCH* even on glibc
wildmatch: fix "**" special case
t3070: Disable some failing fnmatch tests
test-wildmatch: avoid Windows path mangling
Support "**" wildcard in .gitignore and .gitattributes
wildmatch: make /**/ match zero or more directories
wildmatch: adjust "**" behavior
wildmatch: fix case-insensitive matching
wildmatch: remove static variable force_lower_case
wildmatch: make wildmatch's return value compatible with fnmatch
t3070: disable unreliable fnmatch tests
Integrate wildmatch to git
wildmatch: follow Git's coding convention
wildmatch: remove unnecessary functions
Import wildmatch from rsync
ctype: support iscntrl, ispunct, isxdigit and isprint
ctype: make sane_ctype[] const array

Conflicts:
Makefile

Merge branch 'tb/test-shell-lint'Junio C Hamano Thu, 10 Jan 2013 21:47:04 +0000 (13:47 -0800)

Merge branch 'tb/test-shell-lint'

Check for common mistakes in the test scripts, based on simple
pattern-matching.

* tb/test-shell-lint:
test: Add check-non-portable-shell.pl

Merge branch 'mz/pick-unborn'Junio C Hamano Thu, 10 Jan 2013 21:46:51 +0000 (13:46 -0800)

Merge branch 'mz/pick-unborn'

Allow "git cherry-pick $commit" even when you do not have any
history behind HEAD yet.

* mz/pick-unborn:
learn to pick/revert into unborn branch
tests: move test_cmp_rev to test-lib-functions

Merge branch 'aw/rebase-am-failure-detection'Junio C Hamano Thu, 10 Jan 2013 21:46:46 +0000 (13:46 -0800)

Merge branch 'aw/rebase-am-failure-detection'

Save output from format-patch command in a temporary file, just in
case it aborts, to give a better failure-case behaviour.

* aw/rebase-am-failure-detection:
rebase: Handle cases where format-patch fails

Merge branch 'jc/maint-fmt-merge-msg-no-edit-lose-credit'Junio C Hamano Thu, 10 Jan 2013 21:46:29 +0000 (13:46 -0800)

Merge branch 'jc/maint-fmt-merge-msg-no-edit-lose-credit'

Stop spending cycles to compute information to be placed on
commented lines in "merge --no-edit", which will be discarded
anyway.

* jc/maint-fmt-merge-msg-no-edit-lose-credit:
merge --no-edit: do not credit people involved in the side branch

log --use-mailmap: optimize for cases without --author... Junio C Hamano Tue, 8 Jan 2013 08:02:49 +0000 (00:02 -0800)

log --use-mailmap: optimize for cases without --author/--committer search

When we taught the commit_match() mechanism to pay attention to the
new --use-mailmap option, we started to unconditionally copy the
commit object to a temporary buffer, just in case we need the author
and committer lines updated via the mailmap mechanism, and rewrite
author and committer using the mailmap.

It turns out that this has a rather unpleasant performance
implications. In the linux kernel repository, running

$ git log --author='Junio C Hamano' --pretty=short >/dev/null

under /usr/bin/time, with and without --use-mailmap (the .mailmap
file is 118 entries long, the particular author does not appear in
it), cost (with warm cache):

[without --use-mailmap]
5.42user 0.26system 0:05.70elapsed 99%CPU (0avgtext+0avgdata 2005936maxresident)k
0inputs+0outputs (0major+137669minor)pagefaults 0swaps

[with --use-mailmap]
6.47user 0.30system 0:06.78elapsed 99%CPU (0avgtext+0avgdata 2006288maxresident)k
0inputs+0outputs (0major+137692minor)pagefaults 0swaps

which incurs about 20% overhead. The command is doing extra work,
so the extra cost may be justified.

But it is inexcusable to pay the cost when we do not need
author/committer match. In the same repository,

$ git log --grep='fix menuconfig on debian lenny' --pretty=short >/dev/null

shows very similar numbers as the above:

[without --use-mailmap]
5.32user 0.30system 0:05.63elapsed 99%CPU (0avgtext+0avgdata 2005984maxresident)k
0inputs+0outputs (0major+137672minor)pagefaults 0swaps

[with --use-mailmap]
6.64user 0.24system 0:06.89elapsed 99%CPU (0avgtext+0avgdata 2006320maxresident)k
0inputs+0outputs (0major+137694minor)pagefaults 0swaps

The latter case is an unnecessary performance regression. We may
want to _show_ the result with mailmap applied, but we do not have
to copy and rewrite the author/committer of all commits we try to
match if we do not query for these fields.

Trivially optimize this performace regression by limiting the
rewrites for only when we are matching with author/committer fields.

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

log: add log.mailmap configuration optionAntoine Pelisse Sat, 5 Jan 2013 21:26:46 +0000 (22:26 +0100)

log: add log.mailmap configuration option

Teach "log.mailmap" configuration variable to turn "--use-mailmap"
option on to "git log", "git show" and "git whatchanged".

The "--no-use-mailmap" option from the command line can countermand
the setting.

Signed-off-by: Antoine Pelisse <apelisse@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

log: grep author/committer using mailmapAntoine Pelisse Sat, 5 Jan 2013 21:26:45 +0000 (22:26 +0100)

log: grep author/committer using mailmap

Currently you can use mailmap to display log authors and committers
but you can't use the mailmap to find commits with mapped values.

This commit allows you to run:

git log --use-mailmap --author mapped_name_or_email
git log --use-mailmap --committer mapped_name_or_email

Of course it only works if the --use-mailmap option is used.

The new name and email are copied only when necessary.

Signed-off-by: Antoine Pelisse <apelisse@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

test: add test for --use-mailmap optionAntoine Pelisse Sat, 5 Jan 2013 21:26:44 +0000 (22:26 +0100)

test: add test for --use-mailmap option

The new option '--use-mailmap' can be used to make sure that mailmap
file is used to convert name when running log commands.

The test is simple and checks that the Author line
is correctly replaced when running log.

Signed-off-by: Antoine Pelisse <apelisse@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

log: add --use-mailmap optionAntoine Pelisse Sat, 5 Jan 2013 21:26:43 +0000 (22:26 +0100)

log: add --use-mailmap option

Add the --use-mailmap option to log commands. It allows to display
names from mailmap file when displaying logs, whatever the format
used.

Signed-off-by: Antoine Pelisse <apelisse@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

pretty: use mailmap to display username and emailAntoine Pelisse Sat, 5 Jan 2013 21:26:42 +0000 (22:26 +0100)

pretty: use mailmap to display username and email

Use the mailmap information to display the rewritten
username and email address in all log commands.

Signed-off-by: Antoine Pelisse <apelisse@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

mailmap: add mailmap structure to rev_info and ppAntoine Pelisse Sat, 5 Jan 2013 21:26:41 +0000 (22:26 +0100)

mailmap: add mailmap structure to rev_info and pp

Pass a mailmap from rev_info to pretty_print_context to so that the
pretty printer can use rewritten name and email address when showing
commits.

Signed-off-by: Antoine Pelisse <apelisse@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

mailmap: simplify map_user() interfaceAntoine Pelisse Sat, 5 Jan 2013 21:26:40 +0000 (22:26 +0100)

mailmap: simplify map_user() interface

Simplify map_user(), mostly to avoid copies of string buffers. It
also simplifies caller functions.

map_user() directly receive pointers and length from the commit buffer
as mail and name. If mapping of the user and mail can be done, the
pointer is updated to a new location. Lengths are also updated if
necessary.

The caller of map_user() can then copy the new email and name if
necessary.

Signed-off-by: Antoine Pelisse <apelisse@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

mailmap: remove email copy and length limitationJunio C Hamano Sat, 5 Jan 2013 21:26:39 +0000 (22:26 +0100)

mailmap: remove email copy and length limitation

In map_user(), we have email pointer that points at the beginning of
an e-mail address, but the buffer is not terminated with a NUL after
the e-mail address. It typically has ">" after the address, and it
could have even more if it comes from author/committer line in a
commit object. Or it may not have ">" after it.

We used to copy the e-mail address proper into a temporary buffer
before asking the string-list API to find the e-mail address in the
mailmap, because string_list_lookup() function only takes a NUL
terminated full string.

Introduce a helper function lookup_prefix that takes the email
pointer and the length, and finds a matching entry in the string
list used for the mailmap, by doing the following:

- First ask string_list_find_insert_index() where in its sorted
list the e-mail address we have (including the possible trailing
junk ">...") would be inserted.

- It could find an exact match (e.g. we had a clean e-mail address
without any trailing junk). We can return the item in that case.

- Or it could return the index of an item that sorts after the
e-mail address we have.

- If we did not find an exact match against a clean e-mail address,
then the record we are looking for in the mailmap has to exist
before the index returned by the function (i.e. "email>junk"
always sorts later than "email"). Iterate, starting from that
index, down the map->items[] array until we find the exact record
we are looking for, or we see a record with a key that definitely
sorts earlier than the e-mail we are looking for (i.e. when we
are looking for "email" in "email>junk", a record in the mailmap
that begins with "emaik" strictly sorts before "email", if such a
key existed in the mailmap).

This, together with the earlier enhancement to support
case-insensitive sorting, allow us to remove an extra copy of email
buffer to downcase it.

A part of this is based on Antoine Pelisse's previous work.

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

commit: make default of "cleanup" option configurableRalf Thielow Thu, 10 Jan 2013 17:45:59 +0000 (18:45 +0100)

commit: make default of "cleanup" option configurable

The default of the "cleanup" option in "git commit"
is not configurable. Users who don't want to use the
default have to pass this option on every commit since
there's no way to configure it. This commit introduces
a new config option "commit.cleanup" which can be used
to change the default of the "cleanup" option in
"git commit".

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

git-commit-tree(1): correct description of defaultsPeter Eisentraut Thu, 10 Jan 2013 12:29:58 +0000 (07:29 -0500)

git-commit-tree(1): correct description of defaults

The old phrasing indicated that the EMAIL environment variable takes
precedence over the user.email configuration setting, but it is the
other way around.

Signed-off-by: Peter Eisentraut <peter@eisentraut.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-fast-import(1): reorganise optionsJohn Keeping Wed, 9 Jan 2013 19:45:29 +0000 (19:45 +0000)

git-fast-import(1): reorganise options

The options in git-fast-import(1) are not currently arranged in a
logical order, which has caused the '--done' options to be documented
twice (commit 3266de10).

Rearrange them into logical groups under subheadings.

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

git-fast-import(1): combine documentation of --[no... John Keeping Wed, 9 Jan 2013 19:44:38 +0000 (19:44 +0000)

git-fast-import(1): combine documentation of --[no-]relative-marks

The descriptions of '--relative-marks' and '--no-relative-marks' make
more sense when read together instead of as two independent options.
Combine them into a single description block.

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

git-shortlog(1): document behaviour of zero-width wrapJohn Keeping Wed, 9 Jan 2013 20:16:45 +0000 (20:16 +0000)

git-shortlog(1): document behaviour of zero-width wrap

Commit 00d3947 (Teach --wrap to only indent without wrapping) added
special behaviour for a width of zero in the '-w' argument to
'git-shortlog' but this was not documented. Fix this.

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

Update draft release notes to 1.8.2Junio C Hamano Wed, 9 Jan 2013 18:19:49 +0000 (10:19 -0800)

Update draft release notes to 1.8.2

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

Merge branch 'master' of git://github.com/git-l10n... Junio C Hamano Wed, 9 Jan 2013 16:30:45 +0000 (08:30 -0800)

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

Update German translation.

* 'master' of git://github.com/git-l10n/git-po:
l10n: de.po: address the user formally

Merge branch 'nd/maint-branch-desc-doc'Junio C Hamano Wed, 9 Jan 2013 16:27:09 +0000 (08:27 -0800)

Merge branch 'nd/maint-branch-desc-doc'

Teach various forms of "format-patch" command line to identify what
branch the patches are taken from, so that the branch description
is picked up in more cases.

* nd/maint-branch-desc-doc:
format-patch: pick up branch description when no ref is specified
format-patch: pick up correct branch name from symbolic ref
t4014: a few more tests on cover letter using branch description
branch: delete branch description if it's empty
config.txt: a few lines about branch.<name>.description

Merge branch 'jk/enable-test-lint-by-default'Junio C Hamano Wed, 9 Jan 2013 16:26:46 +0000 (08:26 -0800)

Merge branch 'jk/enable-test-lint-by-default'

We have two simple and quick tests to catch common mistakes when
writing test scripts, but we did not run them by default when
running tests.

* jk/enable-test-lint-by-default:
tests: turn on test-lint by default

Merge branch 'ap/merge-stop-at-prepare-commit-msg-failure'Junio C Hamano Wed, 9 Jan 2013 16:26:33 +0000 (08:26 -0800)

Merge branch 'ap/merge-stop-at-prepare-commit-msg-failure'

"git merge" started calling prepare-commit-msg hook like "git
commit" does some time ago, but forgot to pay attention to the exit
status of the hook. t7505 may want a general clean-up but that is
a different topic.

* ap/merge-stop-at-prepare-commit-msg-failure:
merge: Honor prepare-commit-msg return code

Merge branch 'fc/remote-bzr'Junio C Hamano Wed, 9 Jan 2013 16:26:26 +0000 (08:26 -0800)

Merge branch 'fc/remote-bzr'

New remote helper for bzr, with minimum fix squashed in.

* fc/remote-bzr:
remote-bzr: detect local repositories
remote-bzr: add support for older versions of bzr
remote-bzr: add support to push special modes
remote-bzr: add support for fecthing special modes
remote-bzr: add simple tests
remote-bzr: update working tree upon pushing
remote-bzr: add support for remote repositories
remote-bzr: add support for pushing
Add new remote-bzr transport helper

Merge branch 'jc/submittingpatches'Junio C Hamano Wed, 9 Jan 2013 16:26:20 +0000 (08:26 -0800)

Merge branch 'jc/submittingpatches'

Streamline the document and update with a few e-mail addresses the
patches should be sent to.

* jc/submittingpatches:
SubmittingPatches: give list and maintainer addresses
SubmittingPatches: remove overlong checklist
SubmittingPatches: mention subsystems with dedicated repositories
SubmittingPatches: who am I and who cares?

Merge branch 'os/gitweb-highlight-uncaptured'Junio C Hamano Wed, 9 Jan 2013 16:26:08 +0000 (08:26 -0800)

Merge branch 'os/gitweb-highlight-uncaptured'

The code to sanitize control characters before passing it to
"highlight" filter lost known-to-be-safe control characters by
mistake.

* os/gitweb-highlight-uncaptured:
gitweb: fix error in sanitize when highlight is enabled

Merge branch 'jn/less-reconfigure'Junio C Hamano Wed, 9 Jan 2013 16:25:59 +0000 (08:25 -0800)

Merge branch 'jn/less-reconfigure'

When autoconf is used, any build on a different commit always ran
"config.status --recheck" even when unnecessary.

* jn/less-reconfigure:
build: do not automatically reconfigure unless configure.ac changed

Merge branch 'er/python-version-requirements'Junio C Hamano Wed, 9 Jan 2013 16:25:47 +0000 (08:25 -0800)

Merge branch 'er/python-version-requirements'

Some python scripts we ship cannot be run with older versions of the
interpreter.

* er/python-version-requirements:
Add checks to Python scripts for version dependencies.

Merge branch 'er/stop-recommending-parsecvs'Junio C Hamano Wed, 9 Jan 2013 16:25:36 +0000 (08:25 -0800)

Merge branch 'er/stop-recommending-parsecvs'

Stop recommending a defunct third-party software.

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

Merge branch 'maint'Junio C Hamano Tue, 8 Jan 2013 21:23:46 +0000 (13:23 -0800)

Merge branch 'maint'

* maint:
t1402: work around shell quoting issue on NetBSD
remote-hg: Fix biridectionality -> bidirectionality typos

Merge branch 'kb/maint-bundle-doc'Junio C Hamano Tue, 8 Jan 2013 21:23:26 +0000 (13:23 -0800)

Merge branch 'kb/maint-bundle-doc'

* kb/maint-bundle-doc:
Documentation: full-ness of a bundle is significant for cloning
Documentation: correct example restore from bundle

Merge branch 'as/test-name-alias-uniquely'Junio C Hamano Tue, 8 Jan 2013 21:23:21 +0000 (13:23 -0800)

Merge branch 'as/test-name-alias-uniquely'

A few short-and-bland aliases used in the tests were interfering
with git-custom command in user's $PATH.

* as/test-name-alias-uniquely:
Use longer alias names in subdirectory tests

Merge branch 'ta/remove-stale-translated-tut'Junio C Hamano Tue, 8 Jan 2013 21:23:10 +0000 (13:23 -0800)

Merge branch 'ta/remove-stale-translated-tut'

Remove a translation of a document that was left stale.

* ta/remove-stale-translated-tut:
Remove Documentation/pt_BR/gittutorial.txt

Merge branch 'tb/test-t9810-no-sed-i'Junio C Hamano Tue, 8 Jan 2013 21:23:05 +0000 (13:23 -0800)

Merge branch 'tb/test-t9810-no-sed-i'

* tb/test-t9810-no-sed-i:
t9810: Do not use sed -i

Merge branch 'tb/test-t9020-no-which'Junio C Hamano Tue, 8 Jan 2013 21:23:00 +0000 (13:23 -0800)

Merge branch 'tb/test-t9020-no-which'

* tb/test-t9020-no-which:
t9020: which is not portable

Merge branch 'jk/maint-fast-import-doc-dedup-done'Junio C Hamano Tue, 8 Jan 2013 21:22:52 +0000 (13:22 -0800)

Merge branch 'jk/maint-fast-import-doc-dedup-done'

The "logical order" reorganization can come after that is done and
can cook longer in 'next'.

* jk/maint-fast-import-doc-dedup-done:
git-fast-import(1): remove duplicate '--done' option

Merge branch 'jk/pathspec-literal'Junio C Hamano Tue, 8 Jan 2013 21:22:32 +0000 (13:22 -0800)

Merge branch 'jk/pathspec-literal'

Finishing touches to fix a test breakage on Windows

* jk/pathspec-literal:
t6130-pathspec-noglob: Windows does not allow a file named "f*"

Merge branch 'jk/maint-fast-import-doc-dedup-done'Junio C Hamano Tue, 8 Jan 2013 21:21:07 +0000 (13:21 -0800)

Merge branch 'jk/maint-fast-import-doc-dedup-done'

* jk/maint-fast-import-doc-dedup-done:
git-fast-import(1): remove duplicate '--done' option

git-fast-import(1): remove duplicate '--done' optionJohn Keeping Mon, 7 Jan 2013 11:57:09 +0000 (11:57 +0000)

git-fast-import(1): remove duplicate '--done' option

The '--done' option to git-fast-import is documented twice in its manual
page. Combine the best bits of each description, keeping the location
of the instance that was added first.

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

t1402: work around shell quoting issue on NetBSDRené Scharfe Tue, 8 Jan 2013 20:23:01 +0000 (21:23 +0100)

t1402: work around shell quoting issue on NetBSD

The test fails for me on NetBSD 6.0.1 and reports:

ok 1 - ref name '' is invalid
ok 2 - ref name '/' is invalid
ok 3 - ref name '/' is invalid with options --allow-onelevel
ok 4 - ref name '/' is invalid with options --normalize
error: bug in the test script: not 2 or 3 parameters to test-expect-success

The alleged bug is in this line:

invalid_ref NOT_MINGW '/' '--allow-onelevel --normalize'

invalid_ref() constructs a test case description using its last argument,
but the shell seems to split it up into two pieces if it contains a
space. Minimal test case:

# on NetBSD with /bin/sh
$ a() { echo $#-$1-$2; }
$ t="x"; a "${t:+$t}"
1-x-
$ t="x y"; a "${t:+$t}"
2-x-y
$ t="x y"; a "${t:+x y}"
1-x y-

# and with bash
$ t="x y"; a "${t:+$t}"
1-x y-
$ t="x y"; a "${t:+x y}"
1-x y-

This may be a bug in the shell, but here's a simple workaround: Construct
the description string first and store it in a variable, and then use
that to call test_expect_success().

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

Merge branch 'ms/subtree-fixlets' into maintJunio C Hamano Tue, 8 Jan 2013 19:17:10 +0000 (11:17 -0800)

Merge branch 'ms/subtree-fixlets' into maint

* ms/subtree-fixlets:
git-subtree: fix typo in manpage
git-subtree: ignore git-subtree executable

Merge branch 'ss/nedmalloc-compilation' into maintJunio C Hamano Tue, 8 Jan 2013 19:17:07 +0000 (11:17 -0800)

Merge branch 'ss/nedmalloc-compilation' into maint

* ss/nedmalloc-compilation:
nedmalloc: Fix a compile warning (exposed as error) with GCC 4.7.2

Merge branch 'jc/maint-fnmatch-old-style-definition... Junio C Hamano Tue, 8 Jan 2013 19:17:05 +0000 (11:17 -0800)

Merge branch 'jc/maint-fnmatch-old-style-definition' into maint

* jc/maint-fnmatch-old-style-definition:
compat/fnmatch: update old-style definition to ANSI

Merge branch 'jc/test-portability' into maintJunio C Hamano Tue, 8 Jan 2013 19:17:03 +0000 (11:17 -0800)

Merge branch 'jc/test-portability' into maint

* jc/test-portability:
t9020: use configured Python to run the test helper
t3600: Avoid "cp -a", which is a GNUism

Merge branch 'jc/maint-fbsd-sh-ifs-workaround' into... Junio C Hamano Tue, 8 Jan 2013 19:17:01 +0000 (11:17 -0800)

Merge branch 'jc/maint-fbsd-sh-ifs-workaround' into maint

* jc/maint-fbsd-sh-ifs-workaround:
sh-setup: work around "unset IFS" bug in some shells

Merge branch 'jc/mkstemp-more-careful-error-reporting... Junio C Hamano Tue, 8 Jan 2013 19:16:58 +0000 (11:16 -0800)

Merge branch 'jc/mkstemp-more-careful-error-reporting' into maint

* jc/mkstemp-more-careful-error-reporting:
xmkstemp(): avoid showing truncated template more carefully