Existe-t-il une commande pour lister les conflits SVN?


116

Quelqu'un connaît-il une commande SVN pour répertorier les conflits actuels entre le dépôt et la copie de travail?

Merci

Réponses:


168

Sous Linux, si vous ne voulez voir que les conflits, dirigez le statut via grep.

svn status | grep -P '^(?=.{0,6}C)'

6
L'ajout -A 1d'arguments grep vous montrera la ligne après la ligne de conflit, qui est parfois liée au conflit.
Wesley Hartford

4
-P dit à grep d'utiliser perl regex, ^ = début de la chaîne, (? =) Entoure le modèle d' anticipation qui est. {0,6} 0 à 6 caractères et la lettre C, qui est l'indicateur de conflits
Pete

5
Quel est l'intérêt d'utiliser la partie lookahead? Cela ne pourrait pas '^.{0,6}C'fonctionner aussi bien?
hans_meine

2
Pour utiliser cette même commande sous OSX, vous devez installer GNU grep car le grep BSD n'a pas le drapeau perl regex (-P)
G.Rassovsky

4
Sur Windows, la version Powershell de ceci est(svn status) -Match '^(?=.{0,6}C)'
bstoney

28

Utilisez simplement grep!

svn st | grep '^C'

2
@sid, c'est l'expression régulière pour «commence par», ce qui signifie que le premier caractère est un C
Joseph Lust

1
Je me demandais si cela pourrait manquer des fichiers qui ont le statut "A + C" .. Est-ce un problème ..
Raghav

2
egrep '^ [AC +] +' ferait l'affaire alors, bien que je n'ai généralement pas de problèmes A + C.
Joseph Lust

1
Simple à garder à l'esprit, et suffisant dans la plupart des cas. Merci @JosephLust.
csonuryilmaz

11

Vous pourriez essayer de svn merge -r <revision> --dry-runvoir ce qui se passe de cette façon.


Ne semble pas fonctionner sous Windows avec svn 1.7.8. Journal des erreurs: svn: E205001: Essayez 'svn help' pour plus d'informations svn: E205001: Merge source required
kakyo


4

Pour l'utilisation de Windows PowerShell:

svn status | sls -Pattern '^(?=.{0,6}C)'

3

Si vous avez déjà fusionné, vous pouvez utiliser

svn status

et voyez un "C" majuscule pour conflit, mais en général, vous ne devriez pas voir un tel type dans votre copie de travail.


1

Il est peut-être possible de l'utiliser svn merge --dryruntout en spécifiant l'URL du référentiel avec toutes les révisions après la dernière mise à jour avec.

Par exemple, si votre WC actuel est basé sur la révision 147, cela pourrait le faire:

svn merge -r 148:HEAD http://url.to.repo/repo/

Ce n'est cependant rien que j'ai fait moi-même, vous devrez donc l'essayer vous-même.


0

Si vous n'avez pas fusionné ou mis à jour les fichiers, utilisez la commande ci-dessous

svn status --show-updates | grep -P '.*(?=.*M)(?=.*\*).*'

Pour faire court

svn st -u | grep -P '.*(?=.*M)(?=.*\*).*'

Détails
SVN ne marque pas l'état de conflit (C) jusqu'à ce que vous mettiez à jour le (s) fichier (s) à l'aide de svn update.
Jusque-là, les statuts sont affichés comme ci-dessous

+---+------+---------------+---------------+
| M |      |               | 23246   file1 |
+---+------+---------------+---------------+
|   |      | *             | 23233   file2 |
+---+------+---------------+---------------+
| M |    * | 23233   file3 |               |
+---+------+---------------+---------------+

M - Modifié en local
* - Mises à jour / Entrées de
M et * à distance - Modifié en local, ainsi que dans distant - Il s'agit d'un conflit mais svn n'a pas encore marqué


-2

sur mac

$ svn status | grep -e '^!'

fait le travail

voici l'homme pour grep:

utilisation: grep [-abcDEFGHhIiJLlmnOoqRSsUVvwxZ] [-A num] [-B num] [-C [num]] [-e modèle] [-f fichier] [--binary-files = valeur] [--color = quand] [--context [= num]] [--directories = action] [--label] [--line-buffered] [--null] [modèle] [fichier ...]


Comment faire correspondre un point d'exclamation aidera-t-il à trouver des éléments en conflit?
anddam

^!est l'expression régulière de chaque ligne commençant par !. Toutes les lignes en conflit commencent par!
thesummersign

2
Non, je viens de résoudre des conflits sur un repo 1.9 et les lignes de conflit commençaient par juste "C".
anddam
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.