svn diff -r a:b repo
Belirtilen iki düzeltme arasındaki değişiklikleri görebileceğimi biliyorum . Ne istiyorum dosyayı değiştiren her revizyon için bir farktır. Böyle bir komut var mı?
svn diff -r a:b repo
Belirtilen iki düzeltme arasındaki değişiklikleri görebileceğimi biliyorum . Ne istiyorum dosyayı değiştiren her revizyon için bir farktır. Böyle bir komut var mı?
Yanıtlar:
Bunun için yerleşik bir komut yoktur, bu yüzden genellikle sadece böyle bir şey yaparım:
#!/bin/bash
# history_of_file
#
# Outputs the full history of a given file as a sequence of
# logentry/diff pairs. The first revision of the file is emitted as
# full text since there's not previous version to compare it to.
function history_of_file() {
url=$1 # current url of file
svn log -q $url | grep -E -e "^r[[:digit:]]+" -o | cut -c2- | sort -n | {
# first revision as full text
echo
read r
svn log -r$r $url@HEAD
svn cat -r$r $url@HEAD
echo
# remaining revisions as differences to previous revision
while read r
do
echo
svn log -r$r $url@HEAD
svn diff -c$r $url@HEAD
echo
done
}
}
Ardından, aşağıdakilerle arayabilirsiniz:
history_of_file $1
svn: '.' is not a working copy svn: Syntax error in revision argument '@HEAD' svn: Syntax error in revision argument '@HEAD'
svn log --diff [path_to_file]
tam olarak böyle çalışır! stackoverflow.com/a/24938573/3185510
Açıkladığınızdan biraz farklı, ama aslında ihtiyacınız olan şey bu olabilir:
svn blame filename
Dosyayı, en son değiştiren taahhüdün zamanı ve yazarı tarafından önceden eklenmiş her satırla yazdırır.
Kod değişiklikleri içeren bir dosyanın tüm geçmişini görmek istiyorsanız:
svn log --diff [path_to_file] > log.txt
--diff
için testlere sahipken 1.7.3'te hiçbiri yok subversion/tests/cmdline/log_tests.py
.
--limit <number>
seçeneği ile. Gibi:svn log --diff --limit 5 [path_to_file]
Sen kullanabilirsiniz git-svn
sonra, bir Git depo içine depo içe kullanmak git log -p filename
. Bu, dosya için her günlük girişini ve ardından karşılık gelen farkı gösterir.
git log X..Y -o filename
İle başla
svn log -q file | grep '^r' | cut -f1 -d' '
Bu, dosyanın değiştirildiği revizyonların bir listesini alır ve daha sonra tekrarlanan çağrıları kodlamak için kullanabilirsiniz svn diff
.
svn log -q some_file.xxx | grep ^r | awk '{print $1}' | sed -e 's/^r//' | xargs -i svn diff -rHEAD:{} some_file.xxx > ~/file_history.txt
güzel küçük bir liner (awk kesim ile aynı)
Garip bir şekilde adlandırılan "suçlama" komutu bunu yapar. Kaplumbağa kullanırsanız, size bir "revizyondan" iletişim kutusu, ardından Revizyon numarası ve yanında yazarın satır satır göstergesini içeren bir dosya listesi verir.
Düzeltme bilgilerine sağ tıklarsanız, check-in işleminin bir parçası olan diğer dosyalarla birlikte tam check-in bilgisi veren bir "Günlüğü göster" iletişim kutusu açabilirsiniz.
Bildiğim kadarıyla bunu gerçekleştirmek için yerleşik bir svn komutu yoktur. Tüm farkları oluşturmak için birkaç komut çalıştırmak için bir komut dosyası yazmanız gerekir. Daha basit bir yaklaşım, bu seçenek bir GUI svn istemcisi kullanmak olacaktır. Eclipse için yıkıcı eklenti gibi birçoğu bir dosyanın geçmişini listeler ve her revizyonun farkını görüntülemenize izin verir.
Teşekkürler Bendin. Çözümünü çok beğendim.
İlk olarak en son değişiklikleri göstererek ters sırada çalışacak şekilde değiştirdim. Uzun yıllar süren kod ile önemli olan, birkaç yıl boyunca korunur. Ben genellikle daha fazla içine boru.
svnhistory elements.py |more
Sıralamaya -r ekledim. Teknik özellikleri kaldırdım. 'ilk kayıt' işleme. Fark edecek bir şey olmadığı için son girişte hata yapacak. Bununla birlikte yaşıyor olmama rağmen hiçbir zaman o kadar aşağı inemem.
#!/bin/bash
# history_of_file
#
# Bendin on Stack Overflow: http://stackoverflow.com/questions/282802
# Outputs the full history of a given file as a sequence of
# logentry/diff pairs. The first revision of the file is emitted as
# full text since there's not previous version to compare it to.
#
# Dlink
# Made to work in reverse order
function history_of_file() {
url=$1 # current url of file
svn log -q $url | grep -E -e "^r[[:digit:]]+" -o | cut -c2- | sort -nr | {
while read r
do
echo
svn log -r$r $url@HEAD
svn diff -c$r $url@HEAD
echo
done
}
}
history_of_file $1
Bu konuyu araştırırken bir sürü kısmi cevap gördüm. Bu benim için işe yaradı ve umarım başkalarına yardımcı olur. Bu komut, çıktıyı komut satırında, revizyon numarasını, yazarı, revizyon zaman damgasını ve yapılan değişiklikleri gösterir:
svn blame -v <filename>
Aramanızı kolaylaştırmak için çıktıyı bir dosyaya yazabilir ve aradığınızı grep edebilirsiniz.