Pergunta

Eu estou usando SVN para tarefas de desenvolvimento, mas ainda tem muitos arquivos gerenciados com RCS, porque não parece razoável para editá-los na minha cópia de trabalho do repositório SVN privada (já que eles são muitas vezes apenas arquivos de configuração que são também melhor testado no lugar). Ele também não parece razoável ter uma cópia de trabalho do repositório onde há arquivos para colocar sob controle SVN, então eu só usar RCS vez.

Qual é a sua abordagem para o gerenciamento de arquivos que não devem, idealmente, ser movimentados / são editados e testado no local?

Para ser mais preciso: Eu gostaria de ter o equivalente a

  • ter um file.txt protegido contra gravação
  • um comando como "co file.txt -l" (RCS) para torná-lo editável
  • a capacidade de editar no local e testá-lo imediatamente
  • um comando como "ci u file.txt" (RCS) para registrar a mudança, adicionar um comentário e torná-lo somente leitura novamente
  • outros usuários também deve ser capaz de fazer isso no mesmo lugar
  • , mas, a informação da versão deve ir para um lugar seguro (o representante svn presumivelmente), em um servidor diferente
Foi útil?

Solução

Eu uso cópia em sistemas de arquivos de gravação (vaca) como Ext3cow (disclaimer, eu sou um dos seus colaboradores ) para gerir um monte de coisas. Por exemplo:

  • Usando instantâneos para reverter repositórios inteiros, não importa que tipo. Por exemplo, se eu estragar completamente até uma árvore git, eu posso cp -dpfR ./@123456789 ./, que substitui o meu repo trabalhar com arquivos, assim como eles estavam em época 123456789.
  • Usando versões / instantâneos como o seu próprio VCS imutável, ideal para / etc e outras coisas. Como os arquivos no passado não podem ser apagados ou modificados, cada instantâneo é uma revisão imutável de um único arquivo ou a árvore inteira no tempo.

Normalmente, eu uso Git ou Mercurial sobre Subversion, porque eu prefiro um VCS distribuído, mas agora eu insistir em manter meus repositórios em um FS de versão localmente.

Para usuários do Windows, eu acredito que existem algumas implementações portáteis do mesmo feito completamente em python ... mas não tenho certeza.

Outras dicas

Como disse antes que você está tentando usar o SVN para algo que deve estar usando um DVCS como git ou Mercurial.

Todos podem ter seu próprio repositório, e depois sincronizá-lo com o MAIS repo central (como o repo SVN).

Este é realmente o que eu uso nos meus próprios projetos.

A única coisa que eu não entendo é por que você precisa fechaduras. Um arquivo não tem que ser só de leitura. Você provavelmente está pensando dessa forma por causa da maneira SVN faz fusões (você quase sempre tem que fazê-lo manualmente). Git realmente mágica [1] e a maioria das fusões vai sem intervenção humana.

[1] Ok, não é mágica. Enquanto SVN se preocupa com arquivos, cuidados Git sobre pedaços de código. Desta forma, ele pode mesclar um arquivo mudadas duas vezes, ao mesmo tempo, desde que você não mudar exatamente o mesmo pedaço de código.

sistemas de controle de versão distribuído modernos como Git, Mercurial ou bazar são a melhor ferramenta em uma situação como esta. Não por causa do aspecto distribuída (o que não é claramente crucial aqui), mas porque é extremamente fácil de criar um repositório no local.

Em Mercurial você só tem que fazer:

cd ~/directory
hg init

Com Git é é semelhante:

cd ~/directory
git init
git add .

Cada cópia de trabalho é um repositório completo, e você pode empurrá-lo para o servidor remoto como um backup se você gosta. Além disso todos os dados do repositório é armazenado em um único diretório oculto, de modo a evitar o problema de ter de toneladas de diretórios .svn em todo o lugar.

Eu uso Mercurial para gerenciar /etc nos meus servidores e acho que é extremamente conveniente. Uma coisa a nota, não vai marcar seu arquivo somente leitura (como RCS), mas eu considero isso uma vantagem.

Você precisa perceber que repositórios SVN são livres. Você pode criar quantos quiser.

Você também precisa perceber que você não tem que verificar um repositório inteiro. Você disse:

Ele também não parece razoável ter uma cópia de trabalho do repositório onde há arquivos para colocar sob controle SVN

Eu não sei o que você está realmente tentando fazer, mas tenho a impressão de que você usa SVN de uma forma peculiar.

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