2009-01-06 7 views
6

Kann jemand nur die geänderten Dateien von zwei Tags mit Svn exportieren?SVN Export nur die geänderten Dateien von Tags

Lets sagen, ich habe Tag 1.0 und später beheben Fehler im Kofferraum. Als nächstes bin ich bereit für ein neues Patch-Release, so dass ich es Tag 1.1. Jetzt möchte ich die geänderten Dateien zwischen Tag 1.0 und 1.1 exportieren. Ist das möglich?

+0

ich das denken würde behandeln, was Sie zu tun versuchen: [http://stackoverflow.com/questions/42246/subversion-partial-export](http://stac koverflow.com/questions/42246/subversion-partial-export) – Jared

Antwort

12

svn diff --summarize url/to/tag1.0 url/to/tag1.1

wird Ihnen eine Liste von Dateien, die zwischen diesen beiden Tags geändert. Sie sollten diese Liste in einem Skript analysieren können, und exportieren Sie jede Datei einzeln mit entweder

svn export url/to/file Filepath

oder

svn cat url/to/file>

Wenn Sie mit TortoiseSVN:

  • das Repository Browser öffnen, navigieren Sie zu tag1.0 der rechten Maustaste, wählen Sie "Marke für den Vergleich"
  • browse zu tag1.1 der rechten Maustaste, wählen Sie "vergleichen Urls"
  • in der Datei Diff-Dialog, wählen Sie alle Dateien/Ordner, die zwischen den Tags (Strg + A)
  • der rechten Maustaste geändert werden, wählen Sie " export to ... "
+0

wenn ich alle exportieren zu wählen existiert nicht, es funktioniert nur für eine Datei: -/ – Sasha

1

Wir brauchten auch so etwas. Also habe ich ein kleines Java-Tool geschrieben.

Hoffe, dass es jemandem nützlich ist: github svn-diff-export

9

Dies ist my solution für TortoiseSVN:

  • Öffnen Sie den Repo-Browser.
  • Rechts klicken tag1 und wählen Sie „Mark für den Vergleich“
  • Rechts klicken tag2 und wählen Sie „Vergleichen URLs“
  • Alle auswählen (Strg + A) in der Liste der Dateien
  • Rechts klicken und „Export Auswahl ...“
  • Geben Sie ein Zielverzeichnis und drücken Sie OK

Was exportiert endet ist alle Dateien, die Sie brauchen über die Spitze eines bestehenden Export zu schreiben, um es (kein Herumspielen Anwendung diffs zu aktualisieren). Nützlich zum Beispiel um Webseiten per FTP zu aktualisieren.

Der einzige Nachteil ist, dass es offensichtlich nicht mit gelöschten Dateien umgehen wird. Es wird Ihnen zumindest sagen, welche Dateien manuell gelöscht werden müssen.

+0

leider wird es Verzeichnisstruktur nicht beibehalten :( – gbjbaanb

+0

@ gbjbaanb Ja es tut. Gerade getestet mit TSVN 1.6.7. –

+0

wow, es tut - ich verwendete ursprünglich die Liste der Dateien im Protokoll für eine Revision, wählen Sie alle sie und 'Export Select to ...' schreibt sie alle als ein einziges Verzeichnis. Ich frage mich, ob das ein Feature von Design ist. – gbjbaanb

6
  1. Mit TortoiseSVN der rechten Maustaste auf Ihrem Arbeitsordner und wählen Sie „Show Log“ aus dem TortoiseSVN Menü.

  2. die Revision Klicken, das wurde zuletzt (in diesem Beispiel # 85) veröffentlicht

  3. Strg + die HEAD Revision klicken (oder was auch immer Revision Sie also # 178 freigeben mögen), die beide so, dass die alten und die neuen Revisionen sind markiert.

  4. Klicken Sie mit der rechten Maustaste auf eine der markierten Revisionen und wählen Sie "Revisionen vergleichen". Dadurch wird ein Dialogfenster geöffnet, in dem alle neuen/geänderten Dateien aufgelistet sind.

  5. Wählen Sie alle Dateien aus dieser Liste (Strg + a) dann mit der rechten Maustaste auf die markierten Dateien und wählen Sie „Export Auswahl an ...“

Quelle: http://www.verysimple.com/blog/2007/09/06/using-tortoisesvn-to-export-only-newmodified-files/

0

Basierend auf Stefans Idee:

REV=123456 
URL=https://... 
BASEDIR=some_dir 
svn diff --summarize -c $REV $URL | while read A B; do 
    svn cat -r $REV $B > ${B##*$BASEDIR} 
done 
Verwandte Themen