[PATCH 1 of 1] Add tags-match option to convert for filtering tags

Brett Carter brett at rdnzl.net
Tue Mar 31 19:25:04 CDT 2009


# HG changeset patch
# User Brett Carter <brett at rdnzl.net>
# Date 1238544748 25200
# Node ID a68f52fba9053fa78274e694ce1fbee60c65f3f2
# Parent  026bcd12a0adba249c2e1e1b43ccd4a8207c2e57
Add tags-match option to convert for filtering tags

diff -r 026bcd12a0ad -r a68f52fba905 hgext/convert/__init__.py
--- a/hgext/convert/__init__.py	Tue Mar 31 15:52:48 2009 -0400
+++ b/hgext/convert/__init__.py	Tue Mar 31 17:12:28 2009 -0700
@@ -224,7 +224,8 @@
           ('r', 'rev', '', _('import up to target revision REV')),
           ('s', 'source-type', '', _('source repository type')),
           ('', 'splicemap', '', _('splice synthesized history into place')),
-          ('', 'datesort', None, _('try to sort changesets by date'))],
+          ('', 'datesort', None, _('try to sort changesets by date')),
+          ('', 'tags-match', '', _('only import tags matching regex'))],
          _('hg convert [OPTION]... SOURCE [DEST [REVMAP]]')),
     "debugsvnlog":
         (debugsvnlog,
diff -r 026bcd12a0ad -r a68f52fba905 hgext/convert/convcmd.py
--- a/hgext/convert/convcmd.py	Tue Mar 31 15:52:48 2009 -0400
+++ b/hgext/convert/convcmd.py	Tue Mar 31 17:12:28 2009 -0700
@@ -17,7 +17,7 @@
 from p4 import p4_source
 import filemap
 
-import os, shutil
+import os, re, shutil
 from mercurial import hg, util
 from mercurial.i18n import _
 
@@ -283,9 +283,14 @@
 
             tags = self.source.gettags()
             ctags = {}
+            tags_re = None
+            if self.opts.get('tags_match'):
+                tags_re = re.compile(self.opts.get('tags_match'))
             for k in tags:
                 v = tags[k]
                 if self.map.get(v, SKIPREV) != SKIPREV:
+                    if tags_re and not tags_re.search(k):
+                        continue
                     ctags[k] = self.map[v]
 
             if c and ctags:
diff -r 026bcd12a0ad -r a68f52fba905 tests/test-convert-tags-match
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-convert-tags-match	Tue Mar 31 17:12:28 2009 -0700
@@ -0,0 +1,25 @@
+#!/bin/sh
+
+cat >> $HGRCPATH <<EOF
+[extensions]
+convert=
+[convert]
+hg.saverev=False
+EOF
+
+hg init orig
+cd orig
+
+echo foo > foo
+hg ci -qAm 'add foo' -d '0 0'
+
+hg tag yes
+hg tag no
+
+cd ..
+hg convert -s hg --tags-match=yes orig new
+cd new
+hg tags | cut -d" " -f 1
+cd ..
+
+true
diff -r 026bcd12a0ad -r a68f52fba905 tests/test-convert-tags-match.out
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-convert-tags-match.out	Tue Mar 31 17:12:28 2009 -0700
@@ -0,0 +1,10 @@
+initializing destination new repository
+scanning source...
+sorting...
+converting...
+2 add foo
+1 Added tag yes for changeset bbd179dfa0a7
+0 Added tag no for changeset 46b9a466df6f
+updating tags
+tip
+yes
diff -r 026bcd12a0ad -r a68f52fba905 tests/test-convert.out
--- a/tests/test-convert.out	Tue Mar 31 15:52:48 2009 -0400
+++ b/tests/test-convert.out	Tue Mar 31 17:12:28 2009 -0700
@@ -190,6 +190,7 @@
  -s --source-type  source repository type
     --splicemap    splice synthesized history into place
     --datesort     try to sort changesets by date
+    --tags-match   only import tags matching regex
 
 use "hg -v help convert" to show global options
 adding a


More information about the Mercurial-devel mailing list