Configurazione estensione Version-controllata in Mercurial
-
21-08-2019 - |
Domanda
Normalmente, permetterebbe estensioni aggiungendo la seguente a .hg/hgrc
:
[extensions]
hgext.win32text=
[encode]
** = cleverencode:
[decode]
** = cleverdecode:
Comunque, voglio che questa configurazione da versioned, vale a dire parte del repository, in modo che sia abilitato per chiunque altro (colleghi, costruire macchine) la clonazione del repository. Si noti che i cloni persona che immette il repository non dovrebbe essere tenuto a fare niente per abilitare queste estensioni.
Sembra che non è possibile dal documentazione , ma qualcuno sa qualsiasi trucchetti che mi può aiutare qui?
Soluzione
Si vuole mercuriale di fare qualcosa automaticamente quando si clona un pronti contro termine (aggiornare i ganci o di configurazione). Documentazione dice che non è possibile e dà alcuni ottimi motivi:
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. Lei afferma chiaramente che si desidera altro che Mercurial per risolvere il problema, quindi la risposta è: quello che chiedete non è possibile
.L'unico modo per risolvere il tuo problema è che tutti gli utenti dovranno eseguire / installare almeno una volta un determinato script che esegue le azioni che si desidera, qualcosa come l'installazione dei ganci destri.
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, in grado di aggiornare lo script per distribuire gli aggiornamenti di configurazione per gli utenti
- fanno il gancio aggiungere un po 'speciale marcatura di commettere i messaggi
- rifiutare il repository centrale commettere che non portare il messaggio speciale
Un po 'complicato, ma questo è il più vicino posso immaginare alle vostre esigenze:
- utente eseguire uno script, una volta e si dimentica
- è possibile fare in modo che, se il non aver corso, essi non possono impegnarsi per il vostro repo centrale
Altri suggerimenti
L'attuale versione di sviluppo di Mercurial (per essere rilasciato come Mercurial 1.3 il 1 ° luglio) supporta una %include
direttiva nei suoi file di configurazione.
Ciò significa che si può chiedere alle persone di mettere
%include ../common-hgrc
in .hg/hgrc
. Dopo aver fatto questo, si può quindi controllare in modo efficace le loro impostazioni di Mercurial commettendo modifiche common-hgrc
. Quando tirano il cambiamento, le nuove impostazioni avranno effetto.
Do atto, che questo è pericoloso: chiunque può ottenere di tirare le modifiche nel tuo repository possono ora inserire ganci arbitrarie in hg status
e si eseguirli sul prossimo comando di Mercurial (anche un "sicuro" riga di comando < =>).
Si potrebbe essere in grado di risolvere il problema tramite il ProjRC estensione .
“Questa estensione rende Mercurial cercare e analizzare .hg / projrc per le impostazioni di configurazione aggiuntive. Il file viene trasferito sul clone e tirare (ma mai su push)”
Che dire di creare un collegamento da .hg/hgrc
per esempio customhg/hgrc
in modo che venga versione. Allora avete bisogno di creare un po 'di gancio che le copie di nuovo a <=> - per esempio dopo ogni aggiornamento.