SORU
2 EKİM 2010, CUMARTESİ


Nasıl gıt dalları bash script kullanarak sokmanın

Nasıl benim depo bash script kullanarak tüm yerel dalları arasında dolaşmak. Yineleme ve kontrol etmem gerek yok şube ve bazı uzak dalları arasında herhangi bir fark yoktur. Ex

for branch in $(git branch); 
do
    git log --oneline $branch ^remotes/origin/master;
done

Yukarıda verilen gibi bir şey yapmak istiyorum, ama karşı karşıya olduğum konudur $(git branch) depodaki dalları hediyesi ile birlikte bana depo klasörü içindeki klasörleri verir.

Bu doğru yolu, bu sorunu çözmek için? Ya orada bunu yapmak için başka bir yol var mı?

Teşekkür ederim

CEVAP
2 EKİM 2010, CUMARTESİ


Kullanmamalısınızgit branchkomut yazarken. Git açıkça (normal Gıt komutları mevcut ve geçmiş birçok uygulamaları (satın alma, birleştirme ekleme, vb.) komut kullanım için tasarlanmış “plumbing” interface sağlar kullanma bu aynı arayüzü).

İstediğiniz tesisat komutgit-her-ref için:

git for-each-ref --shell \
  --format='git log --oneline %(refname) ^origin/master' \
  refs/heads/

Not: gerekmez remotes/ önek üzerinde uzaktan ref sürece diğer hakemler bunu neden origin/master maç birden fazla yerde hakem adı arama yolu (bkz: “sembolik Bir hakem ismi. ... ” the Specifying Revisions section of git-rev-parse(1)). Eğer explictly açmamak, tam ref isimle sonra çalışıyorsanız: refs/remotes/origin/master.

Böyle bir çıktı alırsınız:

git log --oneline 'refs/heads/master' ^origin/master
git log --oneline 'refs/heads/other' ^origin/master
git log --oneline 'refs/heads/pu' ^origin/master

Bu çıkış borusush.

Eğer kabuk kodu oluşturma fikri gibi yaparsanız, sağlamlık biraz bırakabilirsin*ve bunu yapmak için:

for branch in $(git for-each-ref --format='%(refname)' refs/heads/); do
    git log --oneline "$branch" ^origin/master
done

* Ref adları kabuk sözünü bölme (git-check-ref-format(1)) güvenli olmalıdır. Şahsen eski sürüm (oluşturulan kabuk kodu) sopa ile olur; hiçbir şey uygunsuz ile gelebilecek daha fazla eminim.

Belirtilen beribashve dizileri destekler, güvenliğini korumak ve hala döngü cesareti oluşturulmasını engellemek.

branches=()
eval "$(git for-each-ref --shell --format='branches =(%(refname))' refs/heads/)"
for branch in "${branches[@]}"; do
    # …
done

Eğer diziler (set -- başlatmakset -- "$@" %(refname) öğeler eklemek için) destekleyen bir kabuk kullanıyorsanız bir şey değil $@ ile benzer yapabilirsin.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • 2ndfloor91

    2ndfloor91

    17 Kasım 2007
  • olinerd

    olinerd

    23 AĞUSTOS 2007
  • stewmurray47

    stewmurray47

    1 Kasım 2006