2016-03-30 42 views

cevap

0

Herhangi bir cevap büyük ölçüde çalışma ortamına bağlıdır (soruda belirtilmemiş). CVS'nin kendisi, bu işlevselliği kendi başına sunmaz, ancak bir ödeme durumunun durumunu artıran bir çözümü destekleyebilir. Bir GNU/Linux veya benzer kabuk ortamından birini kullanırsa, yalnızca CVS'nin yerel olarak değiştirilmiş, kaldırılmayan veya eklenmemiş olarak tanıdığı dosyaları inceleyen bir betik oluşturabilirsiniz. Aşağıdaki çözüm, çevreye bağımlı ve oldukça garip, ancak kavramı göstermektedir.

örnek bir kabuk oturumu şöyle olabilir:

$ cvs -nq update 2>/dev/null \ 
> | awk '/^[M?]/ { system(sprintf("stat \"%s\"", $2)) }' - \ 
> | grep ^Modify: \ 
> | sort \ 
> | tail -1 
Modify: 2016-04-27 10:22:35.000000000 -0500 

Bu komut dizisi kasada üst kısmında çalıştırılan sonuçlar bunun içindeki tüm alt dizinleri dahil böylece.

cvs -nq update 2</dev/null komutu, dosya durumunun göreceli olarak zayıf bir raporunu oluşturur. Yalnızca yerel olarak değiştirilmiş veya kaydedilmemiş yeni dosyaları, bilinmeyen dosyaları ve akış yukarı güncellenen dosyaları bildirir.

2>/dev/null, cvs komutunun ilgisizliğini stderr çıktısını bastırır.

awk ifadesi, çalışma alanındaki yalnızca yerel olarak eklenen ve yerel olarak değiştirilen dosyalarla eşleşmesi için normal bir ifade kullanır. Daha sonra dosyaya göreli yolu ayıklar ve her dosyanın değişiklik zamanını almak için bir stat işlemi gerçekleştirir.

grep bildirimi, stat komutunun ilgisiz çıktısını ortadan kaldırır.

A sort A komutu, çıktı değişiklik zamanlarını en eskiden en yeniye doğru ve tail -1 yalnızca en son değişiklik zamanını gösterir.

Kasaya en son CVS tanınmış "değişikliği" sonuçta ve "Değiştir:" sözcüğünü takip eder.

İlgili konular