Нахождение размера толчка - PullRequest
10 голосов
/ 16 февраля 2011

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

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

1 Ответ

11 голосов
/ 16 февраля 2011

Это вид из возможных. Через bash и предполагая, что origin/master является вашей целевой ветвью:

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...