##// END OF EJS Templates
wrapfunction: use sysstr instead of bytes as argument in "histedit"...
wrapfunction: use sysstr instead of bytes as argument in "histedit" This is as valid and simpler, it will help us to eventually get ride of `safehasattr`.

File last commit:

r49730:6000f5b2 default
r51674:0fbc0c97 default
Show More
commitextras.py
88 lines | 2.3 KiB | text/x-python | PythonLexer
Pulkit Goyal
commitextras: move fb extension to core which add extras to a commit...
r33546 # commitextras.py
#
# Copyright 2013 Facebook, Inc.
#
# This software may be used and distributed according to the terms of the
# GNU General Public License version 2 or any later version.
Pulkit Goyal
commitextras: mark the extension as ADVANCED
r33562 '''adds a new flag extras to commit (ADVANCED)'''
Pulkit Goyal
commitextras: move fb extension to core which add extras to a commit...
r33546
Pulkit Goyal
commitextras: make sure keys contains ascii letters, numbers, '_' and '-' only
r33603 import re
Pulkit Goyal
commitextras: move fb extension to core which add extras to a commit...
r33546 from mercurial.i18n import _
from mercurial import (
commands,
Pulkit Goyal
commitextras: check the format of the arguments and no internal key is used...
r33547 error,
Pulkit Goyal
commitextras: move fb extension to core which add extras to a commit...
r33546 extensions,
registrar,
Valentin Gatien-Baron
commitextras: work nicely with other extensions...
r39330 util,
Pulkit Goyal
commitextras: move fb extension to core which add extras to a commit...
r33546 )
cmdtable = {}
command = registrar.command(cmdtable)
Augie Fackler
formatting: byteify all mercurial/ and hgext/ string literals...
r43347 testedwith = b'ships-with-hg-core'
Pulkit Goyal
commitextras: move fb extension to core which add extras to a commit...
r33546
Pulkit Goyal
commitextras: check the format of the arguments and no internal key is used...
r33547 usedinternally = {
Augie Fackler
formatting: byteify all mercurial/ and hgext/ string literals...
r43347 b'amend_source',
b'branch',
b'close',
b'histedit_source',
b'topic',
b'rebase_source',
b'intermediate-source',
b'__touch-noise__',
b'source',
b'transplant_source',
Pulkit Goyal
commitextras: check the format of the arguments and no internal key is used...
r33547 }
Augie Fackler
formatting: blacken the codebase...
r43346
Pulkit Goyal
commitextras: move fb extension to core which add extras to a commit...
r33546 def extsetup(ui):
Augie Fackler
formatting: byteify all mercurial/ and hgext/ string literals...
r43347 entry = extensions.wrapcommand(commands.table, b'commit', _commit)
Pulkit Goyal
commitextras: move fb extension to core which add extras to a commit...
r33546 options = entry[1]
Augie Fackler
formatting: blacken the codebase...
r43346 options.append(
Augie Fackler
formatting: byteify all mercurial/ and hgext/ string literals...
r43347 (
b'',
b'extra',
[],
_(b'set a changeset\'s extra values'),
_(b"KEY=VALUE"),
)
Augie Fackler
formatting: blacken the codebase...
r43346 )
Pulkit Goyal
commitextras: move fb extension to core which add extras to a commit...
r33546
def _commit(orig, ui, repo, *pats, **opts):
Martin von Zweigbergk
py3: delete b'' prefix from safehasattr arguments...
r43385 if util.safehasattr(repo, 'unfiltered'):
Valentin Gatien-Baron
commitextras: work nicely with other extensions...
r39330 repo = repo.unfiltered()
Augie Fackler
formatting: blacken the codebase...
r43346
Valentin Gatien-Baron
commitextras: work nicely with other extensions...
r39330 class repoextra(repo.__class__):
def commit(self, *innerpats, **inneropts):
Augie Fackler
cleanup: remove pointless r-prefixes on single-quoted strings...
r43906 extras = opts.get('extra')
Valentin Gatien-Baron
commitextras: no need to special case extras=[]...
r39331 for raw in extras:
Augie Fackler
formatting: byteify all mercurial/ and hgext/ string literals...
r43347 if b'=' not in raw:
Augie Fackler
formatting: blacken the codebase...
r43346 msg = _(
Augie Fackler
formatting: byteify all mercurial/ and hgext/ string literals...
r43347 b"unable to parse '%s', should follow "
b"KEY=VALUE format"
Augie Fackler
formatting: blacken the codebase...
r43346 )
Martin von Zweigbergk
errors: use detailed error for invalid commit-extras argument...
r49193 raise error.InputError(msg % raw)
Augie Fackler
formatting: byteify all mercurial/ and hgext/ string literals...
r43347 k, v = raw.split(b'=', 1)
Valentin Gatien-Baron
commitextras: no need to special case extras=[]...
r39331 if not k:
Augie Fackler
formatting: byteify all mercurial/ and hgext/ string literals...
r43347 msg = _(b"unable to parse '%s', keys can't be empty")
Martin von Zweigbergk
errors: use detailed error for invalid commit-extras argument...
r49193 raise error.InputError(msg % raw)
Gregory Szorc
global: use raw strings for regular expressions with escapes...
r41673 if re.search(br'[^\w-]', k):
Augie Fackler
formatting: blacken the codebase...
r43346 msg = _(
Augie Fackler
formatting: byteify all mercurial/ and hgext/ string literals...
r43347 b"keys can only contain ascii letters, digits,"
b" '_' and '-'"
Augie Fackler
formatting: blacken the codebase...
r43346 )
Martin von Zweigbergk
errors: use detailed error for invalid commit-extras argument...
r49193 raise error.InputError(msg)
Valentin Gatien-Baron
commitextras: no need to special case extras=[]...
r39331 if k in usedinternally:
Augie Fackler
formatting: blacken the codebase...
r43346 msg = _(
Augie Fackler
formatting: byteify all mercurial/ and hgext/ string literals...
r43347 b"key '%s' is used internally, can't be set "
b"manually"
Augie Fackler
formatting: blacken the codebase...
r43346 )
Martin von Zweigbergk
errors: use detailed error for invalid commit-extras argument...
r49193 raise error.InputError(msg % k)
Augie Fackler
cleanup: remove pointless r-prefixes on single-quoted strings...
r43906 inneropts['extra'][k] = v
Valentin Gatien-Baron
commitextras: work nicely with other extensions...
r39330 return super(repoextra, self).commit(*innerpats, **inneropts)
Augie Fackler
formatting: blacken the codebase...
r43346
Valentin Gatien-Baron
commitextras: work nicely with other extensions...
r39330 repo.__class__ = repoextra
return orig(ui, repo, *pats, **opts)