€•»’Œsphinx.addnodes”Œdocument”“”)”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)”}”(hhh]”(hŒ pending_xref”“”)”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒEnglish”…””}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ/process/7.AdvancedTopics”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)”}”(hhh]”hŒChinese (Simplified)”…””}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ,/translations/zh_CN/process/7.AdvancedTopics”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒChinese (Traditional)”…””}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ,/translations/zh_TW/process/7.AdvancedTopics”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒJapanese”…””}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ,/translations/ja_JP/process/7.AdvancedTopics”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒKorean”…””}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ,/translations/ko_KR/process/7.AdvancedTopics”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒPortuguese (Brazilian)”…””}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ,/translations/pt_BR/process/7.AdvancedTopics”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒSpanish”…””}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ,/translations/sp_SP/process/7.AdvancedTopics”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒItalian”uh1h hhŒ _document”hŒsource”NŒline”NubhŒwarning”“”)”}”(hŒ×In caso di dubbi sulla correttezza del contenuto di questa traduzione, l'unico riferimento valido ĆØ la documentazione ufficiale in inglese. Per maggiori informazioni consultate le :ref:`avvertenze `.”h]”hŒ paragraph”“”)”}”(hŒ×In caso di dubbi sulla correttezza del contenuto di questa traduzione, l'unico riferimento valido ĆØ la documentazione ufficiale in inglese. Per maggiori informazioni consultate le :ref:`avvertenze `.”h]”(hŒ·In caso di dubbi sulla correttezza del contenuto di questa traduzione, l’unico riferimento valido ĆØ la documentazione ufficiale in inglese. Per maggiori informazioni consultate le ”…””}”(hh½h²hh³Nh“Nubh)”}”(hŒ!:ref:`avvertenze `”h]”hŒinline”“”)”}”(hhĒh]”hŒ avvertenze”…””}”(hhĖh²hh³Nh“Nubah}”(h]”h ]”(Œxref”Œstd”Œstd-ref”eh"]”h$]”h&]”uh1hÉhhÅubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”Œ+translations/it_IT/process/7.AdvancedTopics”Œ refdomain”h֌reftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆŒ reftarget”Œ it_disclaimer”uh1hh³Œ3Documentation/translations/it_IT/disclaimer-ita.rst”h“Khh½ubhŒ.”…””}”(hh½h²hh³Nh“Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1h»h³hźh“Khh·ubah}”(h]”h ]”h"]”h$]”h&]”uh1hµhhh²hh³hźh“NubhŒ field_list”“”)”}”(hhh]”(hŒfield”“”)”}”(hhh]”(hŒ field_name”“”)”}”(hŒOriginal”h]”hŒOriginal”…””}”(hjh²hh³Nh“Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjh³ŒY/var/lib/git/docbuild/linux/Documentation/translations/it_IT/process/7.AdvancedTopics.rst”h“KubhŒ field_body”“”)”}”(hŒN:ref:`Documentation/process/7.AdvancedTopics.rst `”h]”h¼)”}”(hjh]”h)”}”(hjh]”hŹ)”}”(hjh]”hŒ*Documentation/process/7.AdvancedTopics.rst”…””}”(hj"h²hh³Nh“Nubah}”(h]”h ]”(hՌstd”Œstd-ref”eh"]”h$]”h&]”uh1hÉhjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”h⌠refdomain”j,Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆhčŒdevelopment_advancedtopics”uh1hh³jh“Khjubah}”(h]”h ]”h"]”h$]”h&]”uh1h»h³jh“Khjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jh“Khhżh²hubj)”}”(hhh]”(j)”}”(hŒ Translator”h]”hŒ Translator”…””}”(hjSh²hh³Nh“Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjPh³jh“Kubj)”}”(hŒ)Federico Vaga ”h]”h¼)”}”(hŒ(Federico Vaga ”h]”(hŒFederico Vaga <”…””}”(hjeh²hh³Nh“NubhŒ reference”“”)”}”(hŒfederico.vaga@vaga.pv.it”h]”hŒfederico.vaga@vaga.pv.it”…””}”(hjoh²hh³Nh“Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”Œmailto:federico.vaga@vaga.pv.it”uh1jmhjeubhŒ>”…””}”(hjeh²hh³Nh“Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1h»h³jh“Khjaubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjPubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jh“Khhżh²hubeh}”(h]”h ]”h"]”h$]”h&]”uh1hūhhh²hh³jh“KubhŒtarget”“”)”}”(hŒ".. _it_development_advancedtopics:”h]”h}”(h]”h ]”h"]”h$]”h&]”Œrefid”Œit-development-advancedtopics”uh1j›h“Khhh²hh³jubhŒsection”“”)”}”(hhh]”(hŒtitle”“”)”}”(hŒArgomenti avanzati”h]”hŒArgomenti avanzati”…””}”(hj°h²hh³Nh“Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j®hj«h²hh³jh“K ubh¼)”}”(hX)A questo punto, si spera, dovreste avere un'idea su come funziona il processo di sviluppo. Ma rimane comunque molto da imparare! Questo capitolo copre alcuni argomenti che potrebbero essere utili per gli sviluppatori che stanno per diventare parte integrante del processo di sviluppo del kernel.”h]”hX+A questo punto, si spera, dovreste avere un’idea su come funziona il processo di sviluppo. Ma rimane comunque molto da imparare! Questo capitolo copre alcuni argomenti che potrebbero essere utili per gli sviluppatori che stanno per diventare parte integrante del processo di sviluppo del kernel.”…””}”(hj¾h²hh³Nh“Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h»h³jh“K hj«h²hubjŖ)”}”(hhh]”(jÆ)”}”(hŒGestire le modifiche con git”h]”hŒGestire le modifiche con git”…””}”(hjĻh²hh³Nh“Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j®hjĢh²hh³jh“Kubh¼)”}”(hXL'uso di un sistema distribuito per il controllo delle versioni del kernel ebbe iniziò nel 2002 quando Linux iniziò a provare il programma proprietario BitKeeper. Nonostante l'uso di BitKeeper fosse opinabile, di certo il suo approccio alla gestione dei sorgenti non lo era. Un sistema distribuito per il controllo delle versioni accelerò immediatamente lo sviluppo del kernel. Oggigiorno, ci sono diverse alternative libere a BitKeeper. Per il meglio o il peggio, il progetto del kernel ha deciso di usare git per gestire i sorgenti.”h]”hX L’uso di un sistema distribuito per il controllo delle versioni del kernel ebbe iniziò nel 2002 quando Linux iniziò a provare il programma proprietario BitKeeper. Nonostante l’uso di BitKeeper fosse opinabile, di certo il suo approccio alla gestione dei sorgenti non lo era. Un sistema distribuito per il controllo delle versioni accelerò immediatamente lo sviluppo del kernel. Oggigiorno, ci sono diverse alternative libere a BitKeeper. Per il meglio o il peggio, il progetto del kernel ha deciso di usare git per gestire i sorgenti.”…””}”(hjŻh²hh³Nh“Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h»h³jh“KhjĢh²hubh¼)”}”(hX¤Gestire le modifiche con git può rendere la vita dello sviluppatore molto più facile, specialmente quando il volume delle modifiche cresce. Git ha anche i suoi lati taglienti che possono essere pericolosi; ĆØ uno strumento giovane e potente che ĆØ ancora in fase di civilizzazione da parte dei suoi sviluppatori. Questo documento non ha lo scopo di insegnare l'uso di git ai suoi lettori; ci sarebbe materiale a sufficienza per un lungo documento al riguardo. Invece, qui ci concentriamo in particolare su come git ĆØ parte del processo di sviluppo del kernel. Gli sviluppatori che desiderassero diventare agili con git troveranno più informazioni ai seguenti indirizzi:”h]”hX¦Gestire le modifiche con git può rendere la vita dello sviluppatore molto più facile, specialmente quando il volume delle modifiche cresce. Git ha anche i suoi lati taglienti che possono essere pericolosi; ĆØ uno strumento giovane e potente che ĆØ ancora in fase di civilizzazione da parte dei suoi sviluppatori. Questo documento non ha lo scopo di insegnare l’uso di git ai suoi lettori; ci sarebbe materiale a sufficienza per un lungo documento al riguardo. Invece, qui ci concentriamo in particolare su come git ĆØ parte del processo di sviluppo del kernel. Gli sviluppatori che desiderassero diventare agili con git troveranno più informazioni ai seguenti indirizzi:”…””}”(hjėh²hh³Nh“Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h»h³jh“KhjĢh²hubhŒ block_quote”“”)”}”(hŒXhttps://git-scm.com/ https://www.kernel.org/pub/software/scm/git/docs/user-manual.html ”h]”(h¼)”}”(hŒhttps://git-scm.com/”h]”jn)”}”(hjh]”hŒhttps://git-scm.com/”…””}”(hjh²hh³Nh“Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”juh1jmhj’ubah}”(h]”h ]”h"]”h$]”h&]”uh1h»h³jh“K&hjūubh¼)”}”(hŒAhttps://www.kernel.org/pub/software/scm/git/docs/user-manual.html”h]”jn)”}”(hjh]”hŒAhttps://www.kernel.org/pub/software/scm/git/docs/user-manual.html”…””}”(hjh²hh³Nh“Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”juh1jmhjubah}”(h]”h ]”h"]”h$]”h&]”uh1h»h³jh“K(hjūubeh}”(h]”h ]”h"]”h$]”h&]”uh1jłh³jh“K&hjĢh²hubh¼)”}”(hŒ1e su varie guide che potrete trovare su internet.”h]”hŒ1e su varie guide che potrete trovare su internet.”…””}”(hj5h²hh³Nh“Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h»h³jh“K*hjĢh²hubh¼)”}”(hX,La prima cosa da fare prima di usarlo per produrre patch che saranno disponibili ad altri, ĆØ quella di leggere i siti qui sopra e di acquisire una base solida su come funziona git. Uno sviluppatore che sappia usare git dovrebbe essere capace di ottenere una copia del repositorio principale, esplorare la storia della revisione, registrare le modifiche, usare i rami, eccetera. Una certa comprensione degli strumenti git per riscrivere la storia (come ``rebase``) ĆØ altrettanto utile. Git ha i propri concetti e la propria terminologia; un nuovo utente dovrebbe conoscere *refs*, *remote branch*, *index*, *fast-forward merge*, *push* e *pull*, *detached head*, eccetera. Il tutto potrebbe essere un po' intimidatorio visto da fuori, ma con un po' di studio i concetti non saranno cosƬ difficili da capire.”h]”(hXĒLa prima cosa da fare prima di usarlo per produrre patch che saranno disponibili ad altri, ĆØ quella di leggere i siti qui sopra e di acquisire una base solida su come funziona git. Uno sviluppatore che sappia usare git dovrebbe essere capace di ottenere una copia del repositorio principale, esplorare la storia della revisione, registrare le modifiche, usare i rami, eccetera. Una certa comprensione degli strumenti git per riscrivere la storia (come ”…””}”(hjCh²hh³Nh“NubhŒliteral”“”)”}”(hŒ ``rebase``”h]”hŒrebase”…””}”(hjMh²hh³Nh“Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jKhjCubhŒp) ĆØ altrettanto utile. Git ha i propri concetti e la propria terminologia; un nuovo utente dovrebbe conoscere ”…””}”(hjCh²hh³Nh“NubhŒemphasis”“”)”}”(hŒ*refs*”h]”hŒrefs”…””}”(hjah²hh³Nh“Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hjCubhŒ, ”…””}”(hjCh²hh³Nh“Nubj`)”}”(hŒ*remote branch*”h]”hŒ remote branch”…””}”(hjsh²hh³Nh“Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hjCubhŒ, ”…””}”(hjCh²hh³Nh“Nubj`)”}”(hŒ*index*”h]”hŒindex”…””}”(hj…h²hh³Nh“Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hjCubhŒ, ”…””}”hjCsbj`)”}”(hŒ*fast-forward merge*”h]”hŒfast-forward merge”…””}”(hj—h²hh³Nh“Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hjCubhŒ, ”…””}”hjCsbj`)”}”(hŒ*push*”h]”hŒpush”…””}”(hj©h²hh³Nh“Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hjCubhŒ e ”…””}”(hjCh²hh³Nh“Nubj`)”}”(hŒ*pull*”h]”hŒpull”…””}”(hj»h²hh³Nh“Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hjCubhŒ, ”…””}”hjCsbj`)”}”(hŒ*detached head*”h]”hŒ detached head”…””}”(hjĶh²hh³Nh“Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hjCubhŒ—, eccetera. Il tutto potrebbe essere un po’ intimidatorio visto da fuori, ma con un po’ di studio i concetti non saranno cosƬ difficili da capire.”…””}”(hjCh²hh³Nh“Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1h»h³jh“K,hjĢh²hubh¼)”}”(hŒ–Utilizzare git per produrre patch da sottomettere via email può essere un buon esercizio da fare mentre si sta prendendo confidenza con lo strumento.”h]”hŒ–Utilizzare git per produrre patch da sottomettere via email può essere un buon esercizio da fare mentre si sta prendendo confidenza con lo strumento.”…””}”(hjåh²hh³Nh“Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h»h³jh“K8hjĢh²hubh¼)”}”(hX8Quando sarete in grado di creare rami git che siano guardabili da altri, vi servirĆ , ovviamente, un server dal quale sia possibile attingere le vostre modifiche. Se avete un server accessibile da Internet, configurarlo per eseguire git-daemon ĆØ relativamente semplice . Altrimenti, iniziano a svilupparsi piattaforme che offrono spazi pubblici, e gratuiti (Github, per esempio). Gli sviluppatori permanenti possono ottenere un account su kernel.org, ma non ĆØ proprio facile da ottenere; per maggiori informazioni consultate la pagina web https://kernel.org/faq/.”h]”(hX Quando sarete in grado di creare rami git che siano guardabili da altri, vi servirĆ , ovviamente, un server dal quale sia possibile attingere le vostre modifiche. Se avete un server accessibile da Internet, configurarlo per eseguire git-daemon ĆØ relativamente semplice . Altrimenti, iniziano a svilupparsi piattaforme che offrono spazi pubblici, e gratuiti (Github, per esempio). Gli sviluppatori permanenti possono ottenere un account su kernel.org, ma non ĆØ proprio facile da ottenere; per maggiori informazioni consultate la pagina web ”…””}”(hjóh²hh³Nh“Nubjn)”}”(hŒhttps://kernel.org/faq/”h]”hŒhttps://kernel.org/faq/”…””}”(hjūh²hh³Nh“Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”jżuh1jmhjóubhŒ.”…””}”(hjóh²hh³Nh“Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1h»h³jh“K;hjĢh²hubh¼)”}”(hXųIn git ĆØ normale avere a che fare con tanti rami. Ogni linea di sviluppo può essere separata in "rami per argomenti" e gestiti indipendentemente. In git i rami sono facilissimi, per cui non c'ĆØ motivo per non usarli in libertĆ . In ogni caso, non dovreste sviluppare su alcun ramo dal quale altri potrebbero attingere. I rami disponibili pubblicamente dovrebbero essere creati con attenzione; integrate patch dai rami di sviluppo solo quando sono complete e pronte ad essere consegnate - non prima.”h]”hXžIn git ĆØ normale avere a che fare con tanti rami. Ogni linea di sviluppo può essere separata in ā€œrami per argomentiā€ e gestiti indipendentemente. In git i rami sono facilissimi, per cui non c’è motivo per non usarli in libertĆ . In ogni caso, non dovreste sviluppare su alcun ramo dal quale altri potrebbero attingere. I rami disponibili pubblicamente dovrebbero essere creati con attenzione; integrate patch dai rami di sviluppo solo quando sono complete e pronte ad essere consegnate - non prima.”…””}”(hjh²hh³Nh“Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h»h³jh“KDhjĢh²hubh¼)”}”(hXGit offre alcuni strumenti che vi permettono di riscrivere la storia del vostro sviluppo. Una modifica errata (diciamo, una che rompe la bisezione, oppure che ha un qualche tipo di baco evidente) può essere corretta sul posto o fatta sparire completamente dalla storia. Una serie di patch può essere riscritta come se fosse stata scritta in cima al ramo principale di oggi, anche se ci avete lavorato per mesi. Le modifiche possono essere spostate in modo trasparente da un ramo ad un altro. E cosƬ via. Un uso giudizioso di git per revisionare la storia può aiutare nella creazione di una serie di patch pulite e con meno problemi.”h]”hXGit offre alcuni strumenti che vi permettono di riscrivere la storia del vostro sviluppo. Una modifica errata (diciamo, una che rompe la bisezione, oppure che ha un qualche tipo di baco evidente) può essere corretta sul posto o fatta sparire completamente dalla storia. Una serie di patch può essere riscritta come se fosse stata scritta in cima al ramo principale di oggi, anche se ci avete lavorato per mesi. Le modifiche possono essere spostate in modo trasparente da un ramo ad un altro. E cosƬ via. Un uso giudizioso di git per revisionare la storia può aiutare nella creazione di una serie di patch pulite e con meno problemi.”…””}”(hj"h²hh³Nh“Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h»h³jh“KLhjĢh²hubh¼)”}”(hXĮUn uso eccessivo può portare ad altri tipi di problemi, tuttavia, oltre alla semplice ossessione per la creazione di una storia del progetto che sia perfetta. Riscrivere la storia riscriverĆ  le patch contenute in quella storia, trasformando un kernel verificato (si spera) in uno da verificare. Ma, oltre a questo, gli sviluppatori non possono collaborare se non condividono la stessa vista sulla storia del progetto; se riscrivete la storia dalla quale altri sviluppatori hanno attinto per i loro repositori, renderete la loro vita molto più difficile. Quindi tenete conto di questa semplice regola generale: la storia che avete esposto ad altri, generalmente, dovrebbe essere vista come immutabile.”h]”hXĮUn uso eccessivo può portare ad altri tipi di problemi, tuttavia, oltre alla semplice ossessione per la creazione di una storia del progetto che sia perfetta. Riscrivere la storia riscriverĆ  le patch contenute in quella storia, trasformando un kernel verificato (si spera) in uno da verificare. Ma, oltre a questo, gli sviluppatori non possono collaborare se non condividono la stessa vista sulla storia del progetto; se riscrivete la storia dalla quale altri sviluppatori hanno attinto per i loro repositori, renderete la loro vita molto più difficile. Quindi tenete conto di questa semplice regola generale: la storia che avete esposto ad altri, generalmente, dovrebbe essere vista come immutabile.”…””}”(hj0h²hh³Nh“Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h»h³jh“KVhjĢh²hubh¼)”}”(hXMDunque, una volta che il vostro insieme di patch ĆØ stato reso disponibile pubblicamente non dovrebbe essere più sovrascritto. Git tenterĆ  di imporre questa regola, e si rifiuterĆ  di pubblicare nuove patch che non risultino essere dirette discendenti di quelle pubblicate in precedenza (in altre parole, patch che non condividono la stessa storia). ƈ possibile ignorare questo controllo, e ci saranno momenti in cui sarĆ  davvero necessario riscrivere un ramo giĆ  pubblicato. Un esempio ĆØ linux-next dove le patch vengono spostate da un ramo all'altro al fine di evitare conflitti. Ma questo tipo d'azione dovrebbe essere un'eccezione. Questo ĆØ uno dei motivi per cui lo sviluppo dovrebbe avvenire in rami privati (che possono essere sovrascritti quando lo si ritiene necessario) e reso pubblico solo quando ĆØ in uno stato avanzato.”h]”hXSDunque, una volta che il vostro insieme di patch ĆØ stato reso disponibile pubblicamente non dovrebbe essere più sovrascritto. Git tenterĆ  di imporre questa regola, e si rifiuterĆ  di pubblicare nuove patch che non risultino essere dirette discendenti di quelle pubblicate in precedenza (in altre parole, patch che non condividono la stessa storia). ƈ possibile ignorare questo controllo, e ci saranno momenti in cui sarĆ  davvero necessario riscrivere un ramo giĆ  pubblicato. Un esempio ĆØ linux-next dove le patch vengono spostate da un ramo all’altro al fine di evitare conflitti. Ma questo tipo d’azione dovrebbe essere un’eccezione. Questo ĆØ uno dei motivi per cui lo sviluppo dovrebbe avvenire in rami privati (che possono essere sovrascritti quando lo si ritiene necessario) e reso pubblico solo quando ĆØ in uno stato avanzato.”…””}”(hj>h²hh³Nh“Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h»h³jh“KahjĢh²hubh¼)”}”(hX½Man mano che il ramo principale (o altri rami su cui avete basato le modifiche) avanza, diventa allettante l'idea di integrare tutte le patch per rimanere sempre aggiornati. Per un ramo privato, il *rebase* può essere un modo semplice per rimanere aggiornati, ma questa non ĆØ un'opzione nel momento in cui il vostro ramo ĆØ stato esposto al mondo intero. *Merge* occasionali possono essere considerati di buon senso, ma quando diventano troppo frequenti confondono inutilmente la storia. La tecnica suggerita in questi casi ĆØ quella di fare *merge* raramente, e più in generale solo nei momenti di rilascio (per esempio gli -rc del ramo principale). Se siete nervosi circa alcune patch in particolare, potete sempre fare dei *merge* di test in un ramo privato. In queste situazioni git "rerere" può essere utile; questo strumento si ricorda come i conflitti di *merge* furono risolti in passato cosicchĆ© non dovrete fare lo stesso lavoro due volte.”h]”(hŒÉMan mano che il ramo principale (o altri rami su cui avete basato le modifiche) avanza, diventa allettante l’idea di integrare tutte le patch per rimanere sempre aggiornati. Per un ramo privato, il ”…””}”(hjLh²hh³Nh“Nubj`)”}”(hŒ*rebase*”h]”hŒrebase”…””}”(hjTh²hh³Nh“Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hjLubhŒ™ può essere un modo semplice per rimanere aggiornati, ma questa non ĆØ un’opzione nel momento in cui il vostro ramo ĆØ stato esposto al mondo intero. ”…””}”(hjLh²hh³Nh“Nubj`)”}”(hŒ*Merge*”h]”hŒMerge”…””}”(hjfh²hh³Nh“Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hjLubhŒµ occasionali possono essere considerati di buon senso, ma quando diventano troppo frequenti confondono inutilmente la storia. La tecnica suggerita in questi casi ĆØ quella di fare ”…””}”(hjLh²hh³Nh“Nubj`)”}”(hŒ*merge*”h]”hŒmerge”…””}”(hjxh²hh³Nh“Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hjLubhŒ² raramente, e più in generale solo nei momenti di rilascio (per esempio gli -rc del ramo principale). Se siete nervosi circa alcune patch in particolare, potete sempre fare dei ”…””}”(hjLh²hh³Nh“Nubj`)”}”(hŒ*merge*”h]”hŒmerge”…””}”(hjŠh²hh³Nh“Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hjLubhŒ‡ di test in un ramo privato. In queste situazioni git ā€œrerereā€ può essere utile; questo strumento si ricorda come i conflitti di ”…””}”(hjLh²hh³Nh“Nubj`)”}”(hŒ*merge*”h]”hŒmerge”…””}”(hjœh²hh³Nh“Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hjLubhŒQ furono risolti in passato cosicchĆ© non dovrete fare lo stesso lavoro due volte.”…””}”(hjLh²hh³Nh“Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1h»h³jh“KnhjĢh²hubh¼)”}”(hX$Una delle lamentele più grosse e ricorrenti sull'uso di strumenti come git ĆØ il grande movimento di patch da un repositorio all'altro che rende facile l'integrazione nel ramo principale di modifiche mediocri, il tutto sotto il naso dei revisori. Gli sviluppatori del kernel tendono ad essere scontenti quando vedono succedere queste cose; preparare un ramo git con patch che non hanno ricevuto alcuna revisione o completamente avulse, potrebbe influire sulla vostra capacita di proporre, in futuro, l'integrazione dei vostri rami. Citando Linus”h]”hX,Una delle lamentele più grosse e ricorrenti sull’uso di strumenti come git ĆØ il grande movimento di patch da un repositorio all’altro che rende facile l’integrazione nel ramo principale di modifiche mediocri, il tutto sotto il naso dei revisori. Gli sviluppatori del kernel tendono ad essere scontenti quando vedono succedere queste cose; preparare un ramo git con patch che non hanno ricevuto alcuna revisione o completamente avulse, potrebbe influire sulla vostra capacita di proporre, in futuro, l’integrazione dei vostri rami. Citando Linus”…””}”(hj“h²hh³Nh“Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h»h³jh“K|hjĢh²hubhŒ literal_block”“”)”}”(hŒäPotete inviarmi le vostre patch, ma per far si che io integri una vostra modifica da git, devo sapere che voi sappiate cosa state facendo, e ho bisogno di fidarmi *senza* dover passare tutte le modifiche manualmente una per una.”h]”hŒäPotete inviarmi le vostre patch, ma per far si che io integri una vostra modifica da git, devo sapere che voi sappiate cosa state facendo, e ho bisogno di fidarmi *senza* dover passare tutte le modifiche manualmente una per una.”…””}”hjÄsbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1jĀh³jh“K‡hjĢh²hubh¼)”}”(hŒ#(https://lwn.net/Articles/224135/).”h]”(hŒ(”…””}”(hjŌh²hh³Nh“Nubjn)”}”(hŒ https://lwn.net/Articles/224135/”h]”hŒ https://lwn.net/Articles/224135/”…””}”(hjÜh²hh³Nh“Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”jŽuh1jmhjŌubhŒ).”…””}”(hjŌh²hh³Nh“Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1h»h³jh“KŒhjĢh²hubh¼)”}”(hXPer evitare queste situazioni, assicuratevi che tutte le patch in un ramo siano strettamente correlate al tema delle modifiche; un ramo "driver fixes" non dovrebbe fare modifiche al codice principale per la gestione della memoria. E, più importante ancora, non usate un repositorio git per tentare di evitare il processo di revisione. Pubblicate un sommario di quello che il vostro ramo contiene sulle liste di discussione più opportune, e , quando sarĆ  il momento, richiedete che il vostro ramo venga integrato in linux-next.”h]”hXPer evitare queste situazioni, assicuratevi che tutte le patch in un ramo siano strettamente correlate al tema delle modifiche; un ramo ā€œdriver fixesā€ non dovrebbe fare modifiche al codice principale per la gestione della memoria. E, più importante ancora, non usate un repositorio git per tentare di evitare il processo di revisione. Pubblicate un sommario di quello che il vostro ramo contiene sulle liste di discussione più opportune, e , quando sarĆ  il momento, richiedete che il vostro ramo venga integrato in linux-next.”…””}”(hjõh²hh³Nh“Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h»h³jh“KŽhjĢh²hubh¼)”}”(hXUSe e quando altri inizieranno ad inviarvi patch per essere incluse nel vostro repositorio, non dovete dimenticare di revisionarle. Inoltre assicuratevi di mantenerne le informazioni di paternitĆ ; al riguardo git "am" fa del suo meglio, ma potreste dover aggiungere una riga "From:" alla patch nel caso in cui sia arrivata per vie traverse.”h]”hX]Se e quando altri inizieranno ad inviarvi patch per essere incluse nel vostro repositorio, non dovete dimenticare di revisionarle. Inoltre assicuratevi di mantenerne le informazioni di paternitĆ ; al riguardo git ā€œamā€ fa del suo meglio, ma potreste dover aggiungere una riga ā€œFrom:ā€ alla patch nel caso in cui sia arrivata per vie traverse.”…””}”(hjh²hh³Nh“Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h»h³jh“K–hjĢh²hubh¼)”}”(hX’Quando richiedete l'integrazione, siate certi di fornire tutte le informazioni: dov'ĆØ il vostro repositorio, quale ramo integrare, e quali cambiamenti si otterranno dall'integrazione. Il comando git request-pull può essere d'aiuto; preparerĆ  una richiesta nel modo in cui gli altri sviluppatori se l'aspettano, e verificherĆ  che vi siate ricordati di pubblicare quelle patch su un server pubblico.”h]”hXœQuando richiedete l’integrazione, siate certi di fornire tutte le informazioni: dov’è il vostro repositorio, quale ramo integrare, e quali cambiamenti si otterranno dall’integrazione. Il comando git request-pull può essere d’aiuto; preparerĆ  una richiesta nel modo in cui gli altri sviluppatori se l’aspettano, e verificherĆ  che vi siate ricordati di pubblicare quelle patch su un server pubblico.”…””}”(hjh²hh³Nh“Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h»h³jh“KœhjĢh²hubjœ)”}”(hŒ*.. _development_advancedtopics_reviews_it:”h]”h}”(h]”h ]”h"]”h$]”h&]”j§Œ%development-advancedtopics-reviews-it”uh1j›h“K­hjĢh²hh³jubeh}”(h]”Œgestire-le-modifiche-con-git”ah ]”h"]”Œgestire le modifiche con git”ah$]”h&]”uh1j©hj«h²hh³jh“KubjŖ)”}”(hhh]”(jÆ)”}”(hŒRevisionare le patch”h]”hŒRevisionare le patch”…””}”(hj5h²hh³Nh“Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j®hj2h²hh³jh“K¦ubh¼)”}”(hXĖAlcuni lettori potrebbero avere obiezioni sulla presenza di questa sezione negli "argomenti avanzati" sulla base che anche gli sviluppatori principianti dovrebbero revisionare le patch. Ɖ certamente vero che non c'ĆØ modo migliore di imparare come programmare per il kernel che guardare il codice pubblicato dagli altri. In aggiunta, i revisori sono sempre troppo pochi; guardando il codice potete apportare un significativo contributo all'intero processo.”h]”hXÓAlcuni lettori potrebbero avere obiezioni sulla presenza di questa sezione negli ā€œargomenti avanzatiā€ sulla base che anche gli sviluppatori principianti dovrebbero revisionare le patch. Ɖ certamente vero che non c’è modo migliore di imparare come programmare per il kernel che guardare il codice pubblicato dagli altri. In aggiunta, i revisori sono sempre troppo pochi; guardando il codice potete apportare un significativo contributo all’intero processo.”…””}”(hjCh²hh³Nh“Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h»h³jh“KØhj2h²hubh¼)”}”(hX'Revisionare il codice potrebbe risultare intimidatorio, specialmente per i nuovi arrivati che potrebbero sentirsi un po' nervosi nel questionare il codice - in pubblico - pubblicato da sviluppatori più esperti. Perfino il codice scritto dagli sviluppatori più esperti può essere migliorato. Forse il suggerimento migliore per i revisori (tutti) ĆØ questo: formulate i commenti come domande e non come critiche. Chiedere "Come viene rilasciato il *lock* in questo percorso?" funziona sempre molto meglio che "qui la sincronizzazione ĆØ sbagliata".”h]”(hXĒRevisionare il codice potrebbe risultare intimidatorio, specialmente per i nuovi arrivati che potrebbero sentirsi un po’ nervosi nel questionare il codice - in pubblico - pubblicato da sviluppatori più esperti. Perfino il codice scritto dagli sviluppatori più esperti può essere migliorato. Forse il suggerimento migliore per i revisori (tutti) ĆØ questo: formulate i commenti come domande e non come critiche. Chiedere ā€œCome viene rilasciato il ”…””}”(hjQh²hh³Nh“Nubj`)”}”(hŒ*lock*”h]”hŒlock”…””}”(hjYh²hh³Nh“Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hjQubhŒd in questo percorso?ā€ funziona sempre molto meglio che ā€œqui la sincronizzazione ĆØ sbagliataā€.”…””}”(hjQh²hh³Nh“Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1h»h³jh“K°hj2h²hubh¼)”}”(hX•In caso di disaccordi, può essere utile chiedere una terza opinione. Se dopo pochi scambi la discussione raggiunge un punto morto, allora chiedete ai manutentori o altri revisori di partecipare esprimendo la loro opinione. Spesso vige un silenzio assenso per cui gli altri revisori non intervengono se non gli viene richiesto esplicitamente. L'opinione di più persone avrĆ  sicuramente un peso maggiore.”h]”hX—In caso di disaccordi, può essere utile chiedere una terza opinione. Se dopo pochi scambi la discussione raggiunge un punto morto, allora chiedete ai manutentori o altri revisori di partecipare esprimendo la loro opinione. Spesso vige un silenzio assenso per cui gli altri revisori non intervengono se non gli viene richiesto esplicitamente. L’opinione di più persone avrĆ  sicuramente un peso maggiore.”…””}”(hjqh²hh³Nh“Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h»h³jh“K¹hj2h²hubh¼)”}”(hX˜Diversi sviluppatori revisioneranno il codice con diversi punti di vista. Alcuni potrebbero concentrarsi principalmente sullo stile del codice e se alcune linee hanno degli spazio bianchi di troppo. Altri si chiederanno se accettare una modifica interamente ĆØ una cosa positiva per il kernel o no. E altri ancora si focalizzeranno sui problemi di sincronizzazione, l'uso eccessivo di *stack*, problemi di sicurezza, duplicazione del codice in altri contesti, documentazione, effetti negativi sulle prestazioni, cambi all'ABI dello spazio utente, eccetera. Qualunque tipo di revisione ĆØ ben accetta e di valore, se porta ad avere un codice migliore nel kernel.”h]”(hX…Diversi sviluppatori revisioneranno il codice con diversi punti di vista. Alcuni potrebbero concentrarsi principalmente sullo stile del codice e se alcune linee hanno degli spazio bianchi di troppo. Altri si chiederanno se accettare una modifica interamente ĆØ una cosa positiva per il kernel o no. E altri ancora si focalizzeranno sui problemi di sincronizzazione, l’uso eccessivo di ”…””}”(hjh²hh³Nh“Nubj`)”}”(hŒ*stack*”h]”hŒstack”…””}”(hj‡h²hh³Nh“Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hjubhX, problemi di sicurezza, duplicazione del codice in altri contesti, documentazione, effetti negativi sulle prestazioni, cambi all’ABI dello spazio utente, eccetera. Qualunque tipo di revisione ĆØ ben accetta e di valore, se porta ad avere un codice migliore nel kernel.”…””}”(hjh²hh³Nh“Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1h»h³jh“KĄhj2h²hubh¼)”}”(hX„Non esistono requisiti particolarmente stringenti per l'uso di etichette come ``Reviewed-by``. Tuttavia, perchĆ© la revisione sia efficace ci si aspetta un qualche tipo di messaggio che dica "ho verificato A, B e C nel codice che ĆØ appena stato inviato e mi sembra tutto in ordine". Inoltre, questo permette ai manutentori di prendere conoscenza circa una revisione avvenuta per davvero.”h]”(hŒPNon esistono requisiti particolarmente stringenti per l’uso di etichette come ”…””}”(hjŸh²hh³Nh“NubjL)”}”(hŒ``Reviewed-by``”h]”hŒ Reviewed-by”…””}”(hj§h²hh³Nh“Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jKhjŸubhX+. Tuttavia, perchĆ© la revisione sia efficace ci si aspetta un qualche tipo di messaggio che dica ā€œho verificato A, B e C nel codice che ĆØ appena stato inviato e mi sembra tutto in ordineā€. Inoltre, questo permette ai manutentori di prendere conoscenza circa una revisione avvenuta per davvero.”…””}”(hjŸh²hh³Nh“Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1h»h³jh“KŹhj2h²hubh¼)”}”(hŒŃPer finire, la revisione delle patch può diventare un processo negativo, troppo focalizzato sulla ricerca dei problemi. Provate a fare qualche complimento di tanto in tanto, specialmente con i nuovi arrivati.”h]”hŒŃPer finire, la revisione delle patch può diventare un processo negativo, troppo focalizzato sulla ricerca dei problemi. Provate a fare qualche complimento di tanto in tanto, specialmente con i nuovi arrivati.”…””}”(hjæh²hh³Nh“Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h»h³jh“KŠhj2h²hubeh}”(h]”(Œrevisionare-le-patch”j)eh ]”h"]”(Œrevisionare le patch”Œ%development_advancedtopics_reviews_it”eh$]”h&]”uh1j©hj«h²hh³jh“K¦Œexpect_referenced_by_name”}”jÓjsŒexpect_referenced_by_id”}”j)jsubeh}”(h]”(Œargomenti-avanzati”jØeh ]”h"]”(Œargomenti avanzati”Œit_development_advancedtopics”eh$]”h&]”uh1j©hhh²hh³jh“K jÖ}”jąjsjŲ}”jØjsubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”juh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)”}”(j®NŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”Œentry”Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”jŒerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”jŒ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”(jØ]”jaj)]”jauŒnameids”}”(jąjØjßjÜj/j,jÓj)jŅjĻuŒ nametypes”}”(jąˆj߉j/‰jÓˆj҉uh}”(jØj«jÜj«j,jĢj)j2jĻj2uŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”Œtransform_messages”]”(hŒsystem_message”“”)”}”(hhh]”h¼)”}”(hhh]”hŒCHyperlink target "it-development-advancedtopics" is not referenced.”…””}”hjssbah}”(h]”h ]”h"]”h$]”h&]”uh1h»hjpubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”ŒINFO”Œsource”jŒline”Kuh1jnubjo)”}”(hhh]”h¼)”}”(hhh]”hŒKHyperlink target "development-advancedtopics-reviews-it" is not referenced.”…””}”hjŽsbah}”(h]”h ]”h"]”h$]”h&]”uh1h»hj‹ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”jˆŒsource”jŒline”K­uh1jnubeŒ transformer”NŒ include_log”]”Œ=Documentation/translations/it_IT/process/7.AdvancedTopics.rst”(NNNNt”†”aŒ decoration”Nh²hub.