Fazendo uma construção de produção de um projeto PHP com Subversion
-
08-06-2019 - |
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.
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/