My Pierwsza próba rozwiązania tego problemu wygląda następująco:
git push --all -n 2>&1 | grep -q 'Everything up-to-date' ||
echo "Outstanding commits to be pushed at $PWD"
Nie jest odporny, ponieważ będzie twierdził, że jest wytrzymały ing popełnia błędy. Największym problemem jest to, że poprosi o podanie nazwy użytkownika/hasła, tj. Jeśli spróbujesz wysłać do repozytorium github za pomocą https-link (zazwyczaj dlatego, że zrobiłem check-check na repo, gdzie nie powinienem bezpośrednio wprowadzać zmian).
Odpowiednia odpowiedź wydaje mi się najbardziej odpowiednia, ponieważ zawiera instrukcje sprawdzania tego dla wszystkich oddziałów. Stąd moja druga próba wygląda następująco:
git branch -avvv 2>&1 | grep -q ': ahead ' &&
echo "Outstanding commits to be pushed at $PWD"
to jednak mieć również co najmniej jedno zastrzeżenie - nie będzie fałszywych alarmów czy wiadomość popełnić zawiera ciąg „: zielone światło”.
Więc muszę to polecenie dla „sprawdzić stan wszystkich transakcji repo git”:
for gitrepo in $(find ~ -name '.git')
do
cd $(dirname $gitrepo)
git fetch >/dev/null 2>&1 ||
echo "Git fetch failed at $PWD"
git branch -avvv 2>&1 | grep -q ': ahead ' &&
echo "Outstanding commits to be pushed at $PWD"
done
:-)
Czy to naprawdę potrzebne, aby być na bieżąco z pobieraniem? Ktoś usłyszałby, że mamy nieprzerwane zatwierdzanie, bez względu na to, jak zmieniło się repozytorium z repozytorium. Jedyny wyjątek, jaki mogę wymyślić, to to, czy ktoś przesuwa zestawy zmian do innego węzła, a następnie wypycha zestaw zmian z innego węzła. node i upstream ... teraz upstream jest zsynchronizowany z lokalnym repo, ale bez "pobierania" nie można wiedzieć ... hm :-) – tobixen
@tobixen również wymusił wypychania i odzyskiwania z kopii zapasowej. Jeśli Murphy nie wygląda jak niewinne omijanie pól stokrotek, nie jestem wystarczająco paranoikiem. Wersja obliczeniowa prawa brzmi: "jeśli coś może pójść źle, to już poszło nie tak i chce twojej krwi". – jthill