Setup

All’indirizzo https://hg.thux.dev è installato un server Heptapod, ovvero un clone di gitlab per repository mercurial.

Heptapod utilizza l’ultima versione di mercurial che permette un workflow particolarmente interessante basato sui topic. La possibilià di revisione del codice e di collaborazione che ne deriva è particolarmente interessante.

Account sul server

È necessario che ognuno abbia un account sul server e che abbia installato la chiave ssh di accesso. Proseguite quando avete accesso al server.

Installazione locale

È opportuno che ci allineiamo tutti all’ultima versione mercurial in modo da avere a disposizione le ultime feature, in particolare:

  • histedit (>=2.3)

  • absorbe (>=4.8)

  • topics/evolve (>=5.2)

Per farlo suggerisco una modalità che dovrebbe portarvi ad avere hg e tortoise installati ma per questo non possiamo usare apt-get in quanto i pacchetti non sono ancora diposnibili.

mercurial

Consiglio di fare tutta l’operazione come root:

sudo -s
cd /usr/local/share
virtualenv -p /usr/bin/python2.7 hg
cd hg
. bin/activate
pip install Mercurial hg-evolve hg-git
cd /usr/bin
mv hg hg.orig
ln -s /usr/local/share/hg/bin/hg

Possiamo uscire da root e verificare che hg è alla versione corretta:

$ hg --version
Mercurial SCM Distribuito (versione 5.3)
...

configurazione personale

Nota che hg-git non è strettamente necessario.

Ora configuriamo hg per leggere una configurazione che:

  • abiliti i nuovi plugin

  • ci permetta di avere un output più utile

Mercurial legge sia il file ~/.hgrc che il file ~/.config/hg/hgrc, sfrutto questa caratteristica per mettere una configurazione condivisa su .config/hg e quella personale (username ed eventuali personalizzazioni, ad esempio alias) in ~/.hgrc:

cd ~/.config
hg clone ssh://git@hg.thux.dev/tools/conf/hg-conf hg

tortoisehg

Per l’installazione di tortoisehg è necessario usare la versione sorgente e pretendere che sia controllata anche per hg 5.3 (mentre è garantita solo fino alla 5.0). Anche qui suggerisco di operare come root:

cd /usr/local/share/
wget https://bitbucket.org/tortoisehg/targz/downloads/tortoisehg-5.0.2.tar.gz
tar xzf tortoisehg-5.0.2.tar.gz
ln -s tortoisehg-5.0.2 tortoisehg
cd tortoisehg
rsync -a /usr/lib/python2.7/dist-packages/si* /usr/local/share/hg/lib/python2.7/site-packages
rsync -a /usr/lib/python2.7/dist-packages/PyQt5 /usr/local/share/hg/lib/python2.7/site-packages
cat <<- EOF > thg.sh
#!/bin/sh

. /usr/local/share/hg/bin/activate
/usr/local/share/tortoisehg/thg
EOF
chmod +x thg.sh
sed -i 's/4.9 5.0/4.9 5.0 5.3/' tortoisehg/util/hgversion.py
cd /usr/bin
mv thg thg.orig
ln -s /usr/local/share/tortoisehg/thg.sh thg

A questo punto dovreste avere una versione 5.0.2 to tortoisehg. Quella vecchia dovrebbe essere disponibile come thg.orig