##// END OF EJS Templates
dateutil: correct default for Ymd in parsedate...
dateutil: correct default for Ymd in parsedate The code uses `0` for the default value of Ymd (year, month, and day), which seems suboptimal. For example, these will fail to parse: dateutil.parsedate('2000', formats=dateutil.extendeddateformats) dateutil.parsedate('Jan 2000', formats=dateutil.extendeddateformats) Fix it by providing sane defaults (1 instead of 0) for year, month, and day. The suboptimal behavior was introduced by 91bc001a592 (2010-12-29, "date: fix matching of underspecified date ranges"), which does not seem to justify the current behavior. Note end-users should not notice the subtle issue, because there are no formats in `defaultdateformats` that allow an explicit year with omitted month, or an explicit month with omitted day. Differential Revision: https://phab.mercurial-scm.org/D7520

File last commit:

r43347:687b865b default
r44170:aef7b91d default
Show More
rewriteutil.py
55 lines | 1.6 KiB | text/x-python | PythonLexer
# rewriteutil.py - utility functions for rewriting changesets
#
# Copyright 2017 Octobus <contact@octobus.net>
#
# This software may be used and distributed according to the terms of the
# GNU General Public License version 2 or any later version.
from __future__ import absolute_import
from .i18n import _
from . import (
error,
node,
obsolete,
revset,
)
def precheck(repo, revs, action=b'rewrite'):
"""check if revs can be rewritten
action is used to control the error message.
Make sure this function is called after taking the lock.
"""
if node.nullrev in revs:
msg = _(b"cannot %s null changeset") % action
hint = _(b"no changeset checked out")
raise error.Abort(msg, hint=hint)
if len(repo[None].parents()) > 1:
raise error.Abort(_(b"cannot %s while merging") % action)
publicrevs = repo.revs(b'%ld and public()', revs)
if publicrevs:
msg = _(b"cannot %s public changesets") % action
hint = _(b"see 'hg help phases' for details")
raise error.Abort(msg, hint=hint)
newunstable = disallowednewunstable(repo, revs)
if newunstable:
raise error.Abort(_(b"cannot %s changeset with children") % action)
def disallowednewunstable(repo, revs):
"""Checks whether editing the revs will create new unstable changesets and
are we allowed to create them.
To allow new unstable changesets, set the config:
`experimental.evolution.allowunstable=True`
"""
allowunstable = obsolete.isenabled(repo, obsolete.allowunstableopt)
if allowunstable:
return revset.baseset()
return repo.revs(b"(%ld::) - %ld", revs, revs)