git-commit-vandalism/builtin
Jeff King c1921c184c clone: always fetch remote HEAD
In most cases, fetching the remote HEAD explicitly is
unnecessary. It's just a symref pointing to a branch which
we are already fetching, so we will already ask for its sha1.

However, if the remote has a detached HEAD, things are less
certain. We do not ask for HEAD's sha1, but we do try to
write it into a local detached HEAD. In most cases this is
fine, as the remote HEAD is pointing to some part of the
history graph that we will fetch via the refs.

But if the remote HEAD points to an "orphan" commit (one
which was is not an ancestor of any refs), then we will not
have the object, and update_ref will complain when we try to
write the detached HEAD, aborting the whole clone.

This patch makes clone always explicitly ask the remote for
the sha1 of its HEAD commit. In the non-detached case, this
is a no-op, as we were going to ask for that sha1 anyway. In
the regular detached case, this will add an extra "want" to
the protocol negotiation, but will not change the history
that gets sent. And in the detached orphan case, we will
fetch the orphaned history so that we can write it into our
local detached HEAD.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-06-07 16:16:59 -07:00
..
add.c standardize brace placement in struct definitions 2011-03-16 12:49:02 -07:00
annotate.c
apply.c Merge branch 'jc/maint-apply-report-offset' into maint 2011-04-01 16:20:19 -07:00
archive.c
bisect--helper.c
blame.c standardize brace placement in struct definitions 2011-03-16 12:49:02 -07:00
branch.c branch: split off function that writes tracking info and commit subject 2011-03-16 12:52:15 -07:00
bundle.c
cat-file.c
check-attr.c
check-ref-format.c
checkout-index.c Merge branch 'jn/git-cmd-h-bypass-setup' 2010-12-12 21:49:50 -08:00
checkout.c Merge "checkout ambiguous ref bugfix" into maint 2011-04-01 16:16:51 -07:00
clean.c Merge branch 'rs/opt-help-text' 2010-11-24 15:55:19 -08:00
clone.c clone: always fetch remote HEAD 2011-06-07 16:16:59 -07:00
commit-tree.c
commit.c Merge branch 'jc/index-update-if-able' into maint 2011-04-03 12:33:05 -07:00
config.c Merge branch 'lp/config-vername-check' into maint 2011-04-03 12:29:45 -07:00
count-objects.c
describe.c Merge branch 'lt/default-abbrev' into maint 2011-04-03 12:32:51 -07:00
diff-files.c
diff-index.c
diff-tree.c
diff.c Merge branch 'jc/index-update-if-able' into maint 2011-04-03 12:33:05 -07:00
fast-export.c Make <identifier> lowercase as per CodingGuidelines 2011-02-15 11:53:10 -08:00
fetch-pack.c commit: Add commit_list prefix in two function names. 2010-11-29 14:01:52 -08:00
fetch.c Make <identifier> lowercase as per CodingGuidelines 2011-02-15 11:53:10 -08:00
fmt-merge-msg.c
for-each-ref.c
fsck.c fsck: do not give up too early in fsck_dir() 2011-01-27 12:58:15 -08:00
gc.c Merge branch 'jn/git-cmd-h-bypass-setup' 2010-12-12 21:49:50 -08:00
grep.c grep: Add the option '--line-number' 2011-03-28 14:02:12 -07:00
hash-object.c
help.c
index-pack.c standardize brace placement in struct definitions 2011-03-16 12:49:02 -07:00
init-db.c init: remove unnecessary check 2011-03-03 15:45:10 -08:00
log.c Merge branch 'mm/maint-log-n-with-diff-filtering' into maint 2011-04-03 12:31:59 -07:00
ls-files.c Merge branch 'jn/git-cmd-h-bypass-setup' 2010-12-12 21:49:50 -08:00
ls-remote.c
ls-tree.c
mailinfo.c
mailsplit.c
merge-base.c
merge-file.c Merge branch 'rs/opt-help-text' 2010-11-24 15:55:19 -08:00
merge-index.c
merge-ours.c
merge-recursive.c
merge-tree.c
merge.c Merge branch 'mg/placeholders-are-lowercase' into maint 2011-03-16 16:47:25 -07:00
mktag.c
mktree.c
mv.c
name-rev.c
notes.c Make <identifier> lowercase as per CodingGuidelines 2011-02-15 11:53:10 -08:00
pack-objects.c thread-utils.h: simplify the inclusion 2010-12-10 12:58:06 -08:00
pack-redundant.c
pack-refs.c
patch-id.c git-patch-id: do not trip over "no newline" markers 2011-02-17 11:56:50 -08:00
prune-packed.c
prune.c
push.c push.default: Rename 'tracking' to 'upstream' 2011-02-16 10:21:52 -08:00
read-tree.c Make <identifier> lowercase as per CodingGuidelines 2011-02-15 11:53:10 -08:00
receive-pack.c
reflog.c
remote-ext.c remote-ext: do not segfault for blank lines 2011-01-18 10:18:25 -08:00
remote-fd.c remote-fd/ext: finishing touches after code review 2010-11-19 11:04:20 -08:00
remote.c Merge branch 'rs/opt-help-text' 2010-11-24 15:55:19 -08:00
replace.c
rerere.c
reset.c
rev-list.c Merge branch 'jk/maint-rev-list-nul' into maint 2010-11-24 12:46:32 -08:00
rev-parse.c
revert.c Merge branch 'jn/cherry-pick-refresh-index' into maint 2010-12-09 10:36:51 -08:00
rm.c builtin/rm.c: Use ALLOC_GROW instead of alloc_nr and xrealloc. 2010-12-19 10:44:06 -08:00
send-pack.c Merge branch 'jk/git-connection-deadlock-fix' into maint-1.7.4 2011-05-26 10:28:10 -07:00
shortlog.c parse-options: Don't call parse_options_check() so much 2010-12-06 16:51:36 -08:00
show-branch.c commit: Add commit_list prefix in two function names. 2010-11-29 14:01:52 -08:00
show-ref.c
stripspace.c
symbolic-ref.c
tag.c Make <identifier> lowercase as per CodingGuidelines 2011-02-15 11:53:10 -08:00
tar-tree.c
unpack-file.c
unpack-objects.c
update-index.c Merge branch 'jn/parse-options-extra' 2010-12-12 21:49:53 -08:00
update-ref.c
update-server-info.c
upload-archive.c
var.c
verify-pack.c
verify-tag.c Merge branch 'mg/maint-tag-rfc1991' 2010-12-08 11:24:13 -08:00
write-tree.c