Поиск размера толчка

У меня есть ряд коммитов, которые я хотел бы нажать на мой удаленный репозиторий, но я использую подключение к Интернету, которое ограничено данными, и я хотел бы знать, насколько большой фиксация должна решить, нужно ли ее подталкивать сейчас или позже, когда я подключаюсь к большему количеству данных.

Вы можете видеть, насколько большой толчок, когда вы находитесь посередине, но есть ли способ выяснить, насколько он велик, прежде чем на самом деле нажать?

Ответ 1

Это возможно. Через bash, и предположим, что origin/master - ваша целевая ветка:

$ echo $(git merge-base HEAD origin/master)..HEAD | git pack-objects --revs --thin --stdout --all-progress-implied > packfile

Проверка размера результирующего packfile даст вам представление о том, сколько данных необходимо отправить, чтобы сделать удаленный доступным.

Я использовал этот подход из более раннего ответа , когда я пытался настроить размер загружаемого пакета. Это немного хак, так как вам нужно генерировать packfile - теоретически, как только вы знаете диапазон коммитов, которые были изменены локально и удаленно, вы можете просто спросить git для имен этих объектов (a рекурсивная проблема, поскольку объекты могут ссылаться на другие объекты) и подсчитывать размеры этих объектов.

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

Если у вас есть другие разработчики, работающие на ветке вы хотите, чтобы нажать на, то любая оценка является спорным, так как вы, вероятно, придется запустить git fetch Перед нажатием на пульте дистанционного управления, что означает передачу неизвестное количество данных!