SORU
28 ŞUBAT 2011, PAZARTESİ


Nasıl yerel gıt benim repo değişiklikler varsa bir bash betiği kontrol edebilirim

Eğer bir değişiklik için kontrol ederlerse düzgün çalışmıyor bazı kodlar var.

Bu gibi çalıştım:

VN=$(git describe --abbrev=7 HEAD 2>/dev/null)  

git update-index -q --refresh  
CHANGED=$(git diff-index --name-only HEAD --)  
if [ ! -z $CHANGED ];  
    then VN="$VN-mod"   
fi

Var boolean bir çeşit son commit beri değişiklikler olmuştur olmadığını kontrol etmek, ya da gerçekten eğer benim yerel depo için yeni bir değişiklik olup olmadığını test edebilirim

Sürüm oluşturma komut dosyası burada bir yerde buldum () için bunu yapıyorum

CEVAP
28 ŞUBAT 2011, PAZARTESİ


Ne yaptığını neredeyse çalışır: herhangi bir değişiklik anlamına gelir boş boş ve -z testler, diye. $CHANGED anlatmalısın Ne demek istediğini:

if [ -n "$CHANGED" ]; then
    VN="$VN-mod"
fi

Git bir alıntı GIT-VERSION-GEN:

git update-index -q --refresh
test -z "$(git diff-index --name-only HEAD --)" ||
VN="$VN-dirty"

Bu kopyalama gibi görünüyor, ama sadece alıntı bu ayrıntıyı unutuyordum.

Tabii ki, aynı zamanda sadece bunu yapabilirsiniz:

if git diff-index --quiet HEAD --; then
    # no changes
else
    # changes
fi

ya eğer tek değer veriyorsan "bir şeyler değişti" dava:

if ! git diff-index --quiet HEAD --; then
    VN="$VN-mod"
fi

--quiet kullanarak gıt işleme tek bir fark bulduğu en kısa sürede durdurabilir, tüm iş ağacınızı kontrol yok yararı vardır.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:
Git

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • KarnasCamillo

    KarnasCamill

    24 EKİM 2007
  • Mark Hyder

    Mark Hyder

    6 EKİM 2011
  • monkophile

    monkophile

    25 Temmuz 2007