Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Exporting an unversioned copy of a tag from Mercurial

I'm fairly comfortable with SVN, but have been looking at Mercurial for it's ability to perform offline commits. Something I haven't been able to figure out is how to do an unversioned export an old tagged rev. In SVN the tags would just live in a \tags folder in the repo, then I could just export something from there, but it doesn't seem like the same trunk-branches-tags directories are used for Hg projects (or are they?)

The best I can figure out is to just clone the repository at some rev then delete the .hg folder. TortoiseHg doesn't display the list of tags either, so I clone, browse through the log, update to whatever, then delete /.hg. This seems really clumsy, is there some preferred method?

like image 284
Nick T Avatar asked Nov 02 '09 20:11

Nick T


2 Answers

Use 'hg archive'.

  hg archive [OPTION]... DEST

  create an unversioned archive of a repository revision

    By default, the revision used is the parent of the working
    directory; use -r/--rev to specify a different revision.

    To specify the type of archive to create, use -t/--type. Valid
    types are:

    "files" (default): a directory full of files
    "tar": tar archive, uncompressed
    "tbz2": tar archive, compressed using bzip2
    "tgz": tar archive, compressed using gzip
    "uzip": zip archive, uncompressed
    "zip": zip archive, compressed using deflate

    The exact name of the destination archive or directory is given
    using a format string; see 'hg help export' for details.

    Each member added to an archive file has a directory prefix
    prepended. Use -p/--prefix to specify a format string for the
    prefix. The default is the basename of the archive, with suffixes
    removed.

  options:

    --no-decode  do not pass files through decoders
 -p --prefix     directory prefix for files in archive
 -r --rev        revision to distribute
 -t --type       type of distribution to create
 -I --include    include names matching the given patterns
 -X --exclude    exclude names matching the given patterns

The -r argument will accept tag names, and -t files will get a directory if you don't want an archive file.

like image 190
Ry4an Brase Avatar answered Sep 20 '22 08:09

Ry4an Brase


Perhaps you're looking for "hg archive"?

To export a tagged version use: hg archive -r mytag ../export-tagged

like image 38
lemonad Avatar answered Sep 22 '22 08:09

lemonad