#!/usr/bin/env python # # Synchronize Cryptech git repositories via SSH by asking gitolite for a JSON # listing of repositories. Not useful unless you have an SSH account, sorry. import json, subprocess, os.path, sys user = "git@git.cryptech.is" cmd = "ssh %s info -json -lc" % user info = json.loads(subprocess.check_output(cmd.split())) errs = 0 for repo in sorted(info["repos"]): try: if all(c not in repo for c in "*?[]"): print print repo pull = os.path.isdir(repo) if pull: subprocess.check_call(("git", "fetch", "--all"), cwd = repo) subprocess.check_call(("git", "pull"), cwd = repo) else: subprocess.check_call(("git", "clone", "%s:%s.git" % (user, repo), repo)) except: print "** Error", "pulling" if pull else "cloning", repo errs += 1 sys.exit(errs)