Forum: PC-Programmierung SVN Befehl für alle "alle geänderten Dateien seit Rev x herunterladen"


von Klaus (Gast)


Lesenswert?

Moin,

ich versuche gerade ein automatisches Kommandozeilen-Bauskript für ein 
Patch-Paket zu bauen. Für die Executable ist das soweit relativ einfach. 
Die kompletten Sourcen updaten, kompilieren, ab ins ZIP.  Für alle 
anderen Dateien (Grafiken, Übersetzungen, etc.) ist das nun 
komplizierter. Im Prinzip bräuchte ich einen Befehl, mit dem ich an alle 
Dateien komme, die sich seit einer Revision geändert haben. Nur wie 
schaffe ich das?

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Eventuell über svn diff? http://svnbook.red-bean.com/en/1.0/re09.html
Etwas Skriptmagic wird wohl trotzdem nötig sein.

von Klaus (Gast)


Lesenswert?

Hilft mir noch nicht wirklich weiter. Da die Ausgabe von Diff erst 
ziemlich umständlich geparsed werden müsste, um daraus ne Dateiliste zu 
machen, die ich an irgendeinen weiteren Befehl weiter reichen kann.

von Klaus (Gast)


Lesenswert?

Ich brauche ja nicht nur ein Log, was sich geändert hat. Sondern ich 
brauche am Ende ein Verzeichnis, in dem sich alle Dateien befinden, die 
im Repository seit dem letzten Release geändert wurden.

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Okay dann habe ich das falsch Verstanden, ich fürchte so einen Befehl 
gibt es nicht, für solche Spezialwünsche schreibe ich mir immer ein 
Programm welches die Ausgabe von svnlog 
(http://svnbook.red-bean.com/en/1.0/re15.html) als XML parst und arbeite 
dann darauf.

von Andreas B. (andreas_b77)


Lesenswert?

Fürs umständliche Parsen der diff-Ausgabe gibt es schon fertig diffstat. 
Mit der Option -l werden nur die Dateinamen gelistet. Weiß aber nicht, 
wie das bei Binärdateien, die nicht komplett im diff auftauchen, 
aussieht.

Eventuell macht "svn diff --summarize" auch schon das gewünschte, kann 
es mangels aktivem SVN Repository auf meiner Platte grad nicht testen.

von Konrad S. (maybee)


Lesenswert?

Sieh dir mal die Ausgabe von "svn log -v" an.

von Rolf M. (rmagnus)


Lesenswert?

Klaus schrieb:
> Hilft mir noch nicht wirklich weiter. Da die Ausgabe von Diff erst
> ziemlich umständlich geparsed werden müsste, um daraus ne Dateiliste zu
> machen, die ich an irgendeinen weiteren Befehl weiter reichen kann.

Wieso brauchst du denn eine Dateiliste? Die Ausgabe von diff beinhaltet 
doch schon alles, oder willst du was anderes?

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Rolf Magnus schrieb:
> Die Ausgabe von diff beinhaltet
> doch schon alles, oder willst du was anderes?

Ich hab's auch nicht so ganz verstanden, aber anscheinend will er eine 
Art Delta zur letzten Lieferung erstellen, welche nur geänderte Dateien 
enthält.

von Klaus (Gast)


Lesenswert?

Rolf Magnus schrieb:
> Wieso brauchst du denn eine Dateiliste? Die Ausgabe von diff beinhaltet
> doch schon alles, oder willst du was anderes?

Das Problem ist ja, dass ich nicht nur eine Ausgabe brauche, sondern 
physikalisch alle geänderten Dateien in meinem ZIP haben möchte. Im 
Moment baue ich dieses ZIP per Hand, in dem ich die Ausgabe von svn log 
anschaue und die Dateien reinkopiere. Ich hätte das halt ganz gerne 
automatisiert.

von Konrad S. (maybee)


Lesenswert?

mkdir [Verzeichnis]
svn log -v \
  | [Filter_für_geänderte_Dateien] \
  | sed [Extraktion_des_relativen_Pfad/Dateinamens] \
  | sort -u \
  | cpio -dump [Verzeichnis]

von Rolf Magnus (Gast)


Lesenswert?

Klaus schrieb:
> Rolf Magnus schrieb:
>> Wieso brauchst du denn eine Dateiliste? Die Ausgabe von diff beinhaltet
>> doch schon alles, oder willst du was anderes?
>
> Das Problem ist ja, dass ich nicht nur eine Ausgabe brauche, sondern
> physikalisch alle geänderten Dateien in meinem ZIP haben möchte.

Das diff ist nicht nur eine Ausgabe, sondern enthält alle Änderungen, 
die gemacht wurden. Wenn du das, was da rauskommt, an das Programm 
'patch' übergibst und dabei in einem Verzeichnis bist, wo die alten 
Sourcen liegen, tut es gena das, was du willst: Es macht aus den alten 
Sourcen die neuen. Dabei ist halt nicht jede Datei komplett in einem 
Archiv enthalten, sondern nur eine Liste der Unterschiede, aber das 
reicht ja, um aus der alten Datei die neue zu machen.

von Reinhard R. (reinhardr)


Lesenswert?

Nur so am Rande: Wie willst du Dateien handhaben die umbenannt oder 
entfernt wurden? Eine "Antidatei" die eine bestehende Datei restlos 
entfernt gibt es ja leider nicht.

Gruß
Reinhard

von Klaus (Gast)


Lesenswert?

Oh, jetzt erkenne ich, welche Information ich vergessen habe: Es geht 
mir um Binärdateien, das heißt eine Diffausgabe hilft mir da also 
wirklich nicht.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.