Com gestionar l’escriptura d’una tesi doctoral amb un sistema de control de versions
2008.04.27 escrit per Pere Quintana Seguí
Context general
Ja sóc a la recta final del meu doctorat, això vol dir que he de començar a elaborar el propi text del manuscrit que defensaré per a doctorar-me. Després d’haver escrit dos articles científics, he arribat a la conclusió que, per a gestionar aquest projecte, em convé utilitzar un sistema de control de versions, per així mantenir un historial de l’evolució del text i estar segur de que no perdo res per una mala manipulació del codi. Fins i tot, si els meus directors de tesi (en tinc dos) s’animen, podriem emprar el sistema per a introduir correccions al text. Fins ara, mai no havia emprat un d’aquests sistemes, així que és el moment d’aprendre’n.
El meu context és el següent:
- Escriuré el manuscrit mitjançant almenys dos ordinadors: el del laboratori i el meu portàtil personal.
- Escriuré el document amb LaTeX i les figures seran en format eps (Encapsulated Postscript).
He decidit emprar Bazaar com a sistema de control de versions. Després d’haver llegit introduccions a Git, Subversion i Bazaar, aquest m’ha semblat el més adequat, m’ha semblat senzill i comprensible. Però segur que qualsevol altre sistema també va bé.
El model que he decidit adoptar, és el següent. Tindré un repositori central on es desarà el codi. A cadascun dels dos ordinadors que empraré per a escriure la tesi, hi tindré una branca local i els canvis es sotmetran a l’ordinador central. És possible que un altre model també vagi bé, però aquest m’ha semblat prou clar i simple.
Configuració del servidor
Primer de tot he configurat el servidor on tindré la versió principal del projecte. Així he creat un subdomini al meu servidor (que, de fet, és un compte de dreamhost). En aquest subdomini hi desaré només projectes versionats amb Bazaar (bzr). Per a aquest subdomini, he creat un usuari diferent del que empro per als altres, ja que és possible que terceres persones (els meus directors) treballin sobre el text.
Seguint les instruccions de la wiki de dreamhost he protegit tot el domini sota password amb .htaccess. Així només les persones autorizades podran accedir al meu projecte.
Creació del projecte amb Bazaar
Un cop configurat el servidor, he creat el projecte al meu portàtil. Simplement, he creat una carpeta on hi he creat l’estructura de documents que necessitaré per a escriure el text (un document .tex per a capítol, un índex, directoris per a les figures, …). Llavors, he llançat la comanda
bzr init
i
bzr add .
D’aquesta manera, tots els documents han estat afegits al control de versions.
LaTeX, per a crear el pdf final, crea molts documents intermediaris. És del tot innecessari controlar l’evolució d’aquests documents, així que els he ignorat mitjançant la comanda
bzr ignore ...
(s’han de substituir els tres punts pel nom dels fitxers a ignorar). Després, s’ha d’afegir .bzrignore al control de versions per tal que s’ignorin els mateixos fitxers a tots els ordinadors que empri per editar el meu projecte.
bzr add .bzignore
Finalment, un cop tot configurat he pujat el projecte al servidor
bzr push --create-prefix sftp://usuari@bzr.elmeudomini.com/~/directori/tesi
LLavors, seguint aquestes recomanacions (using checkouts) he lligat el projecte del servidor central al meu projecte local
bzr bind sftp://usuari@bzr.elmeudomini.com/~/directori/tesi
així, a partir d’ara, cada cop que digui a bzr que desi una versió del projecte
bzr commit -m "Descripció de la versió"
aquesta es desarà al servidor central. A no ser que faci
bzr commit --local
Això ho hauré de fer quan, per exemple, sigui de viatge i no tingui connexió al servidor.
El següent pas (atenció! encara no ho he fet) és crear una altra còpia del projecte a l’ordinador del laboratori. Això es fa així:
bzr checkout sftp://usuari@bzr.elmeudomini.com/~/directori/tesi
Així podré treballar amb ambdues màquines.
Actualització: No tinc permisos de super-usuari a l’ordinador del laboratori. Així, vaig instal·lar bzr manualment (des del codi font) en el meu compte d’usuari. Quan he anat a llançar la comanda, he vist que no havia instal·lat paramiko, que és necessari per a fer ftp. Per a solucionar-ho, he decidit fer-ho per la via ràpida, és a dir, per ftp enlloc de sftp (no és greu, la meva tesi no és un treball altament secret). Per fer-ho via ftp es fa així:
bzr checkhout ftp://usuari:contrassenya@bzr.elmeudomini.com//directori/tesi
El que no he d’oblidar, és fer un
bzr update
cada cop que canvio d’ordinador, per així baixar-me la darrera versió del projecte.
Conclusions
De moment és d’hora per a conclusions, ja que, com aquell que diu, encara no he començat. De totes maneres, em sembla que he trobat una bona manera de controlar les versions del projecte i garantir que, si treballo uns dies per un camí equivocat, pugui tornar enrere sense patiments, al mateix temps que mantic el projecte sincronitzat en dos ordinadors. Si l’experiència és positiva, empraré Bazaar per a gestionar altres projectes meus, per exemple, la meva pàgina personal (http://pere.quintanasegui.com), així sempre tindré un historial dels canvis i podré experimentar lliurement, sabent que sempre puc tornar enrere.
Un petit avís, com ja us he dit, aquest és el primer cop que empro un program de gestió de versions. Pot ser he comès errors o no he triat la millor estratègia. Si trobeu que m’he equivocat, corregiu-me, per favor. Durant els propers dies, posaré a prova aquesta estratègia, així que, a mesura que vagi veient com funciona, aniré corregint aquest document.
2008.04.27 a les 10:56 pm
Vaya, yo voy a comenzar a escribir ahora también (los capítulos más sencillos, experimental + artículos publicados) y no me planteaba usar control de versiones, sólo el sistema que usé siempre (cada día ctrl-c + ctrl-v + %FECHA-nombre-de-fichero).
Pero si decido complicarme (aunque a largo plazo suena precisamente a lo contrario) la vida seguiré este mini-tutorial.
2008.04.28 a les 12:32 am
Bona pensada Pere.
Jo estic començant a emprar subversion per als primers articles i la veritat és que és una bona eina. M’ha agradat el tema d’habilitar un subdomini en el teu propi servidor, i guardar còpies de seguretat al servidor del laboratori. Ho veig molt més útil.
2008.04.28 a les 1:11 am
Versvs, el control de versiones no es esencial para una tesis, pero creo que vale la pena aprender a usar bien este tipo de programas y esta es una buena oportunidad.
Joan, quina sort que tens que al teu laboratori s’empra control de versions. Aquí no s’empra per a res, és un “catxondeo”. Per no tenir, no tenim ni el codi del model sota control de versions. Bé, per als models “importants”, sí que en tenen. Però la cultura no està prou estesa.