Revision 40a18fc77ca3ba1b018f0fbdcbdf4a6d237aadf3 authored by Jeff King on 25 February 2017, 19:18:31 UTC, committed by Junio C Hamano on 27 February 2017, 18:35:24 UTC
This variable needs to be specified to make some types of
non-basic authentication work, but ideally this would just
work out of the box for everyone.

However, simply setting it to "1" by default introduces an
extra round-trip for cases where it _isn't_ useful. We end
up sending a bogus empty credential that the server rejects.

Instead, let's introduce an automatic mode, that works like
this:

  1. We won't try to send the bogus credential on the first
     request. We'll wait to get an HTTP 401, as usual.

  2. After seeing an HTTP 401, the empty-auth hack will kick
     in only when we know there is an auth method available
     that might make use of it (i.e., something besides
     "Basic" or "Digest").

That should make it work out of the box, without incurring
any extra round-trips for people hitting Basic-only servers.

This _does_ incur an extra round-trip if you really want to
use "Basic" but your server advertises other methods (the
emptyauth hack will kick in but fail, and then Git will
actually ask for a password).

The auto mode may incur an extra round-trip over setting
http.emptyauth=true, because part of the emptyauth hack is
to feed this blank password to curl even before we've made a
single request.

Helped-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
1 parent 840398f
History
File Mode Size
Documentation
block-sha1
builtin
ci
compat
contrib
ewah
git-gui
gitk-git
gitweb
mergetools
perl
po
ppc
refs
t
templates
vcs-svn
xdiff
.gitattributes -rw-r--r-- 114 bytes
.gitignore -rw-r--r-- 3.1 KB
.mailmap -rw-r--r-- 14.2 KB
.travis.yml -rw-r--r-- 3.1 KB
COPYING -rw-r--r-- 18.3 KB
GIT-VERSION-GEN -rwxr-xr-x 763 bytes
INSTALL -rw-r--r-- 8.9 KB
LGPL-2.1 -rw-r--r-- 26.2 KB
Makefile -rw-r--r-- 77.9 KB
README.md -rw-r--r-- 2.9 KB
RelNotes l--------- 33 bytes
abspath.c -rw-r--r-- 4.4 KB
aclocal.m4 -rw-r--r-- 1.4 KB
advice.c -rw-r--r-- 4.0 KB
advice.h -rw-r--r-- 967 bytes
alias.c -rw-r--r-- 1.5 KB
alloc.c -rw-r--r-- 2.6 KB
apply.c -rw-r--r-- 128.2 KB
apply.h -rw-r--r-- 3.9 KB
archive-tar.c -rw-r--r-- 12.3 KB
archive-zip.c -rw-r--r-- 15.4 KB
archive.c -rw-r--r-- 14.6 KB
archive.h -rw-r--r-- 1.3 KB
argv-array.c -rw-r--r-- 1.7 KB
argv-array.h -rw-r--r-- 689 bytes
attr.c -rw-r--r-- 19.8 KB
attr.h -rw-r--r-- 1.6 KB
base85.c -rw-r--r-- 2.8 KB
bisect.c -rw-r--r-- 25.0 KB
bisect.h -rw-r--r-- 713 bytes
blob.c -rw-r--r-- 389 bytes
blob.h -rw-r--r-- 664 bytes
branch.c -rw-r--r-- 9.2 KB
branch.h -rw-r--r-- 2.4 KB
builtin.h -rw-r--r-- 9.0 KB
bulk-checkin.c -rw-r--r-- 7.0 KB
bulk-checkin.h -rw-r--r-- 323 bytes
bundle.c -rw-r--r-- 12.3 KB
bundle.h -rw-r--r-- 707 bytes
cache-tree.c -rw-r--r-- 17.4 KB
cache-tree.h -rw-r--r-- 1.6 KB
cache.h -rw-r--r-- 71.0 KB
check-builtins.sh -rwxr-xr-x 596 bytes
check-racy.c -rw-r--r-- 523 bytes
check_bindir -rwxr-xr-x 374 bytes
color.c -rw-r--r-- 8.4 KB
color.h -rw-r--r-- 3.2 KB
column.c -rw-r--r-- 9.7 KB
column.h -rw-r--r-- 1.4 KB
combine-diff.c -rw-r--r-- 40.2 KB
command-list.txt -rw-r--r-- 8.9 KB
commit-slab.h -rw-r--r-- 4.7 KB
commit.c -rw-r--r-- 40.7 KB
commit.h -rw-r--r-- 13.4 KB
common-main.c -rw-r--r-- 1.1 KB
config.c -rw-r--r-- 62.1 KB
config.mak.in -rw-r--r-- 540 bytes
config.mak.uname -rw-r--r-- 16.7 KB
configure.ac -rw-r--r-- 35.2 KB
connect.c -rw-r--r-- 20.5 KB
connect.h -rw-r--r-- 676 bytes
connected.c -rw-r--r-- 3.0 KB
connected.h -rw-r--r-- 1.5 KB
convert.c -rw-r--r-- 40.5 KB
convert.h -rw-r--r-- 2.6 KB
copy.c -rw-r--r-- 1.3 KB
credential-cache--daemon.c -rw-r--r-- 6.9 KB
credential-cache.c -rw-r--r-- 2.9 KB
credential-store.c -rw-r--r-- 5.0 KB
credential.c -rw-r--r-- 7.8 KB
credential.h -rw-r--r-- 833 bytes
csum-file.c -rw-r--r-- 4.0 KB
csum-file.h -rw-r--r-- 1.3 KB
ctype.c -rw-r--r-- 2.6 KB
daemon.c -rw-r--r-- 32.1 KB
date.c -rw-r--r-- 27.1 KB
decorate.c -rw-r--r-- 1.8 KB
decorate.h -rw-r--r-- 400 bytes
delta.h -rw-r--r-- 3.4 KB
diff-delta.c -rw-r--r-- 15.4 KB
diff-lib.c -rw-r--r-- 14.6 KB
diff-no-index.c -rw-r--r-- 7.0 KB
diff.c -rw-r--r-- 142.2 KB
diff.h -rw-r--r-- 12.9 KB
diffcore-break.c -rw-r--r-- 9.0 KB
diffcore-delta.c -rw-r--r-- 5.3 KB
diffcore-order.c -rw-r--r-- 2.4 KB
diffcore-pickaxe.c -rw-r--r-- 6.1 KB
diffcore-rename.c -rw-r--r-- 17.6 KB
diffcore.h -rw-r--r-- 4.7 KB
dir-iterator.c -rw-r--r-- 4.8 KB
dir-iterator.h -rw-r--r-- 2.7 KB
dir.c -rw-r--r-- 71.0 KB
dir.h -rw-r--r-- 10.4 KB
editor.c -rw-r--r-- 1.5 KB
entry.c -rw-r--r-- 7.4 KB
environment.c -rw-r--r-- 9.7 KB
exec_cmd.c -rw-r--r-- 3.0 KB
exec_cmd.h -rw-r--r-- 540 bytes
fast-import.c -rw-r--r-- 88.8 KB
fetch-pack.c -rw-r--r-- 28.0 KB
fetch-pack.h -rw-r--r-- 1.1 KB
fmt-merge-msg.h -rw-r--r-- 187 bytes
fsck.c -rw-r--r-- 24.1 KB
fsck.h -rw-r--r-- 1.8 KB
generate-cmdlist.sh -rwxr-xr-x 929 bytes
gettext.c -rw-r--r-- 5.1 KB
gettext.h -rw-r--r-- 2.2 KB
git-add--interactive.perl -rwxr-xr-x 36.7 KB
git-archimport.perl -rwxr-xr-x 36.0 KB
git-bisect.sh -rwxr-xr-x 15.6 KB
git-compat-util.h -rw-r--r-- 28.8 KB
git-cvsexportcommit.perl -rwxr-xr-x 12.6 KB
git-cvsimport.perl -rwxr-xr-x 31.3 KB
git-cvsserver.perl -rwxr-xr-x 158.5 KB
git-difftool--helper.sh -rwxr-xr-x 2.2 KB
git-difftool.perl -rwxr-xr-x 12.4 KB
git-filter-branch.sh -rwxr-xr-x 12.5 KB
git-instaweb.sh -rwxr-xr-x 18.1 KB
git-merge-octopus.sh -rwxr-xr-x 2.4 KB
git-merge-one-file.sh -rwxr-xr-x 3.6 KB
git-merge-resolve.sh -rwxr-xr-x 944 bytes
git-mergetool--lib.sh -rw-r--r-- 8.7 KB
git-mergetool.sh -rwxr-xr-x 9.8 KB
git-p4.py -rwxr-xr-x 136.9 KB
git-parse-remote.sh -rw-r--r-- 2.6 KB
git-quiltimport.sh -rwxr-xr-x 3.5 KB
git-rebase--am.sh -rw-r--r-- 2.4 KB
git-rebase--interactive.sh -rw-r--r-- 34.5 KB
git-rebase--merge.sh -rw-r--r-- 3.8 KB
git-rebase.sh -rwxr-xr-x 15.7 KB
git-relink.perl -rwxr-xr-x 4.0 KB
git-remote-testgit.sh -rwxr-xr-x 2.9 KB
git-request-pull.sh -rwxr-xr-x 3.6 KB
git-send-email.perl -rwxr-xr-x 49.4 KB
git-sh-i18n.sh -rw-r--r-- 2.3 KB
git-sh-setup.sh -rw-r--r-- 9.1 KB
git-stash.sh -rwxr-xr-x 13.9 KB
git-submodule.sh -rwxr-xr-x 26.7 KB
git-svn.perl -rwxr-xr-x 62.6 KB
git-web--browse.sh -rwxr-xr-x 4.3 KB
git.c -rw-r--r-- 20.0 KB
git.rc -rw-r--r-- 566 bytes
gpg-interface.c -rw-r--r-- 6.3 KB
gpg-interface.h -rw-r--r-- 1.2 KB
graph.c -rw-r--r-- 35.5 KB
graph.h -rw-r--r-- 4.9 KB
grep.c -rw-r--r-- 43.3 KB
grep.h -rw-r--r-- 4.7 KB
hashmap.c -rw-r--r-- 6.3 KB
hashmap.h -rw-r--r-- 2.5 KB
help.c -rw-r--r-- 11.5 KB
help.h -rw-r--r-- 1.1 KB
hex.c -rw-r--r-- 2.5 KB
http-backend.c -rw-r--r-- 16.6 KB
http-fetch.c -rw-r--r-- 2.2 KB
http-push.c -rw-r--r-- 49.7 KB
http-walker.c -rw-r--r-- 14.0 KB
http.c -rw-r--r-- 58.9 KB
http.h -rw-r--r-- 6.5 KB
ident.c -rw-r--r-- 12.2 KB
imap-send.c -rw-r--r-- 35.7 KB
iterator.h -rw-r--r-- 2.1 KB
khash.h -rw-r--r-- 12.6 KB
kwset.c -rw-r--r-- 20.5 KB
kwset.h -rw-r--r-- 2.6 KB
levenshtein.c -rw-r--r-- 2.5 KB
levenshtein.h -rw-r--r-- 203 bytes
line-log.c -rw-r--r-- 30.6 KB
line-log.h -rw-r--r-- 1.8 KB
line-range.c -rw-r--r-- 6.5 KB
line-range.h -rw-r--r-- 1.3 KB
list-objects.c -rw-r--r-- 6.0 KB
list-objects.h -rw-r--r-- 381 bytes
list.h -rw-r--r-- 4.6 KB
ll-merge.c -rw-r--r-- 10.6 KB
ll-merge.h -rw-r--r-- 567 bytes
lockfile.c -rw-r--r-- 5.4 KB
lockfile.h -rw-r--r-- 10.2 KB
log-tree.c -rw-r--r-- 24.9 KB
log-tree.h -rw-r--r-- 1.2 KB
mailinfo.c -rw-r--r-- 26.0 KB
mailinfo.h -rw-r--r-- 991 bytes
mailmap.c -rw-r--r-- 8.9 KB
mailmap.h -rw-r--r-- 271 bytes
match-trees.c -rw-r--r-- 8.1 KB
merge-blobs.c -rw-r--r-- 1.9 KB
merge-blobs.h -rw-r--r-- 194 bytes
merge-recursive.c -rw-r--r-- 61.1 KB
merge-recursive.h -rw-r--r-- 1.6 KB
merge.c -rw-r--r-- 2.5 KB
mergesort.c -rw-r--r-- 1.5 KB
mergesort.h -rw-r--r-- 574 bytes
mru.c -rw-r--r-- 968 bytes
mru.h -rw-r--r-- 1.0 KB
name-hash.c -rw-r--r-- 5.9 KB
notes-cache.c -rw-r--r-- 2.2 KB
notes-cache.h -rw-r--r-- 500 bytes
notes-merge.c -rw-r--r-- 22.7 KB
notes-merge.h -rw-r--r-- 2.8 KB
notes-utils.c -rw-r--r-- 4.9 KB
notes-utils.h -rw-r--r-- 1.4 KB
notes.c -rw-r--r-- 36.7 KB
notes.h -rw-r--r-- 11.7 KB
object.c -rw-r--r-- 9.6 KB
object.h -rw-r--r-- 4.5 KB
pack-bitmap-write.c -rw-r--r-- 12.3 KB
pack-bitmap.c -rw-r--r-- 24.9 KB
pack-bitmap.h -rw-r--r-- 1.7 KB
pack-check.c -rw-r--r-- 5.2 KB
pack-objects.c -rw-r--r-- 2.1 KB
pack-objects.h -rw-r--r-- 2.0 KB
pack-revindex.c -rw-r--r-- 5.7 KB
pack-revindex.h -rw-r--r-- 323 bytes
pack-write.c -rw-r--r-- 10.2 KB
pack.h -rw-r--r-- 3.2 KB
pager.c -rw-r--r-- 5.7 KB
parse-options-cb.c -rw-r--r-- 5.2 KB
parse-options.c -rw-r--r-- 17.4 KB
parse-options.h -rw-r--r-- 9.9 KB
patch-delta.c -rw-r--r-- 2.2 KB
patch-ids.c -rw-r--r-- 3.1 KB
patch-ids.h -rw-r--r-- 596 bytes
path.c -rw-r--r-- 30.2 KB
pathspec.c -rw-r--r-- 14.3 KB
pathspec.h -rw-r--r-- 3.1 KB
pkt-line.c -rw-r--r-- 8.2 KB
pkt-line.h -rw-r--r-- 3.5 KB
preload-index.c -rw-r--r-- 2.5 KB
pretty.c -rw-r--r-- 44.9 KB
prio-queue.c -rw-r--r-- 1.9 KB
prio-queue.h -rw-r--r-- 1.5 KB
progress.c -rw-r--r-- 6.3 KB
progress.h -rw-r--r-- 504 bytes
prompt.c -rw-r--r-- 1.4 KB
prompt.h -rw-r--r-- 168 bytes
quote.c -rw-r--r-- 10.6 KB
quote.h -rw-r--r-- 2.8 KB
reachable.c -rw-r--r-- 4.8 KB
reachable.h -rw-r--r-- 304 bytes
read-cache.c -rw-r--r-- 62.4 KB
ref-filter.c -rw-r--r-- 44.0 KB
ref-filter.h -rw-r--r-- 3.3 KB
reflog-walk.c -rw-r--r-- 8.5 KB
reflog-walk.h -rw-r--r-- 792 bytes
refs.c -rw-r--r-- 37.6 KB
refs.h -rw-r--r-- 20.0 KB
remote-curl.c -rw-r--r-- 26.7 KB
remote-testsvn.c -rw-r--r-- 8.3 KB
remote.c -rw-r--r-- 58.5 KB
remote.h -rw-r--r-- 8.0 KB
replace_object.c -rw-r--r-- 3.0 KB
rerere.c -rw-r--r-- 31.0 KB
rerere.h -rw-r--r-- 1.2 KB
resolve-undo.c -rw-r--r-- 4.3 KB
resolve-undo.h -rw-r--r-- 612 bytes
revision.c -rw-r--r-- 91.6 KB
revision.h -rw-r--r-- 7.8 KB
run-command.c -rw-r--r-- 28.9 KB
run-command.h -rw-r--r-- 7.6 KB
send-pack.c -rw-r--r-- 14.8 KB
send-pack.h -rw-r--r-- 841 bytes
sequencer.c -rw-r--r-- 40.1 KB
sequencer.h -rw-r--r-- 1017 bytes
server-info.c -rw-r--r-- 5.7 KB
setup.c -rw-r--r-- 27.4 KB
sh-i18n--envsubst.c -rw-r--r-- 10.3 KB
sha1-array.c -rw-r--r-- 1.3 KB
sha1-array.h -rw-r--r-- 592 bytes
sha1-lookup.c -rw-r--r-- 9.2 KB
sha1-lookup.h -rw-r--r-- 403 bytes
sha1_file.c -rw-r--r-- 93.9 KB
sha1_name.c -rw-r--r-- 39.8 KB
shallow.c -rw-r--r-- 19.4 KB
shell.c -rw-r--r-- 4.8 KB
shortlog.h -rw-r--r-- 476 bytes
show-index.c -rw-r--r-- 2.2 KB
sideband.c -rw-r--r-- 3.1 KB
sideband.h -rw-r--r-- 259 bytes
sigchain.c -rw-r--r-- 1.1 KB
sigchain.h -rw-r--r-- 247 bytes
split-index.c -rw-r--r-- 9.0 KB
split-index.h -rw-r--r-- 1.1 KB
strbuf.c -rw-r--r-- 18.6 KB
strbuf.h -rw-r--r-- 19.3 KB
streaming.c -rw-r--r-- 11.8 KB
streaming.h -rw-r--r-- 507 bytes
string-list.c -rw-r--r-- 7.3 KB
string-list.h -rw-r--r-- 5.1 KB
submodule-config.c -rw-r--r-- 13.8 KB
submodule-config.h -rw-r--r-- 1.0 KB
submodule.c -rw-r--r-- 36.8 KB
submodule.h -rw-r--r-- 3.0 KB
symlinks.c -rw-r--r-- 9.3 KB
tag.c -rw-r--r-- 4.4 KB
tag.h -rw-r--r-- 608 bytes
tar.h -rw-r--r-- 644 bytes
tempfile.c -rw-r--r-- 8.2 KB
tempfile.h -rw-r--r-- 9.5 KB
thread-utils.c -rw-r--r-- 1.7 KB
thread-utils.h -rw-r--r-- 241 bytes
tmp-objdir.c -rw-r--r-- 6.4 KB
tmp-objdir.h -rw-r--r-- 1.5 KB
trace.c -rw-r--r-- 10.8 KB
trace.h -rw-r--r-- 3.6 KB
trailer.c -rw-r--r-- 24.5 KB
trailer.h -rw-r--r-- 170 bytes
transport-helper.c -rw-r--r-- 35.7 KB
transport.c -rw-r--r-- 30.6 KB
transport.h -rw-r--r-- 8.2 KB
tree-diff.c -rw-r--r-- 17.9 KB
tree-walk.c -rw-r--r-- 28.1 KB
tree-walk.h -rw-r--r-- 3.1 KB
tree.c -rw-r--r-- 6.2 KB
tree.h -rw-r--r-- 1.0 KB
unicode_width.h -rw-r--r-- 8.2 KB
unimplemented.sh -rw-r--r-- 101 bytes
unix-socket.c -rw-r--r-- 2.4 KB
unix-socket.h -rw-r--r-- 158 bytes
unpack-trees.c -rw-r--r-- 51.4 KB
unpack-trees.h -rw-r--r-- 2.2 KB
upload-pack.c -rw-r--r-- 26.9 KB
url.c -rw-r--r-- 2.4 KB
url.h -rw-r--r-- 492 bytes
urlmatch.c -rw-r--r-- 16.5 KB
urlmatch.h -rw-r--r-- 1.9 KB
usage.c -rw-r--r-- 4.0 KB
userdiff.c -rw-r--r-- 9.6 KB
userdiff.h -rw-r--r-- 780 bytes
utf8.c -rw-r--r-- 16.1 KB
utf8.h -rw-r--r-- 2.2 KB
varint.c -rw-r--r-- 660 bytes
varint.h -rw-r--r-- 168 bytes
version.c -rw-r--r-- 651 bytes
version.h -rw-r--r-- 180 bytes
versioncmp.c -rw-r--r-- 3.4 KB
walker.c -rw-r--r-- 7.4 KB
walker.h -rw-r--r-- 1.1 KB
wildmatch.c -rw-r--r-- 7.8 KB
wildmatch.h -rw-r--r-- 346 bytes
worktree.c -rw-r--r-- 9.1 KB
worktree.h -rw-r--r-- 2.2 KB
wrap-for-bin.sh -rw-r--r-- 819 bytes
wrapper.c -rw-r--r-- 14.5 KB
write_or_die.c -rw-r--r-- 1.5 KB
ws.c -rw-r--r-- 9.6 KB
wt-status.c -rw-r--r-- 62.1 KB
wt-status.h -rw-r--r-- 3.5 KB
xdiff-interface.c -rw-r--r-- 7.0 KB
xdiff-interface.h -rw-r--r-- 1.2 KB
zlib.c -rw-r--r-- 6.1 KB

README.md

back to top