2011-09-17 13 views
7

Ho letto dei tag mercurial. Vedo, di solito, taggare un changeset per contrassegnare un punto di rilascio e anche questi tag sono soggetti a revisione.Perché separare il file di tag in Mercurial

Ma non ho potuto davvero capire l'idea di avere un file .hgtags. Qual è lo scopo di questo file?

risposta

5

Avere un file .hgtags consente di modificare il file .hgtags da registrare utilizzando lo stesso formato utilizzato per registrare le modifiche su tutti gli altri file. Consente inoltre di trasferire i tag tra repository nello stesso formato utilizzato per il trasferimento delle modifiche ai file.

Ciò consente a Mercurial di implementare un sistema per la memorizzazione delle modifiche in una directory e un protocollo per il trasferimento di una serie di modifiche a una directory e le informazioni di ramificazione e tag gestite automaticamente al momento del trasferimento delle modifiche.

Consente inoltre a uno di visualizzare la cronologia dei tag per un progetto, osservando la cronologia del file .hgtags.

+2

Gli svantaggi includono la confusione attorno a "hg clone -r " e il requisito non necessario per risolvere un conflitto nel file '.hgtags' quando due tag separati vengono aggiunti su due rami separati che verranno successivamente uniti. – Jesse

+0

+1, gli stessi principi si applicano anche a '.hgignore'. –

+0

Anche se capisco questi argomenti, sembra anche molto simile a "perché è un espediente hack". È anche un riconoscimento che i tag non sono davvero una parte di prima classe di Hg. –

0

I nomi di tag in due repository correlati possono essere in conflitto.

E.G. Il tag A può in un punto di repo su id di changeset X e in un altro repository lo stesso tag può puntare su id di changeset Y. Durante l'unione questo conflitto deve essere risolto.

I conflitti durante l'unione vengono risolti esaminando i file e le modifiche associate.

Quindi, i tag devono essere memorizzati in un file ordinario nel repository.

0

In realtà non vedo alcun utilizzo per avere un file tag separato. La cronologia del repository (compresi i tag) dovrebbe essere ben vista con un comando 'log'. Anche il fatto di avere il file dei tag infrange una regola importante: una modifica strettamente correlata al sistema di controllo delle versioni non dovrebbe alterare il repository in alcun modo.

Problemi correlati