7

Normalmente, permetterebbe estensioni aggiungendo il seguente a .hg/hgrc:configurazione estensione Versione controllato in Mercurial

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

Tuttavia, voglio questa configurazione da versioned, cioè parte del repository, in modo che sia abilitato per chiunque altro (colleghi, costruisca macchine) clonazione del repository. Nota che chiunque cloni il repository non dovrebbe essere obbligato a fare nulla su per abilitare queste estensioni.

Sembra che non sia possibile da the documentation, ma qualcuno sa trucchi accurati che possono aiutarmi qui?

risposta

9

Si desidera che Mercurial faccia qualcosa automaticamente quando si clona un repository (aggiornare i ganci o la configurazione). Documentation dice che non è possibile e dà alcune buone ragioni:

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 

Quindi, chiaramente, lo stesso Mercurial non risolverà il problema. Dichiarate chiaramente che non volete altro che mercurio per risolvere il vostro problema, quindi la risposta è: ciò che state chiedendo non è possibile.

L'unico modo per risolvere il problema è che tutti gli utenti dovranno eseguire/installare almeno una volta uno script dato che esegue le azioni desiderate, ad esempio installando i giusti ganci.

Se vuoi essere intelligente su questo:

  • creare uno script di una volta per eseguire che installa un gancio per copiare la configurazione destra nella .hg o l'utente
  • fare in modo che il gancio, una volta installato, è possibile aggiornare lo script per distribuire gli aggiornamenti di configurazione agli utenti
  • rendere il gancio di aggiungere un po 'speciale marcatura di commettere messaggi
  • rifiutano sul repository centrale commettere che non portano il messaggio speciale

un po 'complicato, ma questo è il più vicino posso immaginare alle vostre esigenze:

  • utente eseguire uno script una volta e dimenticare
  • si può fare in modo che, se il non ha funzionato, loro non può impegnarsi per il vostro repo centrale
+0

Sì, gli script di build speciali o le configurazioni di server di build più comuni sono la soluzione migliore. Speravo solo che ci fosse qualche funzionalità non facilmente individuabile in HG per questo. --- "La documentazione dice che non è possibile e fornisce alcune ottime ragioni." Dove dice questo? Sembra qualcosa che voglio leggere. – Deestan

+0

Ho modificato la mia voce con i collegamenti al documento pertinente. –

0

Informazioni sulla creazione di un collegamento da .hg/hgrc ad es. customhg/hgrc in modo da ottenere la versione. Quindi devi creare un gancio che lo copi di nuovo a .hg/hgrc - ad es. dopo ogni aggiornamento.

+0

Deve essere completamente automatico, non voglio accedere periodicamente a ogni singolo build slave per creare il file' .hg/hgrc' collegamento. – Deestan

+0

Penso che Mercurial supporti i collegamenti. Quindi, se controlli customhg/hgrc, mentre punta a .hg/hgrc, dovrebbe funzionare. –

+1

La creazione del collegamento non è automatica. Quindi, stai chiedendo agli utenti di eseguire un'azione specifica, che l'autore non vuole. –

6

La versione attuale sviluppo di Mercurial (per essere rilasciato come Mercurial 1.3 il 1 ° luglio) supporta una direttiva %include nei suoi file di configurazione.

Ciò significa che si può chiedere alle persone di mettere

%include ../common-hgrc 

in .hg/hgrc. Fatto ciò, è possibile controllare in modo efficace le proprie impostazioni Mercurial confermando le modifiche a common-hgrc. Quando tirano la modifica, le nuove impostazioni avranno effetto.

Do nota, che questo è pericoloso: chiunque può ottenere di tirare le modifiche nel tuo repository possono ora inserire ganci arbitrarie in common-hgrc e si eseguirli sul prossimo comando di Mercurial (anche un "sicuro" riga di comando hg status) .

+0

Mi piace questa soluzione alternativa. E 'banale includere nei repository un piccolo script che aggiunge la riga% include a .hg/hgrc – LordOfThePigs

1

Potrebbe essere possibile risolvere il problema tramite ProjRC extension.

"Questa estensione consente a Mercurial di cercare e analizzare .hg/projrc per ulteriori impostazioni di configurazione. Il file viene trasferito su clone e su pull (ma mai su push) "

Problemi correlati