wie zu veränderten Eigenschaften mit SVN log erkennen
-
19-09-2019 - |
Frage
. Hintergrund: ein automatisiertes Release Skript zu schreiben geänderte Dateien zwischen den Versionen von SVN zu exportieren und auf Remote-Server hochladen
Die svn log Befehl zeigt modifizierte Dateien und Eigenschaften, aber scheint nicht seine ausführliche Ausgabe zwischen einer Änderung des Inhalts über Eigenschaftsänderungen zu unterscheiden.
Lese ich diese Ausgabe falsch, oder gibt es eine einfache Möglichkeit, eine Liste der geänderten Dateien zwischen Revisionen während ignorieren prop Änderungen
zu bekommenHier ist mein Beispiel cmd:
#: svn log "someurl" -r 2210:HEAD -v -q
Output:
------------------------------------------------------------------------
r2211 | author | 2010-02-08 12:36:56 +1300 (Mon, 08 Feb 2010)
Changed paths:
M /branches/project/release-v1-r-maintenance
M /branches/project/release-v1-r-maintenance/offroot/
M /branches/project/release-v1-r-maintenance/offroot/test.config
------------------------------------------------------------------------
Die ober beide sind nur Änderungen prop (mergeinfo, ignoriert, usw.), während das dritte Element eine tatsächlicher Inhalt bearbeiten ist und das ist das eigentliche Element, das ich greifen will alles über die ganze Wurzel zu vermeiden exportieren.
Gibt es trotzdem zu bekommen / herauszufiltern nur die Inhaltsänderungen aus dem SVN-Protokoll oder anderen Befehl.
Lösung
FYI, ich gepostet ein Bash-Skript über Wie machen ' svn log‘Eigenschaftsänderungen ignorieren? , die implementiert, was jeroenh anspielte zu ... Verarbeitung der Ausgabe von svn log svn diff und Filterung am Ausgang des letzteren zu fahren.
Andere Tipps
Hier ist ein Skript, das ich gerade geschrieben habe ein ausführliches Protokoll aller Änderungen zu erhalten, in dem Eigenschaftsänderung innerhalb des aktuellen svn dir, wo getan. Legen Sie einfach den richtigen Start und End-Version, wo Sie Das Property passiert erraten. Es ist nicht sehr schnell, aber es funktioniert.
#!/bin/bash
# Show the verbose log of the revisions, where svn properties
# inside the current folder where added/removed
startrev=4600
endrev=4620
for i in $(eval echo {$startrev..$endrev})
do
svn diff -c $i 2>/dev/null | grep "Property changes on" 1>/dev/null
if [ $? == 0 ]; then
echo "Property change in revision $i:"
svn log -r $i --verbose
fi
done
ich glaube, der einzige Weg ist, um tatsächlich die diff Ausgabe für jeden revistion zu analysieren, obwohl das scheint eher spröde, und wahrscheinlich sehr langsam ...
Dies ist, wie ein diff Eintrag mit nur geänderte Eigenschaften für eine Datei aussieht:
c:\test\wc>svn diff -c 3
Property changes on: test.txt
___________________________________________________________________
Added: test
+ test
Dies ist, wie ein diff-Eintrag für eine Datei mit geänderten Inhalten und geänderten Eigenschaften aussieht:
c:\test\wc>svn diff -c 4
Index: test.txt
===================================================================
--- test.txt (revision 3)
+++ test.txt (revision 4)
@@ -1 +1,2 @@
+asdfads
Property changes on: test.txt
___________________________________________________________________
Added: someproperty
+ somepropertyvalue
Ich weiß, diese Frage beantwortet wurde, aber im Fall möchte jemand eine wenig Anleitung, die ich diesen Beitrag über gemacht habe wie abfragbaren Daten von svn log / diff (einschließlich bash-Skripte, xslt und oracle-Datenbank-Skripte) erhalten bekommen. Dadurch ermöglicht es Ihnen, alle Arten von nützlichen Abfragen für die Ansicht v_svnlog
laufen
"hot" Dateien in diesem Patch:
select path, count(*) num from v_svnlog
group by path
order by num desc, path asc
die meisten Tests durch den Autor
select author, count(*) num from v_svnlog
where path like '%Test%'
group by author
order by num desc
und so weiter ...
funktionierts?
svn log --xml --with-no-revprops