[cig-commits] commit: Added `hg fincoming` and `hg foutgoing`

Mercurial hg at geodynamics.org
Mon Nov 24 11:27:13 PST 2008


changeset:   70:148376451559
user:        Simon Law <simon at akoha.org>
date:        Mon Aug 27 13:51:50 2007 -0400
files:       forest.py test-forest test-forest.out
description:
Added `hg fincoming` and `hg foutgoing`

You can now see what you're about to fpull or fpush.


diff -r cb22e7675abc -r 148376451559 forest.py
--- a/forest.py	Mon Aug 27 13:50:49 2007 -0400
+++ b/forest.py	Mon Aug 27 13:51:50 2007 -0400
@@ -801,6 +801,82 @@ def clone(ui, source, dest=None, **opts)
         ui.status("\n")
 
 
+def incoming(ui, top, source="default", **opts):
+    """show new changesets found in source forest
+
+    Show new changesets found in the specified path/URL or the default
+    pull location for each repository in the source forest.
+
+    Look at the help text for the incoming command for more information.
+    """
+    die_on_numeric_revs(opts['rev'])
+    forest = Forest(top=top, snapfile=opts['snapfile'],
+                    walkhg=walkhgenabled(ui, opts['walkhg']))
+    source = [source]
+    opts["bundle"] = ""
+
+    def function(tree, srcpath, opts):
+        if not srcpath:
+            srcpath = forest.top().getpath(source)
+            if srcpath:
+                rpath = util.pconvert(relpath(forest.top().root, tree.root))
+                srcpath = '/'.join((srcpath, rpath))
+            else:
+                ui.warn(_("skipped: %s\n") %
+                        _("repository %s not found") % source[0])
+                return
+        try:
+            commands.incoming(ui, tree.repo, srcpath, **opts)
+        except Exception, err:
+            ui.warn(_("skipped: %s\n") % err)
+
+    @Forest.Tree.warn
+    def check_mq(tree):
+        tree.die_on_mq(top.root)
+
+    forest.apply(ui, function, source, opts,
+                 prehooks=[lambda tree: check_mq(tree)])
+
+
+def outgoing(ui, top, dest=None, **opts):
+    """show changesets not found in destination forest
+
+    Show changesets not found in the specified destination forest or
+    the default push location.
+
+    Look at the help text for the outgoing command for more information.
+    """
+    die_on_numeric_revs(opts['rev'])
+    forest = Forest(top=top, snapfile=opts['snapfile'],
+                    walkhg=walkhgenabled(ui, opts['walkhg']))
+    if dest == None:
+        dest = ["default-push", "default"]
+    else:
+        dest = [dest]
+
+    def function(tree, destpath, opts):
+        if not destpath:
+            destpath = forest.top().getpath(dest)
+            if destpath:
+                rpath = util.pconvert(relpath(forest.top().root, tree.root))
+                destpath = '/'.join((destpath, rpath))
+            else:
+                ui.warn(_("skipped: %s\n") %
+                        _("repository %s not found") % dest[0])
+                return
+        try:
+            commands.outgoing(ui, tree.repo, destpath, **opts)
+        except Exception, err:
+            ui.warn(_("skipped: %s\n") % err)
+
+    @Forest.Tree.warn
+    def check_mq(tree):
+        tree.die_on_mq(top.root)
+
+    forest.apply(ui, function, dest, opts,
+                 prehooks=[lambda tree: check_mq(tree)])
+
+
 def pull(ui, top, source="default", pathalias=None, **opts):
     """pull changes from the specified forest
 
@@ -1138,6 +1214,16 @@ def uisetup(ui):
             (clone,
              [walkhgopts] + cmd_options(ui, 'clone'),
              _('hg fclone [OPTION]... SOURCE [DEST]')),
+        "fincoming|fin" :
+            (incoming,
+             [walkhgopts, snapfileopts]
+             + cmd_options(ui, 'incoming', remove=('f', 'bundle')),
+             _('hg fincoming [OPTION]... [SOURCE]')),
+        "foutgoing|fout" :
+            (outgoing,
+             [walkhgopts, snapfileopts]
+             + cmd_options(ui, 'outgoing', remove=('f',)),
+             _('hg foutgoing [OPTION]... [DEST]')),
         "^fpull" :
             (pull,
              [walkhgopts, snapfileopts] + cmd_options(ui, 'pull', remove=('f',)),
diff -r cb22e7675abc -r 148376451559 test-forest
--- a/test-forest	Mon Aug 27 13:50:49 2007 -0400
+++ b/test-forest	Mon Aug 27 13:51:50 2007 -0400
@@ -98,11 +98,21 @@ hg fpull -R topcopy -u 2>&1 \
 hg fpull -R topcopy -u 2>&1 \
     | sed "s@\(/private\)*$HGTMP at HGTMP@g"
 
-echo "# fpush"
+echo "# foutgoing"
 echo "t/t/f" > topcopy/t/t/f
 hg commit --cwd topcopy/t/t -m "delete new line" -d "0 0"
 hg remove --cwd topcopy/d/d f2
 hg commit -R topcopy -m "remove new file" -d "0 0"
+hg foutgoing -R topcopy 2>&1 | sed "s@\(/private\)*$HGTMP at HGTMP@g"
+hg foutgoing --cwd topcopy default 2>&1 | sed "s@\(/private\)*$HGTMP at HGTMP@g"
+hg foutgoing -R topcopy foo 2>&1 | sed "s@\(/private\)*$HGTMP at HGTMP@g"
+
+echo "# fincoming"
+hg fincoming -R toplevel topcopy 2>&1 | sed "s@\(/private\)*$HGTMP at HGTMP@g"
+hg fincoming --cwd toplevel ../topcopy 2>&1 | sed "s@\(/private\)*$HGTMP at HGTMP@g"
+hg fincoming -R toplevel foo 2>&1 | sed "s@\(/private\)*$HGTMP at HGTMP@g"
+
+echo "# fpush"
 hg fpush -R topcopy top-snap default | sed "s@\(/private\)*$HGTMP at HGTMP@g"
 
 echo "# fseed and fpull, missing section"
diff -r cb22e7675abc -r 148376451559 test-forest.out
--- a/test-forest.out	Mon Aug 27 13:50:49 2007 -0400
+++ b/test-forest.out	Mon Aug 27 13:51:50 2007 -0400
@@ -384,6 +384,178 @@ added 2 changesets with 2 changes to 1 f
 added 2 changesets with 2 changes to 1 files
 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
 
+# foutgoing
+[.]
+comparing with HGTMP/test-forest/toplevel
+searching for changes
+changeset:   2:ea42b6f87495
+tag:         tip
+user:        test
+date:        Thu Jan 01 00:00:00 1970 +0000
+summary:     remove new file
+
+
+[d/d/t]
+comparing with HGTMP/test-forest/toplevel/d/d/t
+searching for changes
+no changes found
+
+[e/d]
+comparing with HGTMP/test-forest/toplevel/e/d
+searching for changes
+no changes found
+
+[t]
+comparing with HGTMP/test-forest/toplevel/t
+searching for changes
+no changes found
+
+[t/t]
+comparing with HGTMP/test-forest/toplevel/t/t
+searching for changes
+changeset:   2:c4c5521ca497
+tag:         tip
+user:        test
+date:        Thu Jan 01 00:00:00 1970 +0000
+summary:     delete new line
+
+
+[.]
+comparing with HGTMP/test-forest/toplevel
+searching for changes
+changeset:   2:ea42b6f87495
+tag:         tip
+user:        test
+date:        Thu Jan 01 00:00:00 1970 +0000
+summary:     remove new file
+
+
+[d/d/t]
+comparing with HGTMP/test-forest/toplevel/d/d/t
+searching for changes
+no changes found
+
+[e/d]
+comparing with HGTMP/test-forest/toplevel/e/d
+searching for changes
+no changes found
+
+[t]
+comparing with HGTMP/test-forest/toplevel/t
+searching for changes
+no changes found
+
+[t/t]
+comparing with HGTMP/test-forest/toplevel/t/t
+searching for changes
+changeset:   2:c4c5521ca497
+tag:         tip
+user:        test
+date:        Thu Jan 01 00:00:00 1970 +0000
+summary:     delete new line
+
+
+[.]
+skipped: repository foo not found
+
+[d/d/t]
+skipped: repository foo not found
+
+[e/d]
+skipped: repository foo not found
+
+[t]
+skipped: repository foo not found
+
+[t/t]
+skipped: repository foo not found
+
+# fincoming
+[.]
+comparing with topcopy
+searching for changes
+changeset:   2:ea42b6f87495
+tag:         tip
+user:        test
+date:        Thu Jan 01 00:00:00 1970 +0000
+summary:     remove new file
+
+
+[d/d/t]
+comparing with topcopy/d/d/t
+searching for changes
+no changes found
+
+[e/d]
+comparing with topcopy/e/d
+searching for changes
+no changes found
+
+[t]
+comparing with topcopy/t
+searching for changes
+no changes found
+
+[t/t]
+comparing with topcopy/t/t
+searching for changes
+changeset:   2:c4c5521ca497
+tag:         tip
+user:        test
+date:        Thu Jan 01 00:00:00 1970 +0000
+summary:     delete new line
+
+
+[.]
+comparing with ../topcopy
+searching for changes
+changeset:   2:ea42b6f87495
+tag:         tip
+user:        test
+date:        Thu Jan 01 00:00:00 1970 +0000
+summary:     remove new file
+
+
+[d/d/t]
+comparing with ../topcopy/d/d/t
+searching for changes
+no changes found
+
+[e/d]
+comparing with ../topcopy/e/d
+searching for changes
+no changes found
+
+[t]
+comparing with ../topcopy/t
+searching for changes
+no changes found
+
+[t/t]
+comparing with ../topcopy/t/t
+searching for changes
+changeset:   2:c4c5521ca497
+tag:         tip
+user:        test
+date:        Thu Jan 01 00:00:00 1970 +0000
+summary:     delete new line
+
+
+[.]
+skipped: repository foo not found
+
+[d/d/t]
+skipped: repository foo not found
+
+[e/d]
+skipped: repository foo not found
+
+[t]
+skipped: repository foo not found
+
+[t/t]
+skipped: repository foo not found
+
 # fpush
 [.]
 pushing to HGTMP/test-forest/toplevel



More information about the CIG-COMMITS mailing list