Lidando com um repositório de subversão e um novo usuário que não entendeu muito bem como funcionava.
Para encurtar a história, como a estrutura local foi confusa devido à cópia de pastas .svn aleatórias, fiz o seguinte:
- copiou a estrutura local para uma pasta chamada teste
- excluiu recursivamente todas as pastas .svn do diretório temporário
- baixou o repositório para uma "pasta limpa"
Agora estamos na última etapa - fazer com que o conteúdo da pasta de teste substitua o conteúdo limpo.
Eu preciso de um comando para copiar o conteúdo do diretório temporário para o diretório limpo, removendo tudo o que está apenas no diretório limpo, MAS deixando as pastas .svn da pasta limpa intactas.
Isso parece um trabalho para o rsync. O comando a seguir estaria correto?
rsync -avr --exclude=.svn* [staging] [clean]
rsync
subversion
SeanKilleen
fonte
fonte
rsync
com a--dry-run
opção de descobrir!Respostas:
A
-C
opção para rsync pode ser o que você deseja.Não deixe que a descrição curta na página de manual o engane. Parece que a opção se aplica apenas ao CVS, mas, dependendo da sua versão do rsync, ela ignorará os arquivos de quase todos os sistemas de controle de versão comuns existentes.
fonte
*.a
é para bibliotecas estáticas do iOS.Quase - isso deve ser
ou qualquer outra forma de citação que impeça o shell de expandir o curinga. (O curinga corresponde apenas a um arquivo improvável cujo nome começa com
--exclude=.svn
, mas é melhor não correr o risco e também funcionar corretamente, mesmo que o shell esteja configurado para engasgar com curingas não correspondentes ou expandi-los para a lista vazia. )-r
já está incluído no-a
. O extrar
é apenas supérfluo, não fará nenhum mal.--exclude
faz com que os arquivos correspondentes ao seu argumento não sejam copiados nem considerados para travessia recursiva. A dificuldade usual com o rsync está indo para o outro lado, excluindo um diretório, exceto por certas partes dele. Consulte Filtro Rsync: copiando apenas um padrão para obter algumas dicas.Nesse caso específico, excluir os diretórios de controle de versão é uma maneira rápida de obter o que você deseja.
fonte