Doge log

Abby CTO 雑賀 力王のオフィシャルサイトです

paverで最新のソースを取得する

僕はsvnやhgなどで落としてるライブラリをあるdir配下にまとめている。
こんなカンジで。
(あくまで例ですよ)

./

-- bespin
-- bruce-tpt-read-only
-- ctypesgen-read-only
-- django
-- django-command-extensions
-- eventlet
-- gaeutilities-read-only
-- google_appengine
-- jaikuengine-read-only
-- jinja2-main
-- mako
-- nevow
-- paver-read-only
-- pinax
-- pinsor
-- projectmgr
-- py3k
-- pypy-dist
-- pyquery
-- python26
-- python27
-- remedie
-- rope
-- ropemode
-- ropevim
-- snake-guice
-- sqlalchemy
-- tg2
-- tgdevtools
-- twisted
-- unladen-swallow-read-only
-- unladen-swallow-tests
-- virtualenv
-- web2py
-- werkzeug-main
-- whoosh
-- windmill
-- wphp

`-- zine-main

ほぼコードを読む用なんだけどね。
でソース読むとかする際、こいつらをイチイチひとつずつupdateするのがめんどい。
なのでpaverを使う。

pavement.py

from __future__ import with_statement
from paver.easy import *
from paver.svn import update as svnupdate

def run_svn(dir):
    print "svn update %s" % dir
    svnupdate(dir)

def run_hg(dir):
    print "hg update %s" % dir
    sh('hg pull && hg update')

@task
def all_update():
    current = path("./")
    for lib_dir in current.dirs():
        with pushd(lib_dir):
            vcs = lambda x:x
            for f in current.listdir():
                if f == "./.svn":
                    vcs = run_svn
                elif f == "./.hg":
                    vcs = run_hg
            try: 
                vcs(lib_dir)
            except:
                pass

これをライブラリを置いてる一番上のdirにおいて

paver all_update

と叩くと全部最新のソースになる。
paver便利!!!