gitweb.git
Merge branch 'jc/merge-bases'Junio C Hamano Tue, 11 Sep 2012 18:35:26 +0000 (11:35 -0700)

Merge branch 'jc/merge-bases'

Optimise the "merge-base" computation a bit, and also update its
users that do not need the full merge-base information to call a
cheaper subset.

* jc/merge-bases:
reduce_heads(): reimplement on top of remove_redundant()
merge-base: "--is-ancestor A B"
get_merge_bases_many(): walk from many tips in parallel
in_merge_bases(): use paint_down_to_common()
merge_bases_many(): split out the logic to paint history
in_merge_bases(): omit unnecessary redundant common ancestor reduction
http-push: use in_merge_bases() for fast-forward check
receive-pack: use in_merge_bases() for fast-forward check
in_merge_bases(): support only one "other" commit

Merge branch 'nd/i18n-index-pack'Junio C Hamano Tue, 11 Sep 2012 18:35:22 +0000 (11:35 -0700)

Merge branch 'nd/i18n-index-pack'

* nd/i18n-index-pack:
i18n: mark more index-pack strings for translation

Merge branch 'jc/maint-ident-missing-human-name'Junio C Hamano Tue, 11 Sep 2012 18:35:15 +0000 (11:35 -0700)

Merge branch 'jc/maint-ident-missing-human-name'

"git show --format='%ci'" did not give timestamp correctly for
commits created without human readable name on "committer" line.

* jc/maint-ident-missing-human-name:
split_ident_line(): make best effort when parsing author/committer line

Sync with maintJunio C Hamano Tue, 11 Sep 2012 18:31:26 +0000 (11:31 -0700)

Sync with maint

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

Further merging down for 1.7.12.1Junio C Hamano Tue, 11 Sep 2012 18:27:35 +0000 (11:27 -0700)

Further merging down for 1.7.12.1

We will wait for a handful of other fixes that have graduated to the
'master' for 1.8.0 to be tested in the wild and then tag 1.7.12.1:

. mz/cherry-pick-cmdline-order
. jk/maint-quiet-is-synonym-to-s-in-log
. jk/maint-http-half-auth-push
. jc/apply-binary-p0
. jk/config-warn-on-inaccessible-paths
. kk/maint-for-each-ref-multi-sort

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

Sync with 1.7.11.6Junio C Hamano Tue, 11 Sep 2012 18:23:45 +0000 (11:23 -0700)

Sync with 1.7.11.6

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

Merge branch 'js/use-sc-open-max' into maintJunio C Hamano Tue, 11 Sep 2012 18:23:06 +0000 (11:23 -0700)

Merge branch 'js/use-sc-open-max' into maint

* js/use-sc-open-max:
sha1_file.c: introduce get_max_fd_limit() helper

Merge branch 'js/no-curl-easy-strerror-on-old-curl... Junio C Hamano Tue, 11 Sep 2012 18:22:58 +0000 (11:22 -0700)

Merge branch 'js/no-curl-easy-strerror-on-old-curl' into maint

* js/no-curl-easy-strerror-on-old-curl:
http.c: don't use curl_easy_strerror prior to curl-7.12.0

Git 1.7.11.6 v1.7.11.6Junio C Hamano Tue, 11 Sep 2012 18:18:48 +0000 (11:18 -0700)

Git 1.7.11.6

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

Merge branch 'jc/maint-mergetool-style-fix' into maint... Junio C Hamano Tue, 11 Sep 2012 18:10:23 +0000 (11:10 -0700)

Merge branch 'jc/maint-mergetool-style-fix' into maint-1.7.11

* jc/maint-mergetool-style-fix:
mergetool: style fixes

Merge branch 'sz/submodule-force-update' into maint... Junio C Hamano Tue, 11 Sep 2012 18:10:17 +0000 (11:10 -0700)

Merge branch 'sz/submodule-force-update' into maint-1.7.11

* sz/submodule-force-update:
Make 'git submodule update --force' always check out submodules.

Merge branch 'ph/stash-rerere' into maint-1.7.11Junio C Hamano Tue, 11 Sep 2012 18:10:12 +0000 (11:10 -0700)

Merge branch 'ph/stash-rerere' into maint-1.7.11

* ph/stash-rerere:
stash: invoke rerere in case of conflict
test: git-stash conflict sets up rerere

Merge branch 'jc/maint-sane-execvp-notdir' into maint... Junio C Hamano Tue, 11 Sep 2012 18:09:19 +0000 (11:09 -0700)

Merge branch 'jc/maint-sane-execvp-notdir' into maint-1.7.11

* jc/maint-sane-execvp-notdir:
sane_execvp(): ignore non-directory on $PATH

Merge branch 'jc/maint-config-exit-status' into maint... Junio C Hamano Tue, 11 Sep 2012 18:09:09 +0000 (11:09 -0700)

Merge branch 'jc/maint-config-exit-status' into maint-1.7.11

* jc/maint-config-exit-status:
config: "git config baa" should exit with status 1

Merge branch 'mh/maint-config-doc-proxy-command' into... Junio C Hamano Tue, 11 Sep 2012 18:09:01 +0000 (11:09 -0700)

Merge branch 'mh/maint-config-doc-proxy-command' into maint-1.7.11

* mh/maint-config-doc-proxy-command:
git-config doc: unconfuse an example
git-config.txt: fix example

Merge branch 'hv/submodule-path-unmatch' into maint... Junio C Hamano Tue, 11 Sep 2012 18:08:55 +0000 (11:08 -0700)

Merge branch 'hv/submodule-path-unmatch' into maint-1.7.11

* hv/submodule-path-unmatch:
Let submodule command exit with error status if path does not exist

Merge branch 'mz/empty-rebase-test' into maint-1.7.11Junio C Hamano Tue, 11 Sep 2012 18:08:48 +0000 (11:08 -0700)

Merge branch 'mz/empty-rebase-test' into maint-1.7.11

* mz/empty-rebase-test:
add tests for 'git rebase --keep-empty'

Merge branch 'jk/docs-docbook-monospace-display' into... Junio C Hamano Tue, 11 Sep 2012 18:08:40 +0000 (11:08 -0700)

Merge branch 'jk/docs-docbook-monospace-display' into maint-1.7.11

* jk/docs-docbook-monospace-display:
docs: monospace listings in docbook output

Merge branch 'ab/diff-write-incomplete-line' into maint... Junio C Hamano Tue, 11 Sep 2012 18:08:30 +0000 (11:08 -0700)

Merge branch 'ab/diff-write-incomplete-line' into maint-1.7.11

* ab/diff-write-incomplete-line:
Fix '\ No newline...' annotation in rewrite diffs

Merge branch 'jc/maint-t7406-rev-parse-max-count-huh... Junio C Hamano Tue, 11 Sep 2012 18:08:18 +0000 (11:08 -0700)

Merge branch 'jc/maint-t7406-rev-parse-max-count-huh' into maint-1.7.11

* jc/maint-t7406-rev-parse-max-count-huh:
t7406: fix misleading "rev-parse --max-count=1 HEAD"

Merge branch 'rr/precompose-utf8-cleanup' into maintJunio C Hamano Tue, 11 Sep 2012 18:07:14 +0000 (11:07 -0700)

Merge branch 'rr/precompose-utf8-cleanup' into maint

* rr/precompose-utf8-cleanup:
precompose-utf8: do not call checks for non-ascii "utf8"
cleanup precompose_utf8

Merge branch 'jc/capabilities' into maintJunio C Hamano Tue, 11 Sep 2012 18:06:45 +0000 (11:06 -0700)

Merge branch 'jc/capabilities' into maint

* jc/capabilities:
fetch-pack: mention server version with verbose output
parse_feature_request: make it easier to see feature values
fetch-pack: do not ask for unadvertised capabilities
do not send client agent unless server does first
send-pack: fix capability-sending logic
include agent identifier in capability string

Merge branch 'jc/doc-git-updates' into maintJunio C Hamano Tue, 11 Sep 2012 18:06:19 +0000 (11:06 -0700)

Merge branch 'jc/doc-git-updates' into maint

* jc/doc-git-updates:
Documentation: update the introductory section

Merge branch 'jk/check-docs-update' into maintJunio C Hamano Tue, 11 Sep 2012 18:06:14 +0000 (11:06 -0700)

Merge branch 'jk/check-docs-update' into maint

* jk/check-docs-update:
check-docs: get documented command list from Makefile
check-docs: drop git-help special-case
check-docs: list git-gui as a command
check-docs: factor out command-list
command-list: mention git-credential-* helpers
command-list: add git-sh-i18n
check-docs: update non-command documentation list
check-docs: mention gitweb specially

Merge branch 'tr/void-diff-setup-done' into maint-1... Junio C Hamano Tue, 11 Sep 2012 17:53:40 +0000 (10:53 -0700)

Merge branch 'tr/void-diff-setup-done' into maint-1.7.11

* tr/void-diff-setup-done:
diff_setup_done(): return void

Merge branch 'tr/merge-recursive-flush' into maint... Junio C Hamano Tue, 11 Sep 2012 17:53:31 +0000 (10:53 -0700)

Merge branch 'tr/merge-recursive-flush' into maint-1.7.11

* tr/merge-recursive-flush:
merge-recursive: eliminate flush_buffer() in favor of write_in_full()

Merge branch 'nd/index-errno' into maint-1.7.11Junio C Hamano Tue, 11 Sep 2012 17:53:21 +0000 (10:53 -0700)

Merge branch 'nd/index-errno' into maint-1.7.11

* nd/index-errno:
read_index_from: remove bogus errno assignments

Merge branch 'pg/maint-apply-remove-unused-variable... Junio C Hamano Tue, 11 Sep 2012 17:53:11 +0000 (10:53 -0700)

Merge branch 'pg/maint-apply-remove-unused-variable' into maint-1.7.11

* pg/maint-apply-remove-unused-variable:
apply: delete unused deflate_origlen from patch struct

Merge branch 'jc/test-prereq' into maintJunio C Hamano Tue, 11 Sep 2012 17:51:58 +0000 (10:51 -0700)

Merge branch 'jc/test-prereq' into maint

* jc/test-prereq:
t3910: use the UTF8_NFD_TO_NFC test prereq
test-lib: provide UTF8 behaviour as a prerequisite
t0050: use the SYMLINKS test prereq
t0050: use the CASE_INSENSITIVE_FS test prereq
test-lib: provide case insensitivity as a prerequisite
test: allow prerequisite to be evaluated lazily
test: rename $satisfied to $satisfied_prereq

First half of the fifth batch for 1.8.0Junio C Hamano Mon, 10 Sep 2012 22:52:21 +0000 (15:52 -0700)

First half of the fifth batch for 1.8.0

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

Merge branch 'cn/branch-set-upstream-to'Junio C Hamano Mon, 10 Sep 2012 22:43:07 +0000 (15:43 -0700)

Merge branch 'cn/branch-set-upstream-to'

"git branch --set-upstream origin/master" is a common mistake to
create a local branch 'origin/master' and set it to integrate with
the current branch. With a plan to deprecate this option, introduce
"git branch (-u|--set-upstream-to) origin/master" that sets the
current branch to integrate with 'origin/master' remote tracking
branch.

* cn/branch-set-upstream-to:
branch: deprecate --set-upstream and show help if we detect possible mistaken use
branch: add --unset-upstream option
branch: introduce --set-upstream-to

Merge branch 'mz/cherry-pick-cmdline-order'Junio C Hamano Mon, 10 Sep 2012 22:42:54 +0000 (15:42 -0700)

Merge branch 'mz/cherry-pick-cmdline-order'

"git cherry-pick A C B" used to replay changes in A and then B and
then C if these three commits had committer timestamps in that
order, which is not what the user who said "A C B" naturally expects.

* mz/cherry-pick-cmdline-order:
cherry-pick/revert: respect order of revisions to pick
demonstrate broken 'git cherry-pick three one two'
teach log --no-walk=unsorted, which avoids sorting

Merge branch 'jk/maint-quiet-is-synonym-to-s-in-log'Junio C Hamano Mon, 10 Sep 2012 22:42:48 +0000 (15:42 -0700)

Merge branch 'jk/maint-quiet-is-synonym-to-s-in-log'

We tried to bend backwards to allow "--quiet" to be a synonym as
"-s" when given as e.g. "git show --quiet", but did not quite
succeed.

* jk/maint-quiet-is-synonym-to-s-in-log:
log: fix --quiet synonym for -s

Merge branch 'ph/credential-gnome-keyring'Junio C Hamano Mon, 10 Sep 2012 22:42:30 +0000 (15:42 -0700)

Merge branch 'ph/credential-gnome-keyring'

* ph/credential-gnome-keyring:
contrib: add credential helper for GnomeKeyring

Cull items fixed in maintenance branchesJunio C Hamano Mon, 10 Sep 2012 22:41:14 +0000 (15:41 -0700)

Cull items fixed in maintenance branches

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

Sync with "almost" 1.7.12.1Junio C Hamano Mon, 10 Sep 2012 22:40:07 +0000 (15:40 -0700)

Sync with "almost" 1.7.12.1

Start preparing for 1.7.12.1Junio C Hamano Mon, 10 Sep 2012 22:39:15 +0000 (15:39 -0700)

Start preparing for 1.7.12.1

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

Merge branch 'bc/prune-info' into maintJunio C Hamano Mon, 10 Sep 2012 22:37:37 +0000 (15:37 -0700)

Merge branch 'bc/prune-info' into maint

"git prune" without "-v" used to warn about leftover temporary
files (which is an indication of an earlier aborted operation).

* bc/prune-info:
prune.c: only print informational message in show_only or verbose mode

Merge branch 'maint-1.7.11' into maintJunio C Hamano Mon, 10 Sep 2012 22:31:06 +0000 (15:31 -0700)

Merge branch 'maint-1.7.11' into maint

* maint-1.7.11:
Almost 1.7.11.6
gitweb: URL-decode $my_url/$my_uri when stripping PATH_INFO
rebase -i: use full onto sha1 in reflog
sh-setup: protect from exported IFS
receive-pack: do not leak output from auto-gc to standard output
t/t5400: demonstrate breakage caused by informational message from prune
setup: clarify error messages for file/revisions ambiguity
send-email: improve RFC2047 quote parsing
fsck: detect null sha1 in tree entries
do not write null sha1s to on-disk index
diff: do not use null sha1 as a sentinel value

Almost 1.7.11.6Junio C Hamano Mon, 10 Sep 2012 22:30:46 +0000 (15:30 -0700)

Almost 1.7.11.6

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

Merge branch 'mg/rebase-i-onto-reflog-in-full' into... Junio C Hamano Mon, 10 Sep 2012 22:26:03 +0000 (15:26 -0700)

Merge branch 'mg/rebase-i-onto-reflog-in-full' into maint-1.7.11

The reflog entries left by "git rebase" and "git rebase -i" were
inconsistent (the interactive one gave an abbreviated object name).

* mg/rebase-i-onto-reflog-in-full:
rebase -i: use full onto sha1 in reflog

Merge branch 'jc/maint-protect-sh-from-ifs' into maint... Junio C Hamano Mon, 10 Sep 2012 22:25:45 +0000 (15:25 -0700)

Merge branch 'jc/maint-protect-sh-from-ifs' into maint-1.7.11

When the user exports a non-default IFS without HT, scripts that
rely on being able to parse "ls-files -s | while read a b c..."
start to fail. Protect them from such a misconfiguration.

* jc/maint-protect-sh-from-ifs:
sh-setup: protect from exported IFS

Merge branch 'bc/receive-pack-stdout-protection' into... Junio C Hamano Mon, 10 Sep 2012 22:25:09 +0000 (15:25 -0700)

Merge branch 'bc/receive-pack-stdout-protection' into maint-1.7.11

When "git push" triggered the automatic gc on the receiving end, a
message from "git prune" that said it was removing cruft leaked to
the standard output, breaking the communication protocol.

* bc/receive-pack-stdout-protection:
receive-pack: do not leak output from auto-gc to standard output
t/t5400: demonstrate breakage caused by informational message from prune

Merge branch 'jk/maint-null-in-trees' into maint-1... Junio C Hamano Mon, 10 Sep 2012 22:24:53 +0000 (15:24 -0700)

Merge branch 'jk/maint-null-in-trees' into maint-1.7.11

"git diff" had a confusion between taking data from a path in the
working tree and taking data from an object that happens to have
name 0{40} recorded in a tree.

* jk/maint-null-in-trees:
fsck: detect null sha1 in tree entries
do not write null sha1s to on-disk index
diff: do not use null sha1 as a sentinel value

Merge branch 'tr/maint-send-email-2047' into maint... Junio C Hamano Mon, 10 Sep 2012 22:24:40 +0000 (15:24 -0700)

Merge branch 'tr/maint-send-email-2047' into maint-1.7.11

"git send-email" did not unquote encoded words that appear on the
header correctly, and lost "_" from strings.

* tr/maint-send-email-2047:
send-email: improve RFC2047 quote parsing

Merge branch 'mm/die-with-dashdash-help' into maint... Junio C Hamano Mon, 10 Sep 2012 22:24:21 +0000 (15:24 -0700)

Merge branch 'mm/die-with-dashdash-help' into maint-1.7.11

When the user gives an argument that can be taken as both a
revision name and a pathname without disambiguating with "--", we
used to give a help message "Use '--' to separate". The message
has been clarified to show where that '--' goes on the command
line.

* mm/die-with-dashdash-help:
setup: clarify error messages for file/revisions ambiguity

Merge branch 'js/gitweb-path-info-unquote' into maint... Junio C Hamano Mon, 10 Sep 2012 22:23:46 +0000 (15:23 -0700)

Merge branch 'js/gitweb-path-info-unquote' into maint-1.7.11

"gitweb" when used with PATH_INFO failed to notice directories with
SP (and other characters that need URL-style quoting) in them.

* js/gitweb-path-info-unquote:
gitweb: URL-decode $my_url/$my_uri when stripping PATH_INFO

The fourth batch for 1.8.0Junio C Hamano Fri, 7 Sep 2012 18:25:22 +0000 (11:25 -0700)

The fourth batch for 1.8.0

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

Merge branch 'nd/branch-v-alignment'Junio C Hamano Fri, 7 Sep 2012 18:10:02 +0000 (11:10 -0700)

Merge branch 'nd/branch-v-alignment'

Output from "git branch -v" contains "(no branch)" that could be
localized, but the code to align it along with the names of branches
were counting in bytes, not in display columns.

* nd/branch-v-alignment:
branch -v: align even when branch names are in UTF-8

Merge branch 'jk/maint-http-half-auth-push'Junio C Hamano Fri, 7 Sep 2012 18:09:49 +0000 (11:09 -0700)

Merge branch 'jk/maint-http-half-auth-push'

Pushing to smart HTTP server with recent Git fails without having
the username in the URL to force authentication, if the server is
configured to allow GET anonymously, while requiring authentication
for POST.

* jk/maint-http-half-auth-push:
http: prompt for credentials on failed POST
http: factor out http error code handling
t: test http access to "half-auth" repositories
t: test basic smart-http authentication
t/lib-httpd: recognize */smart/* repos as smart-http
t/lib-httpd: only route auth/dumb to dumb repos
t5550: factor out http auth setup
t5550: put auth-required repo in auth/dumb

Merge branch 'jc/maint-doc-checkout-b-always-takes... Junio C Hamano Fri, 7 Sep 2012 18:09:36 +0000 (11:09 -0700)

Merge branch 'jc/maint-doc-checkout-b-always-takes-branch-name'

The synopsis said "checkout [-B branch]" to make it clear the branch
name is a parameter to the option, but the heading for the option
description was "-B::", not "-B branch::", making the documentation
misleading. There may be room in documentation pages of other
commands for similar improvements.

* jc/maint-doc-checkout-b-always-takes-branch-name:
doc: "git checkout -b/-B/--orphan" always takes a branch name

Merge branch 'jc/apply-binary-p0'Junio C Hamano Fri, 7 Sep 2012 18:09:26 +0000 (11:09 -0700)

Merge branch 'jc/apply-binary-p0'

"git apply -p0" did not parse pathnames on "diff --git" line
correctly. This caused patches that had pathnames in no other
places to be mistakenly rejected (most notably, binary patch that
does not rename nor change mode). Textual patches, renames or
mode changes have preimage and postimage pathnames in different
places in a form that can be parsed unambiguously and did not suffer
from this problem.

* jc/apply-binary-p0:
apply: compute patch->def_name correctly under -p0

Merge branch 'jc/dotdot-is-parent-directory'Junio C Hamano Fri, 7 Sep 2012 18:09:18 +0000 (11:09 -0700)

Merge branch 'jc/dotdot-is-parent-directory'

"git log .." errored out saying it is both rev range and a path when
there is no disambiguating "--" is on the command line. Update the
command line parser to interpret ".." as a path in such a case.

* jc/dotdot-is-parent-directory:
specifying ranges: we did not mean to make ".." an empty set

Merge branch 'nd/i18n-parseopt-help'Junio C Hamano Fri, 7 Sep 2012 18:09:09 +0000 (11:09 -0700)

Merge branch 'nd/i18n-parseopt-help'

A lot of i18n mark-up for the help text from "git <cmd> -h".

* nd/i18n-parseopt-help: (66 commits)
Use imperative form in help usage to describe an action
Reduce translations by using same terminologies
i18n: write-tree: mark parseopt strings for translation
i18n: verify-tag: mark parseopt strings for translation
i18n: verify-pack: mark parseopt strings for translation
i18n: update-server-info: mark parseopt strings for translation
i18n: update-ref: mark parseopt strings for translation
i18n: update-index: mark parseopt strings for translation
i18n: tag: mark parseopt strings for translation
i18n: symbolic-ref: mark parseopt strings for translation
i18n: show-ref: mark parseopt strings for translation
i18n: show-branch: mark parseopt strings for translation
i18n: shortlog: mark parseopt strings for translation
i18n: rm: mark parseopt strings for translation
i18n: revert, cherry-pick: mark parseopt strings for translation
i18n: rev-parse: mark parseopt strings for translation
i18n: reset: mark parseopt strings for translation
i18n: rerere: mark parseopt strings for translation
i18n: status: mark parseopt strings for translation
i18n: replace: mark parseopt strings for translation
...

Merge branch 'nd/am-i18n-fix'Junio C Hamano Fri, 7 Sep 2012 18:09:04 +0000 (11:09 -0700)

Merge branch 'nd/am-i18n-fix'

"git am" wasn't marked up for i18n properly.

* nd/am-i18n-fix:
am: quote string for translation before passing to eval_gettextln

Merge branch 'jk/config-warn-on-inaccessible-paths'Junio C Hamano Fri, 7 Sep 2012 18:08:56 +0000 (11:08 -0700)

Merge branch 'jk/config-warn-on-inaccessible-paths'

When looking for $HOME/.gitconfig etc., it is OK if we cannot read
them because they do not exist, but we did not diagnose existing
files that we cannot read.

* jk/config-warn-on-inaccessible-paths:
warn_on_inaccessible(): a helper to warn on inaccessible paths
attr: warn on inaccessible attribute files
gitignore: report access errors of exclude files
config: warn on inaccessible files

Merge branch 'kk/maint-for-each-ref-multi-sort'Junio C Hamano Fri, 7 Sep 2012 18:08:50 +0000 (11:08 -0700)

Merge branch 'kk/maint-for-each-ref-multi-sort'

"git for-each-ref" did not currectly support more than one --sort
option.

* kk/maint-for-each-ref-multi-sort:
for-each-ref: Fix sort with multiple keys
t6300: test sort with multiple keys

Merge branch 'lt/commit-tree-guess-utf-8'Junio C Hamano Fri, 7 Sep 2012 18:08:38 +0000 (11:08 -0700)

Merge branch 'lt/commit-tree-guess-utf-8'

Teach "git commit" and "git commit-tree" the "we are told to use
utf-8 in log message, but this does not look like utf-8---attempt to
pass it through convert-from-latin1-to-utf8 and see if it makes
sense" heuristics "git mailinfo" already uses.

* lt/commit-tree-guess-utf-8:
commit/commit-tree: correct latin1 to utf-8

Merge branch 'pw/p4-use-client-spec-branch-detection'Junio C Hamano Fri, 7 Sep 2012 18:08:27 +0000 (11:08 -0700)

Merge branch 'pw/p4-use-client-spec-branch-detection'

Fix "git p4" when "--use-client-spec" and "--detect-branches" are
used together (the command used to misdetect branches).

* pw/p4-use-client-spec-branch-detection:
git p4: make branch detection work with --use-client-spec
git p4: do wildcard decoding in stripRepoPath
git p4: set self.branchPrefixes in initialization
git p4 test: add broken --use-client-spec --detect-branches tests
git p4 test: move client_view() function to library

Merge branch 'tr/maint-parseopt-avoid-empty'Junio C Hamano Fri, 7 Sep 2012 18:08:10 +0000 (11:08 -0700)

Merge branch 'tr/maint-parseopt-avoid-empty'

A workaround to avoid doing _(""), which translates to unwanted
magic string in the .po files.

* tr/maint-parseopt-avoid-empty:
gettext: do not translate empty string

Merge branch 'nd/i18n-poison-test-updates'Junio C Hamano Fri, 7 Sep 2012 18:07:59 +0000 (11:07 -0700)

Merge branch 'nd/i18n-poison-test-updates'

Update tests that can be broken with gettext-poison builds.

* nd/i18n-poison-test-updates:
Fix tests under GETTEXT_POISON on parseopt
Fix tests under GETTEXT_POISON on git-remote
Fix tests under GETTEXT_POISON on pack-object
Fix tests under GETTEXT_POISON on git-apply
Fix tests under GETTEXT_POISON on diffstat
Fix tests under GETTEXT_POISON on git-stash
Fix tests under GETTEXT_POISON on relative dates

Update mailmap for a handful of folksJunio C Hamano Mon, 3 Sep 2012 23:24:23 +0000 (16:24 -0700)

Update mailmap for a handful of folks

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

The third batch for 1.8.0Junio C Hamano Mon, 3 Sep 2012 23:23:44 +0000 (16:23 -0700)

The third batch for 1.8.0

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

Merge branch 'js/use-sc-open-max'Junio C Hamano Mon, 3 Sep 2012 22:54:41 +0000 (15:54 -0700)

Merge branch 'js/use-sc-open-max'

Introduce get_max_fd_limit() to absorb platforms that do not have
getrlimit(RLIMIT_NOFILE) and/or sysconf(_SC_OPEN_MAX).

* js/use-sc-open-max:
sha1_file.c: introduce get_max_fd_limit() helper

Merge branch 'js/compat-mkdir'Junio C Hamano Mon, 3 Sep 2012 22:54:37 +0000 (15:54 -0700)

Merge branch 'js/compat-mkdir'

Some mkdir(2) implementations do not want to see trailing slash in
its parameter.

* js/compat-mkdir:
compat: some mkdir() do not like a slash at the end

Merge branch 'js/no-curl-easy-strerror-on-old-curl'Junio C Hamano Mon, 3 Sep 2012 22:54:30 +0000 (15:54 -0700)

Merge branch 'js/no-curl-easy-strerror-on-old-curl'

Done to support compilation on __TANDEM, but is independently useful
for people with older version of libcURL.

* js/no-curl-easy-strerror-on-old-curl:
http.c: don't use curl_easy_strerror prior to curl-7.12.0

Merge branch 'jc/maint-mergetool-style-fix'Junio C Hamano Mon, 3 Sep 2012 22:54:25 +0000 (15:54 -0700)

Merge branch 'jc/maint-mergetool-style-fix'

* jc/maint-mergetool-style-fix:
mergetool: style fixes

Merge branch 'sz/submodule-force-update'Junio C Hamano Mon, 3 Sep 2012 22:54:17 +0000 (15:54 -0700)

Merge branch 'sz/submodule-force-update'

"git submodule update --force" used to leave the working tree of the
submodule intact when there were local changes. It is more intiutive
to make "--force" a sign to run "checkout -f" to overwrite them.

* sz/submodule-force-update:
Make 'git submodule update --force' always check out submodules.

Merge branch 'ph/stash-rerere'Junio C Hamano Mon, 3 Sep 2012 22:54:12 +0000 (15:54 -0700)

Merge branch 'ph/stash-rerere'

"git stash" internally used "git merge-recursive" backend, which did
not trigger "rerere" upon conflicts unlike other mergy operations.

* ph/stash-rerere:
stash: invoke rerere in case of conflict
test: git-stash conflict sets up rerere

Merge branch 'jc/daemon-access-hook'Junio C Hamano Mon, 3 Sep 2012 22:54:03 +0000 (15:54 -0700)

Merge branch 'jc/daemon-access-hook'

Allow an external command to tell git-daemon to decline service
based on the client address, repository path, etc.

* jc/daemon-access-hook:
daemon: --access-hook option

Merge branch 'jc/send-email-reconfirm'Junio C Hamano Mon, 3 Sep 2012 22:53:54 +0000 (15:53 -0700)

Merge branch 'jc/send-email-reconfirm'

Validate interactive input to "git send-email" to avoid common
mistakes such as saying "y<RETURN>" to sender mail address whose
prompt is given with a correctly guessed default.

* jc/send-email-reconfirm:
send-email: validate & reconfirm interactive responses

Merge branch 'cw/cherry-pick-allow-empty-message'Junio C Hamano Mon, 3 Sep 2012 22:53:37 +0000 (15:53 -0700)

Merge branch 'cw/cherry-pick-allow-empty-message'

"git cherry-pick" by default stops when it sees a commit without any
log message. The "--allow-empty-message" option can be used to
silently proceed.

* cw/cherry-pick-allow-empty-message:
cherry-pick: add --allow-empty-message option

Merge branch 'jc/maint-sane-execvp-notdir'Junio C Hamano Mon, 3 Sep 2012 22:53:26 +0000 (15:53 -0700)

Merge branch 'jc/maint-sane-execvp-notdir'

"git foo" errored out with "Not a directory" when the user had a non
directory on $PATH, and worse yet it masked an alias "foo" to run.

* jc/maint-sane-execvp-notdir:
sane_execvp(): ignore non-directory on $PATH

Merge branch 'jc/maint-config-exit-status'Junio C Hamano Mon, 3 Sep 2012 22:53:06 +0000 (15:53 -0700)

Merge branch 'jc/maint-config-exit-status'

The exit status code from "git config" was way overspecified while
being incorrect. Update the implementation to give the documented
status for a case that was documented, and introduce a new code for
"all other errors".

* jc/maint-config-exit-status:
config: "git config baa" should exit with status 1

split_ident_line(): make best effort when parsing autho... Junio C Hamano Fri, 31 Aug 2012 21:54:18 +0000 (14:54 -0700)

split_ident_line(): make best effort when parsing author/committer line

Commits made by ancient version of Git allowed committer without
human readable name, like this (00213b17c in the kernel history):

tree 6947dba41f8b0e7fe7bccd41a4840d6de6a27079
parent 352dd1df32e672be4cff71132eb9c06a257872fe
author Petr Baudis <pasky@ucw.cz> 1135223044 +0100
committer <sam@mars.ravnborg.org> 1136151043 +0100

kconfig: Remove support for lxdialog --checklist

...

Signed-off-by: Petr Baudis <pasky@suse.cz>
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
When fed such a commit, --format='%ci' fails to parse it, and gives
back an empty string. Update the split_ident_line() to be a bit
more lenient when parsing, but make sure the caller that wants to
pick up sane value from its return value does its own validation.

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

i18n: mark more index-pack strings for translationNguyễn Thái Ngọc Duy Fri, 31 Aug 2012 12:13:04 +0000 (19:13 +0700)

i18n: mark more index-pack strings for translation

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

reduce_heads(): reimplement on top of remove_redundant()Junio C Hamano Fri, 31 Aug 2012 06:20:40 +0000 (23:20 -0700)

reduce_heads(): reimplement on top of remove_redundant()

This is used by "git merge" and "git merge-base --independent" but
used to use a similar N*(N-1) traversals to reject commits that are
ancestors of other commits.

Reimplement it on top of remove_redundant(). Note that the callers
of this function are allowed to pass the same commit more than once,
but remove_redundant() is designed to be fed each commit only once.
The function removes duplicates before calling remove_redundant().

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

merge-base: "--is-ancestor A B"Junio C Hamano Thu, 30 Aug 2012 21:52:20 +0000 (14:52 -0700)

merge-base: "--is-ancestor A B"

In many scripted Porcelain commands, we find this idiom:

if test "$(git rev-parse --verify A)" = "$(git merge-base A B)"
then
... A is an ancestor of B ...
fi

But you do not have to compute exact merge-base only to see if A is
an ancestor of B. Give them a more direct way to use the underlying
machinery.

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

get_merge_bases_many(): walk from many tips in parallelJunio C Hamano Thu, 30 Aug 2012 22:35:39 +0000 (15:35 -0700)

get_merge_bases_many(): walk from many tips in parallel

The get_merge_bases_many() function reduces the result returned by
the merge_bases_many() function, which is a set of possible merge
bases, by excluding commits that can be reached from other commits.
We used to do N*(N-1) traversals for this, but we can check if one
commit reaches which other (N-1) commits by a single traversal, and
repeat it for all the candidates to find the answer.

Introduce remove_redundant() helper function to do this painting; we
should be able to use it to reimplement reduce_heads() as well.

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

in_merge_bases(): use paint_down_to_common()Junio C Hamano Thu, 30 Aug 2012 22:04:13 +0000 (15:04 -0700)

in_merge_bases(): use paint_down_to_common()

With paint_down_to_common(), we can tell if "commit" is reachable
from "reference" by simply looking at its object flag, instead of
iterating over the merge bases.

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

merge_bases_many(): split out the logic to paint historyJunio C Hamano Thu, 30 Aug 2012 21:39:03 +0000 (14:39 -0700)

merge_bases_many(): split out the logic to paint history

Introduce a new helper function paint_down_to_common() that takes
the same parameters as merge_bases_many(), but without the first
optimization of not painting anything when "one" is one of the
"twos" (or vice versa), and the last clean-up of removing the common
ancestor that is known to be an ancestor of another common one.

This way, the caller of the new function could tell if "one" is
reachable from any of the "twos" by simply looking at the flag bits
of "one". If (and only if) it is painted in PARENT2, it is
reachable from one of the "twos".

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

cherry-pick/revert: respect order of revisions to pickMartin von Zweigbergk Wed, 29 Aug 2012 06:15:56 +0000 (23:15 -0700)

cherry-pick/revert: respect order of revisions to pick

When giving multiple individual revisions to cherry-pick or revert, as
in 'git cherry-pick A B' or 'git revert B A', one would expect them to
be picked/reverted in the order given on the command line. They are
instead ordered by their commit timestamp -- in chronological order
for "cherry-pick" and in reverse chronological order for
"revert". This matches the order in which one would usually give them
on the command line, making this bug somewhat hard to notice. Still,
it has been reported at least once before [1].

It seems like the chronological sorting happened by accident because
the revision walker has traditionally always sorted commits in reverse
chronological order when rev_info.no_walk was enabled. In the case of
'git revert B A' where B is newer than A, this sorting is a no-op. For
'git cherry-pick A B', the sorting would reverse the arguments, but
because the sequencer also flips the rev_info.reverse flag when
picking (as opposed to reverting), the end result is a chronological
order. The rev_info.reverse flag was probably flipped so that the
revision walker emits B before C in 'git cherry-pick A..C'; that it
happened to effectively undo the unexpected sorting done when not
walking, was probably a coincidence that allowed this bug to happen at
all.

Fix the bug by telling the revision walker not to sort the commits
when not walking. The only case we want to reverse the order is now
when cherry-picking and walking revisions (rev_info.no_walk = 0).

[1] http://thread.gmane.org/gmane.comp.version-control.git/164794

Signed-off-by: Martin von Zweigbergk <martinvonz@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

demonstrate broken 'git cherry-pick three one two'Martin von Zweigbergk Wed, 29 Aug 2012 06:15:55 +0000 (23:15 -0700)

demonstrate broken 'git cherry-pick three one two'

Cherry-picking commits out of order (w.r.t. commit time stamp) doesn't
currently work. Add a test case to demonstrate it.

Signed-off-by: Martin von Zweigbergk <martinvonz@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

teach log --no-walk=unsorted, which avoids sortingMartin von Zweigbergk Wed, 29 Aug 2012 06:15:54 +0000 (23:15 -0700)

teach log --no-walk=unsorted, which avoids sorting

When 'git log' is passed the --no-walk option, no revision walk takes
place, naturally. Perhaps somewhat surprisingly, however, the provided
revisions still get sorted by commit date. So e.g 'git log --no-walk
HEAD HEAD~1' and 'git log --no-walk HEAD~1 HEAD' give the same result
(unless the two revisions share the commit date, in which case they
will retain the order given on the command line). As the commit that
introduced --no-walk (8e64006 (Teach revision machinery about
--no-walk, 2007-07-24)) points out, the sorting is intentional, to
allow things like

git log --abbrev-commit --pretty=oneline --decorate --all --no-walk

to show all refs in order by commit date.

But there are also other cases where the sorting is not wanted, such
as

<command producing revisions in order> |
git log --oneline --no-walk --stdin

To accomodate both cases, leave the decision of whether or not to sort
up to the caller, by allowing --no-walk={sorted,unsorted}, defaulting
to 'sorted' for backward-compatibility reasons.

Signed-off-by: Martin von Zweigbergk <martinvonz@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

branch: deprecate --set-upstream and show help if we... Carlos Martín Nieto Thu, 30 Aug 2012 17:23:13 +0000 (19:23 +0200)

branch: deprecate --set-upstream and show help if we detect possible mistaken use

This interface is error prone, and a better one (--set-upstream-to)
exists. Add a message listing the alternatives and suggest how to fix
a --set-upstream invocation in case the user only gives one argument
which causes a local branch with the same name as a remote-tracking
one to be created. The typical case is

git branch --set-upstream origin/master

when the user meant

git branch --set-upstream master origin/master

assuming that the current branch is master. Show a message telling the
user how to undo their action and get what they wanted. For the
command above, the message would be

The --set-upstream flag is deprecated and will be removed. Consider using --track or --set-upstream-to
Branch origin/master set up to track local branch master.

If you wanted to make 'master' track 'origin/master', do this:

git branch -d origin/master
git branch --set-upstream-to origin/master

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

branch: add --unset-upstream optionCarlos Martín Nieto Thu, 30 Aug 2012 17:23:12 +0000 (19:23 +0200)

branch: add --unset-upstream option

We have ways of setting the upstream information, but if we want to
unset it, we need to resort to modifying the configuration manually.

Teach branch an --unset-upstream option that unsets this information.

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

Latter half of the second batch for 1.8.0Junio C Hamano Wed, 29 Aug 2012 22:00:30 +0000 (15:00 -0700)

Latter half of the second batch for 1.8.0

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

Merge branch 'rr/precompose-utf8-cleanup'Junio C Hamano Wed, 29 Aug 2012 21:50:35 +0000 (14:50 -0700)

Merge branch 'rr/precompose-utf8-cleanup'

* rr/precompose-utf8-cleanup:
precompose-utf8: do not call checks for non-ascii "utf8"
cleanup precompose_utf8

Merge branch 'mh/maint-config-doc-proxy-command'Junio C Hamano Wed, 29 Aug 2012 21:50:30 +0000 (14:50 -0700)

Merge branch 'mh/maint-config-doc-proxy-command'

* mh/maint-config-doc-proxy-command:
git-config doc: unconfuse an example
git-config.txt: fix example

Merge branch 'ef/win32-cred-helper'Junio C Hamano Wed, 29 Aug 2012 21:50:24 +0000 (14:50 -0700)

Merge branch 'ef/win32-cred-helper'

Credential helper for Win32 to allow access to the keychain of
the logged-in user.

* ef/win32-cred-helper:
contrib: add win32 credential-helper

Merge branch 'hv/submodule-path-unmatch'Junio C Hamano Wed, 29 Aug 2012 21:50:15 +0000 (14:50 -0700)

Merge branch 'hv/submodule-path-unmatch'

* hv/submodule-path-unmatch:
Let submodule command exit with error status if path does not exist

Merge branch 'jc/capabilities'Junio C Hamano Wed, 29 Aug 2012 21:50:07 +0000 (14:50 -0700)

Merge branch 'jc/capabilities'

Some capabilities were asked by fetch-pack even when upload-pack did
not advertise that they are available. Fix fetch-pack not to do so.

* jc/capabilities:
fetch-pack: mention server version with verbose output
parse_feature_request: make it easier to see feature values
fetch-pack: do not ask for unadvertised capabilities
do not send client agent unless server does first
send-pack: fix capability-sending logic
include agent identifier in capability string

Merge branch 'mg/rebase-i-onto-reflog-in-full'Junio C Hamano Wed, 29 Aug 2012 21:50:01 +0000 (14:50 -0700)

Merge branch 'mg/rebase-i-onto-reflog-in-full'

The reflog entries left by "git rebase" and "git rebase -i" were
inconsistent.

* mg/rebase-i-onto-reflog-in-full:
rebase -i: use full onto sha1 in reflog

Merge branch 'mz/empty-rebase-test'Junio C Hamano Wed, 29 Aug 2012 21:49:57 +0000 (14:49 -0700)

Merge branch 'mz/empty-rebase-test'

* mz/empty-rebase-test:
add tests for 'git rebase --keep-empty'

Merge branch 'jc/maint-protect-sh-from-ifs'Junio C Hamano Wed, 29 Aug 2012 21:49:45 +0000 (14:49 -0700)

Merge branch 'jc/maint-protect-sh-from-ifs'

When the user exports a non-default IFS without HT, scripts that
rely on being able to parse "ls-files -s | while read a b c..."
start to fail. Protect them from such a misconfiguration.

* jc/maint-protect-sh-from-ifs:
sh-setup: protect from exported IFS

Merge branch 'bc/prune-info'Junio C Hamano Wed, 29 Aug 2012 21:49:39 +0000 (14:49 -0700)

Merge branch 'bc/prune-info'

Teach "git prune" without "-v" to be silent about leftover temporary
files.

* bc/prune-info:
prune.c: only print informational message in show_only or verbose mode

Merge branch 'mz/cherry-code-cleanup'Junio C Hamano Wed, 29 Aug 2012 21:49:29 +0000 (14:49 -0700)

Merge branch 'mz/cherry-code-cleanup'

Minor code clean-up on the cherry-pick codepath.

* mz/cherry-code-cleanup:
cherry: remove redundant check for merge commit
cherry: don't set ignored rev_info options
remove unnecessary parameter from get_patch_ids()

log: fix --quiet synonym for -sJeff King Tue, 28 Aug 2012 21:29:34 +0000 (17:29 -0400)

log: fix --quiet synonym for -s

Originally the "--quiet" option was parsed by the
diff-option parser into the internal QUICK option. This had
the effect of silencing diff output from the log (which was
not intended, but happened to work and people started to
use it). But it also had other odd side effects at the diff
level (for example, it would suppress the second commit in
"git show A B").

To fix this, commit 1c40c36 converted log to parse-options
and handled the "quiet" option separately, not passing it
on to the diff code. However, it simply ignored the option,
which was a regression for people using it as a synonym for
"-s". Commit 01771a8 then fixed that by interpreting the
option to add DIFF_FORMAT_NO_OUTPUT to the list of output
formats.

However, that commit did not fix it in all cases. It sets
the flag after setup_revisions is called. Naively, this
makes sense because you would expect the setup_revisions
parser to overwrite our output format flag if "-p" or
another output format flag is seen.

However, that is not how the NO_OUTPUT flag works. We
actually store it in the bit-field as just another format.
At the end of setup_revisions, we call diff_setup_done,
which post-processes the bitfield and clears any other
formats if we have set NO_OUTPUT. By setting the flag after
setup_revisions is done, diff_setup_done does not have a
chance to make this tweak, and we end up with other format
options still set.

As a result, the flag would have no effect in "git log -p
--quiet" or "git show --quiet". Fix it by setting the
format flag before the call to setup_revisions.

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

in_merge_bases(): omit unnecessary redundant common... Thomas Rast Thu, 23 Aug 2012 14:20:41 +0000 (16:20 +0200)

in_merge_bases(): omit unnecessary redundant common ancestor reduction

The function get_merge_bases() needs to postprocess the result from
merge_bases_many() in order to make sure none of the commit is a
true ancestor of another commit, which is expensive. However, when
checking if a commit is an ancestor of another commit, we only need
to see if the commit is a common ancestor between the two, and do
not have to care if other common ancestors merge_bases_many() finds
are true merge bases or an ancestor of another merge base.

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

http-push: use in_merge_bases() for fast-forward checkJunio C Hamano Mon, 27 Aug 2012 22:21:37 +0000 (15:21 -0700)

http-push: use in_merge_bases() for fast-forward check

The original computed merge-base between HEAD and the remote ref and
checked if the remote ref is a merge base between them, in order to
make sure that we are fast-forwarding.

Instead, call in_merge_bases(remote, HEAD) which does the same.

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