Source

hg-publishall / publishall.py

#!/usr/bin/env python

"""allows you to publish on all your repositories.

Requirements:
mercurial

Use:
hg pusha
You can also use hg pushall

Installation:
Add the following entry to the [extensions] bloc of your .hg/hgrc config.
publishall = /path/to/publishall.py
"""

from mercurial.i18n import _
from mercurial import commands, cmdutil, exntesions, hg, util
import ConfigParser, os

def pushall(ui, repo, **opts):
    """The Publishall core function. Makes your life easier."""
    userrc = os.sep.join([repo.root, '.hg', 'hgrc'])
    ini = ConfigParser.RawConfigParser()
    ini.read(userrc)
    repos = None
    if not os.path.exists(userrc):
        ui.warn("Unable to find your hgrc file for the current repository.\n")
        return 1
    try:
        repos = ini.items('paths')
    except KeyError:
        ui.warn("No paths defined in your hgrc. Pushall aborded.\n")
    ui.status("%s paths found\n" % len(repos))
    for path in repos:
        ui.status("* pushing to %s\n" % path[0])
        commands.push(ui, repo, path[1], **opts)
    return 0

aliases = ('pusha','pushall')

command = (
    pushall,
    [],
    _("Push to all your repositories.\n"),
)

cmdtable = {}

# Because I'm SO lazy
for item in aliases:
    cmdtable[item] = command
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.