Giulio@770: Giulio@770: Giulio@783: Guida di riferimento a Mercurial Queues Giulio@770: Giulio@770: Giulio@783: Guida di riferimento ai comandi MQ Giulio@770: Giulio@770: Per un'introduzione ai comandi forniti da MQ, usate il comando hg help mq. Giulio@770: Giulio@770: Giulio@770: <command role="hg-ext-mq">qapplied</command>&emdash;stampa le patch applicate Giulio@770: Giulio@783: Il comando qapplied stampa la pila corrente delle patch applicate. Le patch vengono stampate in ordine dalla più vecchia alla più recente, così l'ultima patch nella lista è quella in cima alla pila. Giulio@770: Giulio@770: Giulio@770: Giulio@770: <command role="hg-ext-mq">qcommit</command>&emdash;registra i cambiamenti nel repository della coda Giulio@770: Giulio@770: Il comando qcommit registra qualsiasi cambiamento in sospeso nel repository .hg/patches. Questo comando funziona solo se la directory .hg/patches è un repository, i.e. se avete creato la directory usando hg qinit o avete invocato hg init nella directory dopo aver eseguito qinit. Giulio@770: Giulio@770: Questo comando è un'abbreviazione di hg commit --cwd .hg/patches. Giulio@770: Giulio@770: Giulio@770: <command role="hg-ext-mq">qdelete</command>&emdash;elimina una patch dal file <filename role="special">series</filename> Giulio@770: Giulio@817: Il comando qdelete rimuove la voce relativa a una patch dal file series nella directory .hg/patches. Non estrae la patch se la patch è già applicata. Per default, non cancella il file della patch, perciò dovrete usare l'opzione se volete fare questo. Giulio@770: Giulio@770: Opzioni: Giulio@770: Giulio@770: : cancella il file della patch. Giulio@770: Giulio@770: Giulio@770: Giulio@770: Giulio@770: Giulio@783: <command role="hg-ext-mq">qdiff</command>&emdash;stampa un diff dell'ultima patch applicata Giulio@783: Giulio@783: Il comando qdiff stampa un diff dell'ultima patch applicata. È equivalente al comando hg diff -r-2:-1. Giulio@770: Giulio@770: Giulio@770: Giulio@770: <command role="hg-ext-mq">qfinish</command>&emdash;sposta le patch applicate nella cronologia del repository Giulio@770: Giulio@783: Il comando hg qfinish converte le patch applicate specificate in modifiche permanenti, spostandole fuori dal controllo di MQ in modo che siano trattate come normale cronologia del repository. Giulio@770: Giulio@770: Giulio@770: Giulio@770: <command role="hg-ext-mq">qfold</command>&emdash;unisce (<quote>include</quote>) diverse patch in una Giulio@770: Giulio@783: Il comando qfold unisce più patch all'ultima patch applicata, in modo che l'ultima patch applicata rappresenti l'unione di tutti i cambiamenti delle patch in questione. Giulio@783: Giulio@783: Le patch da includere non devono essere applicate, altrimenti qfold terminerà segnalando un errore. L'ordine in cui le patch vengono incluse è significativo: hg qfold a b significa applica la patch più recente, seguita da a, seguita da b. Giulio@783: Giulio@783: I commenti delle patch incluse vengono aggiunti alla fine dei commenti della patch di destinazione, separando ogni blocco di commenti con tre caratteri di asterisco (*). Usate l'opzione per modificare il messaggio di commit della patch/changeset combinata dopo che l'inclusione è stata completata. Giulio@770: Giulio@770: Opzioni: Giulio@770: Giulio@770: : modifica il messaggio di commit e la descrizione di patch per la nuova patch combinata. Giulio@770: Giulio@783: : usa il testo contenuto nel file dato come nuovo messaggio di commit e descrizione di patch per la patch combinata. Giulio@783: Giulio@783: : usa il testo dato come nuovo messaggio di commit e descrizione di patch per la patch combinata. Giulio@770: Giulio@770: Giulio@770: Giulio@770: Giulio@770: Giulio@770: <command role="hg-ext-mq">qheader</command>&emdash;mostra l'intestazione/descrizione di una patch Giulio@770: Giulio@819: Il comando qheader stampa l'intestazione, o descrizione, di una patch. Per default, stampa l'intestazione dell'ultima patch applicata. Dato un argomento, stampa l'intestazione della patch indicata. Giulio@770: Giulio@770: Giulio@770: Giulio@770: <command role="hg-ext-mq">qimport</command>&emdash;importa una patch di terze parti nella coda Giulio@770: Giulio@783: Il comando qimport aggiunge una voce per una patch esterna al file series e copia la patch nella directory .hg/patches. Aggiunge la voce immediatamente dopo l'ultima patch applicata, ma non inserisce la patch. Giulio@770: Giulio@770: Se la directory .hg/patches è un repository, qimport usa hg add per aggiungere automaticamente la patch importata. Giulio@770: Giulio@770: Giulio@770: Giulio@770: <command role="hg-ext-mq">qinit</command>&emdash;prepara un repository per lavorare con MQ Giulio@770: Giulio@770: Il comando qinit prepara un repository per lavorare con MQ. Crea una directory chiamata .hg/patches. Giulio@770: Giulio@770: Opzioni: Giulio@770: Giulio@783: : Crea .hg/patches sotto forma di repository. Crea anche un file .hgignore che ignorerà il file status. Giulio@770: Giulio@770: Giulio@770: Giulio@770: Quando la directory .hg/patches è un repository, i comandi qimport e qnew useranno automaticamente hg add per aggiungere nuove patch. Giulio@770: Giulio@770: Giulio@770: Giulio@770: <command role="hg-ext-mq">qnew</command>&emdash;crea una nuova patch Giulio@770: Giulio@817: Il comando qnew crea una nuova patch. Prende come argomento obbligatorio il nome da usare per il file di patch. La nuova patch viene creata vuota per default, viene aggiunta al file series dopo l'ultima patch applicata e viene immediatamente inserita sopra quella patch. Giulio@783: Giulio@783: Se qnew trova qualche file modificato nella directory di lavoro, si rifiuterà di creare una nuova patch a meno che non usiate l'opzione (vedete più avanti). Questo comportamento vi permette di aggiornare l'ultima patch applicata tramite qrefresh prima di applicare una nuova patch. Giulio@770: Giulio@770: Opzioni: Giulio@770: Giulio@783: : crea una nuova patch se il contenuto della directory di lavoro è stato modificato. Ogni cambiamento in sospeso viene aggiunto alla patch appena creata, pertanto al termine dell'esecuzione del comando la directory di lavoro non risulterà più modificata. Giulio@770: Giulio@770: : usa il testo dato come messaggio di commit. Il testo verrà memorizzato all'inizio del file di patch, prima dei dati di patch. Giulio@770: Giulio@770: Giulio@770: Giulio@770: Giulio@770: Giulio@770: <command role="hg-ext-mq">qnext</command>&emdash;stampa il nome della patch successiva Giulio@770: Giulio@783: Il comando qnext stampa il nome della patch nel file series che segue la patch applicata più recentemente. Questa patch diventerà l'ultima patch applicata se invocate qpush. Giulio@770: Giulio@770: Giulio@770: Giulio@770: <command role="hg-ext-mq">qpop</command>&emdash;estrae le patch dalla pila Giulio@770: Giulio@817: Il comando qpop rimuove patch applicate dalla cima della pila delle patch applicate. Per default, rimuove solo una patch. Giulio@770: Giulio@770: Questo comando rimuove dal repository i changeset che rappresentano le patch estratte e aggiorna la directory di lavoro per annullare gli effetti delle patch. Giulio@770: Giulio@817: Questo comando accetta un argomento opzionale che viene usato per indicare il nome o l'indice numerico della patch da estrarre. Se viene passato un nome, il comando continuerà a estrarre patch fino a quando la patch nominata sarà in cima alla pila delle patch applicate. Se viene passato un numero, qpop tratterà il numero come un indice d'accesso alle voci presenti nel file della serie, partendo da zero (le righe vuote e le righe contenenti solo commenti non vengono contate). Il comando continuerà a estrarre patch fino a quando la patch identificata dall'indice dato sarà in cima alla pila delle patch applicate. Giulio@817: Giulio@817: Il comando qpop non legge e non modifica né le patch né il file series. Perciò, potete tranquillamente usare qpop su una patch che avete rimosso dal file series, oppure su una patch che avete rinominato o completamente cancellato. Negli ultimi due casi, usate il nome che la patch aveva quando l'avete applicata. Giulio@817: Giulio@817: Per default, il comando qpop non estrarrà alcuna patch se la directory di lavoro è stata modificata. Potete cambiare questo comportamento usando l'opzione , che annulla tutte le modifiche nella directory di lavoro. Giulio@770: Giulio@770: Opzioni: Giulio@770: Giulio@783: : estrae tutte le patch applicate, riportando il repository allo stato in cui era prima che applicaste qualunque patch. Giulio@770: Giulio@770: : annulla forzatamente qualsiasi modifica alla directory di lavoro al momento dell'estrazione. Giulio@770: Giulio@770: : estrae una patch dalla coda nominata. Giulio@770: Giulio@770: Giulio@770: Giulio@817: Il comando qpop rimuove una riga alla fine del file status per ogni patch che ha estratto. Giulio@770: Giulio@770: Giulio@770: Giulio@770: <command role="hg-ext-mq">qprev</command>&emdash;stampa il nome della patch precedente Giulio@770: Giulio@783: Il comando qprev stampa il nome della patch nel file series che precede la patch applicata più recentemente. Questa patch diventerà l'ultima patch applicata se invocate qpop. Giulio@770: Giulio@770: Giulio@770: Giulio@770: <command role="hg-ext-mq">qpush</command>&emdash;inserisce le patch in cima alla pila Giulio@770: Giulio@819: Il comando qpush aggiunge le patch in cima alla pila delle patch applicate. Per default, aggiunge solo una patch. Giulio@770: Giulio@770: Questo comando crea un nuovo changeset per rappresentare ogni patch applicata e aggiorna la directory di lavoro per applicare gli effetti delle patch. Giulio@770: Giulio@770: I dati predefiniti usati per creare un changeset sono i seguenti. Giulio@770: Giulio@783: La data e il fuso orario del commit sono la data e il fuso orario corrente. Dato che questi dati vengono usati per computare l'identità di un changeset, questo significa che se invocate qpop su una patch e poi invocate qpush sulla stessa patch, il changeset che inserite avrà un'identità diversa dal changeset che avete estratto. Giulio@770: Giulio@770: L'autore è quello predefinito usato dal comando hg commit. Giulio@770: Giulio@783: Il messaggio di commit è il testo proveniente dal file di patch che precede la prima intestazione del diff. Se questo testo non è presente, viene usato un messaggio di commit predefinito che identifica il nome della patch. Giulio@770: Giulio@770: Giulio@770: Se una patch contiene un'intestazione di patch Mercurial, i dati nell'intestazione di patch sostituiscono quelli predefiniti. Giulio@770: Giulio@770: Opzioni: Giulio@770: Giulio@783: : inserisce tutte le patch non applicate contenute nel file series fino a quando non ne rimane nessuna da inserire. Giulio@770: Giulio@770: : aggiunge il nome della patch alla fine del messaggio di commit. Giulio@770: Giulio@783: : se l'applicazione di una patch fallisce, usa la voce relativa alla patch contenuta in un'altra coda salvata per computare i parametri di un'unione a tre vie, effettuando poi l'unione a tre vie attraverso il normale meccanismo di unione di Mercurial. Usa il risultato dell'unione come nuovo contenuto della patch. Giulio@770: Giulio@770: : usa la coda nominata se effettua un'unione durante l'inserimento. Giulio@770: Giulio@770: Giulio@770: Giulio@770: Il comando qpush legge, ma non modifica, il file series. Aggiunge una riga alla fine del file status per ogni patch inserita. Giulio@770: Giulio@770: Giulio@770: Giulio@770: <command Giulio@783: role="hg-ext-mq">qrefresh</command>&emdash;aggiorna l'ultima patch applicata Giulio@783: Giulio@783: Il comando qrefresh aggiorna l'ultima patch applicata. Modifica la patch, rimuove il vecchio changeset che rappresentava la patch e crea un nuovo changeset per rappresentare la patch modificata. Giulio@770: Giulio@770: Il comando qrefresh si occupa delle seguenti modifiche. Giulio@770: Giulio@783: I cambiamenti al messaggio di commit, i.e. il testo che precede la prima intestazione di diff nel file di patch, vengono riflessi nel nuovo changeset che rappresenta la patch. Giulio@770: Giulio@770: Le modifiche ai file registrati nella directory di lavoro vengono aggiunte alla patch. Giulio@770: Giulio@783: Per quanto riguarda le modifiche ai file registrati apportate tramite hg add, hg copy, hg remove, o hg rename, i file aggiunti e i file destinazione di copie e cambiamenti di nome vengono aggiunti alla patch, mentre i file rimossi e i file sorgente dei cambiamenti di nome vengono rimossi. Giulio@783: Giulio@783: Giulio@783: Giulio@783: Anche se qrefresh non trova alcun cambiamento, ricrea comunque il changeset che rappresenta la patch. Questo produce una differenza tra l'identità del nuovo changeset e quella del precedente changeset che identificava la patch. Giulio@770: Giulio@770: Opzioni: Giulio@770: Giulio@770: : modifica il messaggio di commit e la descrizione della patch, usando l'editor di testo preferito. Giulio@770: Giulio@770: : modifica il messaggio di commit e la descrizione della patch, usando il testo dato. Giulio@770: Giulio@783: : modifica il messaggio di commit e la descrizione della patch, usando il testo contenuto nel file dato. Giulio@770: Giulio@770: Giulio@770: Giulio@770: Giulio@770: Giulio@770: <command role="hg-ext-mq">qrename</command>&emdash;rinomina una patch Giulio@770: Giulio@783: Il comando qrename rinomina una patch e modifica la voce relativa alla patch nel file series. Giulio@783: Giulio@783: Con un singolo argomento, qrename rinomina l'ultima patch applicata. Con due argomenti, cambia il nome del primo argomento al secondo argomento. Giulio@770: Giulio@770: Giulio@770: Giulio@770: <command role="hg-ext-mq">qseries</command>&emdash;stampa l'intera serie di patch Giulio@770: Giulio@810: Il comando qseries stampa l'intera serie di patch contenuta nel file series. Stampa solo i nomi delle patch, saltando le righe vuote e i commenti. Stampa le patch in ordine dalla prima patch da applicare all'ultima. Giulio@770: Giulio@770: Giulio@770: Giulio@770: <command role="hg-ext-mq">qtop</command>&emdash;stampa il nome della patch corrente Giulio@770: Giulio@783: Il comando qtop stampa il nome della patch attualmente in cima alla pila delle patch applicate. Giulio@770: Giulio@770: Giulio@770: Giulio@770: <command Giulio@770: role="hg-ext-mq">qunapplied</command>&emdash;stampa le patch non ancora applicate Giulio@770: Giulio@783: Il comando qunapplied stampa i nomi delle patch non ancora applicate contenute nel file series, nell'ordine in cui le patch verrebbero inserite. Giulio@770: Giulio@770: Giulio@770: Giulio@770: <command role="hg-cmd">hg strip</command>&emdash;rimuove una revisione e i suoi discendenti Giulio@770: Giulio@770: Il comando hg strip rimuove una revisione e tutti i suoi discendenti dal repository. Annulla gli effetti delle revisioni rimosse dal repository e aggiorna la directory di lavoro al primo genitore della revisione rimossa. Giulio@770: Giulio@770: Il comando hg strip salva una copia di backup dei changeset rimossi in un bundle, in modo che possano essere riapplicati se sono stati rimossi per errore. Giulio@770: Giulio@770: Opzioni: Giulio@770: Giulio@783: : salva i changeset non correlati che sono mescolati ai changeset eliminati nel bundle di backup. Giulio@770: Giulio@770: : se un ramo ha più teste, rimuove tutte le teste. Giulio@770: Giulio@783: : evita di salvare il bundle di backup. Giulio@770: Giulio@770: Giulio@770: Giulio@770: Giulio@770: Giulio@770: Guida di riferimento ai file di MQ Giulio@770: Giulio@770: Giulio@770: Il file <filename role="special">series</filename> Giulio@770: Giulio@783: Il file series contiene una lista dei nomi di tutte le patch che MQ può applicare. Viene rappresentato come una lista di nomi, con un nome salvato per riga. Lo spazio bianco all'inizio e alla fine di ogni riga viene ignorato. Giulio@783: Giulio@783: Le righe possono contenere commenti. Un commento comincia con il carattere # e si estende fino alla fine della riga. Le righe vuote e le righe che contengono solo commenti vengono ignorate. Giulio@783: Giulio@783: Avrete spesso bisogno di modificare il file series a mano, da cui il supporto per i commenti e le righe vuote appena descritto. Per esempio, potete commentare temporaneamente una patch in modo che qpush la salti quando applica le patch. Potete anche cambiare l'ordine in cui le patch vengono applicate riordinando le loro voci nel file series. Giulio@783: Giulio@783: Viene anche supportata la possibilità di mettere il file series sotto controllo di revisione. È una buona idea mettere sotto controllo di revisione anche tutte le patch a cui il file si riferisce. Se create una directory di patch usando l'opzione del comando qinit, questo verrà fatto per voi automaticamente. Giulio@770: Giulio@770: Giulio@770: Giulio@770: Il file <filename role="special">status</filename> Giulio@770: Giulio@783: Il flie status contiene i nomi e gli hash di changeset per tutte le patch che MQ ha attualmente applicato. A differenza del file series, questo file non è destinato a essere modificato. Non dovreste mettere questo file sotto controllo di revisione, né modificarlo in alcun modo. Viene usato da MQ per mantenere traccia di informazioni strettamente private. Giulio@770: Giulio@770: Giulio@770: Giulio@770: