Note that this is built on jt/transport-no-more-rsync. I have found the transport mechanism relatively complicated, so here is some more effort in the hope of making it more readily understood. Patch 1 is probably good to go in as-is. Patch 2 is a modification of the transport API by making certain variables in the transport interface struct more private, and might need more discussion. I also discuss the possible future work that this modification makes possible. Jonathan Tan (2): clone, fetch: remove redundant transport check transport: make transport vtable more private builtin/clone.c | 3 --- builtin/fetch.c | 3 --- transport-helper.c | 23 +++++++++++------- transport-internal.h | 61 ++++++++++++++++++++++++++++++++++++++++++++++ transport.c | 69 ++++++++++++++++++++++++++++++++-------------------- transport.h | 54 ++-------------------------------------- 6 files changed, 120 insertions(+), 93 deletions(-) create mode 100644 transport-internal.h -- 2.15.1.504.g5279b80103-goog