This is probably the first attempt to treat shallow clones just like ordinary ones. Which means you can push or fetch/clone between any two repos, regardless of their shallow status. There are two purposes behind this: - to make local/shallow clone <-> (complete) upstream repo workflow smoother, the note about shallow clone limitation in git-clone.txt can be removed - to make it possible for upstream to provide a lightweight repo that others can use. For example, big repos with lots of activities can be split into new base repo that only contains the work of maximum one year and a complete repo mostly for archive. This is a naive approach. I might overlook something again, which is why I publish it early to get more eyes on it. The idea is simple: in shallow case, we provide the pack _and_ .git/shallow file to the other end. The other end will setup extra grafting to make sure the updated repo is "complete". More in individual patch messages. There might be issues with generating optimum pack for transfer when both ends are shallow.. There's also an interesting issue, whether we can take advantage of commit bitmaps in shallow clones if they are more widely used.. We also might need a config key to protect a repo from becoming shallow by a fetch or push, if the repo is to be a backup one.. Nguyễn Thái Ngọc Duy (7): transport.h: remove send_pack prototype, already defined in send-pack.h {receive,upload}-pack: advertise shallow graft information connect.c: teach get_remote_heads to parse "shallow" lines Move setup_alternate_shallow and write_shallow_commits to shallow.c fetch-pack: support fetching from a shallow repository {send,receive}-pack: support pushing from a shallow clone send-pack: support pushing to a shallow clone Documentation/technical/pack-protocol.txt | 7 +- builtin/fetch-pack.c | 6 +- builtin/receive-pack.c | 54 ++++++++++++---- builtin/send-pack.c | 7 +- cache.h | 1 + commit.h | 8 +++ connect.c | 12 +++- fetch-pack.c | 78 +++++++--------------- fetch-pack.h | 1 + remote-curl.c | 2 +- send-pack.c | 41 ++++++++++-- send-pack.h | 4 +- shallow.c | 103 ++++++++++++++++++++++++++++++ t/t5536-fetch-shallow.sh (new +x) | 75 ++++++++++++++++++++++ t/t5537-push-shallow.sh (new +x) | 85 ++++++++++++++++++++++++ transport.c | 14 ++-- transport.h | 6 -- upload-pack.c | 3 +- 18 files changed, 414 insertions(+), 93 deletions(-) create mode 100755 t/t5536-fetch-shallow.sh create mode 100755 t/t5537-push-shallow.sh -- 1.8.2.83.gc99314b -- 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