Pergunta

No servidor SVN, há um arquivo chamado config.conf. Eu tenho uma versão local chamado a mesma coisa (no mesmo lugar). Como posso ter certeza de que minha configuração local não obter substituído, nem o check-in?

Enquanto eu estou aqui, é a diferente resposta para um diretório?

Eu estou usando Tortoise SVN, mas as respostas de linha de comando são legais.

Obrigado!

[Desculpe se esta pergunta básica foi perguntado antes ... Eu olhei, mas não encontrá-lo.]

Foi útil?

Solução

SVN vai sempre pensar que esse arquivo é parte do repositório se você nomear o mesmo e colá-la no mesmo diretório. Suas opções são

  • Mudar o nome (talvez escrever um script shell para mv config.conf config.conf.theirs && mv config.conf.mine config.conf e, em seguida, executar o seu app)
  • Mova-o. Talvez adicionar alguma lógica ao seu aplicativo que verifica a existência de config.conf em um diretório específico do usuário local e, em seguida, usa o config.conf padrão se nenhum for encontrado

Outras dicas

TortoiseSVN tem uma resposta agradável para metade deste problema: ignorar-on-commit

Este o impede de cometer acidentalmente "apenas locais" mudanças, mas não resolve o problema na atualização acidentalmente um arquivo mudou localmente.

Confira este post para o detalhado como:

http: //blog.baljeetsingh. líquidas / 2009/02 / dicas-tricks-svn-ignore-on-commit.html

  1. excluí-lo do repositório com svn: ignore (você terá que excluí-lo a partir do repositório primeiro)
  2. manter uma cópia em config.conf.default com valores de espaço reservado. Você pode manter a cópia padrão no repositório.
  3. config.conf uso como normal - subversion não vai vê-lo mais

Graças a todos. Pensei Eoin pode ser louco, mas na verdade, é verdade. Você não pode ignorar um arquivo que está no controle de versão.

De acordo com os docs tartaruga

Ignorando Itens de Versão

Versioned arquivos e pastas não pode nunca ser ignorado - que é uma característica da Subversão. Se você versionadas um arquivo erro, leia a seção chamada “Ignorar ficheiros que já estão versionadas”para obter instruções sobre como “Unversion”-lo.

E, desde os docs SVN

Eu tenho um arquivo no meu projeto que cada desenvolvedor deve mudar, mas eu não faço quer que os mods locais para nunca ser comprometido. Como posso fazer 'svn' ignorar o arquivo?

A resposta é: não colocar esse arquivo sob controle de versão. Em vez disso, colocar um modelo do arquivo sob a versão controle, algo como "file.tmpl".

Em seguida, após a inicial 'svn check-out', têm seus usuários (ou o seu sistema de compilação) fazer um OS normais cópia do o modelo para o nome do arquivo correto, e ter os usuários personalizem a cópia. o arquivo é unversioned, por isso nunca vai estar comprometido. E se você quiser, você pode adicionar o arquivo para seus do diretório pai svn: ignorar propriedade, por isso não faz mostrar-se como '?' no 'svn status' comando.

Esta é terrivelmente chato ... eu acho que vou ter que ter cuidado com esse arquivo e fazer uma cópia de backup do meu próprio config (que eu posso ignorar).

Obrigado a todos por suas respostas.

Você pode adicionar um svn-ignore: atributo para sua pasta local que exclui config.conf ou mesmo * .conf

Mas eu acredito, você teria que excluir completamente este arquivo do SVN, ou seja, se a sua foi já verificado no repo, você precisa excluí-lo rfrom o repositório primeira

Quando há uma subversioning com arquivos de configuração, eu encontrei muito útil ter um tronco inteiro dedicado a ele. Por quê? Mais porque você pode simplesmente ter dois cópia repositório local, uma para usos locais, um para chanings remotos.

Como esta:

/ workdir / configuração [é um link para / workdir / conf_local]
/ Workdir / conf_local [manter conf locais atualizado, mas não ovverride minha configurações]
/ Workdir / conf_remote [sempre atualizado com dados remotos, para que eu possa confirmar as alterações]

Eu não sei que tipo de configuração que você tem, ou se esta é aplicável a qualquer linguagem que acontecer de você estar usando, mas esta é a maneira que eu fazê-lo com sites e PHP.

Primeiro, você cria configuração padrão, o que provavelmente tem valores ingênuos que não vai funcionar por 90% dos setups, mas dá-lhe uma referência para que valores existem, e que realmente pode ser configurado. Este script é normalmente chamado de 'config.default.php' ou algo em uma veia similar. Na parte inferior desse script é algo da ordem de:

if (file_exists("config.php")) require "config.php";

A lógica simples. Se há uma substituição de usuário para o arquivo de configuração, em seguida, carregá-lo, e deixá-lo substituir o que for preciso. Em seguida, basta manter este arquivo de configuração de usuário ignorada via os métodos já explicado em todas as máquinas de desenvolvimento e quaisquer máquinas de produção que mantêm um checkout svn por qualquer motivo. Esta é uma configuração muito flexível, e procedimentos semelhantes pode ser configurado para a maioria das linguagens / ambientes.

como Scrappydog apontou

Você pode usar / criar listas diferentes na caixa de diálogo

commit

suporta ignorar-on-commit lista, desta forma os arquivos sob esta lista não será visível ..

Você pode se referir a este link do blog para mais detalhes.

http: //blog.baljeetsingh .net / 2009/02 / dicas-tricks-svn-ignore-on-commit.html

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