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

  • Day9TV

    Day9TV

    22 NİSAN 2010
  • Mr. H

    Mr. H

    1 Temmuz 2012
  • Tomas N

    Tomas N

    14 Kasım 2010