Qual sistema de controle de versão pode gerenciar todos os aspectos? [fechadas]


17

Alguns meses atrás, eu entrei no Subversion e no GIT e fiquei decepcionado. Eles lidam bem com o código de fonte, mas não com outros aspectos. Por exemplo, um site sob controle de versão precisa gerenciar a propriedade de arquivo / diretório, acesso de leitura e gravação de arquivo / diretório, listas de controle de acesso, carimbos de data e hora e conteúdo do banco de dados. e links externos. Existe um sistema de controle de versão que pode fazer uma reversão tão perfeita quanto recarregar a partir de um backup de um mês?


12
Parece que você deseja um sistema de backup?
Macke

2
Você já pensou em executar seu site no OS X em um Mac? O Time Machine é talvez a solução de backup mais simples atualmente disponível e facilita muito a reversão, se necessário.

1
Se você está seriamente interessado no tópico, deve pesquisar as versões de sistemas de arquivos e bancos de dados de versões, que vão além dos sistemas de controle de versão para código-fonte.
Jakob

o que há de errado em escrever um pouco de script para lidar com coisas que o scm não lida? Dessa forma, você obtém o que deseja e o obtém sob controle de origem.
Newtopian

Respostas:


44

Você está confuso sobre o papel de um sistema de controle de versão. Não é e nunca foi concebido para ser um sistema de backup para um site em execução. Ele faz um excelente trabalho no gerenciamento de conteúdo estático, para que ele entre na produção de maneira controlada. Com o uso adequado de marcação e checkouts automatizados, até sites de mudanças rápidas podem ser mantidos em um sistema de controle de versão.

Um sistema de controle de versão poderá informar como você obteve a aparência do site no mês passado e a aparência atual (pelo menos para os componentes que estão sob controle de origem). Deve incluir tudo o que você precisa para reconstruir o site (excluindo conteúdo dinâmico). Como outros já observaram, quaisquer alterações nas permissões e propriedade devem ser com script e esse script incluído no controle de versão.

As permissões de acesso para sites geralmente são bastante simples. (Basicamente, você precisa garantir que o servidor da Web possa ler todo o conteúdo e escrever muito pouco dele.) Com exceção da propriedade do diretório dos poucos diretórios que precisam ser graváveis ​​pela subversão do servidor da Web e, possivelmente, pelo git, certamente pode lidar com permissões. Os diretórios graváveis ​​pelo servidor da Web geralmente contêm conteúdo dinâmico (criado e atualizado a partir do site), que é gerenciado separadamente da fonte dos sites.

Se me pedissem para trabalhar com um site com permissões e ACLs complicadas no site, eu teria sérias preocupações com o processo usado para gerenciar o site. Implementar um sistema de controle de versão e mover as ACLs para ele seria uma das soluções que eu consideraria seriamente.

O conteúdo dinâmico, como entradas ou comentários do blog, geralmente está contido em um banco de dados ou em outro armazenamento de dados, em vez do controle de versão usado para criar o site. O armazenamento de dados pode ser organizado para fornecer controle de versão do conteúdo (como é este software). Muitos Wikis usam um sistema de controle de versão para rastrear revisões.

EDITAR:

A correção que estou usando é (a) nenhum controle de versão; o script de instalação corrige outras permissões de arquivo indesejadas.

Esses problemas podem ser resolvidos importando o site para um sistema de controle de versão e alterando seu processo para que o site mestre seja atualizado por esse sistema. (a), (b) e (c) são tratadas diretamente pelo controle de versão. Você pode marcar as liberações para fazer (c) funcionar melhor. (d) geralmente não é um problema se você tiver apenas o sistema de implantação alterando seu site. Eu nunca precisei de ACLs no conteúdo do site.

(e) só precisa ser executado na criação inicial e nas principais alterações. Também pode incluir o script que atualiza o site do controle de versão e é executado com freqüência. Esses scripts tendem a ser bastante simples quando você mantém o site no sistema de controle de aversão.

Mas por que ninguém construiu um sistema geral para fazer isso?

Porque não é necessário se você usar um sistema de controle de versão.

Um sistema de controle de versão PODE rastrear todas essas coisas, mas nenhuma.

O CVS e o Subversion rastreiam o que você precisa rastrear se os estiver usando. Eles não rastrearão o que você precisa rastrear porque você não está usando um sistema de controle de versão, nem devem. Eles rastreiam o que você precisa acompanhar quando estiver usando um sistema de controle de versão.

Trabalhei com vários sites que gerenciavam seu conteúdo usando o controle de versão. Todos tinham requisitos diferentes para sites de armazenamento temporário, frequência de implantação e integridade das atualizações. Quando os sites estavam no controle de versão, os demais requisitos eram relativamente fáceis de atender. A documentação do CVS e do Subversion faz sugestões para possíveis métodos de atualização.

Você pode precisar de ACLs para limitar o acesso a áreas específicas no conteúdo controlado por versão. No entanto, costumo trabalhar com confiança. O controle de versão facilita ver quem fez o que quando. Se você não reformatar os arquivos, é fácil obter um histórico anotado de um arquivo mostrando quem adicionou quais linhas quando.


+1 por detalhar os motivos pelos quais a pergunta está errada desde o início.
Macke

2
No entanto, é bom que a pergunta tenha sido feita para que outras pessoas possam se beneficiar da sua resposta.
amigos estão dizendo sobre oliver-clare

Um sistema de controle de versão deve me dar a capacidade de dizer "OK, neste outro computador aqui, construa-me o site a partir de 28 de julho". O controle de versão é mais eficiente que os backups, pois rastreia as alterações. Caso contrário, sim, um backup diário faria o trabalho bem.
Andy Canfield

Sim, a correção que estou usando é (a) nenhum controle de versão; e) o script de instalação corrige outras permissões de arquivo indesejadas. Mas por que ninguém construiu um sistema geral para fazer isso? Um sistema de controle de versão PODE rastrear todas essas coisas, mas nenhuma.
precisa

+1: Ótima resposta. No entanto, gostaria de acrescentar que nenhum sistema de controle de versão rastreia essas coisas porque elas NÃO PODEM. As permissões e nomes de usuário são específicos do host e seu formato é específico do sistema; não há como a ferramenta os portar automaticamente para um host diferente, especialmente quando é um sistema operacional diferente.
Jan Hudec

10

Todos eles e nenhum deles.

É uma má idéia obter controle de origem para gerenciar esses detalhes diretamente, da maneira que sua pergunta sugere.

No entanto, você pode escrever um script bash (* nix) ou script PowerShell (Windows), que atinja um ou todos esses objetivos. Este script pode ser armazenado no controle de origem.

Em seguida, você pode tornar esse script um dos seus artefatos de construção e executá-lo como parte de sua implantação.


Este. A idéia de ter fontes é que você pode retirá-las do seu VCS e usá-las para criar o produto final.
Blrfl

2

IMHO um sistema de controle de versão em si não se destina a ser usado dessa maneira.

Mas o que eu costumo fazer é garantir que você possa obter uma versão do controle de origem. Você só precisa executar um arquivo de construção / arquivo PowerShell e tudo está funcionando novamente.

Para isso, você precisa:

  • todas as bibliotecas que você aplica dependem no controle de origem
  • um arquivo de construção que define seu ambiente
  • uma instrução sobre os requisitos do seu ambiente (você não deseja colocar uma instalação do servidor sql em seu controle de origem)

1

Acredito que o que você precisa no seu caso é uma ferramenta de gerenciamento de configuração . O que eu usei é fantoche .

Citando você:

gerenciar propriedade de arquivo / diretório, acesso de leitura e gravação de arquivo / diretório,

Eu fiz isso com uma linha (verifique se o usuário existe, verifique se o diretório existe etc.) ...

Listas de controle de acesso,

Se este for Windows ACLs, então existem ferramentas CM específicas para Windows ...

timestamps,

Novamente, o comando touch unix em uma linha de um script fantoche pode fazer isso por você.

conteúdo do banco de dados.

Isso é compilado em muitas estruturas, um trabalho cron que garante que tudo esteja lá de outra forma?

e links externos.

Não sei nada sobre isso.

Obviamente, depois de escrever o código de gerenciamento de configuração, convém colocá-lo (ou recuperá-lo nos sistemas envolvidos) em um sistema de controle de versão. Você não vai ficar longe deles :-).


Eu não entendo o que você quer dizer com "timestamps - novamente um comando unix em uma linha em um script fantoche poderia fazer isso". No meu site, para obter a versão do site, ele varre todo o setor e retorna a data e hora do arquivo mais recente. Desejo que meu controle de versão "Checkout" ofereça aos arquivos o mesmo registro de data e hora que eles tinham no check-in, não definido como 'agora'. Como você faz isso em um comando unix?
Andy Canfield

claro que você está procurando por "toque", verifique isto: en.wikipedia.org/wiki/Touch_(Unix) . Geralmente, ao fazer check-out, o horário agora será aplicado, mas se, por algum motivo, você desejar um carimbo de data / hora diferente, é assim que se faz.
Dimitrios Mistriotis

Eu realmente gostei da lógica da sua pergunta, você deseja automatizar o máximo possível, qual é o "caminho certo", você precisa de algum conhecimento sobre como fazê-lo e o que vale para o VControl e o que não. Gostaria que mais pessoas fora da indústria foram pensando da mesma forma ...
Dimitrios Mistriotis

0

Existe um sistema de controle de versão definitivo que gerencia todos os aspectos de todos os documentos digitais. Ele se chama Xanadu e foi criado por Theodor Holm Nelson em 1960, mesmo antes de coisas como sistemas de arquivos serem comuns. Então, em teoria, tudo está perfeitamente resolvido. Na prática, o Xanadu nunca foi implementado como previsto por Nelson, mas inspirou muitos sistemas mais especializados, incluindo os sistemas de controle da Web e de versão. Os trabalhos de Nelson ainda valem uma nova leitura - e podem responder à pergunta por que não existe um VCS geral que gere todos os aspectos.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.