Pergunta

Se você está trabalhando em PHP (ou acho que em qualquer linguagem de programação) e usando o subversion como controle de origem, existe uma maneira de executar seu projeto (por exemplo):

C:\Projetos est\.svn
C:\Projetos este\docs\
C:\Projetos est\faq.php
C:\Projetos est\guestbook.php
C:\Projetos este\index.php
C:\Projetos est est.php

e construa/copie/o que quer que seja, para eliminar certos arquivos e se tornar:

C:\Projetos est\faq.php
C:\Projetos est\guestbook.php
C:\Projetos este\index.php

automaticamente?Estou ficando cansado de fazer um branch e depois passar por ele e deletar todas as pastas ".svn", o diretório docs e meus arquivos de prototipagem.

Eu sei que provavelmente poderia usar um arquivo .bat para copiar apenas os arquivos específicos que desejo, mas esperava que houvesse alguma maneira com o subversion de pseudo-ignorar um arquivo, para onde ele ainda será versionado, mas onde você poderia fazer um instantâneo do projeto que ignora os arquivos que você disse para pseudo-ignorar.

Eu sei que li em algum lugar on-line sobre algumas funcionalidades que pelo menos permitem copiar sem as pastas .svn, mas não consigo encontrá-las agora.

Foi útil?

Solução

Se você usa o TortoiseSVN, você pode usar o recurso de exportação para remover automaticamente todos os arquivos .svn.Acho que outras coisas do SVN têm o mesmo recurso.

Clique com o botão direito na pasta raiz do projeto, TortoiseSVN > Exportar e diga onde deseja o diretório .svn free.

Outras dicas

Aqui está uma ideia maluca de chiclete e sapato:

Copie todos os arquivos manualmente ou usando o método existente pela primeira vez.Então, como presumo que você esteja em uma plataforma Windows, instale Sincronizar brinquedo e configure-o no método de inscrição, o que efetivamente copiaria unidirecionalmente apenas as alterações feitas desde o último pseudo-commit para produção para arquivos já em produção.Se quiser adicionar um arquivo, basta copiá-lo manualmente e retomar a operação do SyncToy.

Ok, então minha solução final é esta:

Use o comando export para exportar para uma pasta chamada "export" no mesmo diretório de um arquivo chamado "deploy.bat", então executo o script de implantação (v1 significa versão 1, que é a versão em que estou atualmente neste projeto) Este script utiliza 7-Zip, que coloquei no caminho do meu sistema para poder usá-lo como um utilitário de linha de comando:

rem replace the v1 directory with the export directory
rd /s /q v1
move /y export\newIMS v1
rd /s /q export

rem remove the prepDocs directory from the project
rd /s /q v1\prepDocs

rem remove the scripts directory from the project
rd /s /q v1\scripts

rem remove individual files from project
del v1\.project
rem del v1\inc\testLoad.html
rem del v1\inc\testInc.js

SET /P version=Please enter version number:

rem zip the file up with 7-Zip and name it after whatever version number the user typed in.
7z a -r v%version%.zip v1

rem copy everything to the shared space ready for deployment
xcopy v%version%.zip /s /q /y /i "Z:\IT\IT Security\IT Projects\IMS\v%version%.zip"
xcopy v1 /s /q /y /i "Z:\IT\IT Security\IT Projects\IMS\currentVersion"

rem keep the window open until user presses any key
PAUSE

Não tive tempo de verificar a solução SyncToy, então não tome isso como uma rejeição desse método.Eu simplesmente sabia como fazer isso e não tive tempo de verificar isso (estão com falta de tempo agora).

Fontes:

http://commandwindows.com/command2.htm
http://www.ss64.com/nt/

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