web-dev-qa-db-fra.com

Comment voir ce qui sera mis à jour à partir du référentiel avant d'émettre la commande "svn update"?

J'ai engagé des modifications dans de nombreux fichiers dans un référentiel SVN d'Eclipse.

Je vais ensuite dans le répertoire du site Web sur la boîte Linux où je veux mettre à jour ces modifications du référentiel vers le répertoire là-bas.

Je veux dire "svn update project100" qui mettra à jour les répertoires sous "project100" avec tous mes fichiers ajoutés et modifiés, etc.

CEPENDANT, je ne veux pas nécessairement mettre à jour les modifications que je n'ai pas apportées. J'ai donc pensé pouvoir dire "svn status project100" mais quand je fais cela, j'obtiens une liste totalement différente des changements qui seront apportés, aucun des miens n'est dans la liste, ce qui est étrange.

Par conséquent, pour être sûr que seules mes modifications sont mises à jour dans le répertoire Web, je suis obligé de naviguer dans tous les répertoires où je sais qu'il y a eu une modification et de mettre à jour explicitement uniquement ces fichiers, par ex. "svn update newfile1.php" etc. ce qui est fastidieux.

Quelqu'un peut-il faire la lumière sur la procédure de travail standard ici, à savoir comment obtenir une liste précise de toutes les modifications qui sont sur le point d'être apportées avant d'exécuter la commande "svn update"? Je pensais que c'était la commande "status".

113
Edward Tanguay

Essayer:

svn status --show-updates

ou (le même mais plus court):

svn status -u
165
Dave Webb

Selon ce que vous voulez savoir entre votre copie de travail et le dernier référentiel de serveur svn, sans mettre à jour votre copie de travail locale, voici ce que vous pouvez faire:

si vous voulez savoir ce qui a été changé dans le référentiel du serveur svn, exécutez la commande:

$ svn st -u

si vous voulez savoir si le même fichier a été modifié à la fois dans votre copie de travail locale et dans le référentiel du serveur svn, exécutez la commande:

$ svn st -u | grep -E '^M {7}\*'

si vous souhaitez obtenir la liste des fichiers modifiés entre une révision particulière et HEAD, exécutez la commande:

$ svn diff -r revisionNumber:HEAD --summarize

si vous souhaitez obtenir une liste des fichiers modifiés entre les révisions paticulaires, exécutez la commande:

$ svn diff -r revisionNumber:anotherRevisionNumber --summarize

si vous voulez voir ce qui sera mis à jour (sans réellement mettre à jour), exécutez la commande:

$ svn merge --dry-run -r BASE:HEAD .

si vous voulez savoir quel contenu d'un fichier particulier a été modifié dans le référentiel du serveur svn par rapport à votre copie de travail, exécutez la commande:

$ svn diff -r BASE:HEAD ./pathToYour/file

si vous voulez savoir quel contenu de tous les fichiers a été modifié dans le référentiel du serveur svn par rapport à votre copie de travail, exécutez la commande:

$ svn diff -r BASE:HEAD .
54
TianCaiBenBen

Vous pouvez voir ce qui sera mis à jour (sans réellement mettre à jour) en émettant:

svn merge --dry-run -r BASE:HEAD .

Plus de détails ici .

44
Ben Hoffstein

C'est ce que je cherchais. Vérifié d'abord Google, mais svn help a fini par venir pour moi :)

svn diff -r BASE:HEAD .
17
Jeff

Le même mais plus court plus court :):

svn st -u
13
Kenzo

Vous pouvez utiliser 'svn diff' pour voir la différence entre votre copie de travail et le référentiel.

0
Andrew

En théorie, vous pouvez effectuer toutes vos modifications dans une branche que vous avez créée pour votre propre usage. Vous seriez alors raisonnablement sûr que vous êtes le seul à vous y engager.

Le développement des fonctionnalités à mon humble avis devrait être fait comme ceci.

Ensuite, vous pouvez mettre à jour cette machine cible à partir de cette branche plutôt qu'à partir du tronc.

0
Rory Becker