Existe um comando para listar os conflitos de SVN?


116

Alguém conhece um comando SVN para listar os conflitos atuais entre o repo e a cópia de trabalho?

obrigado

Respostas:


168

No Linux, se você quiser ver apenas os conflitos, canalize o status por meio de grep.

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

6
Adicionar -A 1argumentos grep irá mostrar a você a linha após a linha de conflito, que às vezes está relacionada ao conflito.
Wesley Hartford

4
-P diz ao grep para usar perl regex, ^ = início da string, (? =) Inclui o padrão lookahead que é. {0,6} qualquer 0 a 6 caracteres e a letra C, que é o indicador de conflitos
Pete

5
Qual é o objetivo de usar a parte de antevisão? Não '^.{0,6}C'funcionou tão bem?
hans_meine

2
Para usar este mesmo comando no OSX, você precisa instalar GNU grep porque o grep BSD não tem o sinalizador perl regex (-P)
G.Rassovsky

4
No Windows, a versão Powershell disso é(svn status) -Match '^(?=.{0,6}C)'
bstoney

28

Basta usar grep!

svn st | grep '^C'

2
@sid, é regexp para 'começa com', o que significa que o primeiro caractere é um C
Joseph Lust

1
Eu estava pensando se isso poderia perder arquivos com status "A + C" .. Isso é um problema ..
Raghav

2
egrep '^ [AC +] +' faria o truque então, embora eu geralmente não tenha problemas de A + C.
Joseph Lust

1
Simples de lembrar e suficiente para a maioria dos casos. Obrigado @JosephLust.
csonuryilmaz

11

Você pode tentar svn merge -r <revision> --dry-runver o que acontece dessa maneira.


Não parece funcionar no Windows com svn 1.7.8. Registro de erros: svn: E205001: Tente 'svn help' para obter mais informações svn: E205001: Fonte de mesclagem necessária
kakyo


4

Para uso do Windows PowerShell:

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

3

Se você já fundiu, você pode usar

svn status

e veja um "C" maiúsculo para conflito, mas normalmente você não deve ver esse tipo em sua cópia de trabalho.


1

Talvez seja possível usar svn merge --dryrunao especificar a URL do repositório com todas as revisões após a última com a qual você atualizou.

Por exemplo, se o seu WC atual é baseado na revisão 147, isso poderia funcionar:

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

Não é nada que eu mesmo fiz, então você terá que tentar por si mesmo.


0

Se você não fundiu ou atualizou os arquivos, use o comando abaixo

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

Como diminutivo

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

Detalhes O
SVN não marca o status do conflito (C) até que você atualize o (s) arquivo (s) usando svn update.
Até então, os status são mostrados como abaixo

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

M - Modificado em local
* - Atualizações / entrada do remoto
M e * - Modificado em local, bem como em remoto - Este é um conflito, mas o svn ainda não marcou


-2

no mac

$ svn status | grep -e '^!'

fez o trabalho

aqui está o homem para grep:

uso: grep [-abcDEFGHhIiJLlmnOoqRSsUVvwxZ] [-A num] [-B num] [-C [num]] [-e padrão] [-f arquivo] [--binary-files = value] [--color = when] [--contexto [= num]] [--diretórios = ação] [--label] [--line-buffered] [--nulo] [padrão] [arquivo ...]


Como combinar um ponto de exclamação ajudará a encontrar itens em conflito?
anddam

^!é a regex para cada linha que começa com !. Todas as linhas em conflito começam com!
thesummersign

2
Não, acabei de resolver os conflitos em um repo 1.9 e as linhas de conflito estavam começando com apenas "C".
anddam
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.