git-commit-vandalism/builtin
Joey Hess 96890f4c42 write first for-merge ref to FETCH_HEAD first
The FETCH_HEAD refname is supposed to refer to the ref that was fetched
and should be merged. However all fetched refs are written to
.git/FETCH_HEAD in an arbitrary order, and resolve_ref_unsafe simply
takes the first ref as the FETCH_HEAD, which is often the wrong one,
when other branches were also fetched.

The solution is to write the for-merge ref(s) to FETCH_HEAD first.
Then, unless --append is used, the FETCH_HEAD refname behaves as intended.
If the user uses --append, they presumably are doing so in order to
preserve the old FETCH_HEAD.

While we are at it, update an old example in the read-tree documentation
that implied that each entry in FETCH_HEAD only has the object name, which
is not true for quite a while.

[jc: adjusted tests]

Signed-off-by: Joey Hess <joey@kitenet.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-01-03 16:13:14 -08:00
..
add.c bulk-checkin: replace fast-import based implementation 2011-12-01 11:46:09 -08:00
annotate.c
apply.c Merge branch 'bc/maint-apply-check-no-patch' into maint 2011-12-21 11:42:45 -08:00
archive.c Revert "upload-archive: use start_command instead of fork" 2011-11-15 15:39:33 -08:00
bisect--helper.c bisect: introduce support for --no-checkout option. 2011-08-04 15:34:32 -07:00
blame.c Merge branch 'maint-1.7.7' into maint 2011-12-13 21:58:51 -08:00
branch.c Merge branch 'nd/resolve-ref' 2011-12-19 16:05:50 -08:00
bundle.c
cat-file.c
check-attr.c Merge branch 'bc/attr-ignore-case' 2011-10-17 21:37:14 -07:00
check-ref-format.c
checkout-index.c
checkout.c Merge branch 'jc/checkout-m-twoway' 2011-12-19 16:06:22 -08:00
clean.c
clone.c clone: the -o option has nothing to do with <branch> 2011-12-21 11:26:30 -08:00
commit-tree.c Merge branch 'nd/war-on-nul-in-commit' 2011-12-22 11:27:26 -08:00
commit.c Merge branch 'jk/maint-strbuf-missing-init' 2011-12-22 11:27:31 -08:00
config.c Merge branch 'mm/maint-config-explicit-bool-display' into maint 2011-10-21 10:49:24 -07:00
count-objects.c
describe.c
diff-files.c
diff-index.c
diff-tree.c
diff.c use struct sha1_array in diff_tree_combined() 2011-12-17 18:21:37 -08:00
fast-export.c Fix an enum assignment issue spotted by Sun Studio 2011-12-21 10:19:04 -08:00
fetch-pack.c fetch-pack: match refs exactly 2011-12-13 10:17:50 -08:00
fetch.c write first for-merge ref to FETCH_HEAD first 2012-01-03 16:13:14 -08:00
fmt-merge-msg.c Convert resolve_ref+xstrdup to new resolve_refdup function 2011-12-13 09:26:52 -08:00
for-each-ref.c Convert resolve_ref+xstrdup to new resolve_refdup function 2011-12-13 09:26:52 -08:00
fsck.c Rename resolve_ref() to resolve_ref_unsafe() 2011-12-13 09:39:46 -08:00
gc.c prune: handle --progress/no-progress 2011-11-07 22:12:19 -08:00
grep.c grep: disable threading in non-worktree case 2011-12-16 15:47:25 -08:00
hash-object.c
help.c
index-pack.c Appease Sun Studio by renaming "tmpfile" 2011-12-21 10:21:04 -08:00
init-db.c builtin/init-db.c: eliminate -Wformat warning on Solaris 2011-12-20 16:02:08 -08:00
log.c Sync with v1.7.8.1 2011-12-21 12:02:44 -08:00
ls-files.c
ls-remote.c
ls-tree.c
mailinfo.c
mailsplit.c
merge-base.c
merge-file.c
merge-index.c
merge-ours.c
merge-recursive.c
merge-tree.c
merge.c Merge branch 'jk/maint-strbuf-missing-init' 2011-12-22 11:27:31 -08:00
mktag.c
mktree.c Merge "Move 'builtin-*' into a 'builtin/' subdirectory" 2011-11-10 09:10:51 -08:00
mv.c Merge branch 'jk/maint-mv' 2011-12-19 16:05:34 -08:00
name-rev.c Merge branch 'jc/maint-name-rev-all' into maint-1.7.6 2011-12-13 21:12:34 -08:00
notes.c Merge branch 'nd/war-on-nul-in-commit' 2011-12-22 11:27:26 -08:00
pack-objects.c Merge branch 'jc/stream-to-pack' 2011-12-16 22:33:40 -08:00
pack-redundant.c
pack-refs.c
patch-id.c
prune-packed.c
prune.c prune: handle --progress/no-progress 2011-11-07 22:12:19 -08:00
push.c
read-tree.c
receive-pack.c Rename resolve_ref() to resolve_ref_unsafe() 2011-12-13 09:39:46 -08:00
reflog.c prune: show progress while marking reachable objects 2011-11-07 22:12:19 -08:00
remote-ext.c
remote-fd.c
remote.c Rename resolve_ref() to resolve_ref_unsafe() 2011-12-13 09:39:46 -08:00
replace.c Convert many resolve_ref() calls to read_ref*() and ref_exists() 2011-11-13 12:21:06 -08:00
rerere.c
reset.c reset: update cache-tree data when appropriate 2011-12-06 15:13:39 -08:00
rev-list.c
rev-parse.c
revert.c Merge branch 'rr/revert-cherry-pick' 2011-12-22 15:30:22 -08:00
rm.c
send-pack.c drop "match" parameter from get_remote_heads 2011-12-13 10:08:24 -08:00
shortlog.c
show-branch.c Rename resolve_ref() to resolve_ref_unsafe() 2011-12-13 09:39:46 -08:00
show-ref.c Convert many resolve_ref() calls to read_ref*() and ref_exists() 2011-11-13 12:21:06 -08:00
stripspace.c Update documentation for stripspace 2011-12-12 16:48:54 -08:00
symbolic-ref.c Rename resolve_ref() to resolve_ref_unsafe() 2011-12-13 09:39:46 -08:00
tag.c Merge branch 'ks/tag-cleanup' 2011-12-13 23:07:47 -08:00
tar-tree.c
unpack-file.c
unpack-objects.c
update-index.c
update-ref.c
update-server-info.c
upload-archive.c upload-archive: use start_command instead of fork 2011-11-21 14:32:40 -08:00
var.c
verify-pack.c
verify-tag.c Split GPG interface into its own helper library 2011-11-04 21:40:25 -07:00
write-tree.c