Pergunta

Tenho uma situação de desenvolvimento um tanto interessante.O cliente e o servidor de implantação estão dentro de um firewall sem acesso ao servidor Subversion.Mas os desenvolvedores estão fora do firewall e podem usar o servidor Subversion.No momento, a solução que descobri é atualizar minha cópia local do código e, em seguida, extrair os arquivos atualizados mais recentemente usando o UnleashIT.

A questão é como obter apenas os arquivos atualizados do Subversion para que possam ser transportados fisicamente através do firewall e colocados no servidor de implantação.

Não estou preocupado em tentar alterar a configuração do firewall ou tentar descobrir uma maneira mais fácil de acessar o servidor Subversion de dentro do firewall.Estou apenas interessado em obter uma exportação parcial do repositório dos arquivos alterados mais recentemente.

Existem outras sugestões?

Resposta encontrada:Além da resposta que marquei como Resposta, também encontrei o seguinte aqui para poder fazer isso no TortoiseSVN:

de http://svn.haxx.se/tsvn/archive-2006-08/0051.shtml

* select the two revisions
* right-click, "compare revisions"
* select all files in the list
* right-click, choose "export to..." 
Foi útil?

Solução

encontrei sincronizar novamente extremamente útil para sincronizar árvores de diretórios em vários sistemas.Se você tiver acesso shell ao seu servidor a partir de uma estação de trabalho de desenvolvimento, poderá verificar regularmente o código localmente e executar o rsync, que transferirá apenas os arquivos que foram alterados para o servidor.

(Isso pressupõe um ambiente semelhante ao Unix em suas estações de trabalho de desenvolvimento.Cygwin funcionará bem.)

cd deploy
svn update
rsync -a . server:webdir/

Sua pergunta parece que você não tem nenhum acesso direto à rede de suas estações de trabalho de desenvolvimento para seu servidor, e o que você realmente está procurando é uma maneira de fazer com que o Subversion informe quais arquivos foram alterados. exportação svn suporta um argumento para permitir que você verifique apenas os arquivos que foram alterados entre revisões específicas.Da ajuda do svn:

  -r [--revision] arg      : ARG (some commands also take ARG1:ARG2 range)
                             A revision argument can be one of:
                                NUMBER       revision number
                                '{' DATE '}' revision at start of the date
                                'HEAD'       latest in repository
                                'BASE'       base rev of item's working copy
                                'COMMITTED'  last commit at or before BASE
                                'PREV'       revision just before COMMITTED

Você precisará acompanhar qual foi a revisão mais recente que você copiou para o servidor.Supondo que seja a revisão SVN xxxx:

svn export -r xxxx:HEAD http://svn/

Em seguida, basta copiar o conteúdo do implantar diretório para o seu servidor além dos arquivos existentes.

Isso não irá lidar com arquivos excluídos, o que pode ser problemático em alguns ambientes.

Outras dicas

svn export não aceita um intervalo de revisão, experimente.

Uma possível solução é obter a lista de arquivos alterados com:

svn diff --summarize -rXXX http://svn/...

e exporte cada um deles.

Então se bem entendi...

Digamos que você tenha um repositório parecido com este:

/
|+-DIR1
|   |- FILEa
|   |- FILEb
|+-DIR2
|   |- FILEc
|   |- FILEd
|- FILEe
|- FILEf

E digamos que você atualize arquivos FILEa, FILEc, e FILEf e confirme-os de volta no repositório.Então o que você deseja exportar do repositório é uma estrutura parecida com esta:

/
|+-DIR1
|   |- FILEa
|+-DIR2
|   |- FILEc
|- FILEf

Isso está certo?

Os ganchos do Subversion parecem muito promissores.Mas sendo relativamente desinformado sobre como criar o script do gancho, como eu retiraria os arquivos que foram confirmados e os enviaria por FTP para algum lugar, mantendo a estrutura de diretórios?

Se eu pudesse fazer isso, alguém dentro do firewall poderia transferir os arquivos para o servidor de implantação e estaríamos prontos para prosseguir.

Você poderia tentar brincar com o despejo svnadmin comando que acompanha os binários do Subversion.Você pode usar este comando para despejar todo o repositório em um arquivo, apenas uma determinada revisão ou uma série de revisões.Então use carregamento svnadmin para carregar o despejar arquivo em um repositório novo e limpo.

Não é uma solução perfeita, pois funciona em termos de repositório e não de arquivos individuais.

Você só quer que as pessoas que estão atrás do firewall possam acessar os arquivos mais recentes comprometidos com o Subversion, certo?

Você poderia escrever um script de gancho svn que usa algum método (talvez scp ou ftp) para enviar os arquivos para o local remoto no momento em que são confirmados?

Se você marcar as revisões, isso pode ajudar github svn-diff-exportação

Você não fornece informações sobre o que é permitido pelo firewall.Não estou familiarizado com o UnleashIT.

Eu acho que você poderia ter um script que exportasse do SVN para uma pasta no servidor SVN.O script então compacta os arquivos exportados.Você pode então transportar o arquivo ZIP como quiser e extraí-lo para o servidor de implantação.

O TortoiseSVN suporta servidores proxy para que você possa usar um deles do lado do cliente?

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