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 Mettere in piedi Git per i passi minimi necessari per fare sviluppo in Sage.

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

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]
| |\
| |/

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

Foglietti di riassunto (Cheat Sheets)

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: