2010-12-13 9 views
6

Mi chiedo se Mercurial converte di default $ Id $ all'equivalente di Subversion che è qualcosa del genere: test.php 110 2009-04-28 05: 20: 41Z dordal $. Qualcuno sa?

+0

L'utilizzo della conversione di parole chiave con un DVCS è una pessima idea. È una buona idea con svn e cvs perché è possibile che diversi file nel repository vengano aggiornati a diverse revisioni, ma in Mercurial o git tutti i file si trovano nello stesso punto, quindi puoi semplicemente usare 'hg id' per ottenere quel valore o in uno script di build usa qualcosa come '$ (hg id --id)'. –

risposta

5

No, non sarà così, ma è possibile abilitarla.

https://web.archive.org/web/20121007024058/
https://www.mercurial-scm.org/wiki/KeywordPlan

Perché non ne ho bisogno

chiave di espansione non è supportata nel nucleo di Mercurial perché è di utilità limitata in un sistema moderno ed è problematico dal punto di vista delle prestazioni e dell'integrità binaria. Per la maggior parte degli usi umani, si può semplicemente chiedere il sistema di controllo di revisione. E per le situazioni in cui il sistema di controllo di revisione non è disponibile, è molto probabile che il tag non sia corretto!

Un uso comune che rimane è l'integrazione automatica delle informazioni sulla versione in una build di software. Questo è abbastanza facilmente realizzabile senza sostituzione parola chiave facendo qualcosa di simile al seguente nel Makefile:

...

emulazione di base

Se questo non è abbastanza per voi, è possibile emulare questo comportamento con un'estensione.

...

Un'estensione esempio che fornisce $ Author $ e $ Date $ parole chiave è collegato (keyword.py)

Vedi anche KeywordExtension.


https://www.mercurial-scm.org/wiki/KeywordExtension

chiave di estensione

Questa estensione è distribuito con Mercurial allo

Panoramica

Questa estensione ws l'espansione di chiavi simili a RCS/CVS e definite dall'utente in file di testo tracciati da Mercurial. L'espansione avviene nella directory di lavoro o/e quando si crea una distribuzione utilizzando "archivio hg".

Le parole chiave si espandono nei dati del changeset relativi all'ultima modifica relativa alla directory di lavoro padre di ciascun file.

Se si desidera semplicemente eseguire la versione dell'intero repository, non utilizzare questa estensione ma lasciare che il sistema di compilazione si occupi di esso. Qualcosa sulla falsariga di ...

,,,

Per motivi di velocità e la sicurezza (per evitare parole chiave inavvertitamente espanse) si consiglia di abilitare l'estensione per pronti contro termine solo in pronti contro termine/.hg/hgrc, non globalmente, e per mettere a punto i modelli di file [parola chiave] con estrema attenzione.

+1

Grazie, avrei dovuto cercare di cercare meglio che praticamente rispondeva alla mia domanda. – Darren

+1

@Darren - Felice di aiutare. Volevo essere certo di avere tutta la storia sull'espansione delle parole chiave (il modo Mercurial è non farlo, altrimenti basta abilitare il meno possibile). So anche che può essere difficile capire il termine esatto da cercare in un pacchetto software non familiare ("sostituzione parola chiave" ?, "sostituzione ID"? "Espansione parole chiave"?), Specialmente quando uno dei termini è generale come "parola chiave" o "id". –

+1

Capisco ora perché non farlo, quindi c'è una possibilità che non lo farò e sono abbastanza sicuro che deve affrontare il modo in cui il versioning funziona con Mercurial e Git sul perché è una cattiva idea, in particolare a causa di repository locali e remoti. – Darren

1

ha qualche simile con Keyword Extension (distribuito con Mercurial)

Questa estensione permette l'espansione delle chiavi RCS/CVS-like e utente definiti in file di testo monitorati da Mercurial. L'espansione avviene nella directory di lavoro o/e quando si crea una distribuzione utilizzando "hg archive".

Le parole chiave si espandono nei dati del changeset relativi all'ultima modifica relativa alla directory di lavoro padre di ciascun file.

Per esempio:

Id = {file|basename},v {node|short} {date|utcdate} {author|user} 

sarebbe esteso come:

$Id: demo.txt,v 2ad3dcb8d811 2007/07/17 12:00:47 blacktrash $ 

Nota:

Per motivi di velocità e la sicurezza (per evitare parole chiave inavvertitamente espanso), è consigliato:

  • per consentire l'estensione per repo solo in repo/.hg/hgrc, non globalmente,
  • e per mettere a punto le [keyword] modelli di nome di file con la massima cura.
Problemi correlati