SVN deposundaki bir dosyadan kimin bir satırı sildiğini nasıl bulabilirim?


12

Çok büyük bir proje (10000+ sürüm) üzerinde çalışıyorum ve bazen diğer kullanıcıların kimin bir dosyadaki bir satırı sildiğini bilmem gerekiyordu. Bunu yapmanın bir yolu var mı? Bu svn blamerevizyonda bir satır olup olmadığını kontrol etmek için revizyon numarası ile yapabilirim , ardından hattın hangi revizyonda gittiğini ve bu revizyonu kimin yaptığını görün, ancak bu prosedür bu büyük projeyle topal.

Bunu yapmanın daha akıllı bir yolu var mı?

Yanıtlar:


5

Bu, otomatik olarak ihtiyacınız olanı yapar, ancak çok hızlı olmasa da, yukarıda önerildiği gibi ikili aramayı kullanmaz:

svn log FILE | egrep '^r[0-9]' | sed -e 's/ .*//' | while read rev; do echo $rev ; svn cat FILE -"$rev" | grep "case STRING" && break  ; done 

5

Dosyanın geçmişini kontrol edip çabucak bu satırın bulunduğu yerde bir revizyon bulmaya çalışırdım ve daha sonra HEAD ile bu revizyon arasında suçlama yaparım.

Eğer dosya başlangıcından bu yana 100 revizyondan geçmişse, o satırı arayan revizyonlar ile ikili arama yaparsanız, 10'dan fazla farklı revizyona bakmanız gerekmez.


Ben görüş görmüyorum, hepsi benim için iyi bir tavsiye gibi görünüyor: P
Phoshi

1
Bu benim yaklaşımımla aynı. 10 revizyona bakmaktan daha basit / hızlı bir şey istiyorum.
Ivan Petrushev

... 10 revizyon. Yukarıdaki soruyu yayınladığınız zamana kadar, şimdi yapabilirsiniz. Bu, tekrar yapmanız gereken bir şey olmadığı sürece, bu durumda yorumlarımı dikkate almayın.
ta.speot.is

2
Evet, tek bir atış için mükemmel, ancak düzenli olarak sıkça kullanılabilecek bir şeye ihtiyacım var.
Ivan Petrushev

3

svn log --diffsıfır sütununda "-" ile silmeyi tanımlar. Düzeltmeyi görmek için de "r" için Grep.

% svn log --diff src/fozbo.cpp -r22222:HEAD | grep -e '^r' -e '^-.*xyzzy'
r22222 | jruser | 2016-07-19 20:16:07 -0400 (Tue, 19 Jul 2016) | 1 line
-   else if ( password== "xyzzy") {

Ayrıca var svn log --searchancak bu yalnızca tamamlama mesajını arayacaktır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.