web-dev-qa-db-de.com

Wie vergleiche ich einen Zweig mit Trunk in Subversion?

In Subversion habe ich einen Zweig mit svn copy aus einem Trunk erstellt. Laut dem SVN 1.5-Handbuch : "Dies ist der einfachste Weg, um eine Revision in Ihrem Repository zu" markieren "- svn kopiert diese Revision (normalerweise HEAD) in Ihr Tag-Verzeichnis.

svn copy file:////svn/projectX/trunk file:///svn/projectX/branches/stefanl

Dann mache ich meine Änderungen am Zweig stefanl. Ich möchte meine Änderungen in den Stamm übernehmen, aber bevor ich das tue, würde ich gerne einen Unterschied der Änderungen sehen.

Wie kann ich den 'stefanl'-Zweig gegen den' Stamm'-Zweig unterscheiden? Ich habe svn diff ausprobiert, aber es gab nicht viele Informationen:

% svn diff file:////svn/projectX/trunk file:///svn/projectX/branches/stefanl
Property changes on: .
___________________________________________________________________
Modified: svn:mergeinfo
   Reverse-merged /trunk:r1699-1870
37

Hinzufügen zu den vorherigen Antworten (wenn Sie Tortoise SVN unter Windows verwenden):

  • Klicken Sie mit der rechten Maustaste auf einen beliebigen Ordner. Wählen Sie im Kontextmenü TortoiseSVN -> Repo-Browser aus.
  • Geben Sie Ihre Repo-Adresse in das FeldURLein.
  • Navigieren Sie zu dem ersten Ordner, den Sie vergleichen möchten. Klicken Sie mit der rechten Maustaste und wählen Sie Zum Vergleich markieren .
  • Navigieren Sie zum zweiten Ordner. Klicken Sie mit der rechten Maustaste und wählen Sie URLs vergleichen
56
sjwarner

Sie können Unix-Vergleiche zum Vergleichen von Verzeichnissen durchführen.

So finden Sie fehlende Dateien:

diff -r svn/projectX/trunk svn/projectX/branches/stefanl | grep -i only

So finden Sie die Unterschiede zwischen den Dateien: 

diff -ru svn/projectX/trunk svn/projectX/branches/stefanl

Ich hatte die gleiche Frage und fand den Vorschlag in einem Mail-Thread: http://svn.haxx.se/users/archive-2003-08/0538.shtml

7
mberkow

Basierend auf den anderen Antworten und ein wenig Recherche habe ich ein Skript geschrieben, das es automatisch erledigt. 

#!/bin/bash
url=$(svn info | grep ^URL: | sed -e 's,^URL: ,,' )
root=$(svn info | grep '^Repository Root:' | sed -e 's,.*Root: ,,' )
trunk=$root/trunk
if [[ -n "$1" && ! -e "$1" ]]
then
    echo "What? svn diff \"$1\"? really?"
    exit
fi
svn diff $url/$1 $trunk/$1 > trunk.diff

Sie lassen es direkt unter dem Zweig laufen. Sie können einen Pfad (Verzeichnis oder Datei) übergeben, und es funktioniert wie erwartet. Wenn nicht, dann wird es nur den Zweig und den Stamm unterscheiden.

3
user17591

Wenn Sie das Subversive-Plugin mit Eclipse (von anderen Ide?) Verwenden, wechseln Sie in die Repository-Browsing-Perspektive . Klicken Sie im SVN-Repositories-Fenster mit der rechten Maustaste auf ein Element und wählen Sie die Option "Compare ..." ..__ sollte von dort intuitiv sein.

1
dainichi

Vielen Dank für die Info-Jungs, ich würde etwas hinzufügen, um die Lesbarkeit der diff-Ergebnisse zu verbessern. Wenn Sie: svn diff svn: // url: 9090/branchen/PRD_0002 svn: // url: 9090/ast/TST_0003> svn_diff_filename.txt

Sie können auch Folgendes verwenden: Findstr "Index:" C:\Pfad\svn_diff_filename.txt> svn_diff_file_list.txt

Dadurch erhalten Sie eine lesbare Liste von Dateien, die Unterschiede aufweisen. 

Grüße, Kra.

1
Kra.

Benutzen:

 svn diff ^/trunkUrl/fileName ^/branchUrl/fileName

Dies gibt Ihnen den Unterschied zwischen einer Datei in einem Zweig und einem Stamm.

1