.. _chapter-git-background: ========================== Suggerimenti e riferimenti ========================== Questo capitolo contiene materiale aggiuntivo sul sistema di controllo versione Git. Non ti serve se utilizzi gli script di sviluppo di Sage. Vedi :ref:`chapter-git-setup` per i passi minimi necessari per fare sviluppo in Sage. .. _section-git-configuration: Suggerimenti di configurazione ============================== La tua configurazione personale di Git \`e salvata nel file ``~/.gitconfig`` nella tua directory home. Eccone un esempio:: [user] name = Your Name email = you@yourdomain.example.com [core] editor = emacs Puoi modificare questo file direttamente o puoi usare Git per farlo:: [user@localhost ~] git config --global user.name "Your Name" [user@localhost ~] git config --global user.email you@yourdomain.example.com [user@localhost ~] git config --global core.editor vim Alias ----- Gli alias sono delle scorciatoie personali ai comandi di Git. Ad esempio potresti voler abbreviare ``git checkout`` a ``git co``, oppure ``git diff --color-words`` a ``git wdiff`` (questo comando formatta a colori il file delle differenze). Puoi farlo con:: [user@localhost ~] git config --global alias.ci "commit -a" [user@localhost ~] git config --global alias.co checkout [user@localhost ~] git config --global alias.st "status -a" [user@localhost ~] git config --global alias.stat "status -a" [user@localhost ~] git config --global alias.br branch [user@localhost ~] git config --global alias.wdiff "diff --color-words" I comandi suddetti creeranno una sezione ``alias`` nel tuo file ``.gitconfig`` contenente:: [alias] ci = commit -a co = checkout st = status -a stat = status -a br = branch wdiff = diff --color-words Editor ------ Per impostare l'editor da usare per scrivere i messaggi di commit usare:: [user@localhost ~] git config --global core.editor vim oppure imposta la variabile di ambiente ``EDITOR``. Merge ----- Per forzare dei riassunti quando effettui i merge, puoi scrivere in ``.gitconfig``:: [merge] log = true Oppure scrivere al prompt dei comandi:: [user@localhost ~] git config --global merge.log true .. _section-fancy-log: Output di log migliorato esteticamente -------------------------------------- Ecco un alias per avere un output migliorato esteticamente; va posto nella sezione ``alias`` del tuo file ``.gitconfig``:: lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)[%an]%Creset' --abbrev-commit --date=relative L'utilizzo di questo alias ``lg`` ti fornisce l'elenco dei cambiamenti (changelog) con un grafico ASCII colorato:: [user@localhost ~] git lg * 6d8e1ee - (HEAD, origin/my-fancy-feature, my-fancy-feature) NF - a fancy file (45 minutes ago) [Matthew Brett] * d304a73 - (origin/placeholder, placeholder) Merge pull request #48 from hhuuggoo/master (2 weeks ago) [Jonathan Terhorst] |\ | * 4aff2a8 - fixed bug 35, and added a test in test_bugfixes (2 weeks ago) [Hugo] |/ * a7ff2e5 - Added notes on discussion/proposal made during Data Array Summit. (2 weeks ago) [Corran Webster] * 68f6752 - Initial implimentation of AxisIndexer - uses 'index_by' which needs to be changed to a call on an Axes object - this is all very sketchy right now. (2 weeks ago) [Corr * 376adbd - Merge pull request #46 from terhorst/master (2 weeks ago) [Jonathan Terhorst] |\ | * b605216 - updated joshu example to current api (3 weeks ago) [Jonathan Terhorst] | * 2e991e8 - add testing for outer ufunc (3 weeks ago) [Jonathan Terhorst] | * 7beda5a - prevent axis from throwing an exception if testing equality with non-axis object (3 weeks ago) [Jonathan Terhorst] | * 65af65e - convert unit testing code to assertions (3 weeks ago) [Jonathan Terhorst] | * 956fbab - Merge remote-tracking branch 'upstream/master' (3 weeks ago) [Jonathan Terhorst] | |\ | |/ .. _section-git-tutorials: Compendi e tutorial =================== Ci sono moltissimi tutorial e riassunti dei comandi disponibili online. Principianti ------------ * `Prova Git `_ \`e un tutorial di base che puoi seguire sul browser. Se sei nuovo ai sistemi di controllo versione, fa attenzione alla sezione "Advice" verso il fondo. * `Git magic `_ \`e un'ampia introduzione mediamente dettagliata. * The `git parable `_ \`e facile da leggere e spiega i concetti dietro a git. * `Git foundation `_ espande il precedente `git parable`_. * Sebbene contenga materiale pi\`u avanzato sui rami e le testate separate e simili, i riassunti visuali sul merge ed i rami in `Learn Git Branching `_ possono essere veramente molto utili. Avanzati -------- * `Github help `_ ha una ottima serie di how-to. * Il libro `pro git book `_ \`e un buon libro di approfondimento su Git. * `Github Training `_ ha un'ottima serie di tutorial nonch\`e di video e screencast. * Il `git tutorial `_. * Su `Git ready `_ v'\`e una bella serie di tutorial. * La pagina Git di `Fernando Perez' `_ contiene molti link e suggerimenti. * Una pagina, buona ma tecnica, su `git concepts `_ * `Git svn crash course `_: git per chi \`e abituato a `subversion `_ Foglietti di riassunto (Cheat Sheets) ------------------------------------- * La pagina `git cheat sheet `_ d\`a un riassunto dei comandi pi\`u comuni. * Il `manuale utente di git `_. Linee guida Git =============== Vi sono molti modi di lavorare con Git; qui ci sono dei linka delle regole di buonsenso raccomandate da altri progetti: * Linus Torvalds spiega la `gestione di git `_ * Linus Torvalds spiega il `flusso di lavoro per linux su git `_. Riassunto: utilizza gli strumenti di Git per rendere la storia delle tue modifiche quanto piu\`u pulita possibile: effettua i merge dalle modifiche upstream meno che puoi in rami in cui stai sviluppando attivamente. Pagine di manuale online ======================== Puoi scaricare queste sulla tua macchina locale con (ad esempio) ``git help push`` oppure (equivalentemente) ``git push --help``, ma, per convenienza, ecco le pagine di manuale per alcuni comandi comuni: * `git add `_ * `git branch `_ * `git checkout `_ * `git clone `_ * `git commit `_ * `git config `_ * `git diff `_ * `git log `_ * `git pull `_ * `git push `_ * `git remote `_ * `git status `_