gitweb.git
revision: avoid work after --max-count is reachedJeff King Fri, 13 Jul 2012 07:50:23 +0000 (03:50 -0400)

revision: avoid work after --max-count is reached

During a revision traversal in which --max-count has been
specified, we decrement a counter for each revision returned
by get_revision. When it hits 0, we typically return NULL
(the exception being if we still have boundary commits to
show).

However, before we check the counter, we call get_revision_1
to get the next commit. This might involve looking at a
large number of commits if we have restricted the traversal
(e.g., we might traverse until we find the next commit whose
diff actually matches a pathspec).

There's no need to make this get_revision_1 call when our
counter runs out. If we are not in --boundary mode, we will
just throw away the result and immediately return NULL. If
we are in --boundary mode, then we will still throw away the
result, and then start showing the boundary commits.
However, as git_revision_1 does not impact the boundary
list, it should not have an impact.

In most cases, avoiding this work will not be especially
noticeable. However, in some cases, it can make a big
difference:

[before]
$ time git rev-list -1 origin Documentation/RelNotes/1.7.11.2.txt
8d141a1d562abb31f27f599dbf6e10a6c06ed73e

real 0m0.301s
user 0m0.280s
sys 0m0.016s

[after]
$ time git rev-list -1 origin Documentation/RelNotes/1.7.11.2.txt
8d141a1d562abb31f27f599dbf6e10a6c06ed73e

real 0m0.010s
user 0m0.008s
sys 0m0.000s

Note that the output is produced almost instantaneously in
the first case, and then git uselessly spends a long time
looking for the next commit to touch that file (but there
isn't one, and we traverse all the way down to the roots).

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

Reduce draft release notes to 1.7.12Junio C Hamano Wed, 11 Jul 2012 20:48:57 +0000 (13:48 -0700)

Reduce draft release notes to 1.7.12

Many "fixes since 1.7.11" items are now in the maintenance track

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

Sync with 1.7.11.2Junio C Hamano Wed, 11 Jul 2012 20:00:51 +0000 (13:00 -0700)

Sync with 1.7.11.2

Git 1.7.11.2 v1.7.11.2Junio C Hamano Wed, 11 Jul 2012 19:55:38 +0000 (12:55 -0700)

Git 1.7.11.2

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

Merge branch 'jc/maint-blame-unique-abbrev' into maintJunio C Hamano Wed, 11 Jul 2012 19:58:28 +0000 (12:58 -0700)

Merge branch 'jc/maint-blame-unique-abbrev' into maint

"git blame" did not try to make sure that the abbreviated commit
object names in its output are unique.

* jc/maint-blame-unique-abbrev:
blame: compute abbreviation width that ensures uniqueness

Merge branch 'rj/platform-pread-may-be-thread-unsafe... Junio C Hamano Wed, 11 Jul 2012 19:57:28 +0000 (12:57 -0700)

Merge branch 'rj/platform-pread-may-be-thread-unsafe' into maint

On Cygwin, the platform pread(2) is not thread safe, just like our own
compat/ emulation, and cannot be used in the index-pack program.
Makefile variable NO_THREAD_SAFE_PREAD can be defined to avoid use of
this function in a threaded program.

* rj/platform-pread-may-be-thread-unsafe:
index-pack: Disable threading on cygwin

Merge branch 'th/diff-no-index-fixes' into maintJunio C Hamano Wed, 11 Jul 2012 19:48:44 +0000 (12:48 -0700)

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

"git diff --no-index" did not correctly handle relative paths and
did not correctly give 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 'nd/clone-single-fix' into maintJunio C Hamano Wed, 11 Jul 2012 19:48:29 +0000 (12:48 -0700)

Merge branch 'nd/clone-single-fix' into maint

"git clone --single-branch" to clone a single branch did not limit
the cloning to the specified branch.

* nd/clone-single-fix:
clone: fix ref selection in --single-branch --branch=xxx

Merge branch 'jc/rev-list-simplify-merges-first-parent... Junio C Hamano Wed, 11 Jul 2012 19:46:57 +0000 (12:46 -0700)

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

When "git log" gets "--simplify-merges/by-decoration" together with
"--first-parent", 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.

* jc/rev-list-simplify-merges-first-parent:
revision: ignore side parents while running simplify-merges
revision: note the lack of free() in simplify_merges()
revision: "simplify" options imply topo-order sort

Merge branch 'hv/submodule-update-nuke-submodules'... Junio C Hamano Wed, 11 Jul 2012 19:46:31 +0000 (12:46 -0700)

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

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

* hv/submodule-update-nuke-submodules:
update-index: allow overwriting existing submodule index entries

Merge branch 'jk/diff-no-index-pager' into maintJunio C Hamano Wed, 11 Jul 2012 19:46:21 +0000 (12:46 -0700)

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

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

* jk/diff-no-index-pager:
do not run pager with diff --no-index --quiet
fix pager.diff with diff --no-index

Merge branch 'mm/verify-filename-fix' into maintJunio C Hamano Wed, 11 Jul 2012 19:45:49 +0000 (12:45 -0700)

Merge branch 'mm/verify-filename-fix' into maint

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

* mm/verify-filename-fix:
verify_filename(): ask the caller to chose the kind of diagnosis
sha1_name: do not trigger detailed diagnosis for file arguments

Merge branch 'cn/cherry-pick-range-docs' into maintJunio C Hamano Wed, 11 Jul 2012 19:45:34 +0000 (12:45 -0700)

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

The documentation for "git cherry-pick A B..C" was misleading.

* 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 'jc/ustar-checksum-is-unsigned' into maintJunio C Hamano Wed, 11 Jul 2012 19:45:07 +0000 (12:45 -0700)

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

"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 'jc/bundle-complete-notice' into maintJunio C Hamano Wed, 11 Jul 2012 19:44:50 +0000 (12:44 -0700)

Merge branch 'jc/bundle-complete-notice' into maint

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

Merge branch 'jc/ls-files-i-dir' into maintJunio C Hamano Wed, 11 Jul 2012 19:44:34 +0000 (12:44 -0700)

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

"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 'jc/request-pull-match-tagname' into maintJunio C Hamano Wed, 11 Jul 2012 19:43:58 +0000 (12:43 -0700)

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

"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 git://github.com/git-l10n/git-poJunio C Hamano Mon, 9 Jul 2012 17:26:23 +0000 (10:26 -0700)

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

Translation updates for various languages.

* git://github.com/git-l10n/git-po:
l10n: zh_CN.po: translate 29 new messages
l10n: de.po: translate 29 new messages
Update Swedish translation (1095t0f0u)
l10n: Update translation for Vietnamese
l10n: Update git.pot (29 new messages)

Fifth batch for 1.7.12Junio C Hamano Mon, 9 Jul 2012 16:49:37 +0000 (09:49 -0700)

Fifth batch for 1.7.12

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

Merge branch 'cw/help-over-network'Junio C Hamano Mon, 9 Jul 2012 16:02:19 +0000 (09:02 -0700)

Merge branch 'cw/help-over-network'

"git help -w $cmd" can show HTML version of documentation for
"git-$cmd" by setting help.htmlpath to somewhere other than the
default location where the build procedure installs them locally;
the variable can even point at a http:// URL.

* cw/help-over-network:
Allow help.htmlpath to be a URL prefix
Add config variable to set HTML path for git-help --web

Merge branch 'mz/empty-rebase-test'Junio C Hamano Mon, 9 Jul 2012 16:02:15 +0000 (09:02 -0700)

Merge branch 'mz/empty-rebase-test'

We did not have test to make sure "git rebase" without extra options
filters out an empty commit in the original history.

* mz/empty-rebase-test:
add test case for rebase of empty commit

Merge branch 'pw/git-p4-tests'Junio C Hamano Mon, 9 Jul 2012 16:02:11 +0000 (09:02 -0700)

Merge branch 'pw/git-p4-tests'

More "git p4" tests.

* pw/git-p4-tests:
git p4 test: fix badp4dir test
git p4 test: split up big t9800 test
git p4 test: cleanup_git should make a new $git
git p4 test: copy source indeterminate
git p4 test: check for error message in failed test
git p4 test: rename some "git-p4 command" strings
git p4 test: never create default test repo
git p4 test: simplify quoting involving TRASH_DIRECTORY
git p4 test: use real_path to resolve p4 client symlinks
git p4 test: wait longer for p4d to start and test its pid

Merge branch 'js/fast-export-paths-with-spaces'Junio C Hamano Mon, 9 Jul 2012 16:02:06 +0000 (09:02 -0700)

Merge branch 'js/fast-export-paths-with-spaces'

"git fast-export" produced an input stream for fast-import without
properly quoting pathnames when they contain SPs in them.

* js/fast-export-paths-with-spaces:
fast-export: quote paths with spaces

Merge branch 'cw/no-detaching-an-unborn'Junio C Hamano Mon, 9 Jul 2012 16:02:00 +0000 (09:02 -0700)

Merge branch 'cw/no-detaching-an-unborn'

"git checkout --detach", when you are still on an unborn branch,
should be forbidden, but it wasn't.

* cw/no-detaching-an-unborn:
git-checkout: disallow --detach on unborn branch

Merge branch 'vr/use-our-perl-in-tests'Junio C Hamano Mon, 9 Jul 2012 16:01:52 +0000 (09:01 -0700)

Merge branch 'vr/use-our-perl-in-tests'

Some implementations of Perl terminates "lines" with CRLF even when
the script is operating on just a sequence of bytes. Make sure to
use "$PERL_PATH", the version of Perl the user told Git to use, in
our tests to avoid unnecessary breakages in tests.

* vr/use-our-perl-in-tests:
t/README: add a bit more Don'ts
tests: enclose $PERL_PATH in double quotes
t/test-lib.sh: export PERL_PATH for use in scripts
t: Replace 'perl' by $PERL_PATH

Merge branch 'mm/credential-plumbing'Junio C Hamano Mon, 9 Jul 2012 16:01:45 +0000 (09:01 -0700)

Merge branch 'mm/credential-plumbing'

Expose the credential API to scripted Porcelain writers.

* mm/credential-plumbing:
git-remote-mediawiki: update comments to reflect credential support
git-remote-mediawiki: add credential support
git credential fill: output the whole 'struct credential'
add 'git credential' plumbing command

Merge branch 'jc/maint-blame-unique-abbrev'Junio C Hamano Mon, 9 Jul 2012 16:01:37 +0000 (09:01 -0700)

Merge branch 'jc/maint-blame-unique-abbrev'

"git blame" did not try to make sure the abbreviated commit object
names in its output are unique.

* jc/maint-blame-unique-abbrev:
blame: compute abbreviation width that ensures uniqueness

Merge branch 'jn/perl-makemaker-leading-paths'Junio C Hamano Mon, 9 Jul 2012 16:00:53 +0000 (09:00 -0700)

Merge branch 'jn/perl-makemaker-leading-paths'

* jn/perl-makemaker-leading-paths:
perl/Makefile: Fix a missing double-quote
perl/Makefile: move "mkdir -p" to module installation loop for maintainability

Merge branch 'rj/platform-pread-may-be-thread-unsafe'Junio C Hamano Mon, 9 Jul 2012 16:00:45 +0000 (09:00 -0700)

Merge branch 'rj/platform-pread-may-be-thread-unsafe'

On Cygwin, the platform pread(3) is not thread safe, just like our
own compat/ emulation, and cannot be used in the index-pack program.

* rj/platform-pread-may-be-thread-unsafe:
index-pack: Disable threading on cygwin

Merge branch 'mm/config-xdg'Junio C Hamano Mon, 9 Jul 2012 16:00:35 +0000 (09:00 -0700)

Merge branch 'mm/config-xdg'

Teach git to read various information from $XDG_CONFIG_HOME/git/ to allow
the user to avoid cluttering $HOME.

* mm/config-xdg:
config: write to $XDG_CONFIG_HOME/git/config file when appropriate
Let core.attributesfile default to $XDG_CONFIG_HOME/git/attributes
Let core.excludesfile default to $XDG_CONFIG_HOME/git/ignore
config: read (but not write) from $XDG_CONFIG_HOME/git/config file

git-remote-mediawiki: update comments to reflect creden... Matthieu Moy Sun, 8 Jul 2012 16:18:28 +0000 (18:18 +0200)

git-remote-mediawiki: update comments to reflect credential support

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

l10n: zh_CN.po: translate 29 new messagesJiang Xin Wed, 4 Jul 2012 09:20:34 +0000 (17:20 +0800)

l10n: zh_CN.po: translate 29 new messages

Translate 29 new messages came from git.pot update in 11b9017
(l10n: Update git.pot (29 new messages))

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>

l10n: de.po: translate 29 new messagesRalf Thielow Tue, 3 Jul 2012 16:02:11 +0000 (18:02 +0200)

l10n: de.po: translate 29 new messages

Translate 29 new messages came from git.pot update
in 11b9017 (l10n: Update git.pot (29 new messages)).

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

Fourth batch for 1.7.12Junio C Hamano Thu, 5 Jul 2012 06:48:37 +0000 (23:48 -0700)

Fourth batch for 1.7.12

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

Merge branch 'nd/clone-single-fix'Junio C Hamano Thu, 5 Jul 2012 06:41:41 +0000 (23:41 -0700)

Merge branch 'nd/clone-single-fix'

"git clone --single-branch" to clone a single branch did not limit
the cloning to the specified branch.

* nd/clone-single-fix:
clone: fix ref selection in --single-branch --branch=xxx

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

Update Swedish translation (1095t0f0u)Peter Krefting Wed, 4 Jul 2012 18:34:21 +0000 (19:34 +0100)

Update Swedish translation (1095t0f0u)

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

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>

l10n: Update translation for VietnameseTran Ngoc Quan Tue, 3 Jul 2012 07:22:32 +0000 (14:22 +0700)

l10n: Update translation for Vietnamese

* Translated 29 news
* Fix some minor errors in old translation

Signed-off-by: Tran Ngoc Quan <vnwildman@gmail.com>

l10n: Update git.pot (29 new messages)Jiang Xin Tue, 3 Jul 2012 02:31:59 +0000 (10:31 +0800)

l10n: Update git.pot (29 new messages)

Generate po/git.pot from v1.7.11.1-107-g72601, and there are 29 new l10n
messages.

Signed-off-by: Jiang Xin <worldhello.net@gmail.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)

blame: compute abbreviation width that ensures uniquenessJunio C Hamano Mon, 2 Jul 2012 07:54:00 +0000 (00:54 -0700)

blame: compute abbreviation width that ensures uniqueness

Julia Lawall noticed that in linux-next repository the commit object
60d5c9f5 (shown with the default abbreviation width baked into "git
blame") in output from

$ git blame -L 3675,3675 60d5c9f5b -- \
drivers/staging/brcm80211/brcmfmac/wl_iw.c

is no longer unique in the repository, which results in "short SHA1
60d5c9f5 is ambiguous".

Compute the minimum abbreviation width that ensures uniqueness when
the user did not specify the --abbrev option to avoid this.

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

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>

perl/Makefile: Fix a missing double-quoteJohannes Sixt Fri, 29 Jun 2012 08:07:44 +0000 (10:07 +0200)

perl/Makefile: Fix a missing double-quote

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

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.

Allow help.htmlpath to be a URL prefixChris Webb Thu, 28 Jun 2012 06:58:03 +0000 (07:58 +0100)

Allow help.htmlpath to be a URL prefix

Setting this to a URL prefix instead of a path to a local directory allows
git-help --web to work even when HTML docs aren't locally installed, by
pointing the browser at a copy accessible on the web. For example,

[help]
format = html
htmlpath = http://git-scm.com/docs

will use the publicly available documentation on the git homepage.

Signed-off-by: Chris Webb <chris@arachsys.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Add config variable to set HTML path for git-help ... Chris Webb Thu, 28 Jun 2012 06:58:02 +0000 (07:58 +0100)

Add config variable to set HTML path for git-help --web

If set in git-config, help.htmlpath overrides system_path(GIT_HTML_PATH)
which was compiled in. This allows users to repoint system-wide git at
their own copy of the documentation without recompiling.

Signed-off-by: Chris Webb <chris@arachsys.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git p4 test: fix badp4dir testPete Wyckoff Wed, 27 Jun 2012 12:01:03 +0000 (08:01 -0400)

git p4 test: fix badp4dir test

The construct used to get the return code was flawed, in that
errors in the &&-chain before the semicolon were not caught. Use
the standard test_expect_code instead.

Set PATH in a subshell instead of relying on the bashism of
setting it just for a single command.

And fix the grep line so it doesn't worry about grep segfaults,
and doesn't fail for i18n issues.

Reported-by: Johannes Sixt <j.sixt@viscovery.net>
Signed-off-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git p4 test: split up big t9800 testPete Wyckoff Wed, 27 Jun 2012 12:01:02 +0000 (08:01 -0400)

git p4 test: split up big t9800 test

The original t9800 test code has a mix of assorted topics, some
of which are big enough to deserve their own homes.
Interdependencies between the topics make it confusing when
trying to study one in isolation. And it takes so long to run
that debugging an individual test is difficult.

Split out three big chunks of tests into their own files:

t9812-git-p4-wildcards.sh gets the 8 p4 wildcard tests

t9813-git-p4-preserve-users.sh gets the 4 --preserve-user tests

t9814-git-p4-rename.sh gets the 2 copy and rename tests

Test 9800 execution time drops from 29 sec to 9 sec. The
sequential time to run all tests is a slower due to the three
extra p4d startup/shutdown sequences, but the overall parallel
execution time is about the same, at 52 sec.

Signed-off-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git p4 test: cleanup_git should make a new $gitPete Wyckoff Wed, 27 Jun 2012 12:01:01 +0000 (08:01 -0400)

git p4 test: cleanup_git should make a new $git

For convenience, leave one in place at the end of each
test so that it is not necessary to build a new one. This
makes it consistent with $cli.

Signed-off-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git p4 test: copy source indeterminatePete Wyckoff Wed, 27 Jun 2012 12:01:00 +0000 (08:01 -0400)

git p4 test: copy source indeterminate

Msysgit testing showed that the source file found by copy
detection is indeterminate when there are multiple sources
to choose from. This appears to be valid. Adjust the test
so that it passes if it finds any of the potential copy sources.

Signed-off-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git p4 test: check for error message in failed testPete Wyckoff Wed, 27 Jun 2012 12:00:59 +0000 (08:00 -0400)

git p4 test: check for error message in failed test

Make sure the test fails for the expected reason.

Signed-off-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git p4 test: rename some "git-p4 command" stringsPete Wyckoff Wed, 27 Jun 2012 12:00:58 +0000 (08:00 -0400)

git p4 test: rename some "git-p4 command" strings

Use the actual command name; git-p4 is gone.

Signed-off-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git p4 test: never create default test repoPete Wyckoff Wed, 27 Jun 2012 12:00:57 +0000 (08:00 -0400)

git p4 test: never create default test repo

Signed-off-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git p4 test: simplify quoting involving TRASH_DIRECTORYPete Wyckoff Wed, 27 Jun 2012 12:00:56 +0000 (08:00 -0400)

git p4 test: simplify quoting involving TRASH_DIRECTORY

For temporary files that are created in the top-level TRASH_DIRECTORY,
trust that the tests do not chdir except in subshells, and avoid some
quoting.

Signed-off-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git p4 test: use real_path to resolve p4 client symlinksPete Wyckoff Wed, 27 Jun 2012 12:00:55 +0000 (08:00 -0400)

git p4 test: use real_path to resolve p4 client symlinks

The p4 program is finicky about making sure the recorded client Root
matches the current working directory. The way it discovers the latter
seems to be to inspect shell variable $PWD. This could involve symlinks,
that while leading to the same place as the client Root, look different,
and cause p4 to fail.

Resolve all client paths using "test-path-utils real_path $path". This
removes ".." and resolves all symlinks.

Discovered while running with --root=/dev/shm, which is a link to
/run/shm.

Signed-off-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git p4 test: wait longer for p4d to start and test... Pete Wyckoff Thu, 28 Jun 2012 02:48:07 +0000 (22:48 -0400)

git p4 test: wait longer for p4d to start and test its pid

Running tests at high parallelism on a slow machine, 5 sec is
not enough to wait for p4d to start. Change it to 5 minutes,
adding an environment variable P4D_START_PATIENCE to shrink
that if needed in automated test environments.

Also check if the pid of the p4d that we started is still
around. If not, quit waiting for it immediately.

Remove all the confusing && chaining and simplify the code.

Thanks-to: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

fast-export: quote paths with spacesJay Soffian Wed, 27 Jun 2012 21:58:01 +0000 (17:58 -0400)

fast-export: quote paths with spaces

A path containing a space must be quoted when used as an
argument to either the copy or rename commands (because
unlike other commands, the path is not the final thing on
the line for those commands).

Commit 6280dfdc3b (fast-export: quote paths in output,
2011-08-05) previously attempted to fix fast-export's
quoting by passing all paths through quote_c_style().
However, that function does not consider the space to be a
character which requires quoting, so let's special-case the
space inside print_path(). This will cause space-containing
paths to also be quoted in other commands where such quoting
is not strictly necessary, but it does not hurt to do so.

The test from 6280dfdc3b did not detect this because, while
it does introduce renames in the export stream, it does not
actually turn on rename detection, so they were presented as
pairs of deletions/adds. Using "-M" reveals the bug.

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

add test case for rebase of empty commitMartin von Zweigbergk Wed, 27 Jun 2012 16:22:01 +0000 (09:22 -0700)

add test case for rebase of empty commit

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

index-pack: Disable threading on cygwinJunio C Hamano Tue, 26 Jun 2012 18:19:32 +0000 (19:19 +0100)

index-pack: Disable threading on cygwin

The Cygwin implementation of pread() is not thread-safe since, just
like the emulation provided by compat/pread.c, it uses a sequence of
seek-read-seek calls. In order to avoid failues due to thread-safety
issues, commit b038a61 disables threading when NO_PREAD is defined.
(ie when using the emulation code in compat/pread.c).

We introduce a new build variable, NO_THREAD_SAFE_PREAD, which allows
use to disable the threaded index-pack code on cygwin, in addition to
the above NO_PREAD case.

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

git-checkout: disallow --detach on unborn branchChris Webb Tue, 26 Jun 2012 15:06:42 +0000 (16:06 +0100)

git-checkout: disallow --detach on unborn branch

abe199808c (git checkout -b: allow switching out of an unborn branch)
introduced a bug demonstrated by

git checkout --orphan foo
git checkout --detach
git symbolic-ref HEAD

which gives 'refs/heads/(null)'.

This happens because we strbuf_addf(&branch_ref, "refs/heads/%s",
opts->new_branch) when opts->new_branch can be NULL for --detach.

Catch and forbid this case, adding a test to t2017 to catch it in
future.

Signed-off-by: Chris Webb <chris@arachsys.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-remote-mediawiki: add credential supportMatthieu Moy Sun, 24 Jun 2012 11:40:01 +0000 (13:40 +0200)

git-remote-mediawiki: add credential support

The previous version implemented the possibility to log in a wiki, but
the username and password had to be provided as configuration variables.
We add the possibility to use the Git credential system to prompt
the password.

The support if implemented with generic functions that mimic the C API,
designed to be usable from other contexts in the future (i.e. they may
migrate to Git.pm if someone is interested).

While we're there, do a bit of refactoring in mw_connect_maybe.

Based on patch by: Javier Roucher Iglesias <Javier.Roucher-Iglesias@ensimag.imag.fr>

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

git credential fill: output the whole 'struct credential'Matthieu Moy Sun, 24 Jun 2012 11:40:00 +0000 (13:40 +0200)

git credential fill: output the whole 'struct credential'

Instead of outputing only the username and password, print all the
attributes, even those that already appeared in the input.

This is closer to what the C API does, and allows one to take the exact
output of "git credential fill" as input to "git credential approve" or
"git credential reject".

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

add 'git credential' plumbing commandJavier Roucher Iglesias Sun, 24 Jun 2012 11:39:59 +0000 (13:39 +0200)

add 'git credential' plumbing command

The credential API is in C, and not available to scripting languages.
Expose the functionalities of the API by wrapping them into a new
plumbing command "git credentials".

In other words, replace the internal "test-credential" by an official Git
command.

Most documentation writen by: Jeff King <peff@peff.net>
Signed-off-by: Pavel Volek <Pavel.Volek@ensimag.imag.fr>
Signed-off-by: Kim Thuat Nguyen <Kim-Thuat.Nguyen@ensimag.imag.fr>
Signed-off-by: Javier Roucher Iglesias <Javier.Roucher-Iglesias@ensimag.imag.fr>
Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

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>

config: write to $XDG_CONFIG_HOME/git/config file when... Huynh Khoi Nguyen Nguyen Fri, 22 Jun 2012 09:03:26 +0000 (11:03 +0200)

config: write to $XDG_CONFIG_HOME/git/config file when appropriate

Teach git to write to $XDG_CONFIG_HOME/git/config if

- it already exists,
- $HOME/.gitconfig file doesn't, and
- The --global option is used.

Otherwise, write to $HOME/.gitconfig when the --global option is
given, as before.

If the user doesn't create $XDG_CONFIG_HOME/git/config, there is
absolutely no change. Users can use this new file only if they want.

If $XDG_CONFIG_HOME is either not set or empty, $HOME/.config/git/config
will be used.

Advice for users who often come back to an old version of Git: you
shouldn't create this file.

Signed-off-by: Huynh Khoi Nguyen Nguyen <Huynh-Khoi-Nguyen.Nguyen@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: Lucien Kong <Lucien.Kong@ensimag.imag.fr>
Signed-off-by: Thomas Nguy <Thomas.Nguy@ensimag.imag.fr>
Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Let core.attributesfile default to $XDG_CONFIG_HOME... Huynh Khoi Nguyen Nguyen Fri, 22 Jun 2012 09:03:25 +0000 (11:03 +0200)

Let core.attributesfile default to $XDG_CONFIG_HOME/git/attributes

This gives the default value for the core.attributesfile variable
following the exact same logic of the previous change for the
core.excludesfile setting.

Signed-off-by: Huynh Khoi Nguyen Nguyen <Huynh-Khoi-Nguyen.Nguyen@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: Lucien Kong <Lucien.Kong@ensimag.imag.fr>
Signed-off-by: Thomas Nguy <Thomas.Nguy@ensimag.imag.fr>
Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Let core.excludesfile default to $XDG_CONFIG_HOME/git... Huynh Khoi Nguyen Nguyen Fri, 22 Jun 2012 09:03:24 +0000 (11:03 +0200)

Let core.excludesfile default to $XDG_CONFIG_HOME/git/ignore

To use the feature of core.excludesfile, the user needs:

1. to create such a file,

2. and add configuration variable to point at it.

Instead, we can make this a one-step process by choosing a default value
which points to a filename in the user's $HOME, that is unlikely to
already exist on the system, and only use the presence of the file as a
cue that the user wants to use that feature.

And we use "${XDG_CONFIG_HOME:-$HOME/.config/git}/ignore" as such a
file, in the same directory as the newly added configuration file
("${XDG_CONFIG_HOME:-$HOME/.config/git}/config). The use of this
directory is in line with XDG specification as a location to store
such application specific files.

Signed-off-by: Huynh Khoi Nguyen Nguyen <Huynh-Khoi-Nguyen.Nguyen@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: Lucien Kong <Lucien.Kong@ensimag.imag.fr>
Signed-off-by: Thomas Nguy <Thomas.Nguy@ensimag.imag.fr>
Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

config: read (but not write) from $XDG_CONFIG_HOME... Huynh Khoi Nguyen Nguyen Fri, 22 Jun 2012 09:03:23 +0000 (11:03 +0200)

config: read (but not write) from $XDG_CONFIG_HOME/git/config file

Teach git to read the "gitconfig" information from a new location,
$XDG_CONFIG_HOME/git/config; this allows the user to avoid
cluttering $HOME with many per-application configuration files.

In the order of reading, this file comes between the global
configuration file (typically $HOME/.gitconfig) and the system wide
configuration file (typically /etc/gitconfig).

We do not write to this new location (yet).

If $XDG_CONFIG_HOME is either not set or empty, $HOME/.config/git/config
will be used. This is in line with XDG specification.

If the new file does not exist, the behavior is unchanged.

Signed-off-by: Huynh Khoi Nguyen Nguyen <Huynh-Khoi-Nguyen.Nguyen@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: Lucien Kong <Lucien.Kong@ensimag.imag.fr>
Signed-off-by: Thomas Nguy <Thomas.Nguy@ensimag.imag.fr>
Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t/README: add a bit more Don'tsJunio C Hamano Tue, 12 Jun 2012 16:44:56 +0000 (09:44 -0700)

t/README: add a bit more Don'ts

Add a few more advices that we often have to give to new test
writers.

Also update an example where a double quote pair is used to enclose
a test body to use a single quote pair, which is more readable and
more importantly gives saner semantics for variable substitution.

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

tests: enclose $PERL_PATH in double quotesJunio C Hamano Tue, 12 Jun 2012 16:49:59 +0000 (09:49 -0700)

tests: enclose $PERL_PATH in double quotes

Otherwise it will be split at a space after "Program" when it is set
to "\\Program Files\perl" or something silly like that.

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

t/test-lib.sh: export PERL_PATH for use in scriptsJunio C Hamano Mon, 25 Jun 2012 04:42:11 +0000 (21:42 -0700)

t/test-lib.sh: export PERL_PATH for use in scripts

Most notably, t4031 creates a small shell script that invokes perl
and we want to use "$PERL_PATH" to name the version of Perl suitable
for our use, read from GIT-BUILD-OPTS. The test would fail when it
is directly run in t/ directory from the shell or "make" is run in t/
directory.

This problem was hidden from "make test" run in the top-level
directory, because its Makefile exports PERL_PATH.

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>