diff --git a/hgext/shelve.py b/hgext/shelve.py --- a/hgext/shelve.py +++ b/hgext/shelve.py @@ -156,11 +156,14 @@ def createcmd(ui, repo, pats, opts): # check modified, added, removed, deleted only for flist in repo.status(match=match)[:4]: shelvedfiles.extend(flist) - saved, repo.mq.checkapplied = repo.mq.checkapplied, False + hasmq = util.safehasattr(repo, 'mq') + if hasmq: + saved, repo.mq.checkapplied = repo.mq.checkapplied, False try: return repo.commit(message, user, opts.get('date'), match) finally: - repo.mq.checkapplied = saved + if hasmq: + repo.mq.checkapplied = saved if parent.node() != nullid: desc = parent.description().split('\n', 1)[0] diff --git a/tests/test-shelve.t b/tests/test-shelve.t --- a/tests/test-shelve.t +++ b/tests/test-shelve.t @@ -438,3 +438,18 @@ test bookmarks 0 files updated, 0 files merged, 0 files removed, 0 files unresolved $ hg bookmark * test 5:01ba9745dc5a + +shelve should still work even if mq is disabled + + $ hg --config extensions.mq=! shelve + shelved as test + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ hg --config extensions.mq=! shelve --list + test (1s ago) create conflict + $ hg --config extensions.mq=! unshelve + unshelving change 'test' + adding changesets + adding manifests + adding file changes + added 1 changesets with 1 changes to 7 files + 0 files updated, 0 files merged, 0 files removed, 0 files unresolved