Pergunta

Normalmente, eu permitiria extensões, adicionando a seguinte a .hg/hgrc:

[extensions]
hgext.win32text=
[encode]
** = cleverencode:
[decode]
** = cleverdecode:

No entanto, quero esta configuração a ser versão, ou seja, parte do repositório, para que ele está habilitado para qualquer outra pessoa (colegas de trabalho, máquinas de construção) clonagem do repositório. Note-se que quem quer clona o repositório não deve ser obrigado a fazer qualquer para ativar essas extensões.

Parece que não é possível a partir a documentação , mas alguém sabe qualquer truques que podem me ajudar aqui?

Foi útil?

Solução

Você quer mercurial fazer algo automaticamente quando você clonar um repo (update os ganchos ou config). Documentação diz que não é possível e dá algumas muito boas razões:

Hooks do not propagate

In Mercurial, hooks are not revision controlled, and do not propagate when you clone,
or pull from, a repository. The reason for this is simple: a hook is a completely    
arbitrary piece of executable code. It runs under your user identity, with your 
privilege level, on your machine. No comments

It would be extremely reckless for any distributed revision control system to 
implement revision-controlled hooks, as this would offer an easily exploitable way to 
subvert the accounts of users of the revision control system. No comments

Então, claramente, mercurial si só não vai resolver o seu problema. Você claramente estado que você não quer nada, mas mercurial para resolver o seu problema, então a resposta é:. Que você está pedindo não é possível

A única maneira de resolver o seu problema é que todos os seus usuários terão de executar / instalar pelo menos uma vez um determinado script que executar as ações que você quer, algo como a instalação dos ganchos de direita.

Se você quer ser esperto sobre isso:

  • criar um script de um tempo para executar que irá instalar um gancho para copiar a configuração para a direita no .hg ou o usuário
  • Certifique-se de que o gancho, uma vez instalado, pode atualizar o script para distribuir atualizações de configuração para os usuários
  • fazer o gancho adicionar alguma marcação especial para cometer mensagens
  • lixo no repositório central comprometer que não levar a mensagem especial

Um pouco complicado, mas isso é o mais próximo que posso imaginar para suas necessidades:

  • user executar um script uma vez e eles esquecem
  • você pode ter certeza que, se o não executá-lo, eles não podem cometer a sua repo Central

Outras dicas

A versão de desenvolvimento atual do Mercurial (a ser lançado como Mercurial 1.3 em 1º de julho) suporta uma directiva %include em seus arquivos de configuração.

Isso significa que você pode pedir às pessoas para colocar

%include ../common-hgrc

em .hg/hgrc. Tendo feito isso, então você pode efetivamente controlar suas configurações Mercurial por cometer mudanças para common-hgrc. Quando eles puxam a mudança, as novas definições entrem em vigor.

Do nota, que isso é perigoso: qualquer um que pode levá-lo a puxar mudanças em seu repositório pode agora inserir ganchos arbitrárias em common-hgrc e você vai executá-los no próximo comando Mercurial (mesmo um "seguro" linha de comando hg status).

Você pode ser capaz de resolver o problema através do ProjRC extensão .

“Esta extensão faz Mercurial procurar e parse .hg / projrc definições de configuração adicionais. O arquivo é transferido sobre clone e em puxar (mas nunca em push)”

Que tal criar um link de .hg/hgrc de exemplo customhg/hgrc para que ele seja versão. Então você precisa criar algum gancho que cópias de volta para .hg/hgrc - por exemplo, após cada atualização.

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