18c2ecf20Sopenharmony_ci.. include:: ../disclaimer-ita.rst 28c2ecf20Sopenharmony_ci 38c2ecf20Sopenharmony_ci:Original: :ref:`Documentation/process/submitting-patches.rst <submittingpatches>` 48c2ecf20Sopenharmony_ci:Translator: Federico Vaga <federico.vaga@vaga.pv.it> 58c2ecf20Sopenharmony_ci 68c2ecf20Sopenharmony_ci.. _it_submittingpatches: 78c2ecf20Sopenharmony_ci 88c2ecf20Sopenharmony_ciInviare patch: la guida essenziale per vedere il vostro codice nel kernel 98c2ecf20Sopenharmony_ci========================================================================= 108c2ecf20Sopenharmony_ci 118c2ecf20Sopenharmony_ciUna persona o un'azienda che volesse inviare una patch al kernel potrebbe 128c2ecf20Sopenharmony_cisentirsi scoraggiata dal processo di sottomissione, specialmente quando manca 138c2ecf20Sopenharmony_ciuna certa familiarità col "sistema". Questo testo è una raccolta di 148c2ecf20Sopenharmony_cisuggerimenti che aumenteranno significativamente le probabilità di vedere le 158c2ecf20Sopenharmony_civostre patch accettate. 168c2ecf20Sopenharmony_ci 178c2ecf20Sopenharmony_ciQuesto documento contiene un vasto numero di suggerimenti concisi. Per 188c2ecf20Sopenharmony_cimaggiori dettagli su come funziona il processo di sviluppo del kernel leggete 198c2ecf20Sopenharmony_ci:ref:`Documentation/translations/it_IT/process <it_development_process_main>`. 208c2ecf20Sopenharmony_ciLeggete anche :ref:`Documentation/translations/it_IT/process/submit-checklist.rst <it_submitchecklist>` 218c2ecf20Sopenharmony_ciper una lista di punti da verificare prima di inviare del codice. Se state 228c2ecf20Sopenharmony_ciinviando un driver, allora leggete anche :ref:`Documentation/translations/it_IT/process/submitting-drivers.rst <it_submittingdrivers>`; 238c2ecf20Sopenharmony_ciper delle patch relative alle associazioni per Device Tree leggete 248c2ecf20Sopenharmony_ciDocumentation/devicetree/bindings/submitting-patches.rst. 258c2ecf20Sopenharmony_ci 268c2ecf20Sopenharmony_ciMolti di questi passi descrivono il comportamento di base del sistema di 278c2ecf20Sopenharmony_cicontrollo di versione ``git``; se utilizzate ``git`` per preparare le vostre 288c2ecf20Sopenharmony_cipatch molto del lavoro più ripetitivo lo troverete già fatto per voi, tuttavia 298c2ecf20Sopenharmony_cidovete preparare e documentare un certo numero di patch. Generalmente, l'uso 308c2ecf20Sopenharmony_cidi ``git`` renderà la vostra vita di sviluppatore del kernel più facile. 318c2ecf20Sopenharmony_ci 328c2ecf20Sopenharmony_ci0) Ottenere i sorgenti attuali 338c2ecf20Sopenharmony_ci------------------------------ 348c2ecf20Sopenharmony_ci 358c2ecf20Sopenharmony_ciSe non avete un repositorio coi sorgenti del kernel più recenti, allora usate 368c2ecf20Sopenharmony_ci``git`` per ottenerli. Vorrete iniziare col repositorio principale che può 378c2ecf20Sopenharmony_ciessere recuperato col comando:: 388c2ecf20Sopenharmony_ci 398c2ecf20Sopenharmony_ci git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 408c2ecf20Sopenharmony_ci 418c2ecf20Sopenharmony_ciNotate, comunque, che potreste non voler sviluppare direttamente coi sorgenti 428c2ecf20Sopenharmony_ciprincipali del kernel. La maggior parte dei manutentori hanno i propri 438c2ecf20Sopenharmony_cisorgenti e desiderano che le patch siano preparate basandosi su di essi. 448c2ecf20Sopenharmony_ciGuardate l'elemento **T:** per un determinato sottosistema nel file MAINTANERS 458c2ecf20Sopenharmony_ciche troverete nei sorgenti, o semplicemente chiedete al manutentore nel caso 468c2ecf20Sopenharmony_ciin cui i sorgenti da usare non siano elencati il quel file. 478c2ecf20Sopenharmony_ci 488c2ecf20Sopenharmony_ciEsiste ancora la possibilità di scaricare un rilascio del kernel come archivio 498c2ecf20Sopenharmony_citar (come descritto in una delle prossime sezioni), ma questa è la via più 508c2ecf20Sopenharmony_cicomplicata per sviluppare per il kernel. 518c2ecf20Sopenharmony_ci 528c2ecf20Sopenharmony_ci1) ``diff -up`` 538c2ecf20Sopenharmony_ci--------------- 548c2ecf20Sopenharmony_ci 558c2ecf20Sopenharmony_ciSe dovete produrre le vostre patch a mano, usate ``diff -up`` o ``diff -uprN`` 568c2ecf20Sopenharmony_ciper crearle. Git produce di base le patch in questo formato; se state 578c2ecf20Sopenharmony_ciusando ``git``, potete saltare interamente questa sezione. 588c2ecf20Sopenharmony_ci 598c2ecf20Sopenharmony_ciTutte le modifiche al kernel Linux avvengono mediate patch, come descritte 608c2ecf20Sopenharmony_ciin :manpage:`diff(1)`. Quando create la vostra patch, assicuratevi di 618c2ecf20Sopenharmony_cicrearla nel formato "unified diff", come l'argomento ``-u`` di 628c2ecf20Sopenharmony_ci:manpage:`diff(1)`. 638c2ecf20Sopenharmony_ciInoltre, per favore usate l'argomento ``-p`` per mostrare la funzione C 648c2ecf20Sopenharmony_cialla quale si riferiscono le diverse modifiche - questo rende il risultato 658c2ecf20Sopenharmony_cidi ``diff`` molto più facile da leggere. Le patch dovrebbero essere basate 668c2ecf20Sopenharmony_cisulla radice dei sorgenti del kernel, e non sulle sue sottocartelle. 678c2ecf20Sopenharmony_ci 688c2ecf20Sopenharmony_ciPer creare una patch per un singolo file, spesso è sufficiente fare:: 698c2ecf20Sopenharmony_ci 708c2ecf20Sopenharmony_ci SRCTREE=linux 718c2ecf20Sopenharmony_ci MYFILE=drivers/net/mydriver.c 728c2ecf20Sopenharmony_ci 738c2ecf20Sopenharmony_ci cd $SRCTREE 748c2ecf20Sopenharmony_ci cp $MYFILE $MYFILE.orig 758c2ecf20Sopenharmony_ci vi $MYFILE # make your change 768c2ecf20Sopenharmony_ci cd .. 778c2ecf20Sopenharmony_ci diff -up $SRCTREE/$MYFILE{.orig,} > /tmp/patch 788c2ecf20Sopenharmony_ci 798c2ecf20Sopenharmony_ciPer creare una patch per molteplici file, dovreste spacchettare i sorgenti 808c2ecf20Sopenharmony_ci"vergini", o comunque non modificati, e fare un ``diff`` coi vostri. 818c2ecf20Sopenharmony_ciPer esempio:: 828c2ecf20Sopenharmony_ci 838c2ecf20Sopenharmony_ci MYSRC=/devel/linux 848c2ecf20Sopenharmony_ci 858c2ecf20Sopenharmony_ci tar xvfz linux-3.19.tar.gz 868c2ecf20Sopenharmony_ci mv linux-3.19 linux-3.19-vanilla 878c2ecf20Sopenharmony_ci diff -uprN -X linux-3.19-vanilla/Documentation/dontdiff \ 888c2ecf20Sopenharmony_ci linux-3.19-vanilla $MYSRC > /tmp/patch 898c2ecf20Sopenharmony_ci 908c2ecf20Sopenharmony_ci``dontdiff`` è una lista di file che sono generati durante il processo di 918c2ecf20Sopenharmony_cicompilazione del kernel; questi dovrebbero essere ignorati in qualsiasi 928c2ecf20Sopenharmony_cipatch generata con :manpage:`diff(1)`. 938c2ecf20Sopenharmony_ci 948c2ecf20Sopenharmony_ciAssicuratevi che la vostra patch non includa file che non ne fanno veramente 958c2ecf20Sopenharmony_ciparte. Al fine di verificarne la correttezza, assicuratevi anche di 968c2ecf20Sopenharmony_cirevisionare la vostra patch -dopo- averla generata con :manpage:`diff(1)`. 978c2ecf20Sopenharmony_ci 988c2ecf20Sopenharmony_ciSe le vostre modifiche producono molte differenze, allora dovrete dividerle 998c2ecf20Sopenharmony_ciin patch indipendenti che modificano le cose in passi logici; leggete 1008c2ecf20Sopenharmony_ci:ref:`split_changes`. Questo faciliterà la revisione da parte degli altri 1018c2ecf20Sopenharmony_cisviluppatori, il che è molto importante se volete che la patch venga accettata. 1028c2ecf20Sopenharmony_ci 1038c2ecf20Sopenharmony_ciSe state utilizzando ``git``, ``git rebase -i`` può aiutarvi nel procedimento. 1048c2ecf20Sopenharmony_ciSe non usate ``git``, un'alternativa popolare è ``quilt`` 1058c2ecf20Sopenharmony_ci<http://savannah.nongnu.org/projects/quilt>. 1068c2ecf20Sopenharmony_ci 1078c2ecf20Sopenharmony_ci.. _it_describe_changes: 1088c2ecf20Sopenharmony_ci 1098c2ecf20Sopenharmony_ci2) Descrivete le vostre modifiche 1108c2ecf20Sopenharmony_ci--------------------------------- 1118c2ecf20Sopenharmony_ci 1128c2ecf20Sopenharmony_ciDescrivete il vostro problema. Esiste sempre un problema che via ha spinto 1138c2ecf20Sopenharmony_ciha fare il vostro lavoro, che sia la correzione di un baco da una riga o una 1148c2ecf20Sopenharmony_cinuova funzionalità da 5000 righe di codice. Convincete i revisori che vale 1158c2ecf20Sopenharmony_cila pena risolvere il vostro problema e che ha senso continuare a leggere oltre 1168c2ecf20Sopenharmony_cial primo paragrafo. 1178c2ecf20Sopenharmony_ci 1188c2ecf20Sopenharmony_ciDescrivete ciò che sarà visibile agli utenti. Chiari incidenti nel sistema 1198c2ecf20Sopenharmony_cie blocchi sono abbastanza convincenti, ma non tutti i bachi sono così evidenti. 1208c2ecf20Sopenharmony_ciAnche se il problema è stato scoperto durante la revisione del codice, 1218c2ecf20Sopenharmony_cidescrivete l'impatto che questo avrà sugli utenti. Tenete presente che 1228c2ecf20Sopenharmony_cila maggior parte delle installazioni Linux usa un kernel che arriva dai 1238c2ecf20Sopenharmony_cisorgenti stabili o dai sorgenti di una distribuzione particolare che prende 1248c2ecf20Sopenharmony_cisingolarmente le patch dai sorgenti principali; quindi, includete tutte 1258c2ecf20Sopenharmony_cile informazioni che possono essere utili a capire le vostre modifiche: 1268c2ecf20Sopenharmony_cile circostanze che causano il problema, estratti da dmesg, descrizioni di 1278c2ecf20Sopenharmony_ciun incidente di sistema, prestazioni di una regressione, picchi di latenza, 1288c2ecf20Sopenharmony_ciblocchi, eccetera. 1298c2ecf20Sopenharmony_ci 1308c2ecf20Sopenharmony_ciQuantificare le ottimizzazioni e i compromessi. Se affermate di aver 1318c2ecf20Sopenharmony_cimigliorato le prestazioni, il consumo di memoria, l'impatto sollo stack, 1328c2ecf20Sopenharmony_cio la dimensione del file binario, includete dei numeri a supporto della 1338c2ecf20Sopenharmony_civostra dichiarazione. Ma ricordatevi di descrivere anche eventuali costi 1348c2ecf20Sopenharmony_ciche non sono ovvi. Solitamente le ottimizzazioni non sono gratuite, ma sono 1358c2ecf20Sopenharmony_ciun compromesso fra l'uso di CPU, la memoria e la leggibilità; o, quando si 1368c2ecf20Sopenharmony_ciparla di ipotesi euristiche, fra differenti carichi. Descrivete i lati 1378c2ecf20Sopenharmony_cinegativi che vi aspettate dall'ottimizzazione cosicché i revisori possano 1388c2ecf20Sopenharmony_civalutare i costi e i benefici. 1398c2ecf20Sopenharmony_ci 1408c2ecf20Sopenharmony_ciUna volta che il problema è chiaro, descrivete come lo risolvete andando 1418c2ecf20Sopenharmony_cinel dettaglio tecnico. È molto importante che descriviate la modifica 1428c2ecf20Sopenharmony_ciin un inglese semplice cosicché i revisori possano verificare che il codice si 1438c2ecf20Sopenharmony_cicomporti come descritto. 1448c2ecf20Sopenharmony_ci 1458c2ecf20Sopenharmony_ciI manutentori vi saranno grati se scrivete la descrizione della patch in un 1468c2ecf20Sopenharmony_ciformato che sia compatibile con il gestore dei sorgenti usato dal kernel, 1478c2ecf20Sopenharmony_ci``git``, come un "commit log". Leggete :ref:`it_explicit_in_reply_to`. 1488c2ecf20Sopenharmony_ci 1498c2ecf20Sopenharmony_ciRisolvete solo un problema per patch. Se la vostra descrizione inizia ad 1508c2ecf20Sopenharmony_ciessere lunga, potrebbe essere un segno che la vostra patch necessita d'essere 1518c2ecf20Sopenharmony_cidivisa. Leggete :ref:`split_changes`. 1528c2ecf20Sopenharmony_ci 1538c2ecf20Sopenharmony_ciQuando inviate o rinviate una patch o una serie, includete la descrizione 1548c2ecf20Sopenharmony_cicompleta delle modifiche e la loro giustificazione. Non limitatevi a dire che 1558c2ecf20Sopenharmony_ciquesta è la versione N della patch (o serie). Non aspettatevi che i 1568c2ecf20Sopenharmony_cimanutentori di un sottosistema vadano a cercare le versioni precedenti per 1578c2ecf20Sopenharmony_cicercare la descrizione da aggiungere. In pratica, la patch (o serie) e la sua 1588c2ecf20Sopenharmony_cidescrizione devono essere un'unica cosa. Questo aiuta i manutentori e i 1598c2ecf20Sopenharmony_cirevisori. Probabilmente, alcuni revisori non hanno nemmeno ricevuto o visto 1608c2ecf20Sopenharmony_cile versioni precedenti della patch. 1618c2ecf20Sopenharmony_ci 1628c2ecf20Sopenharmony_ciDescrivete le vostro modifiche usando l'imperativo, per esempio "make xyzzy 1638c2ecf20Sopenharmony_cido frotz" piuttosto che "[This patch] makes xyzzy do frotz" or "[I] changed 1648c2ecf20Sopenharmony_cixyzzy to do frotz", come se steste dando ordini al codice di cambiare il suo 1658c2ecf20Sopenharmony_cicomportamento. 1668c2ecf20Sopenharmony_ci 1678c2ecf20Sopenharmony_ciSe la patch corregge un baco conosciuto, fare riferimento a quel baco inserendo 1688c2ecf20Sopenharmony_ciil suo numero o il suo URL. Se la patch è la conseguenza di una discussione 1698c2ecf20Sopenharmony_cisu una lista di discussione, allora fornite l'URL all'archivio di quella 1708c2ecf20Sopenharmony_cidiscussione; usate i collegamenti a https://lkml.kernel.org/ con il 1718c2ecf20Sopenharmony_ci``Message-Id``, in questo modo vi assicurerete che il collegamento non diventi 1728c2ecf20Sopenharmony_ciinvalido nel tempo. 1738c2ecf20Sopenharmony_ci 1748c2ecf20Sopenharmony_ciTuttavia, cercate di rendere la vostra spiegazione comprensibile anche senza 1758c2ecf20Sopenharmony_cifar riferimento a fonti esterne. In aggiunta ai collegamenti a bachi e liste 1768c2ecf20Sopenharmony_cidi discussione, riassumente i punti più importanti della discussione che hanno 1778c2ecf20Sopenharmony_ciportato alla creazione della patch. 1788c2ecf20Sopenharmony_ci 1798c2ecf20Sopenharmony_ciSe volete far riferimento a uno specifico commit, non usate solo 1808c2ecf20Sopenharmony_cil'identificativo SHA-1. Per cortesia, aggiungete anche la breve riga 1818c2ecf20Sopenharmony_ciriassuntiva del commit per rendere la chiaro ai revisori l'oggetto. 1828c2ecf20Sopenharmony_ciPer esempio:: 1838c2ecf20Sopenharmony_ci 1848c2ecf20Sopenharmony_ci Commit e21d2170f36602ae2708 ("video: remove unnecessary 1858c2ecf20Sopenharmony_ci platform_set_drvdata()") removed the unnecessary 1868c2ecf20Sopenharmony_ci platform_set_drvdata(), but left the variable "dev" unused, 1878c2ecf20Sopenharmony_ci delete it. 1888c2ecf20Sopenharmony_ci 1898c2ecf20Sopenharmony_ciDovreste anche assicurarvi di usare almeno i primi 12 caratteri 1908c2ecf20Sopenharmony_cidell'identificativo SHA-1. Il repositorio del kernel ha *molti* oggetti e 1918c2ecf20Sopenharmony_ciquesto rende possibile la collisione fra due identificativi con pochi 1928c2ecf20Sopenharmony_cicaratteri. Tenete ben presente che anche se oggi non ci sono collisioni con il 1938c2ecf20Sopenharmony_civostro identificativo a 6 caratteri, potrebbero essercene fra 5 anni da oggi. 1948c2ecf20Sopenharmony_ci 1958c2ecf20Sopenharmony_ciSe la vostra patch corregge un baco in un commit specifico, per esempio avete 1968c2ecf20Sopenharmony_citrovato un problema usando ``git bisect``, per favore usate l'etichetta 1978c2ecf20Sopenharmony_ci'Fixes:' indicando i primi 12 caratteri dell'identificativo SHA-1 seguiti 1988c2ecf20Sopenharmony_cidalla riga riassuntiva. Per esempio:: 1998c2ecf20Sopenharmony_ci 2008c2ecf20Sopenharmony_ci Fixes: e21d2170f366 ("video: remove unnecessary platform_set_drvdata()") 2018c2ecf20Sopenharmony_ci 2028c2ecf20Sopenharmony_ciLa seguente configurazione di ``git config`` può essere usata per formattare 2038c2ecf20Sopenharmony_cii risultati dei comandi ``git log`` o ``git show`` come nell'esempio 2048c2ecf20Sopenharmony_ciprecedente:: 2058c2ecf20Sopenharmony_ci 2068c2ecf20Sopenharmony_ci [core] 2078c2ecf20Sopenharmony_ci abbrev = 12 2088c2ecf20Sopenharmony_ci [pretty] 2098c2ecf20Sopenharmony_ci fixes = Fixes: %h (\"%s\") 2108c2ecf20Sopenharmony_ci 2118c2ecf20Sopenharmony_ci.. _it_split_changes: 2128c2ecf20Sopenharmony_ci 2138c2ecf20Sopenharmony_ci3) Separate le vostre modifiche 2148c2ecf20Sopenharmony_ci------------------------------- 2158c2ecf20Sopenharmony_ci 2168c2ecf20Sopenharmony_ciSeparate ogni **cambiamento logico** in patch distinte. 2178c2ecf20Sopenharmony_ci 2188c2ecf20Sopenharmony_ciPer esempio, se i vostri cambiamenti per un singolo driver includono 2198c2ecf20Sopenharmony_cisia delle correzioni di bachi che miglioramenti alle prestazioni, 2208c2ecf20Sopenharmony_ciallora separateli in due o più patch. Se i vostri cambiamenti includono 2218c2ecf20Sopenharmony_ciun aggiornamento dell'API e un nuovo driver che lo sfrutta, allora separateli 2228c2ecf20Sopenharmony_ciin due patch. 2238c2ecf20Sopenharmony_ci 2248c2ecf20Sopenharmony_ciD'altro canto, se fate una singola modifica su più file, raggruppate tutte 2258c2ecf20Sopenharmony_ciqueste modifiche in una singola patch. Dunque, un singolo cambiamento logico 2268c2ecf20Sopenharmony_ciè contenuto in una sola patch. 2278c2ecf20Sopenharmony_ci 2288c2ecf20Sopenharmony_ciIl punto da ricordare è che ogni modifica dovrebbe fare delle modifiche 2298c2ecf20Sopenharmony_ciche siano facilmente comprensibili e che possano essere verificate dai revisori. 2308c2ecf20Sopenharmony_ciOgni patch dovrebbe essere giustificabile di per sé. 2318c2ecf20Sopenharmony_ci 2328c2ecf20Sopenharmony_ciSe al fine di ottenere un cambiamento completo una patch dipende da un'altra, 2338c2ecf20Sopenharmony_civa bene. Semplicemente scrivete una nota nella descrizione della patch per 2348c2ecf20Sopenharmony_cifarlo presente: **"this patch depends on patch X"**. 2358c2ecf20Sopenharmony_ci 2368c2ecf20Sopenharmony_ciQuando dividete i vostri cambiamenti in una serie di patch, prestate 2378c2ecf20Sopenharmony_ciparticolare attenzione alla verifica di ogni patch della serie; per ognuna 2388c2ecf20Sopenharmony_ciil kernel deve compilare ed essere eseguito correttamente. Gli sviluppatori 2398c2ecf20Sopenharmony_ciche usano ``git bisect`` per scovare i problemi potrebbero finire nel mezzo 2408c2ecf20Sopenharmony_cidella vostra serie in un punto qualsiasi; non vi saranno grati se nel mezzo 2418c2ecf20Sopenharmony_ciavete introdotto dei bachi. 2428c2ecf20Sopenharmony_ci 2438c2ecf20Sopenharmony_ciSe non potete condensare la vostra serie di patch in una più piccola, allora 2448c2ecf20Sopenharmony_cipubblicatene una quindicina alla volta e aspettate che vengano revisionate 2458c2ecf20Sopenharmony_cied integrate. 2468c2ecf20Sopenharmony_ci 2478c2ecf20Sopenharmony_ci 2488c2ecf20Sopenharmony_ci4) Verificate lo stile delle vostre modifiche 2498c2ecf20Sopenharmony_ci--------------------------------------------- 2508c2ecf20Sopenharmony_ci 2518c2ecf20Sopenharmony_ciControllate che la vostra patch non violi lo stile del codice, maggiori 2528c2ecf20Sopenharmony_cidettagli sono disponibili in :ref:`Documentation/translations/it_IT/process/coding-style.rst <it_codingstyle>`. 2538c2ecf20Sopenharmony_ciNon farlo porta semplicemente a una perdita di tempo da parte dei revisori e 2548c2ecf20Sopenharmony_civoi vedrete la vostra patch rifiutata, probabilmente senza nemmeno essere stata 2558c2ecf20Sopenharmony_ciletta. 2568c2ecf20Sopenharmony_ci 2578c2ecf20Sopenharmony_ciUn'eccezione importante si ha quando del codice viene spostato da un file 2588c2ecf20Sopenharmony_ciad un altro -- in questo caso non dovreste modificare il codice spostato 2598c2ecf20Sopenharmony_ciper nessun motivo, almeno non nella patch che lo sposta. Questo separa 2608c2ecf20Sopenharmony_cichiaramente l'azione di spostare il codice e il vostro cambiamento. 2618c2ecf20Sopenharmony_ciQuesto aiuta enormemente la revisione delle vere differenze e permette agli 2628c2ecf20Sopenharmony_cistrumenti di tenere meglio la traccia della storia del codice. 2638c2ecf20Sopenharmony_ci 2648c2ecf20Sopenharmony_ciPrima di inviare una patch, verificatene lo stile usando l'apposito 2658c2ecf20Sopenharmony_civerificatore (scripts/checkpatch.pl). Da notare, comunque, che il verificator 2668c2ecf20Sopenharmony_cidi stile dovrebbe essere visto come una guida, non come un sostituto al 2678c2ecf20Sopenharmony_cigiudizio umano. Se il vostro codice è migliore nonostante una violazione 2688c2ecf20Sopenharmony_cidello stile, probabilmente è meglio lasciarlo com'è. 2698c2ecf20Sopenharmony_ci 2708c2ecf20Sopenharmony_ciIl verificatore ha tre diversi livelli di severità: 2718c2ecf20Sopenharmony_ci - ERROR: le cose sono molto probabilmente sbagliate 2728c2ecf20Sopenharmony_ci - WARNING: le cose necessitano d'essere revisionate con attenzione 2738c2ecf20Sopenharmony_ci - CHECK: le cose necessitano di un pensierino 2748c2ecf20Sopenharmony_ci 2758c2ecf20Sopenharmony_ciDovreste essere in grado di giustificare tutte le eventuali violazioni rimaste 2768c2ecf20Sopenharmony_cinella vostra patch. 2778c2ecf20Sopenharmony_ci 2788c2ecf20Sopenharmony_ci 2798c2ecf20Sopenharmony_ci5) Selezionate i destinatari della vostra patch 2808c2ecf20Sopenharmony_ci----------------------------------------------- 2818c2ecf20Sopenharmony_ci 2828c2ecf20Sopenharmony_ciDovreste sempre inviare una copia della patch ai manutentori dei sottosistemi 2838c2ecf20Sopenharmony_ciinteressati dalle modifiche; date un'occhiata al file MAINTAINERS e alla storia 2848c2ecf20Sopenharmony_cidelle revisioni per scoprire chi si occupa del codice. Lo script 2858c2ecf20Sopenharmony_ciscripts/get_maintainer.pl può esservi d'aiuto. Se non riuscite a trovare un 2868c2ecf20Sopenharmony_cimanutentore per il sottosistema su cui state lavorando, allora Andrew Morton 2878c2ecf20Sopenharmony_ci(akpm@linux-foundation.org) sarà la vostra ultima possibilità. 2888c2ecf20Sopenharmony_ci 2898c2ecf20Sopenharmony_ciNormalmente, dovreste anche scegliere una lista di discussione a cui inviare 2908c2ecf20Sopenharmony_cila vostra serie di patch. La lista di discussione linux-kernel@vger.kernel.org 2918c2ecf20Sopenharmony_ciè proprio l'ultima spiaggia, il volume di email su questa lista fa si che 2928c2ecf20Sopenharmony_cidiversi sviluppatori non la seguano. Guardate nel file MAINTAINERS per trovare 2938c2ecf20Sopenharmony_cila lista di discussione dedicata ad un sottosistema; probabilmente lì la vostra 2948c2ecf20Sopenharmony_cipatch riceverà molta più attenzione. Tuttavia, per favore, non spammate le 2958c2ecf20Sopenharmony_ciliste di discussione che non sono interessate al vostro lavoro. 2968c2ecf20Sopenharmony_ci 2978c2ecf20Sopenharmony_ciMolte delle liste di discussione relative al kernel vengono ospitate su 2988c2ecf20Sopenharmony_civger.kernel.org; potete trovare un loro elenco alla pagina 2998c2ecf20Sopenharmony_cihttp://vger.kernel.org/vger-lists.html. Tuttavia, ci sono altre liste di 3008c2ecf20Sopenharmony_cidiscussione ospitate altrove. 3018c2ecf20Sopenharmony_ci 3028c2ecf20Sopenharmony_ciNon inviate più di 15 patch alla volta sulle liste di discussione vger!!! 3038c2ecf20Sopenharmony_ci 3048c2ecf20Sopenharmony_ciL'ultimo giudizio sull'integrazione delle modifiche accettate spetta a 3058c2ecf20Sopenharmony_ciLinux Torvalds. Il suo indirizzo e-mail è <torvalds@linux-foundation.org>. 3068c2ecf20Sopenharmony_ciRiceve moltissime e-mail, e, a questo punto, solo poche patch passano 3078c2ecf20Sopenharmony_cidirettamente attraverso il suo giudizio; quindi, dovreste fare del vostro 3088c2ecf20Sopenharmony_cimeglio per -evitare di- inviargli e-mail. 3098c2ecf20Sopenharmony_ci 3108c2ecf20Sopenharmony_ciSe avete una patch che corregge un baco di sicurezza che potrebbe essere 3118c2ecf20Sopenharmony_cisfruttato, inviatela a security@kernel.org. Per bachi importanti, un breve 3128c2ecf20Sopenharmony_ciembargo potrebbe essere preso in considerazione per dare il tempo alle 3138c2ecf20Sopenharmony_cidistribuzioni di prendere la patch e renderla disponibile ai loro utenti; 3148c2ecf20Sopenharmony_ciin questo caso, ovviamente, la patch non dovrebbe essere inviata su alcuna 3158c2ecf20Sopenharmony_cilista di discussione pubblica. 3168c2ecf20Sopenharmony_ci 3178c2ecf20Sopenharmony_ciPatch che correggono bachi importanti su un kernel già rilasciato, dovrebbero 3188c2ecf20Sopenharmony_ciessere inviate ai manutentori dei kernel stabili aggiungendo la seguente riga:: 3198c2ecf20Sopenharmony_ci 3208c2ecf20Sopenharmony_ci Cc: stable@vger.kernel.org 3218c2ecf20Sopenharmony_ci 3228c2ecf20Sopenharmony_cinella vostra patch, nell'area dedicata alle firme (notate, NON come destinatario 3238c2ecf20Sopenharmony_cidelle e-mail). In aggiunta a questo file, dovreste leggere anche 3248c2ecf20Sopenharmony_ci:ref:`Documentation/translations/it_IT/process/stable-kernel-rules.rst <it_stable_kernel_rules>` 3258c2ecf20Sopenharmony_ci 3268c2ecf20Sopenharmony_ciTuttavia, notate, che alcuni manutentori di sottosistema preferiscono avere 3278c2ecf20Sopenharmony_cil'ultima parola su quali patch dovrebbero essere aggiunte ai kernel stabili. 3288c2ecf20Sopenharmony_ciLa rete di manutentori, in particolare, non vorrebbe vedere i singoli 3298c2ecf20Sopenharmony_cisviluppatori aggiungere alle loro patch delle righe come quella sopracitata. 3308c2ecf20Sopenharmony_ci 3318c2ecf20Sopenharmony_ciSe le modifiche hanno effetti sull'interfaccia con lo spazio utente, per favore 3328c2ecf20Sopenharmony_ciinviate una patch per le pagine man ai manutentori di suddette pagine (elencati 3338c2ecf20Sopenharmony_cinel file MAINTAINERS), o almeno una notifica circa la vostra modifica, 3348c2ecf20Sopenharmony_cicosicché l'informazione possa trovare la sua strada nel manuale. Le modifiche 3358c2ecf20Sopenharmony_ciall'API dello spazio utente dovrebbero essere inviate in copia anche a 3368c2ecf20Sopenharmony_cilinux-api@vger.kernel.org. 3378c2ecf20Sopenharmony_ci 3388c2ecf20Sopenharmony_ciPer le piccole patch potreste aggiungere in CC l'indirizzo 3398c2ecf20Sopenharmony_ci*Trivial Patch Monkey trivial@kernel.org* che ha lo scopo di raccogliere 3408c2ecf20Sopenharmony_cile patch "banali". Date uno sguardo al file MAINTAINERS per vedere chi 3418c2ecf20Sopenharmony_ciè l'attuale amministratore. 3428c2ecf20Sopenharmony_ci 3438c2ecf20Sopenharmony_ciLe patch banali devono rientrare in una delle seguenti categorie: 3448c2ecf20Sopenharmony_ci 3458c2ecf20Sopenharmony_ci- errori grammaticali nella documentazione 3468c2ecf20Sopenharmony_ci- errori grammaticali negli errori che potrebbero rompere :manpage:`grep(1)` 3478c2ecf20Sopenharmony_ci- correzione di avvisi di compilazione (riempirsi di avvisi inutili è negativo) 3488c2ecf20Sopenharmony_ci- correzione di errori di compilazione (solo se correggono qualcosa sul serio) 3498c2ecf20Sopenharmony_ci- rimozione di funzioni/macro deprecate 3508c2ecf20Sopenharmony_ci- sostituzione di codice non potabile con uno portabile (anche in codice 3518c2ecf20Sopenharmony_ci specifico per un'architettura, dato che le persone copiano, fintanto che 3528c2ecf20Sopenharmony_ci la modifica sia banale) 3538c2ecf20Sopenharmony_ci- qualsiasi modifica dell'autore/manutentore di un file (in pratica 3548c2ecf20Sopenharmony_ci "patch monkey" in modalità ritrasmissione) 3558c2ecf20Sopenharmony_ci 3568c2ecf20Sopenharmony_ci 3578c2ecf20Sopenharmony_ci6) Niente: MIME, links, compressione, allegati. Solo puro testo 3588c2ecf20Sopenharmony_ci---------------------------------------------------------------- 3598c2ecf20Sopenharmony_ci 3608c2ecf20Sopenharmony_ciLinus e gli altri sviluppatori del kernel devono poter commentare 3618c2ecf20Sopenharmony_cile modifiche che sottomettete. Per uno sviluppatore è importante 3628c2ecf20Sopenharmony_ciessere in grado di "citare" le vostre modifiche, usando normali 3638c2ecf20Sopenharmony_ciprogrammi di posta elettronica, cosicché sia possibile commentare 3648c2ecf20Sopenharmony_ciuna porzione specifica del vostro codice. 3658c2ecf20Sopenharmony_ci 3668c2ecf20Sopenharmony_ciPer questa ragione tutte le patch devono essere inviate via e-mail 3678c2ecf20Sopenharmony_cicome testo. 3688c2ecf20Sopenharmony_ci 3698c2ecf20Sopenharmony_ci.. warning:: 3708c2ecf20Sopenharmony_ci 3718c2ecf20Sopenharmony_ci Se decidete di copiare ed incollare la patch nel corpo dell'e-mail, state 3728c2ecf20Sopenharmony_ci attenti che il vostro programma non corrompa il contenuto con andate 3738c2ecf20Sopenharmony_ci a capo automatiche. 3748c2ecf20Sopenharmony_ci 3758c2ecf20Sopenharmony_ciLa patch non deve essere un allegato MIME, compresso o meno. Molti 3768c2ecf20Sopenharmony_cidei più popolari programmi di posta elettronica non trasmettono un allegato 3778c2ecf20Sopenharmony_ciMIME come puro testo, e questo rende impossibile commentare il vostro codice. 3788c2ecf20Sopenharmony_ciInoltre, un allegato MIME rende l'attività di Linus più laboriosa, diminuendo 3798c2ecf20Sopenharmony_cicosì la possibilità che il vostro allegato-MIME venga accettato. 3808c2ecf20Sopenharmony_ci 3818c2ecf20Sopenharmony_ciEccezione: se il vostro servizio di posta storpia le patch, allora qualcuno 3828c2ecf20Sopenharmony_cipotrebbe chiedervi di rinviarle come allegato MIME. 3838c2ecf20Sopenharmony_ci 3848c2ecf20Sopenharmony_ciLeggete :ref:`Documentation/translations/it_IT/process/email-clients.rst <it_email_clients>` 3858c2ecf20Sopenharmony_ciper dei suggerimenti sulla configurazione del programmi di posta elettronica 3868c2ecf20Sopenharmony_ciper l'invio di patch intatte. 3878c2ecf20Sopenharmony_ci 3888c2ecf20Sopenharmony_ci7) Dimensione delle e-mail 3898c2ecf20Sopenharmony_ci-------------------------- 3908c2ecf20Sopenharmony_ci 3918c2ecf20Sopenharmony_ciLe grosse modifiche non sono adatte ad una lista di discussione, e nemmeno 3928c2ecf20Sopenharmony_ciper alcuni manutentori. Se la vostra patch, non compressa, eccede i 300 kB 3938c2ecf20Sopenharmony_cidi spazio, allora caricatela in una spazio accessibile su internet fornendo 3948c2ecf20Sopenharmony_cil'URL (collegamento) ad essa. Ma notate che se la vostra patch eccede i 300 kB 3958c2ecf20Sopenharmony_ciè quasi certo che necessiti comunque di essere spezzettata. 3968c2ecf20Sopenharmony_ci 3978c2ecf20Sopenharmony_ci8) Rispondere ai commenti di revisione 3988c2ecf20Sopenharmony_ci-------------------------------------- 3998c2ecf20Sopenharmony_ci 4008c2ecf20Sopenharmony_ciQuasi certamente i revisori vi invieranno dei commenti su come migliorare 4018c2ecf20Sopenharmony_cila vostra patch. Dovete rispondere a questi commenti; ignorare i revisori 4028c2ecf20Sopenharmony_ciè un ottimo modo per essere ignorati. Riscontri o domande che non conducono 4038c2ecf20Sopenharmony_ciad una modifica del codice quasi certamente dovrebbero portare ad un commento 4048c2ecf20Sopenharmony_cinel changelog cosicché il prossimo revisore potrà meglio comprendere cosa stia 4058c2ecf20Sopenharmony_ciaccadendo. 4068c2ecf20Sopenharmony_ci 4078c2ecf20Sopenharmony_ciAssicuratevi di dire ai revisori quali cambiamenti state facendo e di 4088c2ecf20Sopenharmony_ciringraziarli per il loro tempo. Revisionare codice è un lavoro faticoso e che 4098c2ecf20Sopenharmony_cirichiede molto tempo, e a volte i revisori diventano burberi. Tuttavia, anche 4108c2ecf20Sopenharmony_ciin questo caso, rispondete con educazione e concentratevi sul problema che 4118c2ecf20Sopenharmony_cihanno evidenziato. 4128c2ecf20Sopenharmony_ci 4138c2ecf20Sopenharmony_ci9) Non scoraggiatevi - o impazientitevi 4148c2ecf20Sopenharmony_ci--------------------------------------- 4158c2ecf20Sopenharmony_ci 4168c2ecf20Sopenharmony_ciDopo che avete inviato le vostre modifiche, siate pazienti e aspettate. 4178c2ecf20Sopenharmony_ciI revisori sono persone occupate e potrebbero non ricevere la vostra patch 4188c2ecf20Sopenharmony_ciimmediatamente. 4198c2ecf20Sopenharmony_ci 4208c2ecf20Sopenharmony_ciUn tempo, le patch erano solite scomparire nel vuoto senza alcun commento, 4218c2ecf20Sopenharmony_cima ora il processo di sviluppo funziona meglio. Dovreste ricevere commenti 4228c2ecf20Sopenharmony_ciin una settimana o poco più; se questo non dovesse accadere, assicuratevi di 4238c2ecf20Sopenharmony_ciaver inviato le patch correttamente. Aspettate almeno una settimana prima di 4248c2ecf20Sopenharmony_cirinviare le modifiche o sollecitare i revisori - probabilmente anche di più 4258c2ecf20Sopenharmony_cidurante la finestra d'integrazione. 4268c2ecf20Sopenharmony_ci 4278c2ecf20Sopenharmony_ci10) Aggiungete PATCH nell'oggetto 4288c2ecf20Sopenharmony_ci--------------------------------- 4298c2ecf20Sopenharmony_ci 4308c2ecf20Sopenharmony_ciDato l'alto volume di e-mail per Linus, e la lista linux-kernel, è prassi 4318c2ecf20Sopenharmony_ciprefiggere il vostro oggetto con [PATCH]. Questo permette a Linus e agli 4328c2ecf20Sopenharmony_cialtri sviluppatori del kernel di distinguere facilmente le patch dalle altre 4338c2ecf20Sopenharmony_cidiscussioni. 4348c2ecf20Sopenharmony_ci 4358c2ecf20Sopenharmony_ci 4368c2ecf20Sopenharmony_ci11) Firmate il vostro lavoro - Il certificato d'origine dello sviluppatore 4378c2ecf20Sopenharmony_ci-------------------------------------------------------------------------- 4388c2ecf20Sopenharmony_ci 4398c2ecf20Sopenharmony_ciPer migliorare la tracciabilità su "chi ha fatto cosa", specialmente per 4408c2ecf20Sopenharmony_ciquelle patch che per raggiungere lo stadio finale passano attraverso 4418c2ecf20Sopenharmony_cidiversi livelli di manutentori, abbiamo introdotto la procedura di "firma" 4428c2ecf20Sopenharmony_cidelle patch che vengono inviate per e-mail. 4438c2ecf20Sopenharmony_ci 4448c2ecf20Sopenharmony_ciLa firma è una semplice riga alla fine della descrizione della patch che 4458c2ecf20Sopenharmony_cicertifica che l'avete scritta voi o che avete il diritto di pubblicarla 4468c2ecf20Sopenharmony_cicome patch open-source. Le regole sono abbastanza semplici: se potete 4478c2ecf20Sopenharmony_cicertificare quanto segue: 4488c2ecf20Sopenharmony_ci 4498c2ecf20Sopenharmony_ciIl certificato d'origine dello sviluppatore 1.1 4508c2ecf20Sopenharmony_ci^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 4518c2ecf20Sopenharmony_ci 4528c2ecf20Sopenharmony_ciContribuendo a questo progetto, io certifico che: 4538c2ecf20Sopenharmony_ci 4548c2ecf20Sopenharmony_ci (a) Il contributo è stato creato interamente, o in parte, da me e che 4558c2ecf20Sopenharmony_ci ho il diritto di inviarlo in accordo con la licenza open-source 4568c2ecf20Sopenharmony_ci indicata nel file; oppure 4578c2ecf20Sopenharmony_ci 4588c2ecf20Sopenharmony_ci (b) Il contributo è basato su un lavoro precedente che, nei limiti 4598c2ecf20Sopenharmony_ci della mia conoscenza, è coperto da un'appropriata licenza 4608c2ecf20Sopenharmony_ci open-source che mi da il diritto di modificarlo e inviarlo, 4618c2ecf20Sopenharmony_ci le cui modifiche sono interamente o in parte mie, in accordo con 4628c2ecf20Sopenharmony_ci la licenza open-source (a meno che non abbia il permesso di usare 4638c2ecf20Sopenharmony_ci un'altra licenza) indicata nel file; oppure 4648c2ecf20Sopenharmony_ci 4658c2ecf20Sopenharmony_ci (c) Il contributo mi è stato fornito direttamente da qualcuno che 4668c2ecf20Sopenharmony_ci ha certificato (a), (b) o (c) e non l'ho modificata. 4678c2ecf20Sopenharmony_ci 4688c2ecf20Sopenharmony_ci (d) Capisco e concordo col fatto che questo progetto e i suoi 4698c2ecf20Sopenharmony_ci contributi sono pubblici e che un registro dei contributi (incluse 4708c2ecf20Sopenharmony_ci tutte le informazioni personali che invio con essi, inclusa la mia 4718c2ecf20Sopenharmony_ci firma) verrà mantenuto indefinitamente e che possa essere 4728c2ecf20Sopenharmony_ci ridistribuito in accordo con questo progetto o le licenze 4738c2ecf20Sopenharmony_ci open-source coinvolte. 4748c2ecf20Sopenharmony_ci 4758c2ecf20Sopenharmony_cipoi dovete solo aggiungere una riga che dice:: 4768c2ecf20Sopenharmony_ci 4778c2ecf20Sopenharmony_ci Signed-off-by: Random J Developer <random@developer.example.org> 4788c2ecf20Sopenharmony_ci 4798c2ecf20Sopenharmony_ciusando il vostro vero nome (spiacenti, non si accettano pseudonimi o 4808c2ecf20Sopenharmony_cicontributi anonimi). 4818c2ecf20Sopenharmony_ci 4828c2ecf20Sopenharmony_ciAlcune persone aggiungono delle etichette alla fine. Per ora queste verranno 4838c2ecf20Sopenharmony_ciignorate, ma potete farlo per meglio identificare procedure aziendali interne o 4848c2ecf20Sopenharmony_ciper aggiungere dettagli circa la firma. 4858c2ecf20Sopenharmony_ci 4868c2ecf20Sopenharmony_ciSe siete un manutentore di un sottosistema o di un ramo, qualche volta dovrete 4878c2ecf20Sopenharmony_cimodificare leggermente le patch che avete ricevuto al fine di poterle 4888c2ecf20Sopenharmony_ciintegrare; questo perché il codice non è esattamente lo stesso nei vostri 4898c2ecf20Sopenharmony_cisorgenti e in quelli dei vostri contributori. Se rispettate rigidamente la 4908c2ecf20Sopenharmony_ciregola (c), dovreste chiedere al mittente di rifare la patch, ma questo è 4918c2ecf20Sopenharmony_cicontroproducente e una totale perdita di tempo ed energia. La regola (b) 4928c2ecf20Sopenharmony_civi permette di correggere il codice, ma poi diventa davvero maleducato cambiare 4938c2ecf20Sopenharmony_cila patch di qualcuno e addossargli la responsabilità per i vostri bachi. 4948c2ecf20Sopenharmony_ciPer risolvere questo problema dovreste aggiungere una riga, fra l'ultimo 4958c2ecf20Sopenharmony_ciSigned-off-by e il vostro, che spiega la vostra modifica. Nonostante non ci 4968c2ecf20Sopenharmony_cisia nulla di obbligatorio, un modo efficace è quello di indicare il vostro 4978c2ecf20Sopenharmony_cinome o indirizzo email fra parentesi quadre, seguito da una breve descrizione; 4988c2ecf20Sopenharmony_ciquesto renderà abbastanza visibile chi è responsabile per le modifiche 4998c2ecf20Sopenharmony_cidell'ultimo minuto. Per esempio:: 5008c2ecf20Sopenharmony_ci 5018c2ecf20Sopenharmony_ci Signed-off-by: Random J Developer <random@developer.example.org> 5028c2ecf20Sopenharmony_ci [lucky@maintainer.example.org: struct foo moved from foo.c to foo.h] 5038c2ecf20Sopenharmony_ci Signed-off-by: Lucky K Maintainer <lucky@maintainer.example.org> 5048c2ecf20Sopenharmony_ci 5058c2ecf20Sopenharmony_ciQuesta pratica è particolarmente utile se siete i manutentori di un ramo 5068c2ecf20Sopenharmony_cistabile ma al contempo volete dare credito agli autori, tracciare e integrare 5078c2ecf20Sopenharmony_cile modifiche, e proteggere i mittenti dalle lamentele. Notate che in nessuna 5088c2ecf20Sopenharmony_cicircostanza è permessa la modifica dell'identità dell'autore (l'intestazione 5098c2ecf20Sopenharmony_ciFrom), dato che è quella che appare nei changelog. 5108c2ecf20Sopenharmony_ci 5118c2ecf20Sopenharmony_ciUn appunto speciale per chi porta il codice su vecchie versioni. Sembra che 5128c2ecf20Sopenharmony_cisia comune l'utile pratica di inserire un'indicazione circa l'origine della 5138c2ecf20Sopenharmony_cipatch all'inizio del messaggio di commit (appena dopo la riga dell'oggetto) 5148c2ecf20Sopenharmony_cial fine di migliorare la tracciabilità. Per esempio, questo è quello che si 5158c2ecf20Sopenharmony_civede nel rilascio stabile 3.x-stable:: 5168c2ecf20Sopenharmony_ci 5178c2ecf20Sopenharmony_ci Date: Tue Oct 7 07:26:38 2014 -0400 5188c2ecf20Sopenharmony_ci 5198c2ecf20Sopenharmony_ci libata: Un-break ATA blacklist 5208c2ecf20Sopenharmony_ci 5218c2ecf20Sopenharmony_ci commit 1c40279960bcd7d52dbdf1d466b20d24b99176c8 upstream. 5228c2ecf20Sopenharmony_ci 5238c2ecf20Sopenharmony_ciE qui quello che potrebbe vedersi su un kernel più vecchio dove la patch è 5248c2ecf20Sopenharmony_cistata applicata:: 5258c2ecf20Sopenharmony_ci 5268c2ecf20Sopenharmony_ci Date: Tue May 13 22:12:27 2008 +0200 5278c2ecf20Sopenharmony_ci 5288c2ecf20Sopenharmony_ci wireless, airo: waitbusy() won't delay 5298c2ecf20Sopenharmony_ci 5308c2ecf20Sopenharmony_ci [backport of 2.6 commit b7acbdfbd1f277c1eb23f344f899cfa4cd0bf36a] 5318c2ecf20Sopenharmony_ci 5328c2ecf20Sopenharmony_ciQualunque sia il formato, questa informazione fornisce un importante aiuto 5338c2ecf20Sopenharmony_cialle persone che vogliono seguire i vostri sorgenti, e quelle che cercano 5348c2ecf20Sopenharmony_cidei bachi. 5358c2ecf20Sopenharmony_ci 5368c2ecf20Sopenharmony_ci 5378c2ecf20Sopenharmony_ci12) Quando utilizzare Acked-by:, Cc:, e Co-developed-by: 5388c2ecf20Sopenharmony_ci-------------------------------------------------------- 5398c2ecf20Sopenharmony_ci 5408c2ecf20Sopenharmony_ciL'etichetta Signed-off-by: indica che il firmatario è stato coinvolto nello 5418c2ecf20Sopenharmony_cisviluppo della patch, o che era nel suo percorso di consegna. 5428c2ecf20Sopenharmony_ci 5438c2ecf20Sopenharmony_ciSe una persona non è direttamente coinvolta con la preparazione o gestione 5448c2ecf20Sopenharmony_cidella patch ma desidera firmare e mettere agli atti la loro approvazione, 5458c2ecf20Sopenharmony_ciallora queste persone possono chiedere di aggiungere al changelog della patch 5468c2ecf20Sopenharmony_ciuna riga Acked-by:. 5478c2ecf20Sopenharmony_ci 5488c2ecf20Sopenharmony_ciAcked-by: viene spesso utilizzato dai manutentori del sottosistema in oggetto 5498c2ecf20Sopenharmony_ciquando quello stesso manutentore non ha contribuito né trasmesso la patch. 5508c2ecf20Sopenharmony_ci 5518c2ecf20Sopenharmony_ciAcked-by: non è formale come Signed-off-by:. Questo indica che la persona ha 5528c2ecf20Sopenharmony_cirevisionato la patch e l'ha trovata accettabile. Per cui, a volte, chi 5538c2ecf20Sopenharmony_ciintegra le patch convertirà un "sì, mi sembra che vada bene" in un Acked-by: 5548c2ecf20Sopenharmony_ci(ma tenete presente che solitamente è meglio chiedere esplicitamente). 5558c2ecf20Sopenharmony_ci 5568c2ecf20Sopenharmony_ciAcked-by: non indica l'accettazione di un'intera patch. Per esempio, quando 5578c2ecf20Sopenharmony_ciuna patch ha effetti su diversi sottosistemi e ha un Acked-by: da un 5588c2ecf20Sopenharmony_cimanutentore di uno di questi, significa che il manutentore accetta quella 5598c2ecf20Sopenharmony_ciparte di codice relativa al sottosistema che mantiene. Qui dovremmo essere 5608c2ecf20Sopenharmony_cigiudiziosi. Quando si hanno dei dubbi si dovrebbe far riferimento alla 5618c2ecf20Sopenharmony_cidiscussione originale negli archivi della lista di discussione. 5628c2ecf20Sopenharmony_ci 5638c2ecf20Sopenharmony_ciSe una persona ha avuto l'opportunità di commentare la patch, ma non lo ha 5648c2ecf20Sopenharmony_cifatto, potete aggiungere l'etichetta ``Cc:`` alla patch. Questa è l'unica 5658c2ecf20Sopenharmony_cietichetta che può essere aggiunta senza che la persona in questione faccia 5668c2ecf20Sopenharmony_cialcunché - ma dovrebbe indicare che la persona ha ricevuto una copia della 5678c2ecf20Sopenharmony_cipatch. Questa etichetta documenta che terzi potenzialmente interessati sono 5688c2ecf20Sopenharmony_cistati inclusi nella discussione. 5698c2ecf20Sopenharmony_ci 5708c2ecf20Sopenharmony_ciCo-developed-by: indica che la patch è stata cosviluppata da diversi 5718c2ecf20Sopenharmony_cisviluppatori; viene usato per assegnare più autori (in aggiunta a quello 5728c2ecf20Sopenharmony_ciassociato all'etichetta From:) quando più persone lavorano ad una patch. Dato 5738c2ecf20Sopenharmony_ciche Co-developed-by: implica la paternità della patch, ogni Co-developed-by: 5748c2ecf20Sopenharmony_cidev'essere seguito immediatamente dal Signed-off-by: del corrispondente 5758c2ecf20Sopenharmony_cicoautore. Qui si applica la procedura di base per sign-off, in pratica 5768c2ecf20Sopenharmony_cil'ordine delle etichette Signed-off-by: dovrebbe riflettere il più possibile 5778c2ecf20Sopenharmony_cil'ordine cronologico della storia della patch, indipendentemente dal fatto che 5788c2ecf20Sopenharmony_cila paternità venga assegnata via From: o Co-developed-by:. Da notare che 5798c2ecf20Sopenharmony_cil'ultimo Signed-off-by: dev'essere quello di colui che ha sottomesso la patch. 5808c2ecf20Sopenharmony_ci 5818c2ecf20Sopenharmony_ciNotate anche che l'etichetta From: è opzionale quando l'autore in From: è 5828c2ecf20Sopenharmony_cianche la persona (e indirizzo email) indicato nel From: dell'intestazione 5838c2ecf20Sopenharmony_cidell'email. 5848c2ecf20Sopenharmony_ci 5858c2ecf20Sopenharmony_ciEsempio di una patch sottomessa dall'autore in From::: 5868c2ecf20Sopenharmony_ci 5878c2ecf20Sopenharmony_ci <changelog> 5888c2ecf20Sopenharmony_ci 5898c2ecf20Sopenharmony_ci Co-developed-by: First Co-Author <first@coauthor.example.org> 5908c2ecf20Sopenharmony_ci Signed-off-by: First Co-Author <first@coauthor.example.org> 5918c2ecf20Sopenharmony_ci Co-developed-by: Second Co-Author <second@coauthor.example.org> 5928c2ecf20Sopenharmony_ci Signed-off-by: Second Co-Author <second@coauthor.example.org> 5938c2ecf20Sopenharmony_ci Signed-off-by: From Author <from@author.example.org> 5948c2ecf20Sopenharmony_ci 5958c2ecf20Sopenharmony_ciEsempio di una patch sottomessa dall'autore Co-developed-by::: 5968c2ecf20Sopenharmony_ci 5978c2ecf20Sopenharmony_ci From: From Author <from@author.example.org> 5988c2ecf20Sopenharmony_ci 5998c2ecf20Sopenharmony_ci <changelog> 6008c2ecf20Sopenharmony_ci 6018c2ecf20Sopenharmony_ci Co-developed-by: Random Co-Author <random@coauthor.example.org> 6028c2ecf20Sopenharmony_ci Signed-off-by: Random Co-Author <random@coauthor.example.org> 6038c2ecf20Sopenharmony_ci Signed-off-by: From Author <from@author.example.org> 6048c2ecf20Sopenharmony_ci Co-developed-by: Submitting Co-Author <sub@coauthor.example.org> 6058c2ecf20Sopenharmony_ci Signed-off-by: Submitting Co-Author <sub@coauthor.example.org> 6068c2ecf20Sopenharmony_ci 6078c2ecf20Sopenharmony_ci13) Utilizzare Reported-by:, Tested-by:, Reviewed-by:, Suggested-by: e Fixes: 6088c2ecf20Sopenharmony_ci----------------------------------------------------------------------------- 6098c2ecf20Sopenharmony_ci 6108c2ecf20Sopenharmony_ciL'etichetta Reported-by da credito alle persone che trovano e riportano i bachi 6118c2ecf20Sopenharmony_cie si spera che questo possa ispirarli ad aiutarci nuovamente in futuro. 6128c2ecf20Sopenharmony_ciRammentate che se il baco è stato riportato in privato, dovrete chiedere il 6138c2ecf20Sopenharmony_cipermesso prima di poter utilizzare l'etichetta Reported-by. 6148c2ecf20Sopenharmony_ci 6158c2ecf20Sopenharmony_ciL'etichetta Tested-by: indica che la patch è stata verificata con successo 6168c2ecf20Sopenharmony_ci(su un qualche sistema) dalla persona citata. Questa etichetta informa i 6178c2ecf20Sopenharmony_cimanutentori che qualche verifica è stata fatta, fornisce un mezzo per trovare 6188c2ecf20Sopenharmony_cipersone che possano verificare il codice in futuro, e garantisce che queste 6198c2ecf20Sopenharmony_cistesse persone ricevano credito per il loro lavoro. 6208c2ecf20Sopenharmony_ci 6218c2ecf20Sopenharmony_ciReviewd-by:, invece, indica che la patch è stata revisionata ed è stata 6228c2ecf20Sopenharmony_ciconsiderata accettabile in accordo con la dichiarazione dei revisori: 6238c2ecf20Sopenharmony_ci 6248c2ecf20Sopenharmony_ciDichiarazione di svista dei revisori 6258c2ecf20Sopenharmony_ci^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 6268c2ecf20Sopenharmony_ci 6278c2ecf20Sopenharmony_ciOffrendo la mia etichetta Reviewed-by, dichiaro quanto segue: 6288c2ecf20Sopenharmony_ci 6298c2ecf20Sopenharmony_ci (a) Ho effettuato una revisione tecnica di questa patch per valutarne 6308c2ecf20Sopenharmony_ci l'adeguatezza ai fini dell'inclusione nel ramo principale del 6318c2ecf20Sopenharmony_ci kernel. 6328c2ecf20Sopenharmony_ci 6338c2ecf20Sopenharmony_ci (b) Tutti i problemi e le domande riguardanti la patch sono stati 6348c2ecf20Sopenharmony_ci comunicati al mittente. Sono soddisfatto dalle risposte 6358c2ecf20Sopenharmony_ci del mittente. 6368c2ecf20Sopenharmony_ci 6378c2ecf20Sopenharmony_ci (c) Nonostante ci potrebbero essere cose migliorabili in queste 6388c2ecf20Sopenharmony_ci sottomissione, credo che sia, in questo momento, (1) una modifica 6398c2ecf20Sopenharmony_ci di interesse per il kernel, e (2) libera da problemi che 6408c2ecf20Sopenharmony_ci potrebbero metterne in discussione l'integrazione. 6418c2ecf20Sopenharmony_ci 6428c2ecf20Sopenharmony_ci (d) Nonostante abbia revisionato la patch e creda che vada bene, 6438c2ecf20Sopenharmony_ci non garantisco (se non specificato altrimenti) che questa 6448c2ecf20Sopenharmony_ci otterrà quello che promette o funzionerà correttamente in tutte 6458c2ecf20Sopenharmony_ci le possibili situazioni. 6468c2ecf20Sopenharmony_ci 6478c2ecf20Sopenharmony_ciL'etichetta Reviewed-by è la dichiarazione di un parere sulla bontà di 6488c2ecf20Sopenharmony_ciuna modifica che si ritiene appropriata e senza alcun problema tecnico 6498c2ecf20Sopenharmony_ciimportante. Qualsiasi revisore interessato (quelli che lo hanno fatto) 6508c2ecf20Sopenharmony_cipossono offrire il proprio Reviewed-by per la patch. Questa etichetta serve 6518c2ecf20Sopenharmony_cia dare credito ai revisori e a informare i manutentori sul livello di revisione 6528c2ecf20Sopenharmony_ciche è stato fatto sulla patch. L'etichetta Reviewd-by, quando fornita da 6538c2ecf20Sopenharmony_cirevisori conosciuti per la loro conoscenza sulla materia in oggetto e per la 6548c2ecf20Sopenharmony_ciloro serietà nella revisione, accrescerà le probabilità che la vostra patch 6558c2ecf20Sopenharmony_civenga integrate nel kernel. 6568c2ecf20Sopenharmony_ci 6578c2ecf20Sopenharmony_ciL'etichetta Suggested-by: indica che l'idea della patch è stata suggerita 6588c2ecf20Sopenharmony_cidalla persona nominata e le da credito. Tenete a mente che questa etichetta 6598c2ecf20Sopenharmony_cinon dovrebbe essere aggiunta senza un permesso esplicito, specialmente se 6608c2ecf20Sopenharmony_cil'idea non è stata pubblicata in un forum pubblico. Detto ciò, dando credito 6618c2ecf20Sopenharmony_cia chi ci fornisce delle idee, si spera di poterli ispirare ad aiutarci 6628c2ecf20Sopenharmony_cinuovamente in futuro. 6638c2ecf20Sopenharmony_ci 6648c2ecf20Sopenharmony_ciL'etichetta Fixes: indica che la patch corregge un problema in un commit 6658c2ecf20Sopenharmony_ciprecedente. Serve a chiarire l'origine di un baco, il che aiuta la revisione 6668c2ecf20Sopenharmony_cidel baco stesso. Questa etichetta è di aiuto anche per i manutentori dei 6678c2ecf20Sopenharmony_cikernel stabili al fine di capire quale kernel deve ricevere la correzione. 6688c2ecf20Sopenharmony_ciQuesto è il modo suggerito per indicare che un baco è stato corretto nella 6698c2ecf20Sopenharmony_cipatch. Per maggiori dettagli leggete :ref:`it_describe_changes` 6708c2ecf20Sopenharmony_ci 6718c2ecf20Sopenharmony_ci 6728c2ecf20Sopenharmony_ci14) Il formato canonico delle patch 6738c2ecf20Sopenharmony_ci----------------------------------- 6748c2ecf20Sopenharmony_ci 6758c2ecf20Sopenharmony_ciQuesta sezione descrive il formato che dovrebbe essere usato per le patch. 6768c2ecf20Sopenharmony_ciNotate che se state usando un repositorio ``git`` per salvare le vostre patch 6778c2ecf20Sopenharmony_cipotere usare il comando ``git format-patch`` per ottenere patch nel formato 6788c2ecf20Sopenharmony_ciappropriato. Lo strumento non crea il testo necessario, per cui, leggete 6798c2ecf20Sopenharmony_cile seguenti istruzioni. 6808c2ecf20Sopenharmony_ci 6818c2ecf20Sopenharmony_ciL'oggetto di una patch canonica è la riga:: 6828c2ecf20Sopenharmony_ci 6838c2ecf20Sopenharmony_ci Subject: [PATCH 001/123] subsystem: summary phrase 6848c2ecf20Sopenharmony_ci 6858c2ecf20Sopenharmony_ciIl corpo di una patch canonica contiene i seguenti elementi: 6868c2ecf20Sopenharmony_ci 6878c2ecf20Sopenharmony_ci - Una riga ``from`` che specifica l'autore della patch, seguita 6888c2ecf20Sopenharmony_ci da una riga vuota (necessaria soltanto se la persona che invia la 6898c2ecf20Sopenharmony_ci patch non ne è l'autore). 6908c2ecf20Sopenharmony_ci 6918c2ecf20Sopenharmony_ci - Il corpo della spiegazione, con linee non più lunghe di 75 caratteri, 6928c2ecf20Sopenharmony_ci che verrà copiato permanentemente nel changelog per descrivere la patch. 6938c2ecf20Sopenharmony_ci 6948c2ecf20Sopenharmony_ci - Una riga vuota 6958c2ecf20Sopenharmony_ci 6968c2ecf20Sopenharmony_ci - Le righe ``Signed-off-by:``, descritte in precedenza, che finiranno 6978c2ecf20Sopenharmony_ci anch'esse nel changelog. 6988c2ecf20Sopenharmony_ci 6998c2ecf20Sopenharmony_ci - Una linea di demarcazione contenente semplicemente ``---``. 7008c2ecf20Sopenharmony_ci 7018c2ecf20Sopenharmony_ci - Qualsiasi altro commento che non deve finire nel changelog. 7028c2ecf20Sopenharmony_ci 7038c2ecf20Sopenharmony_ci - Le effettive modifiche al codice (il prodotto di ``diff``). 7048c2ecf20Sopenharmony_ci 7058c2ecf20Sopenharmony_ciIl formato usato per l'oggetto permette ai programmi di posta di usarlo 7068c2ecf20Sopenharmony_ciper ordinare le patch alfabeticamente - tutti i programmi di posta hanno 7078c2ecf20Sopenharmony_ciquesta funzionalità - dato che al numero sequenziale si antepongono degli zeri; 7088c2ecf20Sopenharmony_ciin questo modo l'ordine numerico ed alfabetico coincidono. 7098c2ecf20Sopenharmony_ci 7108c2ecf20Sopenharmony_ciIl ``subsystem`` nell'oggetto dell'email dovrebbe identificare l'area 7118c2ecf20Sopenharmony_cio il sottosistema modificato dalla patch. 7128c2ecf20Sopenharmony_ci 7138c2ecf20Sopenharmony_ciLa ``summary phrase`` nell'oggetto dell'email dovrebbe descrivere brevemente 7148c2ecf20Sopenharmony_ciil contenuto della patch. La ``summary phrase`` non dovrebbe essere un nome 7158c2ecf20Sopenharmony_cidi file. Non utilizzate la stessa ``summary phrase`` per tutte le patch in 7168c2ecf20Sopenharmony_ciuna serie (dove una ``serie di patch`` è una sequenza ordinata di diverse 7178c2ecf20Sopenharmony_cipatch correlate). 7188c2ecf20Sopenharmony_ci 7198c2ecf20Sopenharmony_ciRicordatevi che la ``summary phrase`` della vostra email diventerà un 7208c2ecf20Sopenharmony_ciidentificatore globale ed unico per quella patch. Si propaga fino al 7218c2ecf20Sopenharmony_cichangelog ``git``. La ``summary phrase`` potrà essere usata in futuro 7228c2ecf20Sopenharmony_cidagli sviluppatori per riferirsi a quella patch. Le persone vorranno 7238c2ecf20Sopenharmony_cicercare la ``summary phrase`` su internet per leggere le discussioni che la 7248c2ecf20Sopenharmony_ciriguardano. Potrebbe anche essere l'unica cosa che le persone vedranno 7258c2ecf20Sopenharmony_ciquando, in due o tre mesi, riguarderanno centinaia di patch usando strumenti 7268c2ecf20Sopenharmony_cicome ``gitk`` o ``git log --oneline``. 7278c2ecf20Sopenharmony_ci 7288c2ecf20Sopenharmony_ciPer queste ragioni, dovrebbe essere lunga fra i 70 e i 75 caratteri, e deve 7298c2ecf20Sopenharmony_cidescrivere sia cosa viene modificato, sia il perché sia necessario. Essere 7308c2ecf20Sopenharmony_cibrevi e descrittivi è una bella sfida, ma questo è quello che fa un riassunto 7318c2ecf20Sopenharmony_ciben scritto. 7328c2ecf20Sopenharmony_ci 7338c2ecf20Sopenharmony_ciLa ``summary phrase`` può avere un'etichetta (*tag*) di prefisso racchiusa fra 7348c2ecf20Sopenharmony_cile parentesi quadre "Subject: [PATCH <tag>...] <summary phrase>". 7358c2ecf20Sopenharmony_ciLe etichette non verranno considerate come parte della frase riassuntiva, ma 7368c2ecf20Sopenharmony_ciindicano come la patch dovrebbe essere trattata. Fra le etichette più comuni 7378c2ecf20Sopenharmony_cici sono quelle di versione che vengono usate quando una patch è stata inviata 7388c2ecf20Sopenharmony_cipiù volte (per esempio, "v1, v2, v3"); oppure "RFC" per indicare che si 7398c2ecf20Sopenharmony_ciattendono dei commenti (*Request For Comments*). Se ci sono quattro patch 7408c2ecf20Sopenharmony_cinella serie, queste dovrebbero essere enumerate così: 1/4, 2/4, 3/4, 4/4. 7418c2ecf20Sopenharmony_ciQuesto assicura che gli sviluppatori capiranno l'ordine in cui le patch 7428c2ecf20Sopenharmony_cidovrebbero essere applicate, e per tracciare quelle che hanno revisionate o 7438c2ecf20Sopenharmony_ciche hanno applicato. 7448c2ecf20Sopenharmony_ci 7458c2ecf20Sopenharmony_ciUn paio di esempi di oggetti:: 7468c2ecf20Sopenharmony_ci 7478c2ecf20Sopenharmony_ci Subject: [PATCH 2/5] ext2: improve scalability of bitmap searching 7488c2ecf20Sopenharmony_ci Subject: [PATCH v2 01/27] x86: fix eflags tracking 7498c2ecf20Sopenharmony_ci 7508c2ecf20Sopenharmony_ciLa riga ``from`` dev'essere la prima nel corpo del messaggio ed è nel 7518c2ecf20Sopenharmony_ciformato: 7528c2ecf20Sopenharmony_ci 7538c2ecf20Sopenharmony_ci From: Patch Author <author@example.com> 7548c2ecf20Sopenharmony_ci 7558c2ecf20Sopenharmony_ciLa riga ``from`` indica chi verrà accreditato nel changelog permanente come 7568c2ecf20Sopenharmony_cil'autore della patch. Se la riga ``from`` è mancante, allora per determinare 7578c2ecf20Sopenharmony_cil'autore da inserire nel changelog verrà usata la riga ``From`` 7588c2ecf20Sopenharmony_cinell'intestazione dell'email. 7598c2ecf20Sopenharmony_ci 7608c2ecf20Sopenharmony_ciIl corpo della spiegazione verrà incluso nel changelog permanente, per cui 7618c2ecf20Sopenharmony_cideve aver senso per un lettore esperto che è ha dimenticato i dettagli della 7628c2ecf20Sopenharmony_cidiscussione che hanno portato alla patch. L'inclusione di informazioni 7638c2ecf20Sopenharmony_cisui problemi oggetto dalla patch (messaggi del kernel, messaggi di oops, 7648c2ecf20Sopenharmony_cieccetera) è particolarmente utile per le persone che potrebbero cercare fra 7658c2ecf20Sopenharmony_cii messaggi di log per la patch che li tratta. Se la patch corregge un errore 7668c2ecf20Sopenharmony_cidi compilazione, non sarà necessario includere proprio _tutto_ quello che 7678c2ecf20Sopenharmony_ciè uscito dal compilatore; aggiungete solo quello che è necessario per far si 7688c2ecf20Sopenharmony_ciche la vostra patch venga trovata. Come nella ``summary phrase``, è importante 7698c2ecf20Sopenharmony_ciessere sia brevi che descrittivi. 7708c2ecf20Sopenharmony_ci 7718c2ecf20Sopenharmony_ciLa linea di demarcazione ``---`` serve essenzialmente a segnare dove finisce 7728c2ecf20Sopenharmony_ciil messaggio di changelog. 7738c2ecf20Sopenharmony_ci 7748c2ecf20Sopenharmony_ciAggiungere il ``diffstat`` dopo ``---`` è un buon uso di questo spazio, per 7758c2ecf20Sopenharmony_cimostrare i file che sono cambiati, e il numero di file aggiunto o rimossi. 7768c2ecf20Sopenharmony_ciUn ``diffstat`` è particolarmente utile per le patch grandi. Altri commenti 7778c2ecf20Sopenharmony_ciche sono importanti solo per i manutentori, quindi inadatti al changelog 7788c2ecf20Sopenharmony_cipermanente, dovrebbero essere messi qui. Un buon esempio per questo tipo 7798c2ecf20Sopenharmony_cidi commenti potrebbe essere quello di descrivere le differenze fra le versioni 7808c2ecf20Sopenharmony_cidella patch. 7818c2ecf20Sopenharmony_ci 7828c2ecf20Sopenharmony_ciSe includete un ``diffstat`` dopo ``---``, usate le opzioni ``-p 1 -w70`` 7838c2ecf20Sopenharmony_cicosicché i nomi dei file elencati non occupino troppo spazio (facilmente 7848c2ecf20Sopenharmony_cirientreranno negli 80 caratteri, magari con qualche indentazione). 7858c2ecf20Sopenharmony_ci(``git`` genera di base dei diffstat adatti). 7868c2ecf20Sopenharmony_ci 7878c2ecf20Sopenharmony_ciMaggiori dettagli sul formato delle patch nei riferimenti qui di seguito. 7888c2ecf20Sopenharmony_ci 7898c2ecf20Sopenharmony_ci.. _it_explicit_in_reply_to: 7908c2ecf20Sopenharmony_ci 7918c2ecf20Sopenharmony_ci15) Usare esplicitamente In-Reply-To nell'intestazione 7928c2ecf20Sopenharmony_ci------------------------------------------------------ 7938c2ecf20Sopenharmony_ci 7948c2ecf20Sopenharmony_ciAggiungere manualmente In-Reply-To: nell'intestazione dell'e-mail 7958c2ecf20Sopenharmony_cipotrebbe essere d'aiuto per associare una patch ad una discussione 7968c2ecf20Sopenharmony_ciprecedente, per esempio per collegare la correzione di un baco con l'e-mail 7978c2ecf20Sopenharmony_ciche lo riportava. Tuttavia, per serie di patch multiple è generalmente 7988c2ecf20Sopenharmony_cisconsigliato l'uso di In-Reply-To: per collegare precedenti versioni. 7998c2ecf20Sopenharmony_ciIn questo modo versioni multiple di una patch non diventeranno un'ingestibile 8008c2ecf20Sopenharmony_cigiungla di riferimenti all'interno dei programmi di posta. Se un collegamento 8018c2ecf20Sopenharmony_ciè utile, potete usare https://lkml.kernel.org/ per ottenere i collegamenti 8028c2ecf20Sopenharmony_ciad una versione precedente di una serie di patch (per esempio, potete usarlo 8038c2ecf20Sopenharmony_ciper l'email introduttiva alla serie). 8048c2ecf20Sopenharmony_ci 8058c2ecf20Sopenharmony_ci16) Inviare richieste ``git pull`` 8068c2ecf20Sopenharmony_ci---------------------------------- 8078c2ecf20Sopenharmony_ci 8088c2ecf20Sopenharmony_ciSe avete una serie di patch, potrebbe essere più conveniente per un manutentore 8098c2ecf20Sopenharmony_citirarle dentro al repositorio del sottosistema attraverso l'operazione 8108c2ecf20Sopenharmony_ci``git pull``. Comunque, tenete presente che prendere patch da uno sviluppatore 8118c2ecf20Sopenharmony_ciin questo modo richiede un livello di fiducia più alto rispetto a prenderle da 8128c2ecf20Sopenharmony_ciuna lista di discussione. Di conseguenza, molti manutentori sono riluttanti 8138c2ecf20Sopenharmony_ciad accettare richieste di *pull*, specialmente dagli sviluppatori nuovi e 8148c2ecf20Sopenharmony_ciquindi sconosciuti. Se siete in dubbio, potete fare una richiesta di *pull* 8158c2ecf20Sopenharmony_cicome messaggio introduttivo ad una normale pubblicazione di patch, così 8168c2ecf20Sopenharmony_ciil manutentore avrà la possibilità di scegliere come integrarle. 8178c2ecf20Sopenharmony_ci 8188c2ecf20Sopenharmony_ciUna richiesta di *pull* dovrebbe avere nell'oggetto [GIT] o [PULL]. 8198c2ecf20Sopenharmony_ciLa richiesta stessa dovrebbe includere il nome del repositorio e quello del 8208c2ecf20Sopenharmony_ciramo su una singola riga; dovrebbe essere più o meno così:: 8218c2ecf20Sopenharmony_ci 8228c2ecf20Sopenharmony_ci Please pull from 8238c2ecf20Sopenharmony_ci 8248c2ecf20Sopenharmony_ci git://jdelvare.pck.nerim.net/jdelvare-2.6 i2c-for-linus 8258c2ecf20Sopenharmony_ci 8268c2ecf20Sopenharmony_ci to get these changes: 8278c2ecf20Sopenharmony_ci 8288c2ecf20Sopenharmony_ciUna richiesta di *pull* dovrebbe includere anche un messaggio generico 8298c2ecf20Sopenharmony_ciche dica cos'è incluso, una lista delle patch usando ``git shortlog``, e una 8308c2ecf20Sopenharmony_cipanoramica sugli effetti della serie di patch con ``diffstat``. Il modo più 8318c2ecf20Sopenharmony_cisemplice per ottenere tutte queste informazioni è, ovviamente, quello di 8328c2ecf20Sopenharmony_cilasciar fare tutto a ``git`` con il comando ``git request-pull``. 8338c2ecf20Sopenharmony_ci 8348c2ecf20Sopenharmony_ciAlcuni manutentori (incluso Linus) vogliono vedere le richieste di *pull* 8358c2ecf20Sopenharmony_cida commit firmati con GPG; questo fornisce una maggiore garanzia sul fatto 8368c2ecf20Sopenharmony_ciche siate stati proprio voi a fare la richiesta. In assenza di tale etichetta 8378c2ecf20Sopenharmony_cifirmata Linus, in particolare, non prenderà alcuna patch da siti pubblici come 8388c2ecf20Sopenharmony_ciGitHub. 8398c2ecf20Sopenharmony_ci 8408c2ecf20Sopenharmony_ciIl primo passo verso la creazione di questa etichetta firmata è quello di 8418c2ecf20Sopenharmony_cicreare una chiave GNUPG ed averla fatta firmare da uno o più sviluppatori 8428c2ecf20Sopenharmony_ciprincipali del kernel. Questo potrebbe essere difficile per i nuovi 8438c2ecf20Sopenharmony_cisviluppatori, ma non ci sono altre vie. Andare alle conferenze potrebbe 8448c2ecf20Sopenharmony_ciessere un buon modo per trovare sviluppatori che possano firmare la vostra 8458c2ecf20Sopenharmony_cichiave. 8468c2ecf20Sopenharmony_ci 8478c2ecf20Sopenharmony_ciUna volta che avete preparato la vostra serie di patch in ``git``, e volete che 8488c2ecf20Sopenharmony_ciqualcuno le prenda, create una etichetta firmata col comando ``git tag -s``. 8498c2ecf20Sopenharmony_ciQuesto creerà una nuova etichetta che identifica l'ultimo commit della serie 8508c2ecf20Sopenharmony_cicontenente una firma creata con la vostra chiave privata. Avrete anche 8518c2ecf20Sopenharmony_cil'opportunità di aggiungere un messaggio di changelog all'etichetta; questo è 8528c2ecf20Sopenharmony_ciil posto ideale per descrivere gli effetti della richiesta di *pull*. 8538c2ecf20Sopenharmony_ci 8548c2ecf20Sopenharmony_ciSe i sorgenti da cui il manutentore prenderà le patch non sono gli stessi del 8558c2ecf20Sopenharmony_cirepositorio su cui state lavorando, allora non dimenticatevi di caricare 8568c2ecf20Sopenharmony_cil'etichetta firmata anche sui sorgenti pubblici. 8578c2ecf20Sopenharmony_ci 8588c2ecf20Sopenharmony_ciQuando generate una richiesta di *pull*, usate l'etichetta firmata come 8598c2ecf20Sopenharmony_ciobiettivo. Un comando come il seguente farà il suo dovere:: 8608c2ecf20Sopenharmony_ci 8618c2ecf20Sopenharmony_ci git request-pull master git://my.public.tree/linux.git my-signed-tag 8628c2ecf20Sopenharmony_ci 8638c2ecf20Sopenharmony_ci 8648c2ecf20Sopenharmony_ciRiferimenti 8658c2ecf20Sopenharmony_ci----------- 8668c2ecf20Sopenharmony_ci 8678c2ecf20Sopenharmony_ciAndrew Morton, "La patch perfetta" (tpp). 8688c2ecf20Sopenharmony_ci <http://www.ozlabs.org/~akpm/stuff/tpp.txt> 8698c2ecf20Sopenharmony_ci 8708c2ecf20Sopenharmony_ciJeff Garzik, "Formato per la sottomissione di patch per il kernel Linux" 8718c2ecf20Sopenharmony_ci <https://web.archive.org/web/20180829112450/http://linux.yyz.us/patch-format.html> 8728c2ecf20Sopenharmony_ci 8738c2ecf20Sopenharmony_ciGreg Kroah-Hartman, "Come scocciare un manutentore di un sottosistema" 8748c2ecf20Sopenharmony_ci <http://www.kroah.com/log/linux/maintainer.html> 8758c2ecf20Sopenharmony_ci 8768c2ecf20Sopenharmony_ci <http://www.kroah.com/log/linux/maintainer-02.html> 8778c2ecf20Sopenharmony_ci 8788c2ecf20Sopenharmony_ci <http://www.kroah.com/log/linux/maintainer-03.html> 8798c2ecf20Sopenharmony_ci 8808c2ecf20Sopenharmony_ci <http://www.kroah.com/log/linux/maintainer-04.html> 8818c2ecf20Sopenharmony_ci 8828c2ecf20Sopenharmony_ci <http://www.kroah.com/log/linux/maintainer-05.html> 8838c2ecf20Sopenharmony_ci 8848c2ecf20Sopenharmony_ci <http://www.kroah.com/log/linux/maintainer-06.html> 8858c2ecf20Sopenharmony_ci 8868c2ecf20Sopenharmony_ciNo!!!! Basta gigantesche bombe patch alle persone sulla lista linux-kernel@vger.kernel.org! 8878c2ecf20Sopenharmony_ci <https://lkml.org/lkml/2005/7/11/336> 8888c2ecf20Sopenharmony_ci 8898c2ecf20Sopenharmony_ciKernel Documentation/translations/it_IT/process/coding-style.rst: 8908c2ecf20Sopenharmony_ci :ref:`Documentation/translations/it_IT/process/coding-style.rst <it_codingstyle>` 8918c2ecf20Sopenharmony_ci 8928c2ecf20Sopenharmony_ciE-mail di Linus Torvalds sul formato canonico di una patch: 8938c2ecf20Sopenharmony_ci <http://lkml.org/lkml/2005/4/7/183> 8948c2ecf20Sopenharmony_ci 8958c2ecf20Sopenharmony_ciAndi Kleen, "Su come sottomettere patch del kernel" 8968c2ecf20Sopenharmony_ci Alcune strategie su come sottomettere modifiche toste o controverse. 8978c2ecf20Sopenharmony_ci 8988c2ecf20Sopenharmony_ci http://halobates.de/on-submitting-patches.pdf 899