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 disponibili.

mercurial

Consiglio di fare tutta l’operazione come root:

sudo -s
apt install virtualenv
PY_VER=$(python3 -c "import sys; print(sys.version[0:3])")
cd /usr/local/share
rm -Rf hg
virtualenv --system-site-packages -p /usr/bin/python$PY_VER hg
cd hg
. bin/activate
pip install Mercurial==5.8.1 'hg-evolve>=10.3' 'hg-git>=0.10'
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.4)
...

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

Le versione di Python deve essere esplicitata in chiaro e deve essere la medesima di prima, possibilmente quella di default del sistema:

sudo -s
cd /usr/local/share/
PY_VER=$(python3 -c "import sys; print(sys.version[0:3])")
wget  https://www.mercurial-scm.org/release/tortoisehg/targz/tortoisehg-5.8.1.tar.gz
apt install python${PY_VER%.*}-pyqt5 python${PY_VER%.*}-pyqt5.qsci
tar xzf tortoisehg-5.8.1.tar.gz
rm -f tortoisehg
ln -sf tortoisehg-5.8.1 tortoisehg
cd tortoisehg
cat <<- EOF > thg.sh
#!/bin/sh

. /usr/local/share/hg/bin/activate
/usr/local/share/tortoisehg/thg
EOF
chmod +x thg.sh
cd /usr/bin
mv thg thg.orig
ln -sf /usr/local/share/tortoisehg/thg.sh thg

A questo punto dovreste avere una versione 5.8.1 to tortoisehg. Quella vecchia -se esisteva- dovrebbe essere disponibile come thg.orig