[PATCH 3 of 9 V2] push: refuse to push obsolete changeset
pierre-yves.david at logilab.fr
pierre-yves.david at logilab.fr
Fri Jul 6 12:54:04 CDT 2012
# HG changeset patch
# User Pierre-Yves David <pierre-yves.david at logilab.fr>
# Date 1341595623 -7200
# Node ID 92f00b11481cd4fc34f820bc8474302c23f24420
# Parent 8d5c67b786a245ecb7b5e656c5a59766349c0ad8
push: refuse to push obsolete changeset
This is a first version. Simple but not very efficient.
Note that this changeset introduce the "obsolete" word in the UI.
diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py
--- a/mercurial/localrepo.py
+++ b/mercurial/localrepo.py
@@ -1730,10 +1730,18 @@ class localrepository(repo.repository):
scmutil.nochangesfound(self.ui, outgoing.excluded)
ret = None
else:
# something to push
if not force:
+ # if self.obsstore == False --> no obsolete
+ # then, save the iteration
+ if self.obsstore:
+ msg = "push includes an obsolete changeset: %s!"
+ for node in outgoing.missing:
+ ctx = self[node]
+ if ctx.obsolete():
+ raise util.Abort(_(msg) % ctx)
discovery.checkheads(self, remote, outgoing,
remoteheads, newbranch,
bool(inc))
# create a changegroup from local
diff --git a/tests/test-obsolete.t b/tests/test-obsolete.t
--- a/tests/test-obsolete.t
+++ b/tests/test-obsolete.t
@@ -169,14 +169,20 @@ Try to pull markers
$ hg init tmpd
$ hg -R tmpb push tmpd
pushing to tmpd
searching for changes
+ abort: push includes an obsolete changeset: cdbce2fbb163!
+ [255]
+ $ hg -R tmpd debugobsolete
+ $ hg -R tmpb push tmpd --rev 5601fb93a350 --rev 245bde4270cd
+ pushing to tmpd
+ searching for changes
adding changesets
adding manifests
adding file changes
- added 6 changesets with 6 changes to 6 files (+3 heads)
+ added 4 changesets with 4 changes to 4 files (+1 heads)
$ hg -R tmpd debugobsolete
ca819180edb99ed25ceafb3e9584ac287e240b00 1337133713371337133713371337133713371337 0 {'date': '1338 0', 'user': 'test'}
cdbce2fbb16313928851e97e0d85413f3f7eb77f ca819180edb99ed25ceafb3e9584ac287e240b00 0 {'date': '1337 0', 'user': 'test'}
245bde4270cd1072a27757984f9cda8ba26f08ca cdbce2fbb16313928851e97e0d85413f3f7eb77f 0 {'date': '56 12', 'user': 'test'}
1337133713371337133713371337133713371337 5601fb93a350734d935195fee37f4054c529ff39 0 {'date': '1339 0', 'user': 'test'}
More information about the Mercurial-devel
mailing list