J'ai donc pour tester le bignou, pris le projet XviD depuis Janvier 2004 que j'ai maintenu dans mes archives arch (dispos sur mon site)
En gros j'ai fait, deux scripts de porc:
Le premier importe la base head de 2004:
#!/bin/sh
# ---- Initial import ----
baz get ed.gomez@free.fr--2004-1/xvidcore--head--0.0--base-0 xvidcore.baz
monotone --db=xvidcore.monotone db init
monotone --db=xvidcore.monotone genkey ed.gomez@free.fr
cd xvidcore.baz
monotone --db=../xvidcore.monotone setup .
baz inventory -s | xargs monotone --db=../xvidcore.monotone add
monotone --db=../xvidcore.monotone --branch=org.xvid.head commit --message="Initial import in monotone"
Le deuxieme permet de mettre a jour vers la revision suivante:
#!/bin/sh
REVISION=$1
baz replay ed.gomez@free.fr--2004-1/xvidcore--head--0.0--patch-${REVISION} | grep -v '{arch}' | grep -v '.arch-ids' | grep -v "^*" > replay.txt
ADDED_FILES=`grep ^A[^/] replay.txt |awk '{print $2}'`
MODIFIED_FILES=`grep ^M replay.txt |awk '{print $2}'`
DELETED_FILES=`grep ^D[^/] replay.txt |awk '{print $2}'`
RENAMED_FILES=`grep ^R replay.txt |awk '{print $2 ":" $4;}'`
for i in ${ADDED_FILES} ; do
monotone --db=../xvidcore.monotone add ${i}
echo "A ${i}"
done
for i in ${DELETED_FILES} ; do
monotone --db=../xvidcore.monotone drop ${i}
echo "D ${i}"
done
for i in ${RENAMED_FILES} ; do
ORG_FILE=`echo $i | cut -d ':' -f 1`
DST_FILE=`echo $i | cut -d ':' -f 2`
echo "R ${ORG_FILE} => ${DST_FILE}"
monotone --db=../xvidcore.monotone rename ${ORG_FILE} ${DST_FILE}
done
for i in ${MODIFIED_FILES} ; do
echo "M ${i}"
done
COMMIT_SUMMARY=` baz log -f -r patch-${REVISION}:patch-${REVISION} |grep ^Summary: | sed s,'^Summary:[[:space:]]*\(.*\)$','\1',`
COMMIT_LOG=`baz log -f -r patch-${REVISION}:patch-${REVISION} | awk 'BEGIN{start=0} /^$/ {start=1;} // { if (start != 0) print;}' | grep -v '==========='`
echo "Summary: ${COMMIT_SUMMARY}" > MT/log
echo >> MT/log
echo "${COMMIT_LOG}" >> MT/log
Puis je m'en suis servi comme ça:
# cd ~/tmp/
# mkdir monotone.test
# cd monotone.test
# import-base.sh
# cd xvidcore.baz
# for i in `seq 1 121` ; do commit-rev.sh ${i} ; monotone --db=../xvidcore.monotone commit ; done
# (edition de commit-rev.sh pour passer sur mon archive 2005)
# baz replay ed.gomez@free.fr--2005-1/xvidcore--head--0.0--base-0
# for i in `seq 1 8` ; do commit-rev.sh ${i} ; monotone --db=../xvidcore.monotone commit ; done
Avis de la transition:
- J'ai pas encore vérifié la cohérence des révisions, je ne sais pas si elles sont équivalentes à celles de arch. Mais les commits ne m'ont pas semblé longuets, donc pour un projet de la taille d'xvid, monotone est utilisable sans souci sur ce point la.
- En deux cuillères a pot, j'ai pu coder un script de migration arch>monotone qui conserve l'historique linéaire d'une branche avec tous les logs messages ! Pas mal, il faudrait cependant faire gaffe au type de changeset dans arch, s'il s'agit d'un merge, il faudrait idéalement importer la branche dont provient le merge avant de merger le patch, et utiliser monotone dans un contexte de merge histoire que l'arbre des révisions monotone ait la meme topologie que celui d'arch.
- J'ai mal aux doigts a force de taper le password de mon certificat monotone et de faire :wq pour valider le log pourtant ecrit dans MT/log...
En gros la 0.18 semble aussi sympa a utiliser que arch/baz, la prise en main est plus simple que celle d'un baz 1.3. Le seul point que je trouve dommage c'est le fait de ne pas pouvoir faire un mirror de sa DB locale sur un serveur tout bête HTTP ou FTP ou SFTP comme le fait arch, la on est obligé de lancer un serveur maison qui permet de synchroniser.
Ah bonne surprise, monotone est plutôt bon à représenter les révisions sous forme compacte, les 130 révisions pèsent 1.5MB pour monotone alors que pour arch sur une partoche ext3, ca pèse 3MB, avec certes une révision en cache pour la continuation 2004->2005.
Enfin voila, ma petite expérience avec monotone... au lieu de troller sur le thread BK, on pourrait donner ici ses expériences dans l'utilisation d'outils SCM décentralisés.
PS: j'ai utilisé bazaar 1.3.1 et monotone 0.18 pour effectuer tout ça
# Quelques commentaires
Posté par Vivi (site web personnel) . Évalué à 2.
J'ai mal aux doigts a force de taper le password de mon certificat monotone
Tu peux définir un "hook" lua dans ~/.monotonerc
function get_passphrase(keyid)
if keyid == "moi@trululu.com" then return "mon_mdp" end
end
et de faire :wq pour valider le log pourtant ecrit dans MT/log...
tu peux passer le log dans la ligne de commande avec l'option --message : il ne te lancera pas d'éditeur.
monotone est plutôt bon à représenter les révisions sous forme compacte
Et encore : les données sont en base64 dans la db. Or sqlite3 gère maintentant les BLOB, on pourrait donc y mettre directement les binaires ce qui ferait un gain de place de 25%.
[^] # Re: Quelques commentaires
Posté par Edouard Gomez (site web personnel) . Évalué à 2.
Sinon un coup de "export EDITOR="cat"" pourrait faire l'affaire histoire de voir defiler le commentaire de commit sans l'editer.
Par contre je me fais toujours pas aux revisions par hash, c'est un peu la misere pour communiquer sur le projet:
- "Dis Toto, tu as mergé 01f5e9964547da4cb8e9 ?" (un sha1 c'est encore plus long ;-))
- Ah non, Titi, pas encore, je regle des conflits sur 1e5b6985c9a65f9145de23b.
- Ok ok, toto, moi je vais prendre une aspirine en tout cas, parler de commit monotone, ca me file la migraine.
:-)
Je me moque, mais c'est pas bien serieux comme moquerie.
# NG ?
Posté par patrick_g (site web personnel) . Évalué à 2.
Il me semblait que la socièté Canonical sponsorise Bazaar-NG ce qui est un très bon signe sur le dev futur de cet outil.
[^] # Re: NG ?
Posté par Edouard Gomez (site web personnel) . Évalué à 2.
bazaar-ng c'est plutot un projet qui part de rien, completement incompatible avec arch/tla. L'objectif est de se baser sur les idees de arch tout en les implementant completement differement afin de ne pas repeter des erreurs de conception aui limite tla aujourd'hui.
Donc a part le nom, ce sont deux choses tres differentes.
# Darcs
Posté par Boa Treize (site web personnel) . Évalué à 2.
Pour mes petits essais, tout va bien, mais je serais intéressé par l'expérience de quelqu'un qui a tenté de l'utiliser avec des projets de plus grande envergure. Je ne parle pas du noyau, mais de quelque chose à mi-chemin... Pourquoi pas Xvid ? ;-)
(Note : Darcs évolue très vite au niveau des performances (dans le bon sens), donc pas la peine de ressasser de vieilles choses, à moins que vous n'ayez une expérience toute fraiche dans ce domaine, bien sûr.)
[^] # Re: Darcs
Posté par Edouard Gomez (site web personnel) . Évalué à 2.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.