Closed Bug 1178957 Opened 9 years ago Closed 9 years ago

Unable to push unrelated changesets for review

Categories

(MozReview Graveyard :: General, defect, P1)

defect

Tracking

(Not tracked)

RESOLVED FIXED

People

(Reporter: gps, Assigned: gps)

Details

Attachments

(2 files)

I have a repo history like the following:

Z
|
Y
|
X
|
@

If my working copy is on @ and I do `hg push -r Z review`, I get the following:

pushing to ssh://reviewboard-hg.mozilla.org/autoreview
searching for appropriate review repository
redirecting push to ssh://reviewboard-hg.mozilla.org/version-control-tools/
(adding commit id to 1 changesets)
transaction abort!
rollback completed
Traceback (most recent call last):
  File "/Users/gps/src/hgcustom/version-control-tools/venv/lib/python2.7/site-packages/mercurial/dispatch.py", line 160, in _runcatch
    return _dispatch(req)
  File "/Users/gps/src/hgcustom/version-control-tools/venv/lib/python2.7/site-packages/mercurial/dispatch.py", line 885, in _dispatch
    cmdpats, cmdoptions)
  File "/Users/gps/src/hgcustom/version-control-tools/venv/lib/python2.7/site-packages/mercurial/dispatch.py", line 646, in runcommand
    ret = _runcommand(ui, options, cmd, d)
  File "/Users/gps/src/hgcustom/version-control-tools/venv/lib/python2.7/site-packages/mercurial/extensions.py", line 168, in closure
    return func(*(args + a), **kw)
  File "/Users/gps/src/hgcustom/version-control-tools/venv/lib/python2.7/site-packages/hgext/pager.py", line 160, in pagecmd
    return orig(ui, options, cmd, cmdfunc)
  File "/Users/gps/src/hgcustom/version-control-tools/venv/lib/python2.7/site-packages/mercurial/extensions.py", line 168, in closure
    return func(*(args + a), **kw)
  File "/Users/gps/src/hgcustom/version-control-tools/venv/lib/python2.7/site-packages/hgext/color.py", line 521, in colorcmd
    return orig(ui_, opts, cmd, cmdfunc)
  File "/Users/gps/src/hgcustom/version-control-tools/venv/lib/python2.7/site-packages/mercurial/dispatch.py", line 976, in _runcommand
    return checkargs()
  File "/Users/gps/src/hgcustom/version-control-tools/venv/lib/python2.7/site-packages/mercurial/dispatch.py", line 947, in checkargs
    return cmdfunc()
  File "/Users/gps/src/hgcustom/version-control-tools/venv/lib/python2.7/site-packages/mercurial/dispatch.py", line 882, in <lambda>
    d = lambda: util.checksignature(func)(ui, *args, **cmdoptions)
  File "/Users/gps/src/hgcustom/version-control-tools/venv/lib/python2.7/site-packages/mercurial/util.py", line 716, in check
    return func(*args, **kwargs)
  File "/Users/gps/src/hgcustom/version-control-tools/venv/lib/python2.7/site-packages/mercurial/extensions.py", line 168, in closure
    return func(*(args + a), **kw)
  File "/Users/gps/src/hgcustom/version-control-tools/venv/lib/python2.7/site-packages/mercurial/util.py", line 716, in check
    return func(*args, **kwargs)
  File "/Users/gps/src/hgcustom/version-control-tools/hgext/reviewboard/client.py", line 100, in pushcommand
    return orig(ui, repo, *args, **kwargs)
  File "/Users/gps/src/hgcustom/version-control-tools/venv/lib/python2.7/site-packages/mercurial/util.py", line 716, in check
    return func(*args, **kwargs)
  File "/Users/gps/src/hgcustom/version-control-tools/venv/lib/python2.7/site-packages/mercurial/extensions.py", line 168, in closure
    return func(*(args + a), **kw)
  File "/Users/gps/src/hgcustom/version-control-tools/venv/lib/python2.7/site-packages/mercurial/util.py", line 716, in check
    return func(*args, **kwargs)
  File "/Users/gps/src/hgcustom/version-control-tools/venv/lib/python2.7/site-packages/hgext/mq.py", line 3505, in mqcommand
    return orig(ui, repo, *args, **kwargs)
  File "/Users/gps/src/hgcustom/version-control-tools/venv/lib/python2.7/site-packages/mercurial/util.py", line 716, in check
    return func(*args, **kwargs)
  File "/Users/gps/src/hgcustom/version-control-tools/venv/lib/python2.7/site-packages/mercurial/extensions.py", line 168, in closure
    return func(*(args + a), **kw)
  File "/Users/gps/src/hgcustom/version-control-tools/venv/lib/python2.7/site-packages/mercurial/util.py", line 716, in check
    return func(*args, **kwargs)
  File "/Users/gps/src/hgext/prompt/prompt.py", line 442, in _push_with_cache
    res = orig(ui, repo, *args, **opts)
  File "/Users/gps/src/hgcustom/version-control-tools/venv/lib/python2.7/site-packages/mercurial/util.py", line 716, in check
    return func(*args, **kwargs)
  File "/Users/gps/src/hgcustom/version-control-tools/venv/lib/python2.7/site-packages/mercurial/extensions.py", line 168, in closure
    return func(*(args + a), **kw)
  File "/Users/gps/src/hgcustom/version-control-tools/venv/lib/python2.7/site-packages/mercurial/util.py", line 716, in check
    return func(*args, **kwargs)
  File "/Users/gps/src/hgext/mutable-history/hgext/evolve.py", line 714, in warnobserrors
    ret = orig(ui, repo, *args, **kwargs)
  File "/Users/gps/src/hgcustom/version-control-tools/venv/lib/python2.7/site-packages/mercurial/util.py", line 716, in check
    return func(*args, **kwargs)
  File "/Users/gps/src/hgcustom/version-control-tools/venv/lib/python2.7/site-packages/mercurial/commands.py", line 5228, in push
    bookmarks=opts.get('bookmark', ()))
  File "/Users/gps/src/hgcustom/version-control-tools/venv/lib/python2.7/site-packages/mercurial/extensions.py", line 168, in closure
    return func(*(args + a), **kw)
  File "/Users/gps/src/hgcustom/version-control-tools/hgext/reviewboard/client.py", line 162, in wrappedpush
    newbranch=False, **kwargs)
  File "/Users/gps/src/hgcustom/version-control-tools/hgext/reviewboard/client.py", line 188, in wrappedpush
    **kwargs)
  File "/Users/gps/src/hgcustom/version-control-tools/venv/lib/python2.7/site-packages/mercurial/extensions.py", line 168, in closure
    return func(*(args + a), **kw)
  File "/Users/gps/src/hgext/mutable-history/hgext/evolve.py", line 737, in push
    return orig(repo, *args, **opts)
  File "/Users/gps/src/hgcustom/version-control-tools/venv/lib/python2.7/site-packages/mercurial/exchange.py", line 233, in push
    _pushdiscovery(pushop)
  File "/Users/gps/src/hgcustom/version-control-tools/venv/lib/python2.7/site-packages/mercurial/extensions.py", line 168, in closure
    return func(*(args + a), **kw)
  File "/Users/gps/src/hgcustom/version-control-tools/hgext/reviewboard/client.py", line 296, in wrappedpushdiscovery
    backuptopic='addcommitid')
  File "/Users/gps/src/hgcustom/version-control-tools/pylib/mozhg/mozhg/rewrite.py", line 280, in replacechangesets
    obsolete.createmarkers(repo, markers)
  File "/Users/gps/src/hgcustom/version-control-tools/venv/lib/python2.7/site-packages/mercurial/obsolete.py", line 1215, in createmarkers
    % prec)
Abort: cannot obsolete immutable changeset: 6318a3c3a794
abort: cannot obsolete immutable changeset: 6318a3c3a794

Somehow we are attempting to rewrite @, which Mercurial is fortunately not letting us do.

Kip reported a similar issue over IRC last week. I'm optimistic this is identical.

This bug is currently preventing me from pushing some changesets for review because it makes backwards incompatible changes to the client. So assigning to myself to fix.
reviewboard: don't drop revs argument when redirecting (bug 1178957); r?dminor

This is a stupid bug. I can't believe more people haven't encountered
this.
Attachment #8627860 - Flags: review?(dminor)
It also appears that `hg push -r <public changeset>` results in badness. I can't believe we didn't have a check for that. Yay more bugs.
Comment on attachment 8627860 [details]
MozReview Request: reviewboard: don't drop revs argument when redirecting (bug 1178957); r?smacleod

reviewboard: don't drop revs argument when redirecting (bug 1178957); r?smacleod

This is a stupid bug. I can't believe more people haven't encountered
this.
Attachment #8627860 - Attachment description: MozReview Request: reviewboard: don't drop revs argument when redirecting (bug 1178957); r?dminor → MozReview Request: reviewboard: don't drop revs argument when redirecting (bug 1178957); r?smacleod
Attachment #8627860 - Flags: review?(dminor) → review?(smacleod)
reviewboard: prevent reviews with public changesets (bug 1178957); r?smacleod

Before this commit, if the working copy was public or the user
explicitly requested review of public changesets, we might have
attempted to review public changesets. Coupled with the changes to
rewrite commits during push, and Mercurial would abort when trying to
mutate public changesets.

This commit does 2 things. First, it prints a message for each public
changeset that is dropped from the request to review. Second, it aborts
when there are no non-public changesets left for review and a review
cannot be conducted. Users now have a better understanding of what is
going on under the covers and they won't get a weird error when trying
to push public changesets.
Attachment #8628018 - Flags: review?(smacleod)
Comment on attachment 8627860 [details]
MozReview Request: reviewboard: don't drop revs argument when redirecting (bug 1178957); r?smacleod

https://reviewboard.mozilla.org/r/12297/#review11213

Ship It!
Attachment #8627860 - Flags: review?(smacleod) → review+
Comment on attachment 8628018 [details]
MozReview Request: reviewboard: prevent reviews with public changesets (bug 1178957); r?smacleod

https://reviewboard.mozilla.org/r/12351/#review11221

Ship It!
Attachment #8628018 - Flags: review?(smacleod) → review+
url:        https://hg.mozilla.org/hgcustom/version-control-tools/rev/cd3c4b18f6a2a83d5fc4d4cc88e8486107612697
changeset:  cd3c4b18f6a2a83d5fc4d4cc88e8486107612697
user:       Gregory Szorc <gps@mozilla.com>
date:       Mon Jul 06 15:37:56 2015 -0700
description:
reviewboard: don't drop revs argument when redirecting (bug 1178957); r=smacleod

This is a stupid bug. I can't believe more people haven't encountered
this.

url:        https://hg.mozilla.org/hgcustom/version-control-tools/rev/35c5204a721da9f1a799bc4883b2ab777d05bbd7
changeset:  35c5204a721da9f1a799bc4883b2ab777d05bbd7
user:       Gregory Szorc <gps@mozilla.com>
date:       Mon Jul 06 15:38:13 2015 -0700
description:
reviewboard: prevent reviews with public changesets (bug 1178957); r=smacleod

Before this commit, if the working copy was public or the user
explicitly requested review of public changesets, we might have
attempted to review public changesets. Coupled with the changes to
rewrite commits during push, and Mercurial would abort when trying to
mutate public changesets.

This commit does 2 things. First, it prints a message for each public
changeset that is dropped from the request to review. Second, it aborts
when there are no non-public changesets left for review and a review
cannot be conducted. Users now have a better understanding of what is
going on under the covers and they won't get a weird error when trying
to push public changesets.
Status: ASSIGNED → RESOLVED
Closed: 9 years ago
Resolution: --- → FIXED
Product: Developer Services → MozReview
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: