Existe alguma maneira de confirmar apenas uma lista de arquivos específicos (eq apenas uma da lista de arquivos que o SVN deseja confirmar).
Estou trabalhando no MAC OS X no Terminal, sem qualquer interface do usuário.
Existe alguma maneira de confirmar apenas uma lista de arquivos específicos (eq apenas uma da lista de arquivos que o SVN deseja confirmar).
Estou trabalhando no MAC OS X no Terminal, sem qualquer interface do usuário.
Respostas:
Certo. Apenas liste os arquivos:
$ svn ci -m "Fixed all those horrible crashes" foo bar baz graphics/logo.png
Não conheço uma maneira de dizer a ele para ignorar um determinado conjunto de arquivos. Obviamente, se os arquivos que você deseja confirmar são facilmente listados pelo shell, você pode usar isso:
$ svn ci -m "No longer sets printer on fire" printer-driver/*.c
Você também pode fazer com que o comando svn leia a lista de arquivos a serem confirmados de um arquivo:
$ svn ci -m "Now works" --targets fix4711.txt
svn add
é usado para adicionar arquivos aos repositórios.
Use listas de alterações. A vantagem sobre a especificação de arquivos é que você pode visualizar e confirmar tudo o que você deseja é realmente incluído antes de confirmar.
$ svn changelist fix-issue-237 foo.c
Path 'foo.c' is now a member of changelist 'fix-issue-237'.
Feito isso, o svn agora mantém as coisas separadas para você. Isso ajuda quando você está manipulando várias alterações
$ svn status
A bar.c
A baz.c
--- Changelist 'fix-issue-237':
A foo.c
Por fim, diga a ele para confirmar o que você queria que fosse alterado.
$ svn commit --changelist fix-issue-237 -m "Issue 237"
svn changelist fix-issue-237 --recursive path/to/directory
Basicamente, você coloca os arquivos que deseja confirmar na linha de comando
svn ci file1 file2 dir1/file3
Devido ao meu estado de subversão, tive que ser criativo. svn st
mostraram M
, A
e ~
estados. Eu só queria M
e A
então ...
svn st | grep ^[A\|M] | cut -d' ' -f8- > targets.txt
Este comando diz que encontre todas as linhas de saída svn st
que começam com M
ou A
, corte usando o delimitador de espaço e, em seguida, obtenha as colunas 8 até o fim. Despejar isso em target.txt e substituir.
Em seguida, modifique o target.txt para remover ainda mais a lista de arquivos. Em seguida, execute abaixo para confirmar:
svn ci -m "My commit message" --targets targets.txt
Provavelmente não é o caso de uso mais comum, mas espero que ajude alguém.
grep -v '^~'
para colocar na lista negra o que deseja.
Além de listar os arquivos explicitamente, como mostrado por desenrolar e Wienczny , você pode configurar as listas de alterações e verificá-las. Isso permite gerenciar conjuntos de alterações disjuntos na mesma cópia de trabalho.
Você pode ler sobre eles na versão online do excelente livro SVN .
tente este script ..
#!/bin/bash
NULL="_"
for f in `svn st|grep -v ^\?|sed s/.\ *//`;
do LIST="${LIST} $f $NULL on";
done
dialog --checklist "Select files to commit" 30 60 30 $LIST 2>/tmp/svnlist.txt
svn ci `cat /tmp/svnlist.txt|sed 's/"//g'`
Eu faço uma (sub) pasta chamada "hide", movo o arquivo para o qual não quero confirmar. Em seguida, faço o meu commit, ignorando a reclamação sobre o arquivo ausente. Em seguida, mova o arquivo oculto de ocultar para ./
Não conheço nenhuma desvantagem dessa tática.