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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top