SVN- Como enviar vários arquivos de uma só vez

104

Tentei confirmar vários arquivos em diferentes diretórios de uma só vez, como abaixo,

svn commit –m”log msg” mydir/dir1/file1.c mydir/dir2/myfile1.h mydir/dir3/myfile3.c etc etc

Desde então, eu queria excluir alguns arquivos da lista de confirmação, então coloquei cada nome de arquivo na linha de comando como acima. Juntei no bloco de notas e veio cerca de 25 arquivos. Quando copio e colo na linha de comando, os últimos arquivos estão faltando e acho que isso pode ser uma limitação do buffer de linha de comando (?). Existe alguma opção de aumentar o comprimento do buffer?

Existe alguma opção que eu possa colocar todos os arquivos em um arquivo de texto e fornecê-lo como um argumento para svn commit?

Thi
fonte
8
@Thi - Aqueles que não usam uma GUI para subversão são masoquistas. Obtenha o Tortoise SVN ou equivalente em Linux.
2010
1
Se houver uma restrição no tamanho do buffer, ele não estará no SVN, mas em qualquer shell que você estiver usando.
Colin Fine
20
@cinquTimo: você pode preferir usar uma GUI para tudo. Outras pessoas não.
Colin Fine
@Colin, eu acho que sim, como aumentar o comprimento do buffer de shell nesse caso?
Qui
3
"Aqueles que não usam uma GUI para subversão são masoquistas." - O masoquismo é usar a subversão, mas alguns de nós não temos escolha.
Daniel

Respostas:

157

Você pode usar uma lista de alterações svn para controlar um conjunto de arquivos que deseja enviar juntos.

A página vinculada apresenta muitos detalhes, mas aqui está um exemplo de resumo executivo:

$ svn changelist my-changelist mydir/dir1/file1.c mydir/dir2/myfile1.h
$ svn changelist my-changelist mydir/dir3/myfile3.c etc.
... (add all the files you want to commit together at your own rate)
$ svn commit -m"log msg" --changelist my-changelist
Mark Pim
fonte
30

Você pode usar a --targets ARGopção onde ARG é o nome do arquivo de texto contendo os destinos para confirmação.

svn ci --targets myfiles.txt -m "another commit"
Dmitry Yudakov
fonte
Funciona para mim neste comando bash:find . -name \*my.mask | xargs svn ci -m"message" --targets -
ASten
28

Não tive problemas para enviar alguns arquivos como este:

svn commit fileDir1/ fileDir2/ -m "updated!"
psy
fonte
Isso não está funcionando para mim. Obtendo o erro "svn: '/' não é uma cópia de trabalho". Aqui eu postei minha pergunta, você pode ver. askubuntu.com/questions/442742/how-to-update-dir-on-svn-server/…
Sim funcionou bem. Também na raiz do meu documento, eu poderia enviar todas as alterações na estrutura da árvore da cópia de trabalho com isto:> svn commit. -m 'mensagem de confirmação em massa'
Grigoreas P.
3

Use um changeset. Você pode adicionar quantos arquivos desejar ao conjunto de alterações, todos de uma vez ou por meio de vários comandos; e comprometa todos de uma vez.

Colin Fine
fonte
1
svnbook.red-bean.com/en/1.6/svn.advanced.changelists.html - A palavra-chave svn é "changelist", que é abordada na primeira resposta e mais votada.
John W. Clark