view __init__.py @ 134:22248b34b15a

Add notes on how metadata is stored and recovered. Note that at this point, none of this has actually been implemented. This is documentation of the improved system to be used in the future.
author Augie Fackler <durin42@gmail.com>
date Mon, 01 Dec 2008 11:13:01 -0600
parents 291925677a9f
children 9ffde8662967
line wrap: on
line source

import os

from mercurial import commands
from mercurial import hg

import svncommand
import fetch_command
import tag_repo
import util

def reposetup(ui, repo):
    if not util.is_svn_repo(repo):
        return

    repo.__class__ = tag_repo.generate_repo_class(ui, repo)


def svn(ui, repo, subcommand, *args, **opts):
    return svncommand.svncmd(ui, repo, subcommand, *args, **opts)

def svn_fetch(ui, svn_url, hg_repo_path=None, **opts):
    if not hg_repo_path:
        hg_repo_path = hg.defaultdest(svn_url) + "-hg"
        ui.status("Assuming destination %s\n" % hg_repo_path)
    should_update = not os.path.exists(hg_repo_path)
    res = fetch_command.fetch_revisions(ui, svn_url, hg_repo_path, **opts)
    if (res is None or res == 0) and should_update:
        repo = hg.repository(ui, hg_repo_path)
        commands.update(ui, repo, repo['tip'].node())
    return res

commands.norepo += " svnclone"
cmdtable = {
    "svn":
        (svn,
         [('u', 'svn_url', '', 'Path to the Subversion server.'),
          ('', 'stupid', False, 'Be stupid and use diffy replay.'),
          ],
         svncommand.generate_help(),
         ),
    "svnclone" :(svn_fetch,
         [('S', 'skipto_rev', '0', 'Skip commits before this revision.'),
          ('', 'stupid', False, 'Be stupid and use diffy replay.'),
          ('T', 'tag_locations', 'tags', 'Relative path to where tags get '
           'stored, as comma sep. values if there is more than one such path.')
         ],
         'hg svn_fetch svn_url, dest'),
}