hgbook

view it/appB-mq-ref.xml @ 810:64f122caeeac

Trying to clarify qseries.
author Giulio@puck
date Sat Aug 15 12:25:46 2009 +0200 (2009-08-15)
parents 254dbe306dd4
children d7a8e7541615
line source
1 <appendix id="chap:mqref">
2 <?dbhtml filename="guida-di-riferimento-di-mercurial-queues.html"?>
3 <title>Guida di riferimento a Mercurial Queues</title>
5 <sect1 id="sec:mqref:cmdref">
6 <title>Guida di riferimento ai comandi MQ</title>
8 <para id="x_5e8">Per un'introduzione ai comandi forniti da MQ, usate il comando <command role="hg-cmd">hg help mq</command>.</para>
10 <sect2>
11 <title><command role="hg-ext-mq">qapplied</command>&emdash;stampa le patch applicate</title>
13 <para id="x_5e9">Il comando <command role="hg-ext-mq">qapplied</command> 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 <quote>in cima</quote> alla pila.</para>
15 </sect2>
16 <sect2>
17 <title><command role="hg-ext-mq">qcommit</command>&emdash;registra i cambiamenti nel repository della coda</title>
19 <para id="x_5ea">Il comando <command role="hg-ext-mq">qcommit</command> registra qualsiasi cambiamento in sospeso nel repository <filename role="special" class="directory">.hg/patches</filename>. Questo comando funziona solo se la directory <filename role="special" class="directory">.hg/patches</filename> è un repository, i.e. se avete creato la directory usando <command role="hg-cmd">hg qinit <option role="hg-ext-mq-cmd-qinit-opt">-c</option></command> o avete invocato <command role="hg-cmd">hg init</command> nella directory dopo aver eseguito <command role="hg-ext-mq">qinit</command>.</para>
21 <para id="x_5eb">Questo comando è un'abbreviazione di <command role="hg-cmd">hg commit --cwd .hg/patches</command>.</para>
22 </sect2>
23 <sect2>
24 <title><command role="hg-ext-mq">qdelete</command>&emdash;elimina una patch dal file <filename role="special">series</filename></title>
26 <para id="x_5ec">Il comando <command role="hg-ext-mq">qdelete</command> rimuove la voce relativa a una patch dal file <filename role="special">series</filename> nella directory <filename role="special" class="directory">.hg/patches</filename>. Non estrae la patch se la patch è già applicata. Di default, non cancella il file della patch, perciò dovrete usare l'opzione <option role="hg-ext-mq-cmd-qdel-opt">-f</option> se volete fare questo.</para>
28 <para id="x_5ed">Opzioni:</para>
29 <itemizedlist>
30 <listitem><para id="x_5ee"><option role="hg-ext-mq-cmd-qdel-opt">-f</option>: cancella il file della patch.</para>
31 </listitem>
32 </itemizedlist>
34 </sect2>
35 <sect2>
36 <title><command role="hg-ext-mq">qdiff</command>&emdash;stampa un diff dell'ultima patch applicata</title>
38 <para id="x_5ef">Il comando <command role="hg-ext-mq">qdiff</command> stampa un diff dell'ultima patch applicata. &Egrave; equivalente al comando <command role="hg-cmd">hg diff -r-2:-1</command>.</para>
40 </sect2>
41 <sect2>
42 <title><command role="hg-ext-mq">qfinish</command>&emdash;sposta le patch applicate nella cronologia del repository</title>
44 <para id="x_72d">Il comando <command>hg qfinish</command> converte le patch applicate specificate in modifiche permanenti, spostandole fuori dal controllo di MQ in modo che siano trattate come normale cronologia del repository.</para>
45 </sect2>
47 <sect2>
48 <title><command role="hg-ext-mq">qfold</command>&emdash;unisce (<quote>include</quote>) diverse patch in una</title>
50 <para id="x_5f0">Il comando <command role="hg-ext-mq">qfold</command> 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.</para>
52 <para id="x_5f1">Le patch da includere non devono essere applicate, altrimenti <command role="hg-ext-mq">qfold</command> terminerà segnalando un errore. L'ordine in cui le patch vengono incluse è significativo: <command role="hg-cmd">hg qfold a b</command> significa <quote>applica la patch più recente, seguita da <literal>a</literal>, seguita da <literal>b</literal></quote>.</para>
54 <para id="x_5f2">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 (<quote><literal>*</literal></quote>). Usate l'opzione <option role="hg-ext-mq-cmd-qfold-opt">-e</option> per modificare il messaggio di commit della patch/changeset combinata dopo che l'inclusione è stata completata.</para>
56 <para id="x_5f3">Opzioni:</para>
57 <itemizedlist>
58 <listitem><para id="x_5f4"><option role="hg-ext-mq-cmd-qfold-opt">-e</option>: modifica il messaggio di commit e la descrizione di patch per la nuova patch combinata.</para>
59 </listitem>
60 <listitem><para id="x_5f5"><option role="hg-ext-mq-cmd-qfold-opt">-l</option>: usa il testo contenuto nel file dato come nuovo messaggio di commit e descrizione di patch per la patch combinata.</para>
61 </listitem>
62 <listitem><para id="x_5f6"><option role="hg-ext-mq-cmd-qfold-opt">-m</option>: usa il testo dato come nuovo messaggio di commit e descrizione di patch per la patch combinata.</para>
63 </listitem>
64 </itemizedlist>
66 </sect2>
67 <sect2>
68 <title><command role="hg-ext-mq">qheader</command>&emdash;mostra l'intestazione/descrizione di una patch</title>
70 <para id="x_5f7">Il comando <command role="hg-ext-mq">qheader</command> stampa l'intestazione, o descrizione, di una patch. Di default, stampa l'intestazione dell'ultima patch applicata. Dato un argomento, stampa l'intestazione della patch indicata.</para>
72 </sect2>
73 <sect2>
74 <title><command role="hg-ext-mq">qimport</command>&emdash;importa una patch di terze parti nella coda</title>
76 <para id="x_5f8">Il comando <command role="hg-ext-mq">qimport</command> aggiunge una voce per una patch esterna al file <filename role="special">series</filename> e copia la patch nella directory <filename role="special" class="directory">.hg/patches</filename>. Aggiunge la voce immediatamente dopo l'ultima patch applicata, ma non inserisce la patch.</para>
78 <para id="x_5f9">Se la directory <filename role="special" class="directory">.hg/patches</filename> è un repository, <command role="hg-ext-mq">qimport</command> usa <command role="hg-cmd">hg add</command> per aggiungere automaticamente la patch importata.</para>
80 </sect2>
81 <sect2>
82 <title><command role="hg-ext-mq">qinit</command>&emdash;prepara un repository per lavorare con MQ</title>
84 <para id="x_5fa">Il comando <command role="hg-ext-mq">qinit</command> prepara un repository per lavorare con MQ. Crea una directory chiamata <filename role="special" class="directory">.hg/patches</filename>.</para>
86 <para id="x_5fb">Opzioni:</para>
87 <itemizedlist>
88 <listitem><para id="x_5fc"><option role="hg-ext-mq-cmd-qinit-opt">-c</option>: Crea <filename role="special" class="directory">.hg/patches</filename> sotto forma di repository. Crea anche un file <filename role="special">.hgignore</filename> che ignorerà il file <filename role="special">status</filename>.</para>
89 </listitem>
90 </itemizedlist>
92 <para id="x_5fd">Quando la directory <filename role="special" class="directory">.hg/patches</filename> è un repository, i comandi <command role="hg-ext-mq">qimport</command> e <command role="hg-ext-mq">qnew</command> useranno automaticamente <command role="hg-cmd">hg add</command> per aggiungere nuove patch.</para>
94 </sect2>
95 <sect2>
96 <title><command role="hg-ext-mq">qnew</command>&emdash;crea una nuova patch</title>
98 <para id="x_5fe">Il comando <command role="hg-ext-mq">qnew</command> crea una nuova patch. Prende come argomento obbligatorio il nome da usare per il file di patch. La nuova patch viene creata vuota di default, viene aggiunta al file <filename role="special">series</filename> dopo l'ultima patch applicata e viene immediatamente inserita sopra quella patch.</para>
100 <para id="x_5ff">Se <command role="hg-ext-mq">qnew</command> trova qualche file modificato nella directory di lavoro, si rifiuterà di creare una nuova patch a meno che non usiate l'opzione <option role="hg-ext-mq-cmd-qnew-opt">-f</option> (vedete più avanti). Questo comportamento vi permette di aggiornare l'ultima patch applicata tramite <command role="hg-ext-mq">qrefresh</command> prima di applicare una nuova patch.</para>
102 <para id="x_600">Opzioni:</para>
103 <itemizedlist>
104 <listitem><para id="x_601"><option role="hg-ext-mq-cmd-qnew-opt">-f</option>: 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.</para>
105 </listitem>
106 <listitem><para id="x_602"><option role="hg-ext-mq-cmd-qnew-opt">-m</option>: usa il testo dato come messaggio di commit. Il testo verrà memorizzato all'inizio del file di patch, prima dei dati di patch.</para>
107 </listitem>
108 </itemizedlist>
110 </sect2>
111 <sect2>
112 <title><command role="hg-ext-mq">qnext</command>&emdash;stampa il nome della patch successiva</title>
114 <para id="x_603">Il comando <command role="hg-ext-mq">qnext</command> stampa il nome della patch nel file <filename role="special">series</filename> che segue la patch applicata più recentemente. Questa patch diventerà l'ultima patch applicata se invocate <command role="hg-ext-mq">qpush</command>.</para>
116 </sect2>
117 <sect2>
118 <title><command role="hg-ext-mq">qpop</command>&emdash;estrae le patch dalla pila</title>
120 <para id="x_604">Il comando <command role="hg-ext-mq">qpop</command> rimuove patch applicate dalla cima della pila delle patch applicate. Di default, rimuove solo una patch.</para>
122 <para id="x_605">Questo comando rimuove dal repository i changeset che rappresentano le patch estratte e aggiorna la directory di lavoro per annullare gli effetti delle patch.</para>
124 <para id="x_606">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, <command role="hg-ext-mq">qpop</command> tratterà il numero come un indice d'accesso alle voci 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.</para>
126 <para id="x_607">Il comando <command role="hg-ext-mq">qpop</command> non legge e non modifica né le patch né il file <filename role="special">series</filename>. Perciò, potete tranquillamente usare <command role="hg-ext-mq">qpop</command> su una patch che avete rimosso dal file <filename role="special">series</filename>, o su una patch che avete rinominato o completamente cancellato. Negli ultimi due casi, usate il nome che la patch aveva quando l'avete applicata.</para>
128 <para id="x_608">Di default, il comando <command role="hg-ext-mq">qpop</command> non estrarrà alcuna patch se la directory di lavoro è stata modificata. Potete cambiare questo comportamento usando l'opzione <option role="hg-ext-mq-cmd-qpop-opt">-f</option>, che annulla tutte le modifiche nella directory di lavoro.</para>
130 <para id="x_609">Opzioni:</para>
131 <itemizedlist>
132 <listitem><para id="x_60a"><option role="hg-ext-mq-cmd-qpop-opt">-a</option>: estrae tutte le patch applicate, riportando il repository allo stato in cui era prima che applicaste qualunque patch.</para>
133 </listitem>
134 <listitem><para id="x_60b"><option role="hg-ext-mq-cmd-qpop-opt">-f</option>: annulla forzatamente qualsiasi modifica alla directory di lavoro al momento dell'estrazione.</para>
135 </listitem>
136 <listitem><para id="x_60c"><option role="hg-ext-mq-cmd-qpop-opt">-n</option>: estrae una patch dalla coda nominata.</para>
137 </listitem>
138 </itemizedlist>
140 <para id="x_60d">Il comando <command role="hg-ext-mq">qpop</command> rimuove una riga dalla fine del file <filename role="special">status</filename> per ogni patch che ha estratto.</para>
142 </sect2>
143 <sect2>
144 <title><command role="hg-ext-mq">qprev</command>&emdash;stampa il nome della patch precedente</title>
146 <para id="x_60e">Il comando <command role="hg-ext-mq">qprev</command> stampa il nome della patch nel file <filename role="special">series</filename> che precede la patch applicata più recentemente. Questa patch diventerà l'ultima patch applicata se invocate <command role="hg-ext-mq">qpop</command>.</para>
148 </sect2>
149 <sect2 id="sec:mqref:cmd:qpush">
150 <title><command role="hg-ext-mq">qpush</command>&emdash;inserisce le patch in cima alla pila</title>
152 <para id="x_60f">Il comando <command role="hg-ext-mq">qpush</command> aggiunge le patch in cima alla pila delle patch applicate. Di default, aggiunge solo una patch.</para>
154 <para id="x_610">Questo comando crea un nuovo changeset per rappresentare ogni patch applicata e aggiorna la directory di lavoro per applicare gli effetti delle patch.</para>
156 <para id="x_611">I dati predefiniti usati per creare un changeset sono i seguenti.</para>
157 <itemizedlist>
158 <listitem><para id="x_612">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 <command role="hg-ext-mq">qpop</command> su una patch e poi invocate <command role="hg-ext-mq">qpush</command> sulla stessa patch, il changeset che inserite avrà un'identità diversa dal changeset che avete estratto.</para>
159 </listitem>
160 <listitem><para id="x_613">L'autore è quello predefinito usato dal comando <command role="hg-cmd">hg commit</command>.</para>
161 </listitem>
162 <listitem><para id="x_614">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.</para>
163 </listitem>
164 </itemizedlist>
165 <para id="x_615">Se una patch contiene un'intestazione di patch Mercurial, i dati nell'intestazione di patch sostituiscono quelli predefiniti.</para>
167 <para id="x_616">Opzioni:</para>
168 <itemizedlist>
169 <listitem><para id="x_617"><option role="hg-ext-mq-cmd-qpush-opt">-a</option>: inserisce tutte le patch non applicate contenute nel file <filename role="special">series</filename> fino a quando non ne rimane nessuna da inserire.</para>
170 </listitem>
171 <listitem><para id="x_618"><option role="hg-ext-mq-cmd-qpush-opt">-l</option>: aggiunge il nome della patch alla fine del messaggio di commit.</para>
172 </listitem>
173 <listitem><para id="x_619"><option role="hg-ext-mq-cmd-qpush-opt">-m</option>: 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.</para>
174 </listitem>
175 <listitem><para id="x_61a"><option role="hg-ext-mq-cmd-qpush-opt">-n</option>: usa la coda nominata se effettua un'unione durante l'inserimento.</para>
176 </listitem>
177 </itemizedlist>
179 <para id="x_61b">Il comando <command role="hg-ext-mq">qpush</command> legge, ma non modifica, il file <filename role="special">series</filename>. Aggiunge una riga alla fine del file <filename role="special">status</filename> per ogni patch inserita.</para>
181 </sect2>
182 <sect2>
183 <title><command
184 role="hg-ext-mq">qrefresh</command>&emdash;aggiorna l'ultima patch applicata</title>
186 <para id="x_61c">Il comando <command role="hg-ext-mq">qrefresh</command> 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.</para>
188 <para id="x_61d">Il comando <command role="hg-ext-mq">qrefresh</command> si occupa delle seguenti modifiche.</para>
189 <itemizedlist>
190 <listitem><para id="x_61e">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.</para>
191 </listitem>
192 <listitem><para id="x_61f">Le modifiche ai file registrati nella directory di lavoro vengono aggiunte alla patch.</para>
193 </listitem>
194 <listitem><para id="x_620">Per quanto riguarda le modifiche ai file registrati apportate tramite <command role="hg-cmd">hg add</command>, <command role="hg-cmd">hg copy</command>, <command role="hg-cmd">hg remove</command>, o <command role="hg-cmd">hg rename</command>, 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.</para>
195 </listitem>
196 </itemizedlist>
198 <para id="x_621">Anche se <command role="hg-ext-mq">qrefresh</command> 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.</para>
200 <para id="x_622">Opzioni:</para>
201 <itemizedlist>
202 <listitem><para id="x_623"><option role="hg-ext-mq-cmd-qrefresh-opt">-e</option>: modifica il messaggio di commit e la descrizione della patch, usando l'editor di testo preferito.</para>
203 </listitem>
204 <listitem><para id="x_624"><option role="hg-ext-mq-cmd-qrefresh-opt">-m</option>: modifica il messaggio di commit e la descrizione della patch, usando il testo dato.</para>
205 </listitem>
206 <listitem><para id="x_625"><option role="hg-ext-mq-cmd-qrefresh-opt">-l</option>: modifica il messaggio di commit e la descrizione della patch, usando il testo contenuto nel file dato.</para>
207 </listitem>
208 </itemizedlist>
210 </sect2>
211 <sect2>
212 <title><command role="hg-ext-mq">qrename</command>&emdash;rinomina una patch</title>
214 <para id="x_626">Il comando <command role="hg-ext-mq">qrename</command> rinomina una patch e modifica la voce relativa alla patch nel file <filename role="special">series</filename>.</para>
216 <para id="x_627">Con un singolo argomento, <command role="hg-ext-mq">qrename</command> rinomina l'ultima patch applicata. Con due argomenti, cambia il nome del primo argomento al secondo argomento.</para>
218 </sect2>
219 <sect2>
220 <title><command role="hg-ext-mq">qseries</command>&emdash;stampa l'intera serie di patch</title>
222 <para id="x_62a">Il comando <command role="hg-ext-mq">qseries</command> stampa l'intera serie di patch contenuta nel file <filename role="special">series</filename>. 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.</para>
224 </sect2>
225 <sect2>
226 <title><command role="hg-ext-mq">qtop</command>&emdash;stampa il nome della patch corrente</title>
228 <para id="x_62b">Il comando <command role="hg-ext-mq">qtop</command> stampa il nome della patch attualmente in cima alla pila delle patch applicate.</para>
230 </sect2>
231 <sect2>
232 <title><command
233 role="hg-ext-mq">qunapplied</command>&emdash;stampa le patch non ancora applicate</title>
235 <para id="x_62c">Il comando <command role="hg-ext-mq">qunapplied</command> stampa i nomi delle patch non ancora applicate contenute nel file <filename role="special">series</filename>, nell'ordine in cui le patch verrebbero inserite.</para>
237 </sect2>
238 <sect2>
239 <title><command role="hg-cmd">hg strip</command>&emdash;rimuove una revisione e i suoi discendenti</title>
241 <para id="x_62d">Il comando <command role="hg-cmd">hg strip</command> 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.</para>
243 <para id="x_62e">Il comando <command role="hg-cmd">hg strip</command> salva una copia di backup dei changeset rimossi in un bundle, in modo che possano essere riapplicati se sono stati rimossi per errore.</para>
245 <para id="x_62f">Opzioni:</para>
246 <itemizedlist>
247 <listitem><para id="x_630"><option role="hg-opt-strip">-b</option>: salva i changeset non correlati che sono mescolati ai changeset eliminati nel bundle di backup.</para>
248 </listitem>
249 <listitem><para id="x_631"><option role="hg-opt-strip">-f</option>: se un ramo ha più teste, rimuove tutte le teste.</para>
250 </listitem>
251 <listitem><para id="x_632"><option role="hg-opt-strip">-n</option>: evita di salvare il bundle di backup.</para>
252 </listitem></itemizedlist>
254 </sect2>
255 </sect1>
256 <sect1>
257 <title>Guida di riferimento ai file di MQ</title>
259 <sect2>
260 <title>Il file <filename role="special">series</filename></title>
262 <para id="x_633">Il file <filename role="special">series</filename> 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.</para>
264 <para id="x_634">Le righe possono contenere commenti. Un commento comincia con il carattere <quote><literal>#</literal></quote> e si estende fino alla fine della riga. Le righe vuote e le righe che contengono solo commenti vengono ignorate.</para>
266 <para id="x_635">Avrete spesso bisogno di modificare il file <filename role="special">series</filename> 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 <command role="hg-ext-mq">qpush</command> la salti quando applica le patch. Potete anche cambiare l'ordine in cui le patch vengono applicate riordinando le loro voci nel file <filename role="special">series</filename>.</para>
268 <para id="x_636">Viene anche supportata la possibilità di mettere il file <filename role="special">series</filename> sotto controllo di revisione. &Egrave; 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 <option role="hg-ext-mq-cmd-qinit-opt">-c</option> del comando <command role="hg-ext-mq">qinit</command>, questo verrà fatto per voi automaticamente.</para>
270 </sect2>
271 <sect2>
272 <title>Il file <filename role="special">status</filename></title>
274 <para id="x_637">Il flie <filename role="special">status</filename> contiene i nomi e gli hash di changeset per tutte le patch che MQ ha attualmente applicato. A differenza del file <filename role="special">series</filename>, 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.</para>
276 </sect2>
277 </sect1>
278 </appendix>