public marks

PUBLIC MARKS with tags mercurial & "gestion de version"

11 January 2007 14:15

programmation-python.org

by pvergain & 1 other
Mercurial est un système distribué de gestion de sources écrit en Python. Il permet à des développeurs de travailler avec leur code et de le versionner comme avec Subversion, mais sans avoir à dépendre d'un serveur centralisé: chaque modification est conservée localement, et le développeur peut à tout moment se synchroniser avec un autre repository, qu'il soit sur un serveur ou sur un autre poste de développement. Un repository Mercurial est accessible entres autres en SSH, et peut être recopié localement pour être modifié (commande clone), puis mis à jour avec la commande push. L'utilisation de Mercurial est très similaire à celle de Subversion: dabox:~ tarek$ hg Mercurial Distributed SCM basic commands (use "hg help" for the full list or option "-v" for details): add add the specified files on the next commit annotate show changeset information per file line clone make a copy of an existing repository commit commit the specified files or all outstanding changes diff diff repository (or selected files) export dump the header and diffs for one or more changesets init create a new repository in the given directory log show revision history of entire repository or files parents show the parents of the working dir or revision pull pull changes from the specified source push push changes to the specified destination remove remove the specified files on the next commit revert revert files or dirs to their states as of some revision serve export the repository via HTTP status show changed files in the working directory update update or merge working directory Mettre en place un projet basé sur Mercurial consiste donc à mettre à disposition des développeurs un repository via un utilisateur SSH. Cette mise en place est expliquée sur cette page : http://www.selenic.com/mercurial/wiki/index.cgi/MultipleCommitters. Mercurial propose, comme Subversion un système de hook pour effectuer des opérations lorsqu'un développeur "push" des modifications sur le serveur désigné comme "central". Un script pour envoyer des mails à chaque push est fourni sur le site, mais n'est pas très souple (script shell basic). Voici un script Python qui offre un peu plus de souplesse: #!/usr/bin/python import sys import os import smtplib from email.MIMEText import MIMEText from ConfigParser import ConfigParser from email.Utils import formatdate conffile = os.path.join(os.path.dirname(__file__), 'commithook.conf') config = ConfigParser() config.read(conffile) def command(cmd): return os.popen(cmd, 'r').read() def send_mail(log, email, subject): msg = MIMEText(log, 'plain', 'UTF-8') sender = config.get('configuration', 'sender') prefix = config.get('configuration', 'prefix') msg['From'] = sender msg['To'] = email msg['Date'] = formatdate(localtime=True) msg['Subject'] = '%s %s' % (prefix, subject) server = smtplib.SMTP('localhost') try: server.sendmail(sender, [email], msg.as_string()) finally: server.quit() if __name__ == '__main__': hg_node = os.getenv('HG_NODE') subject = command('hg log -r %s | grep "^summary:" | cut -b 14-' % hg_node) emails = config.get('configuration', 'emails').split(',') for email in emails: log = command('hg log -vpr %s' % hg_node) send_mail(log, email, subject) Il est associé à un fichier de configuration qui permet d'indiquer: * le nom de l'expéditeur * le préfix des mails * la liste des emails

PUBLIC TAGS related to tag mercurial

dvcs +   hg +   subversion +   svn +   tuto +   vcs +  

Active users

pvergain
last mark : 11/01/2007 14:21