SVN changelist todos os meus checkouts

2

Digamos que eu tenha mais de 100 arquivos que eu verifiquei. Existe uma maneira de adicionar todos eles a uma lista de alterações sem especificá-los um por um ou adicioná-los ao arquivo?

    
por Amir Afghani 24.03.2011 / 23:04

3 respostas

1

O sistema operacional que você está usando?

Vou assumir o Linux. Tente algo assim:

ls *.c *.h */*.c */*.h | xargs svn cl source

Isso adicionará todos os arquivos C e de cabeçalho nos subdiretórios atuais e imediatos à origem da lista de alterações. O comando acima pode ter problemas com espaços em branco em nomes de arquivos. Para algo mais sofisticado, experimente esse tamanho:

find . -name .svn -type d -prune -o -type f -print0 | xargs -0 svn cl source

Isso adicionará todos os arquivos normais não localizados nos diretórios .svn à origem da lista de alterações. Isso também funciona com espaços em branco em nomes de arquivos.

    
por 31.03.2011 / 08:39
0

Você não está muito claro sobre o que deseja: você diz que verificou mais de 100 arquivos, mas deseja adicioná-los ao repositório. Eu vou passar tanto a adicionar arquivos já em um espaço de trabalho e cometer modificações em um espaço de trabalho.

Para adicionar uma árvore de diretórios a uma cópia de trabalho já verificada, use svn add --force . , que adicionará todos os arquivos não versionados em sua cópia de trabalho, iniciando no diretório atual (mesmo que o diretório atual seja versionado). Os arquivos adicionados ainda precisarão ser confirmados no repositório.

Para cometer modificações, você pode executar svn commit -m "*insert comment here* . , o que comprometerá todas as alterações na cópia de trabalho do diretório atual até o repositório.

    
por 25.03.2011 / 00:23
0

Eu geralmente confio em meu editor de texto para conseguir isso, pois preciso de confirmação visual no caminho certo. Vamos usar o vim aqui, mas o emacs também pode fazer bem.

inicie o vim com um novo buffer na raiz do projeto

depois dentro do vim run

:r !svn st

Isso lerá a saída de svn st no seu buffer. Você pode encará-lo para garantir que é o que espera ou excluir entradas fora de sua lista de alterações.

M project/path/to/file1
M project/path/to/file2
M project/path/to/file3
M project/path2/to/file1
M project/path23/to/file1

Você poderia então usar a mágica do seu editor para transformá-los em comandos. Por exemplo ::

:%s/^M/svn cl change/

que irá transformar as linhas acima para

svn cl change project/path/to/file1
svn cl change project/path/to/file2
svn cl change project/path/to/file3
svn cl change project/path2/to/file1
svn cl change project/path23/to/file1

Você poderia enviar estes comandos para o seu shell ::

:w !bash

Isso deve retornar a saída de cada comando na janela da lista rápida.

Isso pode parecer mais detalhado do que as outras soluções, mas você pode ver todo o processo visualmente para confirmações (pense no modo dirado do emacs), e com a incapacidade do svn de reescrever o histórico isso evita erros.

Esses comandos permanecem no seu histórico, então você não precisa digitá-los novamente, basta recuperá-los do histórico.

    
por 01.12.2015 / 19:09

Tags