#!/usr/bin/env python # # Perform some command for every repository in a tree from subprocess import call from os import walk from argparse import ArgumentParser from sys import exit parser = ArgumentParser() parser.add_argument("-t", "--tree", default = ".", help = "repository tree to walk") parser.add_argument("-v", "--verbose", action = "store_true", help = "whistle while you work") parser.add_argument("command", nargs = "+", help = "command to run in each repository") args = parser.parse_args() status = 0 for head, dirs, files in walk(args.tree): if ".git" in dirs and not head.endswith("/gitolite"): if args.verbose: print head status |= call(args.command, cwd = head) exit(status)