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

azz0r
la source

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)'
nshew
la source
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'
Joseph Lust
la source
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.

corsiKa
la source
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

Si vous avez reçu un accusé de réception de http://betterthangrep.com/ , vous pouvez effectuer les opérations suivantes

svn st | ack '^C'
banane
la source
4

Pour l'utilisation de Windows PowerShell:

svn status | sls -Pattern '^(?=.{0,6}C)'
Ayo je
la source
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.

khmarbaise
la source
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.

Anders Abel
la source
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é

Sameer Khan
la source
-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 ...]

le signe d'été
la source
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