Способ держать мелкого клона мерзавца минимально современным?

Моя цель состоит в том, чтобы иметь возможность как создавать последние версии, так и вносить вклад в проект, который имеет длинную и объемную историю, и делать это без использования локального хранилища для дублирования множества исторических ветвей и истории, начиная с десятилетия и более ( который я всегда могу посмотреть в веб-интерфейсе центрального репозитория проекта, если мне когда-нибудь понадобится, что я, вероятно, не буду).

Мне показалось, что мне повезло с первой попытки:

git clone --depth 40 -b master http://github.com/who/what.git/ what

Это дало мне аккуратный местный клон "что" толькоmaster', и достаточно коммитов, чтобы покрыть два последних помеченных релиза.
Я мог бы тогда сделатьgit checkout latest-release-tagи построить последний выпуск. Yippee!

Как я и ожидал, мне нужно было сделать патч. Все прошло гладко:git checkout -b my-patch-branch', внесите свои изменения, зафиксируйте, и я смог отправить свою ветку-патч обратно в клон на github, чтобы проект мог его извлечь. Легко!
Я думаю, что мне повезло, потому что из того, что я прочитал, например,ВотЯ бы не смог сделать это до git 1.9.
Но установленная версия оказалась 1.9, так что мне это сошло с рук.

Сейчас следующая очевидная вещь, которую я хотел бы сделать, - это выбрать с пульта и получить самую последнюю активность на master (включая слияние моего патча в восходящем потоке, так что мне больше не понадобится эта ветка). Я попробовал 'git fetch --dry-run upstream' и с ужасом наблюдал, как он отсчитывал бесконечные мегабайты загрузки, а затем дал мне список новых тегов, восходящих к эпохе мастодонтов. Я рад что сказал--dry-run!

Я действительно надеялся, что он просто получит дюжину или около того новых коммитов наmaster«с тех пор как ГОЛОВА моего клона, и тогда, возможно, у меня будет клон глубиной 52 вместо 40, но это то, чего я хочу ... начните с полезного количества недавней истории, прежде чем я стал участвовать, затем просто отследите и расти с этой точки, и иметь возможность создавать, разветвлять и выдвигать патчи. Кажется, так близко.

Есть ли простой способ заставить git делать то, что я пытаюсь сделать? Что я пытаюсь сделать необоснованным?

Изменить: немного больше информации.
(1) upsteam на самом деле впереди меня ближе к сотне коммитов, моя оценка дюжины была выведена из воздуха.
(2) оказывается, что первые 40 коммитов, которые я получил со своим клоном, были коммитами с одним родителем. Более поздние из них, которые я пытаюсь получить, это коммиты слияния со вторым родителем в какой-то ветви, которую мой клон не включил Могли ли они вызывать мерзавцев во всей их древней истории, потому что самый ранний коммит в моем клоне не был общим предком?
Есть ли способ сказать, что я этого не хочу?

Более новая информация:
(1) мне пришло в голову, что я ранее использовал протокол http, который на самом деле не взаимодействует с процессом git на сервере, поэтому у него нет возможности адаптировать размер загрузки.
Однако, когда я повторил попытку, используя git-over-ssh, я все равно получил огромную выборку.
затем
(2) вручную, как животное, я щелкнул коммиты слияния, показанные на дисплее 'newtork' на github, нашел те, которые включали ветви, которые появились до моего мелкого среза, и добавил их SHA parent-2 к своему.git/shallow файл изатем попробовал 'git fetch' через ssh снова. Это отлично сработало и загрузило крошечный упаковочный файл, который мог просто перемотать мой локальный файлmaster ветка. Я думаю, что это именно та операция, которую я хотел бы, чтобы git мог выполнять автоматически, но я не нашел способа сделать это. Вручную, это довольно утомительно. :)

Ответы на вопрос(1)

Ваш ответ на вопрос