Signar el blog

2009/04/26 Desactiva els comentaris

Un avantatge interessant de publicar un blog amb un gestor de versions (com bazaar o git) i un programa tipus jekyll, és que et permet, de manera molt senzilla, signar digitalment el que has escrit. Així, els teus lectors poden estar segurs del que el qui escriu el blog est tu mateix.

Publicar una web amb Bazaar

2009/04/22 Desactiva els comentaris

Bazaar és un sistema distribuït de control de versions. Ja us vaig explicar como utilitzar-lo per a gestionar l’escriptura d’una tesi doctoral.

Ara, ja fa temps que ho hauria d’haver fet, he començat a versionar la meva web personal (no el blog), la qual està escrita directament en html.

Primer he copiat la web del servidor al meu ordinador (he emprat rsync per conservar les dates dels fitxers) a una carpeta local:
rsync -avz -e ssh usuari@servidor:/la/carpeta/delaweb ./local/.

Llavors hi he activat Bazaar:
bzr init
bzr add .
bzr commit -m "versió inicial"

Després he pujat la meta-informació dels fitxers versionats a una carpeta del servidor que no és accessible des d’internet. Així, els lectors no veuen les versions, però jo puc accedir a tot l’historial des de qualsevol ordinador.
bzr push --create-prefix sftp://usuari@servidor/la/carpeta/bzr/delaweb
Aquest directori que no accessible des de fora, es diu bzr. Si no veieu cap fitxer al servidor, no us preocupeu, Bazaar desa la informació dins una carpeta amagada (.bzr). Aquesta carpeta conté tota la informació necessària per recuperar qualsevol versió de qualsevol dels fitxers.

Finalment, he lligat la meva versió local a la versió remota:
bzr bind sftp://usuari@servidor/la/carpeta/bzr/delaweb

Així els canvis (bzr commit) es desaran al servidor, a no ser que els desi en local emprant bzr commit --local (quan sigui, per exemple, en un avió o un tren).

Per editar els fitxers des d’un altre ordinador, només caldrà crear un nou checkout, és a dir, una nova còpia de l’historial de versions lligada amb la del servidor:
bzr checkout sftp://usuari@servidor/la/carpeta/bzr/delaweb.

Fins ara tot és una típica utilització de Bazaar.

De moment, encara no hem publicat res que sigui accessible. El que volem fer és, amb una simple comanda, publicar els fitxers que han estat modificats en una carpeta del servidor, la qual serà accessible des de l’exterior, però, en aquesta carpeta, no hi volem desar tot l’historial de versions. Per fermaixò, emprarem el plugin bzr-upload, tal com s’explica aquí.

La instal·lació del plugin és molt fàcil. Emprarem el propi bazaar per baixar-ne la darrera versió. Primer, si no el tenim, crearem el directori on Bazaar cerca els plugins:
mkdir ~/.bazaar/plugins.
Llavors, baixarem el codi, directament des de launchpad:
bzr checkout lp:bzr-upload ~/.bazaar/plugins/upload.
Així de simple.

Un cop fet això, anirem al directori on tenim nostre checkout de la web i el pujarem al servidor:
bzr upload sftp://usuari@servidor/la/carpeta/delaweb
Atenció, aquesta carpeta ha de ser diferent de la carpeta on desem les versions! El primer cop, es pujaran tots els fitxers. Més endavant, només es pujaran els fitxers modificats.

A partir d’ara, modificaré els fitxers en local i en desaré les versions amb la comanda bzr commit. Quan cregui que els canvis són dignes de ser vistos pel públic, empraré la comanda bzr upload.

Amb això, tindré versions sincronitzades de la web al servidor i en diversos ordinadors i, al mateix temps, tindré totes les versions desades. Millor, impossible.

Com gestionar l'escriptura d'una tesi doctoral amb un sistema de control de versions

2008/04/27 § 4 comentaris

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 (actualització 2009-04-22: després de treballar en local, s’ha de fer un push per tal de pujar els canvis 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.

On sóc?

You are currently browsing entries tagged with bazaar at Bitsenbloc.

Follow

Get every new post delivered to your Inbox.