--- a/docs/evolve-faq.rst Wed Jul 11 13:59:02 2012 +0200
+++ b/docs/evolve-faq.rst Wed Jul 11 15:20:22 2012 +0200
@@ -96,9 +96,9 @@
Getting changes out of a commit
------------------------------------------------------------
-the ``hg uncommit`` commands allow you to rewrite the current commit to not
-include change for some file. The content of target files are not altered on
-disk and back as "modified"::
+The ``hg uncommit`` command lets you rewrite the parent commit without
+selected changed files. Target files content is not altered and
+appears again as "modified"::
$ hg st
M babar
@@ -112,11 +112,10 @@
Split a changeset
-----------------------
-I you just want to split whole file, you can just use the ``uncommit`` command.
-
+To split on file boundaries, just use ``uncommit`` command.
-If you need fine grained split, there is no official command for that yet.
-However is it easily achieved by manual operation::
+There is no official command yet to split at a finer granularity. One
+way to achieve this is::
### you want to split changeset A: 42
# update to A parent
@@ -188,7 +187,7 @@
Export to mq: ``synchronize``
------------------------------------------------------------
-Another extension allows to export. you changes to mq
+Another extension lets you export your changes to mq.
View diff from the last amend
------------------------------------------------------------
@@ -223,8 +222,8 @@
Extinct changesets are hidden using the *hidden* feature of mercurial.
-Only ``hg log`` and ``hgview`` support it. ``hg glog`` Only support that since
-2.2. Other visual viewer don't.
+Only ``hg log``, ``hg glog`` and ``hgview`` support it, other
+graphical viewer do not.
--- a/docs/from-mq.rst Wed Jul 11 13:59:02 2012 +0200
+++ b/docs/from-mq.rst Wed Jul 11 15:20:22 2012 +0200
@@ -85,7 +85,7 @@
hg qref -X
````````````
-To remove change from you current commit use::
+To remove changes from you current commit use::
$ hg uncommit not-ready.txt
--- a/docs/tutorials/tutorial.t Wed Jul 11 13:59:02 2012 +0200
+++ b/docs/tutorials/tutorial.t Wed Jul 11 15:20:22 2012 +0200
@@ -223,7 +223,7 @@
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files (+1 heads)
- (run 'hg update' to get a working copy)
+ (run 'hg heads .' to see heads, 'hg merge' to merge)
I now have a new heads. Note that this remote head is immutable
@@ -585,7 +585,7 @@
|
| @ ffa278c50818 (draft): bathroom stuff
| |
- o | 8a79ae8b029e (draft): bathroom stuff
+ x | 8a79ae8b029e (draft): bathroom stuff
|/
o a2fccc2e7b08 (public): SPAM SPAM
|
@@ -723,7 +723,7 @@
$ hg log -G
o ae45c0c3092a (draft): SPAM SPAM SPAM
|
- o 437efbcaf700 (draft): animals
+ x 437efbcaf700 (draft): animals
|
@ ffa278c50818 (draft): bathroom stuff
|
--- a/hgext/obsolete.py Wed Jul 11 13:59:02 2012 +0200
+++ b/hgext/obsolete.py Wed Jul 11 15:20:22 2012 +0200
@@ -120,11 +120,10 @@
### Patch changectx
#############################
-def obsolete(ctx):
- """is the changeset obsolete by other"""
- if ctx.node()is None:
- return False
- return bool(ctx._repo.obsoletedby(ctx.node())) and ctx.phase()
+# core one is buggy
+def obsolete(self):
+ """True if the changeset is obsolete"""
+ return self.node() in self._repo.obsstore.precursors and self.phase()
context.changectx.obsolete = obsolete
@@ -428,34 +427,6 @@
except KeyError:
pass # rebase not found
-# Pushkey mechanism for mutable
-#########################################
-
-def listmarkers(repo):
- """List markers over pushkey"""
- if not repo.obsstore:
- return {}
- data = repo.obsstore._writemarkers()
- return {'dump': base85.b85encode(data)}
-
-def pushmarker(repo, key, old, new):
- """Push markers over pushkey"""
- if key != 'dump':
- repo.ui.warn(_('unknown key: %r') % key)
- return 0
- if old:
- repo.ui.warn(_('unexpected old value') % key)
- return 0
- data = base85.b85decode(new)
- lock = repo.lock()
- try:
- repo.obsstore.mergemarkers(data)
- return 1
- finally:
- lock.release()
-
-pushkey.register('obsolete', pushmarker, listmarkers)
-
### Discovery wrapping
#############################
@@ -571,20 +542,6 @@
cmdtable = {}
command = cmdutil.command(cmdtable)
-@command('debugobsolete', [], _('SUBJECT OBJECT'))
-def cmddebugobsolete(ui, repo, subject, object):
- """add an obsolete relation between two nodes
-
- The subject is expected to be a newer version of the object.
- """
- lock = repo.lock()
- try:
- sub = repo[subject]
- obj = repo[object]
- repo.addobsolete(sub.node(), obj.node())
- finally:
- lock.release()
- return 0
@command('debugconvertobsolete', [], '')
def cmddebugconvertobsolete(ui, repo):
@@ -695,6 +652,15 @@
ui.warn(_('Working directory parent is obsolete\n'))
return res
+def wrapmaycreateobsmarker(origfn, ui, repo, *args, **opts):
+ lock = repo.lock()
+ try:
+ res = origfn(ui, repo, *args, **opts)
+ repo._turn_extinct_secret()
+ finally:
+ lock.release()
+ return res
+
def warnobserrors(orig, ui, repo, *args, **kwargs):
"""display warning is the command resulted in more instable changeset"""
priorunstables = len(repo.revs('unstable()'))
@@ -728,11 +694,8 @@
lock = repo.lock()
try:
meta = {
- 'subjects': [new],
- 'object': oldnode,
- 'date': util.makedate(),
+ 'date': '%i %i' % util.makedate(),
'user': ui.username(),
- 'reason': 'commit --amend',
}
repo.obsstore.create(oldnode, [new], 0, meta)
repo._clearobsoletecache()
@@ -744,6 +707,7 @@
def uisetup(ui):
extensions.wrapcommand(commands.table, "update", wrapmayobsoletewc)
extensions.wrapcommand(commands.table, "pull", wrapmayobsoletewc)
+ extensions.wrapcommand(commands.table, "debugobsolete", wrapmaycreateobsmarker)
if util.safehasattr(cmdutil, 'amend'):
extensions.wrapfunction(cmdutil, 'amend', wrapcmdutilamend)
extensions.wrapfunction(discovery, 'findcommonoutgoing', wrapfindcommonoutgoing)
@@ -812,183 +776,6 @@
newer.add(())
return sorted(newer)
-### obsolete relation storage
-#############################
-def add2set(d, key, mark):
- """add <mark> to a `set` in <d>[<key>]"""
- d.setdefault(key, []).append(mark)
-
-def markerid(marker):
- KEYS = ['subjects', "object", "date", "user", "reason"]
- for key in KEYS:
- assert key in marker
- keys = sorted(marker.keys())
- a = util.sha1()
- for key in keys:
- if key == 'subjects':
- for sub in sorted(marker[key]):
- a.update(sub)
- elif key == 'id':
- pass
- else:
- a.update(str(marker[key]))
- a.update('\0')
- return a.digest()
-
-# mercurial backport
-
-def encodemeta(meta):
- """Return encoded metadata string to string mapping.
-
- Assume no ':' in key and no '\0' in both key and value."""
- for key, value in meta.iteritems():
- if ':' in key or '\0' in key:
- raise ValueError("':' and '\0' are forbidden in metadata key'")
- if '\0' in value:
- raise ValueError("':' are forbidden in metadata value'")
- return '\0'.join(['%s:%s' % (k, meta[k]) for k in sorted(meta)])
-
-def decodemeta(data):
- """Return string to string dictionary from encoded version."""
- d = {}
- for l in data.split('\0'):
- if l:
- key, value = l.split(':')
- d[key] = value
- return d
-
-# data used for parsing and writing
-_fmversion = 0
-_fmfixed = '>BIB20s'
-_fmnode = '20s'
-_fmfsize = struct.calcsize(_fmfixed)
-_fnodesize = struct.calcsize(_fmnode)
-
-def _readmarkers(data):
- """Read and enumerate markers from raw data"""
- off = 0
- diskversion = _unpack('>B', data[off:off + 1])[0]
- off += 1
- if diskversion != _fmversion:
- raise util.Abort(_('parsing obsolete marker: unknown version %r')
- % diskversion)
-
- # Loop on markers
- l = len(data)
- while off + _fmfsize <= l:
- # read fixed part
- cur = data[off:off + _fmfsize]
- off += _fmfsize
- nbsuc, mdsize, flags, pre = _unpack(_fmfixed, cur)
- # read replacement
- sucs = ()
- if nbsuc:
- s = (_fnodesize * nbsuc)
- cur = data[off:off + s]
- sucs = _unpack(_fmnode * nbsuc, cur)
- off += s
- # read metadata
- # (metadata will be decoded on demand)
- metadata = data[off:off + mdsize]
- if len(metadata) != mdsize:
- raise util.Abort(_('parsing obsolete marker: metadata is too '
- 'short, %d bytes expected, got %d')
- % (len(metadata), mdsize))
- off += mdsize
- yield (pre, sucs, flags, metadata)
-
-class obsstore(object):
- """Store obsolete markers
-
- Markers can be accessed with two mappings:
- - precursors: old -> set(new)
- - successors: new -> set(old)
- """
-
- def __init__(self):
- self._all = []
- # new markers to serialize
- self._new = []
- self.precursors = {}
- self.successors = {}
-
- def __iter__(self):
- return iter(self._all)
-
- def __nonzero__(self):
- return bool(self._all)
-
- def create(self, prec, succs=(), flag=0, metadata=None):
- """obsolete: add a new obsolete marker
-
- * ensuring it is hashable
- * check mandatory metadata
- * encode metadata
- """
- if metadata is None:
- metadata = {}
- if len(prec) != 20:
- raise ValueError(repr(prec))
- for succ in succs:
- if len(succ) != 20:
- raise ValueError((succs))
- marker = (str(prec), tuple(succs), int(flag), encodemeta(metadata))
- self.add(marker)
-
- def add(self, marker):
- """Add a new marker to the store
-
- This marker still needs to be written to disk"""
- self._new.append(marker)
- self._load(marker)
-
- def loadmarkers(self, data):
- """Load all markers in data, mark them as known."""
- for marker in _readmarkers(data):
- self._load(marker)
-
- def mergemarkers(self, data):
- other = set(_readmarkers(data))
- local = set(self._all)
- new = other - local
- for marker in new:
- self.add(marker)
-
- def flushmarkers(self, stream):
- """Write all markers to a stream
-
- After this operation, "new" markers are considered "known"."""
- self._writemarkers(stream)
- self._new[:] = []
-
- def _load(self, marker):
- self._all.append(marker)
- pre, sucs = marker[:2]
- self.precursors.setdefault(pre, set()).add(marker)
- for suc in sucs:
- self.successors.setdefault(suc, set()).add(marker)
-
- def _writemarkers(self, stream=None):
- # Kept separate from flushmarkers(), it will be reused for
- # markers exchange.
- if stream is None:
- final = []
- w = final.append
- else:
- w = stream.write
- w(_pack('>B', _fmversion))
- for marker in self._all:
- pre, sucs, flags, metadata = marker
- nbsuc = len(sucs)
- format = _fmfixed + (_fmnode * nbsuc)
- data = [nbsuc, len(metadata), flags, pre]
- data.extend(sucs)
- w(_pack(format, *data))
- w(metadata)
- if stream is None:
- return ''.join(final)
-
-
### repo subclassing
#############################
@@ -1024,31 +811,19 @@
"""return the set of node that <node> make obsolete (sub)"""
return set(marker[0] for marker in self.obsstore.successors.get(node, []))
- @storecache('obsstore')
- def obsstore(self):
- if not getattr(self, '_importoldobsolete', False):
- data = repo.opener.tryread('obsolete-relations')
- if not data:
- data = repo.sopener.tryread('obsoletemarkers')
- if data:
- raise util.Abort('old format of obsolete marker detected!\n'
- 'run `hg debugconvertobsolete` once.')
- store = obsstore()
- data = self.sopener.tryread('obsstore')
- if data:
- store.loadmarkers(data)
- return store
-
@util.propertycache
def _obsoleteset(self):
"""the set of obsolete revision"""
+ data = repo.opener.tryread('obsolete-relations')
+ if not data:
+ data = repo.sopener.tryread('obsoletemarkers')
+ if data:
+ raise util.Abort('old format of obsolete marker detected!\n'
+ 'run `hg debugconvertobsolete` once.')
obs = set()
nm = self.changelog.nodemap
- for obj in self.obsstore.precursors:
- try: # /!\api change in Hg 2.2 (e8d37b78acfb22ae2c1fb126c2)/!\
- rev = nm.get(obj)
- except TypeError: #XXX to remove while breaking Hg 2.1 support
- rev = nm.get(obj, None)
+ for prec in self.obsstore.precursors:
+ rev = nm.get(prec)
if rev is not None:
obs.add(rev)
return obs
@@ -1130,9 +905,8 @@
lock = self.lock()
try:
meta = {
- 'date': util.makedate(),
+ 'date': '%i %i' % util.makedate(),
'user': ui.username(),
- 'reason': 'unknown',
}
subs = (sub == nullid) and [] or [sub]
mid = self.obsstore.create(obj, subs, 0, meta)
@@ -1147,7 +921,7 @@
# Assume oldnodes are all descendants of a single rev
rootrevs = self.revs('roots(%ln)', oldnodes)
assert len(rootrevs) == 1, rootrevs
- rootnode = self[rootrevs[0]].node()
+ #rootnode = self[rootrevs[0]].node()
for n in oldnodes:
self.addobsolete(newnode, n)
@@ -1160,27 +934,6 @@
expobs = [c.node() for c in repo.set(query)]
phases.retractboundary(repo, 2, expobs)
- ### Disk IO
-
- def lock(self, *args, **kwargs):
- l = olock(*args, **kwargs)
- if not getattr(l.releasefn, 'obspatched', False):
- oreleasefn = l.releasefn
- def releasefn(*args, **kwargs):
- if 'obsstore' in vars(self) and self.obsstore._new:
- f = self.sopener('obsstore', 'wb', atomictemp=True)
- try:
- self.obsstore.flushmarkers(f)
- f.close()
- except: # re-raises
- f.discard()
- raise
- oreleasefn(*args, **kwargs)
- releasefn.obspatched = True
- l.releasefn = releasefn
- return l
-
-
### pull // push support
def pull(self, remote, *args, **kwargs):
@@ -1188,13 +941,8 @@
l = repo.lock()
try:
result = opull(remote, *args, **kwargs)
- remoteobs = remote.listkeys('obsolete')
- if 'dump' in remoteobs:
- data = base85.b85decode(remoteobs['dump'])
- self.obsstore.mergemarkers(data)
- self._clearobsoletecache()
- self._turn_extinct_secret()
- return result
+ self._turn_extinct_secret()
+ return result
finally:
l.release()
@@ -1202,46 +950,26 @@
"""wrapper around pull that pull obsolete relation"""
self._turn_extinct_secret()
result = opush(remote, *args, **opts)
- if 'obsolete' in remote.listkeys('namespaces') and self.obsstore:
- data = self.obsstore._writemarkers()
- r = remote.pushkey('obsolete', 'dump', '',
- base85.b85encode(data))
- if not r:
- self.ui.warn(_('failed to push obsolete markers!\n'))
self._turn_extinct_secret()
-
return result
### rollback support
# /!\ api change in Hg 2.2 (97efd26eb9576f39590812ea9) /!\
- if util.safehasattr(repo, '_journalfiles'): # Hg 2.2
- def _journalfiles(self):
- return o_journalfiles() + (self.sjoin('journal.obsstore'),)
+ def _journalfiles(self):
+ return o_journalfiles() + (self.sjoin('journal.obsstore'),)
- def _writejournal(self, desc):
- """wrapped version of _writejournal that save obsolete data"""
- o_writejournal(desc)
- filename = 'obsstore'
- filepath = self.sjoin(filename)
- if os.path.exists(filepath):
- journalname = 'journal.' + filename
- journalpath = self.sjoin(journalname)
- util.copyfile(filepath, journalpath)
+ def _writejournal(self, desc):
+ """wrapped version of _writejournal that save obsolete data"""
+ o_writejournal(desc)
+ filename = 'obsstore'
+ filepath = self.sjoin(filename)
+ if os.path.exists(filepath):
+ journalname = 'journal.' + filename
+ journalpath = self.sjoin(journalname)
+ util.copyfile(filepath, journalpath)
- else: # XXX removing this bloc will break Hg 2.1 support
- def _writejournal(self, desc):
- """wrapped version of _writejournal that save obsolete data"""
- entries = list(o_writejournal(desc))
- filename = 'obsstore'
- filepath = self.sjoin(filename)
- if os.path.exists(filepath):
- journalname = 'journal.' + filename
- journalpath = self.sjoin(journalname)
- util.copyfile(filepath, journalpath)
- entries.append(journalpath)
- return tuple(entries)
def _rollback(self, dryrun, force):
"""wrapped version of _rollback that restore obsolete data"""
--- a/tests/test-evolve.t Wed Jul 11 13:59:02 2012 +0200
+++ b/tests/test-evolve.t Wed Jul 11 15:20:22 2012 +0200
@@ -231,15 +231,15 @@
$ glog --hidden
o 6:23409eba69a0@default(draft) a nifty feature
|
- | o 5:e416e48b2742@default(secret) french looks better
+ | x 5:e416e48b2742@default(secret) french looks better
| |
| | o 4:f8111a076f09@default(draft) another feature
| |/
- | | o 3:524e478d4811@default(secret) fix spelling of Zwei
+ | | x 3:524e478d4811@default(secret) fix spelling of Zwei
| | |
- | | o 2:7b36850622b2@default(secret) another feature
+ | | x 2:7b36850622b2@default(secret) another feature
| |/
- | o 1:568a468b60fc@default(draft) a nifty feature
+ | x 1:568a468b60fc@default(draft) a nifty feature
|/
@ 0:e55e0562ee93@default(draft) base
--- a/tests/test-obsolete-push.t Wed Jul 11 13:59:02 2012 +0200
+++ b/tests/test-obsolete-push.t Wed Jul 11 15:20:22 2012 +0200
@@ -32,9 +32,9 @@
$ glog --hidden
@ 2:244232c2222a@default(unstable/secret) C
|
- | o 1:6c81ed0049f8@default(extinct/secret) B
+ | x 1:6c81ed0049f8@default(extinct/secret) B
|/
- o 0:1994f17a630e@default(suspended/secret) A
+ x 0:1994f17a630e@default(suspended/secret) A
$ hg init ../clone
$ cat > ../clone/.hg/hgrc <<EOF
--- a/tests/test-obsolete-rebase.t Wed Jul 11 13:59:02 2012 +0200
+++ b/tests/test-obsolete-rebase.t Wed Jul 11 15:20:22 2012 +0200
@@ -70,7 +70,7 @@
$ glog --hidden
@ 4:9c5494949763@default(draft) adde
|
- | o 3:98e4a024635e@default(secret) adde
+ | x 3:98e4a024635e@default(secret) adde
| |
| o 2:102a90ea7b4a@default(draft) addb
| |
@@ -92,11 +92,11 @@
$ hg ci -m changea
$ hg rebase -d 1
$ glog --hidden
- o 5:4e322f7ce8e3@foo(secret) changea
+ x 5:4e322f7ce8e3@foo(secret) changea
|
| o 4:9c5494949763@default(draft) adde
| |
- | | o 3:98e4a024635e@default(secret) adde
+ | | x 3:98e4a024635e@default(secret) adde
| | |
+---o 2:102a90ea7b4a@default(draft) addb
| |
@@ -123,15 +123,15 @@
$ glog --hidden
@ 8:a7773ffa7edc@default(draft) Collapsed revision
|
- | o 7:03f31481307a@default(secret) changec
+ | x 7:03f31481307a@default(secret) changec
| |
- | o 6:076e9b2ffbe1@default(secret) addc
+ | x 6:076e9b2ffbe1@default(secret) addc
| |
- | | o 5:4e322f7ce8e3@foo(secret) changea
+ | | x 5:4e322f7ce8e3@foo(secret) changea
| |/
+---o 4:9c5494949763@default(draft) adde
| |
- | | o 3:98e4a024635e@default(secret) adde
+ | | x 3:98e4a024635e@default(secret) adde
| | |
| | o 2:102a90ea7b4a@default(draft) addb
| |/
@@ -182,21 +182,21 @@
|
o 11:03f165c84ea8@default(draft) addd
|
- | o 10:4b9d80f48523@default(secret) appendab
+ | x 10:4b9d80f48523@default(secret) appendab
| |
- | o 9:a31943eabc43@default(secret) addd
+ | x 9:a31943eabc43@default(secret) addd
| |
+---o 8:a7773ffa7edc@default(draft) Collapsed revision
| |
- | | o 7:03f31481307a@default(secret) changec
+ | | x 7:03f31481307a@default(secret) changec
| | |
- | | o 6:076e9b2ffbe1@default(secret) addc
+ | | x 6:076e9b2ffbe1@default(secret) addc
| |/
- | | o 5:4e322f7ce8e3@foo(secret) changea
+ | | x 5:4e322f7ce8e3@foo(secret) changea
| |/
+---o 4:9c5494949763@default(draft) adde
| |
- | | o 3:98e4a024635e@default(secret) adde
+ | | x 3:98e4a024635e@default(secret) adde
| | |
| | o 2:102a90ea7b4a@default(draft) addb
| |/
--- a/tests/test-obsolete.t Wed Jul 11 13:59:02 2012 +0200
+++ b/tests/test-obsolete.t Wed Jul 11 15:20:22 2012 +0200
@@ -15,6 +15,9 @@
> hg add "$1"
> hg ci -m "add $1"
> }
+ $ getid() {
+ > hg id --debug -ir "$1"
+ > }
$ alias qlog="hg log --template='{rev}\n- {node|short}\n'"
$ hg init local
@@ -27,7 +30,14 @@
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ mkcommit obsol_c # 3
created new head
- $ hg debugobsolete 3 2
+ $ getid 2
+ 4538525df7e2b9f09423636c61ef63a4cb872a2d
+ $ getid 3
+ 0d3f46688ccc6e756c7e96cf64c391c411309597
+ $ hg debugobsolete 4538525df7e2b9f09423636c61ef63a4cb872a2d 0d3f46688ccc6e756c7e96cf64c391c411309597
+ $ hg debugobsolete
+ 4538525df7e2b9f09423636c61ef63a4cb872a2d 0d3f46688ccc6e756c7e96cf64c391c411309597 0 {'date': '', 'user': 'test'}
+
Test that obsolete changeset are hidden
@@ -82,7 +92,7 @@
$ hg up 1 -q
$ mkcommit "obsol_c'" # 4 (on 1)
created new head
- $ hg debugobsolete 4 3
+ $ hg debugobsolete `getid 3` `getid 4`
$ qlog
4
- 725c380fe99b
@@ -131,9 +141,9 @@
|
| o 4:725c380fe99b@default(stable/draft) add obsol_c'
| |
- o | 3:0d3f46688ccc@default(suspended/secret) add obsol_c
+ x | 3:0d3f46688ccc@default(suspended/secret) add obsol_c
|/
- | o 2:4538525df7e2@default(extinct/secret) add c
+ | x 2:4538525df7e2@default(extinct/secret) add c
|/
o 1:7c3bad9141dc@default(stable/draft) add b
|
@@ -182,7 +192,7 @@
$ mkcommit obsol_d # 6
created new head
1 new unstables changesets
- $ hg debugobsolete 6 5
+ $ hg debugobsolete `getid 5` `getid 6`
$ qlog
6
- 95de7fc6918d
@@ -238,7 +248,7 @@
$ mkcommit "obsol_d'" # 7
created new head
1 new unstables changesets
- $ hg debugobsolete 7 6
+ $ hg debugobsolete `getid 6` `getid 7`
$ hg pull -R ../other-new .
pulling from .
searching for changes
@@ -322,7 +332,7 @@
$ mkcommit "obsol_d''"
created new head
1 new unstables changesets
- $ hg debugobsolete 8 7
+ $ hg debugobsolete `getid 7` `getid 8`
$ cd ../other-new
$ hg up -q 3
$ hg pull ../local/
@@ -379,8 +389,10 @@
created new head
$ hg id -n
9
- $ hg debugobsolete 9 0
- 83b5778897ad try to obsolete immutable changeset 1f0dee641bb7
+ $ hg debugobsolete `getid 0` `getid 9`
+83b5778897ad try to obsolete immutable changeset 1f0dee641bb7
+# at core level the warning is not issued
+# this is now a big issue now that we have latecomer warning
$ qlog -r 'obsolete()'
3
- 0d3f46688ccc
@@ -400,7 +412,7 @@
0
- 1f0dee641bb7
- $ hg debugobsolete null 9 #kill
+ $ hg debugobsolete `getid 9` #kill
$ hg up null -q # to be not based on 9 anymore
$ qlog
8
@@ -421,7 +433,7 @@
|
| o 4 - 725c380fe99b
| |
- o | 3 - 0d3f46688ccc
+ x | 3 - 0d3f46688ccc
|/
o 1 - 7c3bad9141dc
|
@@ -429,21 +441,21 @@
$ hg glog --template='{rev} - {node|short}\n' `(hg --version | grep -q 'version 2.1') || echo '--hidden'`
- o 9 - 83b5778897ad
+ x 9 - 83b5778897ad
o 8 - 159dfc9fa5d3
|
- | o 7 - 909a0fb57e5d
+ | x 7 - 909a0fb57e5d
|/
- | o 6 - 95de7fc6918d
+ | x 6 - 95de7fc6918d
|/
- | o 5 - a7a6f2b5d8a5
+ | x 5 - a7a6f2b5d8a5
|/
| o 4 - 725c380fe99b
| |
- o | 3 - 0d3f46688ccc
+ x | 3 - 0d3f46688ccc
|/
- | o 2 - 4538525df7e2
+ | x 2 - 4538525df7e2
|/
o 1 - 7c3bad9141dc
|
@@ -477,7 +489,7 @@
$ hg up -q 10
$ mkcommit "obsol_d'''"
created new head
- $ hg debugobsolete 12 11
+ $ hg debugobsolete `getid 11` `getid 12`
$ hg push ../other-new --traceback
pushing to ../other-new
searching for changes
@@ -578,7 +590,7 @@
159dfc9fa5d3 9468a5f5d8b2
1f0dee641bb7 83b5778897ad
4538525df7e2 0d3f46688ccc
- 83b5778897ad 000000000000
+ 83b5778897ad
909a0fb57e5d 159dfc9fa5d3
9468a5f5d8b2 6db5e282cb91
95de7fc6918d 909a0fb57e5d
@@ -595,7 +607,7 @@
branch: default
commit: (clean)
update: 9 new changesets, 9 branch heads (merge)
- $ hg debugobsolete 50f11e5e3a63 a7a6f2b5d8a5
+ $ hg debugobsolete `getid a7a6f2b5d8a5` `getid 50f11e5e3a63`
$ hg log -r 'conflicting()'
changeset: 14:50f11e5e3a63
tag: tip
--- a/tests/test-qsync.t Wed Jul 11 13:59:02 2012 +0200
+++ b/tests/test-qsync.t Wed Jul 11 15:20:22 2012 +0200
@@ -182,7 +182,6 @@
pulling from ../local2
searching for changes
no changes found
- (run 'hg update' to get a working copy)
$ hg pull --mq ../local2/.hg/patches
pulling from ../local2/.hg/patches
searching for changes
--- a/tests/test-stabilize-order.t Wed Jul 11 13:59:02 2012 +0200
+++ b/tests/test-stabilize-order.t Wed Jul 11 15:20:22 2012 +0200
@@ -54,9 +54,9 @@
| |
| | o 3:7a7552255fb5@default(draft) addc
| | |
- | | o 2:ef23d6ef94d6@default(draft) addb
+ | | x 2:ef23d6ef94d6@default(draft) addb
| |/
- | o 1:93418d2c0979@default(draft) adda
+ | x 1:93418d2c0979@default(draft) adda
|/
o 0:c471ef929e6a@default(draft) addroot
@@ -77,9 +77,9 @@
|
| o 3:7a7552255fb5@default(draft) addc
| |
- | o 2:ef23d6ef94d6@default(draft) addb
+ | x 2:ef23d6ef94d6@default(draft) addb
| |
- | o 1:93418d2c0979@default(draft) adda
+ | x 1:93418d2c0979@default(draft) adda
|/
o 0:c471ef929e6a@default(draft) addroot
@@ -135,7 +135,7 @@
|
| o 9:5e819fbb0d27@default(draft) addc
| |
- | o 8:6bf44048e43f@default(draft) addb
+ | x 8:6bf44048e43f@default(draft) addb
|/
o 7:f5ff10856e5a@default(draft) adda
|
--- a/tests/test-stabilize-result.t Wed Jul 11 13:59:02 2012 +0200
+++ b/tests/test-stabilize-result.t Wed Jul 11 15:20:22 2012 +0200
@@ -37,11 +37,11 @@
$ glog --hidden
@ 4:1447e1c4828d@default(draft) bk:[changea] changea
|
- | o 3:41ad4fe8c795@default(secret) bk:[] amends 102a90ea7b4a3361e4082ed620918c261189a36a
+ | x 3:41ad4fe8c795@default(secret) bk:[] amends 102a90ea7b4a3361e4082ed620918c261189a36a
| |
- | | o 2:cce2c55b8965@default(secret) bk:[] changea
+ | | x 2:cce2c55b8965@default(secret) bk:[] changea
| |/
- | o 1:102a90ea7b4a@default(secret) bk:[] addb
+ | x 1:102a90ea7b4a@default(secret) bk:[] addb
|/
o 0:07f494440405@default(draft) bk:[] adda
--- a/tests/test-uncommit.t Wed Jul 11 13:59:02 2012 +0200
+++ b/tests/test-uncommit.t Wed Jul 11 15:20:22 2012 +0200
@@ -220,7 +220,7 @@
$ glog --hidden
@ 4:e8db4aa611f6@bar(stable/draft) touncommit
|
- | o 3:5eb72dbe0cb4@bar(extinct/secret) touncommit
+ | x 3:5eb72dbe0cb4@bar(extinct/secret) touncommit
|/
o 2:f63b90038565@default(stable/draft) merge
|\
@@ -267,7 +267,7 @@
|
| o 4:e8db4aa611f6@bar(stable/draft) touncommit
|/
- | o 3:5eb72dbe0cb4@bar(extinct/secret) touncommit
+ | x 3:5eb72dbe0cb4@bar(extinct/secret) touncommit
|/
o 2:f63b90038565@default(stable/draft) merge
|\