2009-12-04

source-up — скрипт для обновления исходников

Как известно, месть под горячее не подают, а исходники должны быть актуальными и свежими, как утренняя роса. Между тем, развелось столько систем контроля ревизий, что страшно вспомнить. И все стремятся соригинальничать, придумывают разные команды, пишут килобайты документации... Простым людям, к коим я себя причисляю, много не надо: посмотреть, как проект развивается; какие плюшки появились в нестабильной ветке; поиграться, попробовать собрать :-) В общем, название vcs значения не имеет.
Чтобы как-то скрестить чуждые системы, решил написать скрипт, в задачи которого входит:

  1. Проверка каталога на наличие т. н. dotfolders
  2. Если таковые опознаны, применить специфическое заклинание

Поступил с разбродом и шатанием, как в своё время Дмитрий — с зоопарком архиваторов. Мне даже крупно повезло, нашёл готовое решение. Только немного упростил скрипт, убрав обход по иерархии директории. Мой вариант предназначен для запуска внутри каталога с исходными текстами. Знает в лицо subversion, mercurial, bazaar и git.
#!/usr/bin/env python
"""
 This script update sources in current folder containing subversion, mercurial, bazaar or git.
 Original author: Alia Khouri - http://code.activestate.com/recipes/576853/
 Changed by: Anton Yakutovich
"""

import os, sys

def run(cmd):
    print cmd
    os.system(cmd)

operations = {
    '.bzr': ['bzr pull', 'bzr update'],
    '.hg': ['hg pull', 'hg update'],
    '.svn': ['svn update'],
    '.git': ['git pull']
} 

contents = os.listdir(os.getcwd())
for f in contents:
    if f in operations:
        print "\nGetting updates..."
        cmds = operations[f]
        for cmd in cmds:
            run(cmd)

0 комментариев: ответить

Отправить комментарий