Es tipo de posible. Via bash
, y asumiendo origin/master
es su bifurcación de destino:
$ echo $(git merge-base HEAD origin/master)..HEAD | git pack-objects --revs --thin --stdout --all-progress-implied > packfile
Inspeccionar el tamaño de la packfile
resultante le dará una idea de la cantidad de datos que necesita enviar para hacer la fecha hasta a la distancia.
Tomé este enfoque de un older answer, cuando estaba tratando de averiguar el tamaño de mi paquete de carga. Es un poco complicado, ya que necesita generar un packfile
- en teoría, una vez que conozca el rango de confirmaciones que han cambiado local y remotamente, puede simplemente pedir git
para los nombres de esos objetos (un problema recursivo, como los objetos pueden referirse a otros objetos) y contar los tamaños de esos objetos.
(Por otra parte, la generación del archivo de paquete también paquetes esos objetos - al igual que lo harían git push
-. Por lo que el tamaño es más representativo de lo que iba a ser enviado)
Si tiene otros desarrolladores que trabajan en la rama a la que desea presionar, entonces cualquier estimación es discutible, ya que es probable que tenga que ejecutar git fetch
antes de presionar al control remoto, lo que significa transferir una cantidad desconocida de datos.
Esto funcionó muy bien, gracias. Observado en el aspecto de colaboración: en este caso, solo me preocupa el tamaño de carga y la historia del usuario que proporcioné fue ideada. –
o simplemente obtenga el tamaño en bytes de inmediato: 'echo $ (git merge-base HEAD origin/master) .. HEAD | git pack-objects --revs --thin --stdout --all-progress-implied -q | wc -c' – kch