¿Existe un comando para enumerar los conflictos SVN?

116

¿Alguien conoce un comando SVN para enumerar los conflictos actuales entre el repositorio y la copia de trabajo?

Gracias

azz0r
fuente

Respuestas:

168

En Linux, si desea ver solo los conflictos, canalice el estado a través de grep.

svn status | grep -P '^(?=.{0,6}C)'
nshew
fuente
6
Agregar -A 1argumentos a grep le mostrará la línea después de la línea de conflicto, que a veces está relacionada con el conflicto.
Wesley Hartford
4
-P le dice a grep que use perl regex, ^ = inicio de cadena, (? =) Encierre el patrón de anticipación que es. {0,6} cualquier 0 a 6 caracteres y la letra C, que es el indicador de conflictos
Pete
5
¿Cuál es el punto de usar la parte de anticipación? ¿No pudo '^.{0,6}C'funcionar tan bien?
hans_meine
2
Para usar este mismo comando en OSX, necesita instalar GNU grep porque el BSD grep no tiene el indicador perl regex (-P)
G.Rassovsky
4
En Windows, la versión Powershell de esto es(svn status) -Match '^(?=.{0,6}C)'
bstoney
28

¡Solo usa grep!

svn st | grep '^C'
Joseph Lust
fuente
2
@sid, es expresión regular para 'comienza con', lo que significa que el primer carácter es una C
Joseph Lust
1
Estaba pensando si esto podría perder archivos que tienen el estado "A + C" .. ¿Es eso un problema ..
Raghav
2
egrep '^ [AC +] +' funcionaría entonces, aunque no suelo tener problemas de A + C.
Joseph Lust
1
Sencillo de recordar y suficiente para la mayoría de los casos. Gracias @JosephLust.
csonuryilmaz
11

Podrías intentar svn merge -r <revision> --dry-runver qué sucede de esa manera.

corsiKa
fuente
No parece funcionar en Windows con svn 1.7.8. Registro de errores: svn: E205001: Pruebe 'svn help' para obtener más información svn: E205001: Se requiere fuente de fusión
kakyo
4

Para uso de Windows PowerShell:

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

Si ya se ha fusionado, puede usar

svn status

y ver una "C" mayúscula para el conflicto, pero normalmente no debería ver ese tipo en su copia de trabajo.

Khmarbaise
fuente
1

Quizás sea posible usarlo svn merge --dryrunmientras se especifica la URL del repositorio con todas las revisiones después de la última con la que actualizó.

Por ejemplo, si su WC actual se basa en la revisión 147, esto podría hacerlo:

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

Sin embargo, no es nada que haya hecho yo mismo, así que tendrás que probarlo tú mismo.

Anders Abel
fuente
0

Si no ha fusionado o actualizado archivos, use el siguiente comando

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

Para abreviar

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

Los detalles
SVN no marcan el estado de conflicto (C) hasta que actualice los archivos usando svn update.
Hasta entonces, los estados se muestran a continuación

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

M - Modificado en local
* - Actualizaciones / Entrantes desde remoto
M y * - Modificado en local, así como en remoto - Esto es un conflicto pero svn aún no se ha marcado

Sameer Khan
fuente
-2

en mac

$ svn status | grep -e '^!'

hizo el trabajo

aquí está el hombre de grep:

uso: grep [-abcDEFGHhIiJLlmnOoqRSsUVvwxZ] [-A num] [-B num] [-C [num]] [-e patrón] [-f file] [--binary-files = value] [--color = when] [--context [= num]] [--directories = action] [--label] [--line-búfer] [--null] [patrón] [archivo ...]

el signo de verano
fuente
¿Cómo va a ayudar a encontrar elementos en conflicto hacer coincidir un signo de exclamación?
anddam
^!es la expresión regular de cada línea que comienza con !. Todas las líneas en conflicto comienzan con!
signo de verano
2
No, acabo de resolver conflictos en un repositorio de 1.9 y las líneas de conflicto comenzaban solo con "C".
anddam