Appunti su Mercurial e OS X

23 gennaio 2015

Questa settimana ho finalmente trovato il tempo per sistemare alcuni piccoli problemi nel mio flusso di lavoro – in inglese verrebbero definiti paper cuts, taglietti piccoli ma fastidiosi.

Tralasciando il consiglio di installare le versioni più aggiornate di software come Git e Mercurial (personalmente preferisco installer nativi a MacPort o Homebrew), approfitto di questo post per alcuni appunti su editor di testo e Mercurial in ambiente OS X.

Editor di testo

Il mio editor di testo principale è Sublime Text 2 (ST2). Ho installato anche TextMate 2 e Atom (provato solo superficialmente finora), ma il 90% del tempo utilizzo ST2. Non amo gli editor da terminale: non ho mai trovato il tempo e la voglia di imparare a usare vi, se proprio tocca (es. sessione remota su server) c’è nano.

Per avviare ST2 direttamente da terminale è sufficiente creare un link all’apposito comando sudo ln -s "/Applications/Sublime Text 2.app/Contents/SharedSupport/bin/subl" /bin/subl

TextMate permette di automatizzare questo processo dalle Preferenze, l’eseguibile si chiama mate.

L’aspetto fondamentale è che, con entrambi i comandi, è possibile aprire direttamente una cartella nell’editor, es. subl ~.

Questo è il mio file di configurazione di ST2 (confesso di non essere un grande utilizzatore di plugin):

{
	"color_scheme": "Packages/Color Scheme - Default/iPlastic.tmTheme",
	"detect_indentation": false,
	"font_size": 12.0,
	"hot_exit": false,
	"ignored_packages":
	[
		"Vintage"
	],
	"remember_open_files": false,
	"rulers":
	[
		80
	],
        "spell_check": false,
        "dictionary": "Packages/Language - Italian/it_IT.dic",
	"tab_size": 4,
	"translate_tabs_to_spaces": true,
	"trim_trailing_white_space_on_save": true
}

A differenza di TextMate, che utilizza il dizionario disponibile nel sistema, in ST2 il dizionario italiano va aggiunto manualmente. Fortunatamente il file .dic di Firefox/LibreOffice è compatibile.

Mercurial

Il primo consiglio è crearsi un file ~/.hgignore per escludere quella piaga dei file .DS_Store (anche se ho iniziato ad usare Asepsis da un po’ di tempo).

# use glob syntax.
syntax: glob

*.DS_Store

Estensioni consigliate:

  • color: utile sia per hg diff che hg status. Per controllare le modifiche di solito utilizzo hg diff|mate, dal momento che la visualizzazione dei diff è molto più chiara in TextMate.
  • extdiff: permette di utilizzare programmi esterni per il confronto in caso di merge. Al momento è impostato per usare KDiff3.
  • purge: è un vero salva-tempo, visto che hg up -C non rimuove i file attualmente non sotto controllo di versione.
  • transplant: permette di ‘trapiantare’ un changeset da un repository all’altro.

Veniamo alla scoperta di questa settimana: ho sempre utilizzato nano per i messaggi di commit, e non era esattamente comodo. La scoperta è che impostare Sublime Text come editor predefinito per Mercurial è davvero banale. In ~/.hgrc:

editor = /Applications/Sublime\ Text\ 2.app/Contents/SharedSupport/bin/subl --wait

In teoria dovrebbe funzionare anche editor = subl -w. Nel mio caso non c’è stato verso e non ho investito ulteriore tempo per scoprirne la causa.

L’altra scoperta della settimana è quanto sia veloce (e ben documentato) impostare BitBucket+Mercurial+SSH. Peccato non averci mai guardato prima per pigrizia.

Sempre a proposito di BitBucket: se siete allergici alla riga di comando, SourceTree è una buona alternativa.