Czasami korzystam z drogiego połączenia internetowego i chciałbym się dowiedzieć (przynajmniej w przybliżeniu), ile danych zostanie przesłanych do pilota w postaci git push
.Przewiduj, ile danych zostanie przesłanych git push
Odpowiedz
Właściwie, podoba mi się mój komentarz na tyle, aby opublikować go jako odpowiedź!
Po naciśnięciu git tworzy pakiet wszystkich niezbędnych obiektów i przesyła je do pilota. Oznacza to, że szukamy sposobu na przewidzenie rozmiaru paczki. Ponieważ paczki są skompresowane, to bardzo trudno jest zrobić cokolwiek na podstawie różnic lub rozmiarów obiektów; to, co naprawdę chcemy zrobić, to zobaczyć, jak duży będzie ten pakiet. Byłoby miło, gdybyś mógł przerwać popchnięcie, zaraz po tym, jak skonstruował paczkę, i zdecydował się kontynuować w oparciu o rozmiar paczki, ale nie sądzę, że to możliwe. Domyślam się, że próbuję odtworzyć opakowanie, które zostanie popchnięte i sprawdzone.
Plik pakunku to w zasadzie paczka z informacją nagłówka (jeśli chcesz, spójrz na numer the source). Oznacza to, że jest to wygodne porcelanowe polecenie, które utworzy plik o wymaganej wielkości. (Znacznie łatwiejsze niż próbuje użyć pack-objects ręcznie.) Użyj coś takiego:
git bundle create foo.bundle ^origin/master master
To da ci pakiet zawierający wszystko, co potrzebne, aby dostać się do mistrza, biorąc pod uwagę, że pilot ma pochodzenie/master - dokładnie taka sama rzecz, która powinna zostać popchnięta przez git push origin master
. Jeśli masz dodatkowe oddziały, które będziesz naciskał, możesz je również włączyć; po prostu rejestruje się argumenty:
git bundle create foo.bundle ^origin/master master ^origin/topic topic ...
Wystarczy sprawdzić rozmiar utworzonego pakietu; powinno to być prawie równoznaczne z tym, co w końcu popchniesz. Oznacza to, że będziesz musiał utworzyć pakiet dwa razy (raz z pakietem i raz z naciśnięciem), ale jeśli nie jest to naprawdę duży nacisk, który zajmuje dużo czasu, aby spakować się, to nie powinno być ogromny problem.
git diff HEAD origin/master --stat
Nie wyświetla się przepustowość, otrzymuję: git push --dry-run -v Przesyłanie na adres [email protected]: projekt Do [email protected]: project fbe6184..7b7a3bc master -> master –
@ Gerald, spróbuj zamiast tego użyć polecenia git diff. Przykład zamieszczony powyżej pokazuje, które pliki się zmieniły i ile wierszy wstawek i usunięć w każdym z nich. Czy to wystarczająca ilość informacji? –
to dość nieokreślony szacunek, gdy chodzi o kompresję i różnice binarne. Również żmudne, jeśli istnieje wiele modyfikacji. –
można dowiedzieć się prawie dokładnie wykonując podobną trochę bash co Git będzie prowadzony wewnętrznie, gdy tworzy plik pakietu do pchania:
$ echo $(git merge-base HEAD origin/master)..HEAD | git pack-objects --revs --thin --stdout -q | wc -c
Powinno to wyjście bajt-count opakowanie plik Git wyśle. Podziale:
# Find the common ancestor of HEAD and origin/master, and output a
# revision range (<a>..<b>) string to git pack-objects.
echo $(git merge-base HEAD origin/master)..HEAD
# Generate the pack file containing the revision range specified above, writing
# it to stdout.
git pack-objects --revs --thin --stdout -q
# Print the byte count of the file contents passed via stdin.
wc -c
Jest to uwarunkowane robi git fetch
tuż przed naciskać; jeśli nie, Git nie będzie w stanie znaleźć wspólnego przodka i wyśle zawartość całego repozytorium. Aby uzyskać więcej informacji, patrz this answer.
- 1. Zachowanie przesłanych danych formularza JSP
- 2. git push vs git push origin <branchname>
- 3. Różnica między git push origin master i git push
- 4. Widżet pola Drupala nie zapisuje przesłanych danych
- 5. git push przez cron
- 6. git hak post-push?
- 7. mean.io git push repo
- 8. git push nie działa
- 9. Git push trwa wiecznie
- 10. Ile procesów i wątków zostanie utworzonych?
- 11. Ile obiektów String zostanie tutaj utworzonych?
- 12. git push after git filter-branch rejected
- 13. BitTruit git push as user
- 14. Błąd Libcurl.dll z Git push
- 15. GitLab v5.0 git problemy Push
- 16. "git push": kompilacja slug wisi
- 17. Aktualizowanie numeru wersji projektu na git push
- 18. Git/GitHub Całkowita liczba linii przesłanych na konto
- 19. Ile średnio danych wykorzystuje transakcja kartą kredytową?
- 20. iOS: Ile powiadomień push można wysłać w jednym żądaniu?
- 21. Dlaczego "git push helloworld + master: master" zamiast tylko "git push helloworld"?
- 22. Ile zadań zostanie zapisanych w PowerShell, jeśli ich nie otrzymam?
- 23. Dlaczego musimy git push najpierw przed git pull?
- 24. Jak skonfigurować git aby uniknąć przypadkowego git push
- 25. git pull i git push one one go
- 26. Czy haki git są popychane do pilota, kiedy "git push"?
- 27. Sprawdź/zaloguj ile przepustowości PhantomJS/CasperJS użył
- 28. Błąd Git push pre-receive hook odrzucono
- 29. Jak uruchomić skrypt bash po git push
- 30. hg-git push cicho kończy się niepowodzeniem
Wydaje się to trudne ... popychania są skompresowane, a więc naprawdę wiadomo, że chcesz przerwać po utworzeniu pakietu, ale przed wysłaniem. Możesz spróbować sprawdzić rozmiar odpowiedniego pakietu, ale to oznacza efektywne pakowanie dwa razy. – Cascabel