web-dev-qa-db-fra.com

Comment comparer une branche au tronc dans Subversion?

Dans Subversion, j'ai créé une branche à partir d'un coffre en utilisant svn copy. Selon le SVN 1.5 manuel , "C’est le moyen le plus simple de" baliser "une révision de votre référentiel - il suffit de copier cette révision (généralement HEAD) dans votre répertoire de tags.

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

Ensuite, je modifie la branche stefanl. Je souhaite valider mes modifications dans le coffre, mais auparavant, j'aimerais voir les différences.

Comment puis-je comparer la branche 'stefanl' à la branche 'trunk'? J'ai essayé svn diff, mais cela ne donnait pas beaucoup d'informations:

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

Ajout aux réponses précédentes (si vous utilisez Tortoise SVN sous Windows):

  • Cliquez avec le bouton droit sur n'importe quel dossier. Dans le menu contextuel, sélectionnez TortoiseSVN -> Repo-browser .
  • Entrez votre adresse de dépôt dans la zoneURL.
  • Naviguez jusqu'au premier dossier que vous souhaitez comparer. Cliquez avec le bouton droit de la souris et sélectionnez Marquez pour comparaison .
  • Accédez au deuxième dossier. Cliquez avec le bouton droit de la souris et sélectionnez Comparer les URL
56
sjwarner

Vous pouvez utiliser le diff Unix pour comparer des répertoires.

Pour trouver les fichiers manquants:

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

Pour trouver quelles sont les différences entre les fichiers: 

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

J'avais la même question et j'ai trouvé cette suggestion dans un fil de discussion: http://svn.haxx.se/users/archive-2003-08/0538.shtml

7
mberkow

Sur la base des autres réponses et d'un peu de recherche, j'ai écrit un script qui le fait automatiquement. 

#!/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

Vous l'exécutez juste sous la branche. Vous pouvez passer un chemin (dir ou fichier) et cela fonctionnera comme prévu. Si ce n'est pas le cas, il ne fera que distinguer la branche et le tronc.

3
user17591

Si vous utilisez le plug-in Subversive avec Eclipse (autre idée?), Basculez vers la perspective de navigation du référentiel . Dans le panneau Référentiels SVN, cliquez avec le bouton droit de la souris sur un élément et sélectionnez l'option "Comparer ..." ..__ devrait être intuitif à partir de là.

1
dainichi

Merci pour l'info les gars, je voudrais ajouter quelque chose pour améliorer la lisibilité des résultats diff. Si vous avez utilisé: svn diff svn: // URL: 9090/branches/PRD_0002 svn: // URL: 9090/branches/TST_0003> svn_diff_filename.txt

Vous pouvez également utiliser: Findstr "Index:" C:\path\svn_diff_filename.txt> svn_diff_file_list.txt

Cela vous apportera une liste lisible des fichiers qui ont des différences. 

Cordialement, Kra.

1
Kra.

Utilisation:

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

Cela vous donnera la différence entre un fichier en branche et un tronc.

1
Kanchan Srivastava