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 bekommen

Hier 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.

War es hilfreich?

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top