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:

  1. Escriuré el manuscrit mitjançant almenys dos ordinadors: el del laboratori i el meu portàtil personal.
  2. 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.

Arxivat a maxiposts, etiquetat com
| 3 Comentaris »

Aquest és un bloc lliure. Llevat d'indicació o advertència en sentit contrari, l'autor de les entrades d'aquest bloc es Pere Quintana Seguí, el qual les escriu i en fa devolució expressa al Domini Públic.