web-dev-qa-db-fra.com

SVN: comment comparer la copie de travail avec la révision du référentiel?

Je veux voir uniquement la liste des fichiers qui ont été modifiés, ajoutés, etc., pas le conten (svn diff affiche cela), seule la liste des fichiers comme svn status.

svn diff -r HEAD me décharge des tonnes d'informations, ce qui est difficile à comprendre rapidement.

svn status affiche uniquement les modifications comparant la copie de travail à sa version d'origine locale (et non à la révision du référentiel).

svn update ne supporte pas --dry-run

En bref, j'ai besoin de quelque chose comme svn status, mais quoi compare la copie de travail actuelle à la révision du référentiel (Je vais comparer avec une révision HEAD).

J'ai parcouru le manuel SVN, mais rien ne m'a aidé, malheureusement: - /

26
Azat

Essayer

svn status --show-updates

Le -u (ou --show-updates) option pour svn status oblige svn à contacter le référentiel et à afficher les éléments modifiés dans le référentiel - cela vous suffit-il? Selon ce dont vous avez besoin, vous souhaiterez peut-être le -q ou --verbose drapeau aussi

43
nos
svn diff -r head

Cela produira une liste diff pour tous les fichiers qui diffèrent entre la copie de travail et le référentiel, donnant une liste de fichiers et les modifications réelles. Ce qui, comme vous le dites, peut être difficile à comprendre.

Essayez donc ceci:

svn diff -r head --diff-cmd meld

Cela fait la même chose, mais affiche les changements en utilisant meld (vous pouvez fournir n'importe quel autre outil de diff visuel dans votre arsenal), ce qui est beaucoup plus gérable.

Mais sérieusement, habituez-vous à lire ces sorties diff, car elles constituent la base de tant d'autres choses (par exemple, les correctifs) et sont assez difficiles à éviter dans le monde Linux. Pour réduire la sortie:

svn status -u 

vous donnera une liste des fichiers modifiés, puis:

svn diff <file> -r head --diff-cmd <tool>

vous donnera une différence visuelle du fichier particulier qui vous intéresse.

25
kdopen

La façon dont vous avez formulé la question d'origine, la bonne réponse est svn status -u comme indiqué déjà. Sur la base des commentaires de suivi, vous devez également être conscient de svn diff --summarize car cela pourrait être ce que vous recherchez. C'est ce que vous utiliseriez pour comparer deux révisions de référentiel ou deux balises ou autre chose dans le référentiel. Vous ne pouvez pas utiliser cette option pour comparer votre copie de travail avec le référentiel (le statut le fait).

Voir: http://blogs.collab.net/Subversion/2007/03/computing_the_d/

2
Mark Phippard

op:

Je veux voir seulement la liste des fichiers qui ont été modifiés, ajoutés, etc., pas le contenu (svn diff les sorties), seulement la liste des fichiers comme svn status.

Comme l'OP, je veux voir un rapport de style "état svn" de la copie de travail actuelle pour les branches de projet qui sont imbriquées sous un référentiel svn plus grand contre leur dernier tronc et je veux utiliser le même chemin d'accès et les mêmes arguments de révision que svn diff utilise .

Ce qui suit fait cela:

svn diff --old . --new ^/pathToProject/trunk --summarize

Bien sûr, remplacez "pathToTrunk" par le chemin réel utilisé par votre référentiel.

1
Lonnie

Voici ce que j'ai fait et cela a résolu mon problème: je veux voir ce qui est différent entre ma copie de travail et la copie du dépôt.

svn diff > ~/svndiff.txt

Et puis j'ai récupéré le fichier en clair dans SublimeText 2 pour pouvoir le lire plus facilement. Je suppose que c'est assez basique, mais j'ai pensé le publier car cela m'a aidé avec un problème similaire.

1
cdmo

C'est peut-être ce que vous recherchez:

svn diff -r HEAD --summarize

0
maxim1000