Quando eu mesclar coisas no meu repositório, o Subversion deseja adicionar / alterar muitas svn:mergeinfo
propriedades de arquivos totalmente não relacionados às coisas que eu quero mesclar.
Perguntas sobre esse comportamento foram feitas antes aqui no Stack Overflow:
- Propriedades do SVN Mergeinfo em caminhos diferentes da raiz da cópia de trabalho
- Existe uma maneira de desativar o TortoiseSVN usando svn: mergeinfo?
Pelo que entendi nos tópicos mencionados acima, parece que muitos arquivos no meu repositório têm svn:mergeinfo
propriedades explícitas , quando não deveriam. O conselho é reduzir a quantidade e colocar apenas essas propriedades em arquivos / pastas relevantes.
Então agora minha pergunta: como posso remover facilmente essas propriedades desnecessárias? Estou usando o TortoiseSVN, mas reluto em verificar / corrigir manualmente centenas de arquivos. Existe uma maneira mais fácil de remover essas svn:mergeinfo
propriedades desnecessárias ?
PS Eu estou não olhando para o código API C ++ SVN.
fonte
Aqui está uma maneira de excluir todas as propriedades da subárvore svn: mergeinfo. Execute-o dentro da raiz do seu repositório:
Tudo em uma linha para facilitar a cópia / colar:
Para visualizar quais arquivos isso afetará antes de executá-lo, altere o último "propdel" para "propget" ou remova o último canal xargs completamente.
fonte
Conforme mencionado neste tópico :
fonte
Como não tenho confiança em cegos
svn:merge-info
exclusão propriedades, implementei uma ferramenta para analisar a situação atual em uma cópia de trabalho e remover o máximo possível de revisões de mesclagem das propriedades de informações de mesclagem não raiz. Após verificações e controles humanos adicionais, as alterações na cópia de trabalho podem ser confirmadas.Aqui está: svn-clean-mergeinfo
Não hesite em relatar qualquer problema sobre seu uso para melhorá-lo.
O Subversion 1.10 apresenta uma nova ferramenta dedicada a essa tarefa:
svn-mergeinfo-normalizer
fonte
Sei que já faz um tempo, mas tive um problema semelhante. Estou usando o TortoiseSVN 1.6.7. Aconteceu que a propriedade estava na raiz da minha cópia de trabalho. Quando eu vi as propriedades na raiz e clicou em Remover no svn: mergeinfo, ele me perguntou se eu quero removê-lo recursivamente. Isso livrou-se de todas as minhas configurações svn: mergeinfo.
fonte
Se tiver certeza de que deseja remover em massa as propriedades do mergeinfo, use o seguinte script BASH.
Ele obtém uma lista de arquivos alterados, filtra para apenas mesclar informações, muda tudo, retira tudo, exceto o caminho real do arquivo, converte os caminhos de uma por linha em uma lista delimitada por espaço e as chamadas são revertidas nessa lista.
fonte
--xml
sinalizador e um analisador XML; qualquer outra coisa pode mudar entre as versões, pois a compatibilidade avançada no formato de saída de texto não é garantida.Em vez de excluir cegamente as propriedades mergeinfo, também é possível concluir as mesclagens "ausentes".
Copie a propriedade mergeinfo da pasta raiz e execute uma mesclagem na pasta filha para o caminho relativo apropriado e a mesma lista de revisão exata. (Você pode, mas não precisa, apenas listar as diferenças entre essa lista e a que já está na pasta filha.)
Normalmente, essa mesclagem deve acabar apenas alterando as propriedades de mergeinfo, e não os arquivos reais. (Se acabar alterando os arquivos, uma das mesclagens anteriores deve ter sido apenas uma mesclagem parcial, o que pode estar causando problemas de qualquer maneira.)
Fazer isso deve excluir a propriedade mergeinfo para você, depois que você conseguir que os dois correspondam exatamente. Você também pode fazer o inverso: mesclar na raiz as revisões de mesclagem presentes apenas na pasta filho (novamente, basta colar a lista completa e deixar o SVN resolver as diferenças para você).
fonte
Para fazer alterações em uma estrutura de diretórios, isso seria (apenas 'find' não-DOS):
Executando um cliente 1.6.12 conectado a um servidor 1.5, eu tenho um problema semelhante; não é um subdiretório no projeto que precisa de sua própria svn: mergeinfo, mas ter 121 tais entradas (incluindo 5 diretórios abaixo ./var com "svn: ignore *") parece um pouco inapropriado. Portanto, seria bom ter um script (por exemplo, Python) capaz de remover as informações de mesclagem obviamente supérfluas e falar sobre outras diferenças ...
fonte