Junio, this is a big series, so let me explain. Patches 1-5 are js/remote-set-head, but rebased on master (2d602e9). I did this because patch 18 in this series depends on commit cfa1ee6 which is now in master, but was not when you originally spawned js/remote-set-head. I also corrected two failing tests in #3. Patches 6-18 are the 13 patch series I sent out earlier, directly on-top of 1-5, instead of on pu. I incorporated the feedback I received, and re-ordered the patches to put all the refactoring, as well as non-builtin-remote changes, first among the 13. Patches 19-23 are jk/head-lookup, now based at the end of my changes. Previously they were effectively between 1-5 and 6-18. You might consider applying #6 (make match_refs() copy src...) independently to master if it is obvious enough, but in any case it has to come before #18 in this series. I wasn't sure what to do about the SOB on the rebased patches, so I kept Jeff's, removed yours, and added my own. Please correct me if this was the wrong thing to do. Finally, I've and compiled and run t5505-remote.sh after each individual commit, as well as the entire default test suite (but w/NO_SVN_TESTS=YesPlease) after #10 and #23. Thank you for your patience with this topic. j. Jay Soffian (18): builtin-clone: move locate_head() to remote.c so it can be re-used builtin-remote: move duplicated cleanup code its own function builtin-remote: teach show to display remote HEAD builtin-remote: add set-head subcommand builtin-remote: better handling of multiple remote HEADs remote.c: make match_refs() copy src ref before assigning to peer_ref remote.c: don't short-circuit match_refs() when error in match_explicit_refs() refactor duplicated get_local_heads() to remote.c refactor duplicated ref_newer() to remote.c string-list: new for_each_string_list() function builtin-remote: rename variable and eliminate redundant function call builtin-remote: name remote_refs consistently builtin-remote: remove unused code in get_ref_states builtin-remote: fix two inconsistencies in the output of "show <remote>" builtin-remote: make get_remote_ref_states() always populate states.tracked builtin-remote: refactor get_remote_ref_states() builtin-remote: new show output style builtin-remote: new show output style for push refspecs Jeff King (5): test scripts: refactor start_httpd helper add basic http clone/fetch tests refactor find_refs_by_name to accept const list remote: refactor guess_remote_head remote: use exact HEAD lookup if it is available Documentation/git-remote.txt | 28 ++- Makefile | 1 + builtin-clone.c | 42 +--- builtin-remote.c | 562 ++++++++++++++++++++++++++------ builtin-send-pack.c | 79 +----- cache.h | 2 +- contrib/completion/git-completion.bash | 2 +- http-push.c | 72 +---- refs.c | 4 +- remote.c | 137 ++++++++- remote.h | 12 + string-list.c | 10 + string-list.h | 5 + t/lib-httpd.sh | 9 +- t/t5505-remote.sh | 122 +++++-- t/t5540-http-push.sh | 9 +- t/t5550-http-fetch.sh | 57 ++++ 17 files changed, 817 insertions(+), 336 deletions(-) create mode 100755 t/t5550-http-fetch.sh -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html