[PATCH 6 of 6 OBSOLETE-MARKERS] obsolete: command can now specify `replacing` changeset

Pierre-Yves David pierre-yves.david at ens-lyon.org
Sat May 12 12:08:54 CDT 2012


# HG changeset patch
# User Pierre-Yves.David at ens-lyon.org
# Date 1336841272 -7200
# Node ID 0b316fb8ffc3732d3fa0fe2f81ce782e05f7dc80
# Parent  09943a88d99a60e597ba7c3828612c7bec43e370
obsolete: command can now specify `replacing` changeset.

A "--new" option is added to the hg obsolete command. This allow to specify
replacement changeset when creating marker.

diff -r 09943a88d99a -r 0b316fb8ffc3 mercurial/commands.py
--- a/mercurial/commands.py	Sat May 12 18:39:11 2012 +0200
+++ b/mercurial/commands.py	Sat May 12 18:47:52 2012 +0200
@@ -4173,6 +4173,7 @@
 
 @command('obsolete',
     [('r', 'rev', [], _('mark given revision as obsolete'), _('REV')),
+    ('N', 'new', [], _('Newer changeset replacing obsoleted one'), _('REV')),
     ] + commitopts2,
     _('[--rev] REV'))
 def obsolete(ui, repo, *revs, **opts):
@@ -4183,6 +4184,7 @@
     if not revs:
         raise util.Abort(_('no revisions specified'))
 
+    new = scmutil.revrange(repo, opts['new'])
     metadata = {}
     metadata['date'] = opts['date'] or '%f %i' % util.makedate()
     try:
@@ -4195,7 +4197,9 @@
     l = repo.lock()
     try:
         for obs in revs:
-            marker = (repo[obs].node(), (), 0, metadata)
+            marker = (repo[obs].node(),
+                      tuple(repo[n].node() for n in new),
+                      0, metadata)
             repo.obsstore.add(marker)
     finally:
         l.release()
diff -r 09943a88d99a -r 0b316fb8ffc3 tests/test-debugcomplete.t
--- a/tests/test-debugcomplete.t	Sat May 12 18:39:11 2012 +0200
+++ b/tests/test-debugcomplete.t	Sat May 12 18:47:52 2012 +0200
@@ -257,7 +257,7 @@
   incoming: force, newest-first, bundle, rev, bookmarks, branch, patch, git, limit, no-merges, stat, style, template, ssh, remotecmd, insecure, subrepos
   locate: rev, print0, fullpath, include, exclude
   manifest: rev, all
-  obsolete: rev, date, user
+  obsolete: rev, new, date, user
   outgoing: force, rev, newest-first, bookmarks, branch, patch, git, limit, no-merges, stat, style, template, ssh, remotecmd, insecure, subrepos
   parents: rev, style, template
   paths: 
diff -r 09943a88d99a -r 0b316fb8ffc3 tests/test-obsolete.t
--- a/tests/test-obsolete.t	Sat May 12 18:39:11 2012 +0200
+++ b/tests/test-obsolete.t	Sat May 12 18:47:52 2012 +0200
@@ -40,3 +40,43 @@
   add kill_me
   
   
+
+  $ cd ..
+
+Killing a single changeset with replacement
+
+  $ hg init tmpb
+  $ cd tmpb
+  $ mkcommit a
+  $ hg phase -p .
+  $ mkcommit b
+  $ mkcommit original_c
+  $ hg up "desc('b')"
+  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+  $ mkcommit new_c
+  created new head
+  $ hg obsolete -N "desc('new_c')" "desc('original_c')" -d '56 12'
+  $ hg log -r "desc('original_c')"
+  changeset:   2:245bde4270cd
+  obsolete:    dead
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     add original_c
+  
+  $ hg log --debug -r "desc('original_c')"
+  changeset:   2:245bde4270cd1072a27757984f9cda8ba26f08ca
+  phase:       draft
+  parent:      1:7c3bad9141dcb46ff89abf5f61856facd56e476c
+  parent:      -1:0000000000000000000000000000000000000000
+  obsolete:    dead
+  replaced:    Thu Jan 01 00:00:44 1970 -0000 by test
+    by:        3:cdbce2fbb163
+  manifest:    2:1bb50d177b665d9d0c361d682511ba72974ea9e8
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  files+:      original_c
+  extra:       branch=default
+  description:
+  add original_c
+  
+  


More information about the Mercurial-devel mailing list