Como obter um relatório svn culpa recursiva em um único arquivo xml para todos os arquivos não-binários em uma filial?

StackOverflow https://stackoverflow.com/questions/413777

Pergunta

Como posso obter um relatório svn culpa totalmente recursiva para todos os arquivos não-binários em uma filial, onde a saída é em um único arquivo em formato xml e inclui revisão, data, autor, nome de arquivo e caminho, e o texto da a linha do arquivo em si? As necessidades de saída inteiras para estar em um único arquivo. Ele será executado como parte da compilação através de um exemplo CCNet.

ferramentas disponíveis são a mais recente versão estável do nant e NAntContrib, msbuild, e mais recente svn linha de comando.

Aqui estão algumas das questões que foram executados em: Comando de linha de comando svn culpa não suporta diretório recursão. opção --xml de culpa não inclui o texto real de cada linha, embora ele não tem tudo o resto. Por NAntContrib padrão é passar o parâmetro --quiet (ao contrário da referência de tarefas), o que não é compatível com o comando culpa. NAntContrib svn tarefa não pode aceitar o parâmetro --xml.

Foi útil?

Solução

A resposta simples é que não há nenhuma maneira fácil de fazer isso. A melhor maneira, mais correto seria escrever o seu próprio cliente SVN (ou estender o já existente) para que ele tenha a funcionalidade que você precisa. Dificilmente trivial.

Há também uma maneira errada de fazê-lo, que também envolve a escrita de código. Não faça isso :

find . -type f | grep -v .svn | xargs svn blame > line_data
find . -type f | grep -v .svn | xargs svn --xml blame > xml_data

Você poderia roteiro os dois comandos svn juntos para evitar a execução find duas vezes, mas isso ainda será dolorosamente lento. Para adicionar insulto à injúria, então você vai ter que analisar os dois arquivos você mesmo para adicionar as linhas de origem reais para os dados XML.

Infelizmente, eu acho que essa é a extensão do suporte para o que você quer com o cliente svn padrão, e não consigo encontrar quaisquer outros clientes que fazem as coisas melhor (alguns não blame mesmo suporte).

Outras dicas

Eu não sei o que OS você está usando. Mas você pode tentar usar um loop for simples eo comando "svn ls -R" à lista recursivamente todos os arquivos no seu ramo (workspace / URL) e depois canalizá-lo para "--xml culpa svn".

Eu tentei isso na minha linha de comando SVN pronta e ele funciona muito bem (Windows XP, SVN 1.4.4). O comando que eu usei é a seguinte:

FOR / F "usebackq delims ==" % i IN (svn ls -R http://myurl/mybranch) culpo @svn --xml% i

Nota: Você pode evitar alguns "url não encontrado" tipo de erros se você digitar este comando em um espaço de trabalho (refletindo sua raiz ramo) e usar os 'ls svn -r` em vez da URL no comando acima.

Espero que isso ajude.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top