git diff-tree
komut modifikasyonu belirli bir türü için filtrelemek için kullanılabilecek bir --diff-filter
argüman vardır: git diff-tree documentation itibaren
:
--diff-filter = [(A | C | D | M | R | T | U | X | B)… [*]]
Yalnızca Eklenmiş (A), Kopyalanan (C), Silinen dosyaları seçin. (D), Değiştirilmiş (M), Yeniden Adlandırılmış (R), kendi türüne (yani normal dosya, sembolik bağlantı, alt) sahiptir. Modül,…) değişti (T), Unmerged (U), Unknown (X), veya Broken (B) eşleşti. Filtre karakterlerinin (hiçbiri dahil) herhangi bir kombinasyonu kullanılabilir. Eğer böyle bir komutu kullanabilirsiniz tüm eklenen dosyaların adlarının bir listesini almak istiyorsanız
:
git diff-tree -r --name-only --diff-filter A <oldCommit>..<newCommit>
bu durumda -r
seçenek yinelemeli ağaçları diff demektir. --name-only
seçeneği, yalnızca dosya adlarının durumları olmadan yazdırılmasına neden olur ve fark başlığının yazdırılmasını engeller.
Bu, git diff komutlarından biri olduğu için, dosya listesini filtrelemeye izin veren ek argümanlar da alır. Belirli bir yoldan '.py' ile biten dosyalarla ilgileniyorsanız, komuta -- 'path/*.py'
ekleyebilirsiniz.
Dosya listesi xargs
gibi bir araca daha gönderilirse, -z
seçeneğini eklemek mantıklı olabilir. Bu seçenek, dosya adlarının listesinin yeni satır yerine boş bayt ile sınırlanmasını sağlar. Bu, komutun dosya adlarında (boşluklar dahil) meydana gelebilecek çeşitli özel karakterlere karşı sağlam olmasını sağlar. Alıcı tarafın bundan haberdar olması gerekiyor. xargs
için kullanma seçeneği --null
olacaktır.
iki kaydedilmesini arasında '.py' uzantılı eklenen dosyalar üzerinde pylint
çalışan tam bir komut bu nedenle bu gibi görünebilir:
git diff-tree -r -z --name-only --diff-filter A <oldCommit>..<newCommit> -- '*.py' | xargs --null pylint
Bunu denedim, ama umut verici görünüyor değil: https: //github.com/edx/diff-cover –
@IsmailBadawi: Teşekkürler, bu kullanışlı bir araçtır!Gördüğüm kadarıyla, sadece hata mesajlarını değil, sadece pylint'ten kalite raporları sağlayabilir. – user3608247