Subversão:Falha na atualização quando há conflitos?
-
09-06-2019 - |
Pergunta
Existe uma maneira de dizer ao subversion "atualizar/mesclar, a menos que isso cause um conflito"?
Eu sei que você pode usar --dry-run
/ status -u
para verificar antes de executar a atualização, mas muitas vezes tenho outras pessoas executando atualizações e obtendo páginas da web quebradas porque não percebem a linha "C index.php".
Também notei que o svn não parece muito insatisfeito com os conflitos - ele ainda diz "atualizado para revisão, blá" e sai do zero, independentemente dos conflitos.Portanto, tenho que analisar a saída linha por linha para descobri-los.Certamente há uma maneira melhor?
Solução
Você pode usar o parâmetro --accept para indicar o que deve acontecer quando ocorrer um conflito:
--accept ARG : specify automatic conflict resolution action
('postpone', 'base', 'mine-full', 'theirs-full',
'edit', 'launch')
Veja também o resolução interativa de conflitos página no svnbook
Outras dicas
Talvez a melhor maneira seja usar uma ferramenta gráfica?Ou escreva um script para fazer a atualização que redirecione a saída para um arquivo e faça um "cat svnupdate.log | grep "^C "" no final para mostrar algum conflito?
Com as ferramentas gráficas que utilizo (TortoiseSVN e Netbeans), elas fazem um barulho desagradável no final e apresentam uma caixa de diálogo de seleção de mesclagem para lidar com elas.Não conheço nenhum equivalente com tanto poder para as ferramentas de linha de comando.
@jsight:O TortoiseSVN é ótimo, mas eu desenvolvo principalmente em um ambiente *NIX, sem X.Então, normalmente estou usando (restrito à) linha de comando.
Quanto à sua sugestão de script, é nisso que estou trabalhando agora - e é por isso que estou irritado por não poder simplesmente verificar $?.No momento estou pulando a "saída para um arquivo" e usando um canal, mas fora isso exatamente o que você descreve.
Você pode usar o parâmetro --diff3-cmd para especificar qual ferramenta de mesclagem usar (geralmente diff3 de diffutils).
você também pode usar um script de pré-confirmação para procurar marcadores de conflito em arquivos e impedir a confirmação quando eles estiverem presentes.
O Subversion 1.5 (lançado recentemente) adiciona alguma capacidade de especificar o que acontece durante um conflito de atualização, com o argumento "--accept".