First draft for clone -u

Adrian Buehlmann adrian at cadifra.com
Thu Oct 22 08:35:05 CDT 2009


On 21.10.2009 21:37, Adrian Buehlmann wrote:
> I started trying to add option -u to the clone command.
> 
> Currently I have this first draft for a patch (feedback most welcome):
> 

My current state of the help text:

def clone(ui, source, dest=None, **opts):
    """make a copy of an existing repository

    Create a copy of an existing repository in a new directory.

    If no destination directory name is specified, it defaults to the
    basename of the source.

    The location of the source is added to the new repository's
    .hg/hgrc file, as the default to be used for future pulls.

    See 'hg help urls' for valid source format details.

    It is possible to specify an ssh:// URL as the destination, but no
    .hg/hgrc and working directory will be created on the remote side.
    Please see 'hg help urls' for important details about ssh:// URLs.

    If the -U/--noupdate option is specified, the new clone will contain
    only a repository (.hg) and no working copy (the working copy parent
    will be the null revision). Otherwise, clone will initially check
    out (in order of precedence):
    a) the revision, tag or branch specified with -u/--updaterev
    b) the revision, tag or branch given with the first -r/--rev
    c) the head of the default branch

    Use 'hg clone -u . src dst' to checkout the source repository's
    parent revision (applicable for local source repositories only).

    A set of revisions (tags, or branch names) to pull may be specified
    by listing each revision (tag, or branch name) with -r/--rev.
    If -r/--rev is used, the cloned repository will contain only a subset
    of the revisions of the source repository. Only the set of revisions
    defined by all -r/--rev options (implicitly including their direct
    and indirect parent revisions) will be pulled into the destination
    repository. No subsequent revisions (including subsequent tags) will
    be present in the destination.

    Using -r/--rev (or 'clone src#rev dest') implies --pull, even for
    local source repositories.

    For efficiency, hardlinks are used for cloning whenever the source
    and destination are on the same filesystem (note this applies only
    to the repository data, not to the checked out files). Some
    filesystems, such as AFS, implement hardlinking incorrectly, but
    do not report errors. In these cases, use the --pull option to
    avoid hardlinking.

    In some cases, you can clone repositories and checked out files
    using full hardlinks with ::

      $ cp -al REPO REPOCLONE

    This is the fastest way to clone, but it is not always safe. The
    operation is not atomic (making sure REPO is not modified during
    the operation is up to you) and you have to make sure your editor
    breaks hardlinks (Emacs and most Linux Kernel tools do so). Also,
    this is not compatible with certain extensions that place their
    metadata under the .hg directory, such as mq.
    """


More information about the Mercurial-devel mailing list