Преамбула:
Я экспериментирую с использованием функции дедупликации git для бинарных развертываний.
Да, я знаю, что большинство источников говорят, что это плохая идея (tm) , но в моих тестах до сих пор это на самом деле прекрасно работало.
Я хотел бы иметь одну ветку для каждой версии, каждая ветвь которой является сиротой, то есть содержит один коммит без каких-либо родителей.
На стороне клиента, с fetch, это прекрасно работает.
Я делаю git init
и git remote add origin [url]
, а затем получаю только указанные c версия с git fetch origin [version]
.
При первом извлечении он выбирает все, при последующих обновлениях может повторно использовать большой кусок объектов.
Проблема: наблюдается поведение на пу sh:
Когда я делаю пу sh, он всегда все выталкивает, игнорируя любые неизмененные файлы. Даже если я наберу sh одно и то же дерево дважды с разными коммитами, оно будет каждый раз пу sh.
Как я понимаю, это потому, что у толкаемого коммита нет родителей.
Если есть отношение «родитель-потомок», оно будет повторно использовать объекты в pu sh.
Вопрос:
Есть ли способ сказать git повторное использование объектов в pu sh, даже если коммит, который я нажимаю, является сиротой?
Я думаю, что обходным решением может быть линейная история коммитов, затем выполните git fetch --depth 1
на клиенте.