Pergunta

Estou procurando boas sugestões sobre como implementar controle de versão e código-fonte para projetos web.

Eu investiguei o subversion, mas parece que ele só cuida do código.Estou realmente procurando por algo que possa fazer uma boa versão, ramificação, arquivamento, etc.não apenas com código-fonte, mas também com outros ativos da web, como arquivos de arte, clipes de filme e até backups de banco de dados.

Trabalhamos em um ambiente misto mac/pc, então o Visual Source Safe ou qualquer coisa puramente baseada em PC seria impossível.Qualquer ajuda?

Foi útil?

Solução

Todos os sistemas de controle de origem que usei (CVS, subversion, git) irão lidar com arquivos binários e também com texto.Se você está trabalhando com designers com experiência limitada em controle de versão, no momento o Subversion tem uma escolha melhor de GUIs.No PC, não há substituto para TartarugaSVN, e para o Mac ouvi coisas boas sobre Versões.

Outras dicas

O que faz você pensar que não pode versionar, ramificar, arquivar, etc...arquivos gráficos com o Subversion?

Eu usei o Subversion para meus programas, que incluem gráficos, e parece lidar bem com eles.(Bem, a comparação é um problema, mas nunca ouvi falar de um bom programa de comparação de imagens.)

Você pode adicionar qualquer tipo de arquivo ao Subversion.Se forem arquivos binários, a versão salva é simplesmente uma cópia, enquanto os arquivos de texto apenas as diferenças são salvas;entretanto, salvar esses outros tipos de arquivos no Subversion é perfeitamente aceitável.

Usar suplementos de shell (Tortoise no Windows) torna isso bastante fácil.Não tenho experiência com clientes Mac, mas imagino que existam opções por aí.

Os outros apontaram que o Subversion e seus similares não têm problemas para lidar com arquivos binários (embora não sejam tão eficientes em termos de espaço quanto o texto).O requisito de backup do banco de dados é mais interessante e já me deparei mais de uma vez.

Idealmente, eu gostaria de uma representação de texto da diferença entre duas versões de um banco de dados (esquema e dados).Aplicar tal diferença levaria você de uma versão para outra.O mecanismo de controle de origem poderia simplesmente armazenar isso com cada commit.As migrações Rails são uma maneira bacana de lidar com diferenças de esquema, mas não vi nada que possa lidar com diferenças completas de esquema e dados em um formato de texto simples.

Caso contrário, suponho que você possa fazer check-in de um dump de banco de dados de texto como o tipo que mysqldump comando para MySQL gera.O algoritmo diff da ferramenta de controle de origem provavelmente não lidará com isso de forma eficiente, mas provavelmente exigirá menos espaço do que o check-in de um arquivo de banco de dados binário opaco.

Eu ainda uso o Subversion, e no Windows eu uso o TortoiseSVN, que inclui o TortoiseIDiff especificamente para ver as diferenças entre os arquivos de imagem.

eu tenho usado idiota por várias semanas e comecei a gostar bastante dele.É multiplataforma, gerencia conflitos excepcionalmente bem e oferece a todos seu próprio repositório de versões completo para que possam verificar as alterações mesmo quando não estiverem conectados a uma rede.

Muitos projetos de alto perfil agora estão usando git, incluindo Ruby on Rails.

O Subversion tem binários pré-compilados para Mac OS X.Também está disponível através MacPorts e Fink.Existem algumas interfaces excelentes (além do linha de comando). svnX é um cliente de código aberto que já existe há algum tempo e, como mencionado Versões é um cliente de código fechado muito bonito que está atualmente em beta.Você ainda deveria familiarize-se com a linha de comando, pois você encontrará problemas que esses clientes GUI não conseguem resolver.

Subversion lida com arquivos binários muito bem.Eu o usei para projetos da Web no passado e versionei arquivos de imagens e Flash com sucesso com o código que os usava.

O Mac tem algo chamado "Versão" que é uma interface de subversão como "Tortoise SVN". Achei-o amigável e eficaz.

Eu também trabalho em um ambiente Mac/PC (crianças artísticas) e a subversão realmente é o caminho a percorrer.Eu mantenho todos os textos, imagens, consultas e códigos lá.

Meus colegas de trabalho não técnicos acharam fácil de usar depois que expliquei o conceito.

Eu definitivamente daria outra olhada no subversion.Eu sei que pode ser chato, mas ler o livro SVN vai ajudar muito.

Eu pessoalmente uso versões para Mac.Possui uma interface de usuário realmente ótima para interagir com um repositório Subversion.

O que faço é verificar o diretório /Trunk de um projeto na raiz do site.Dessa forma, posso testar e executar a cópia de trabalho como minha configuração de desenvolvimento real.Quando estiver pronto para entrar no ar, posso exportar os arquivos das pastas repo sans .svn e carregá-los em um servidor de produção ou de teste.Espero que isso lhe dê uma ideia de que tipo de fluxo de trabalho você pode ter usando o Subversion.

Eu acho que o svn é uma ótima escolha, alguns usuários podem até usar o git para fazer ramificações locais.Eu executo o Eclipse no meu Mac, então uso uma combinação de git, linha de comando svn e subversivo (um plugin do Eclipse para svn).Aqui está uma lista de clientes mac svn (a maioria é multiplataforma)

http://scplugin.tigris.org/ como o TortoiseSVN, mas não tão rico em recursos)
http://subcommander.tigris.org/
http://rapidsvn.tigris.org/
http://www.versionsapp.com/
http://www.syncrosvnclient.com/ (não grátis $ 59)
http://www.lachoseinteractive.net/en/community/subversion/svnx/features/

Para usar o controle de origem com um banco de dados, você provavelmente precisará produzir uma representação baseada em texto do esquema e dos dados.Você deve executar isso automaticamente uma vez por dia e confirmar as alterações em seu repositório.

Observe que um SGBD pode alterar a ordem das linhas em um banco de dados para tornar algumas operações mais eficientes.Isso pode fazer com que dois dumps pareçam diferentes, sem realmente terem dados diferentes.Certifique-se de que o que quer que crie o despejo de seus dados os classifique pela chave primária de cada tabela e que o conjunto de tabelas esteja em uma ordem definida, para que as alterações que você vê ao diferenciar 2 despejos sejam apenas as alterações importantes.

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