Details
Details
Diff Detail
Diff Detail
- Repository
- rHG Mercurial
- Lint
Lint Skipped - Unit
Unit Tests Skipped
Lint Skipped |
Unit Tests Skipped |
Path | Packages | |||
---|---|---|---|---|
M | hgext/journal.py (6 lines) | |||
M | hgext/mq.py (4 lines) | |||
M | hgext/patchbomb.py (4 lines) | |||
M | hgext/schemes.py (2 lines) |
with self.jlock(vfs): | with self.jlock(vfs): | ||||
version = None | version = None | ||||
# open file in amend mode to ensure it is created if missing | # open file in amend mode to ensure it is created if missing | ||||
with vfs('namejournal', mode='a+b') as f: | with vfs('namejournal', mode='a+b') as f: | ||||
f.seek(0, os.SEEK_SET) | f.seek(0, os.SEEK_SET) | ||||
# Read just enough bytes to get a version number (up to 2 | # Read just enough bytes to get a version number (up to 2 | ||||
# digits plus separator) | # digits plus separator) | ||||
version = f.read(3).partition('\0')[0] | version = f.read(3).partition('\0')[0] | ||||
if version and version != str(storageversion): | if version and version != "%d" % storageversion: | ||||
# different version of the storage. Exit early (and not | # different version of the storage. Exit early (and not | ||||
# write anything) if this is not a version we can handle or | # write anything) if this is not a version we can handle or | ||||
# the file is corrupt. In future, perhaps rotate the file | # the file is corrupt. In future, perhaps rotate the file | ||||
# instead? | # instead? | ||||
self.ui.warn( | self.ui.warn( | ||||
_("unsupported journal file version '%s'\n") % version) | _("unsupported journal file version '%s'\n") % version) | ||||
return | return | ||||
if not version: | if not version: | ||||
# empty file, write version first | # empty file, write version first | ||||
f.write(str(storageversion) + '\0') | f.write(("%d" % storageversion) + '\0') | ||||
f.seek(0, os.SEEK_END) | f.seek(0, os.SEEK_END) | ||||
f.write(bytes(entry) + '\0') | f.write(bytes(entry) + '\0') | ||||
def filtered(self, namespace=None, name=None): | def filtered(self, namespace=None, name=None): | ||||
"""Yield all journal entries with the given namespace or name | """Yield all journal entries with the given namespace or name | ||||
Both the namespace and the name are optional; if neither is given all | Both the namespace and the name are optional; if neither is given all | ||||
entries in the journal are produced. | entries in the journal are produced. | ||||
if not vfs.exists(filename): | if not vfs.exists(filename): | ||||
return | return | ||||
with vfs(filename) as f: | with vfs(filename) as f: | ||||
raw = f.read() | raw = f.read() | ||||
lines = raw.split('\0') | lines = raw.split('\0') | ||||
version = lines and lines[0] | version = lines and lines[0] | ||||
if version != str(storageversion): | if version != "%d" % storageversion: | ||||
version = version or _('not available') | version = version or _('not available') | ||||
raise error.Abort(_("unknown journal file version '%s'") % version) | raise error.Abort(_("unknown journal file version '%s'") % version) | ||||
# Skip the first line, it's a version number. Normally we iterate over | # Skip the first line, it's a version number. Normally we iterate over | ||||
# these in reverse order to list newest first; only when copying across | # these in reverse order to list newest first; only when copying across | ||||
# a shared storage do we forgo reversing. | # a shared storage do we forgo reversing. | ||||
lines = lines[1:] | lines = lines[1:] | ||||
if _newestfirst: | if _newestfirst: |
self.ui.write(patchname, label='qseries.' + state) | self.ui.write(patchname, label='qseries.' + state) | ||||
self.ui.write('\n') | self.ui.write('\n') | ||||
applied = set([p.name for p in self.applied]) | applied = set([p.name for p in self.applied]) | ||||
if length is None: | if length is None: | ||||
length = len(self.series) - start | length = len(self.series) - start | ||||
if not missing: | if not missing: | ||||
if self.ui.verbose: | if self.ui.verbose: | ||||
idxwidth = len(str(start + length - 1)) | idxwidth = len("%d" % (start + length - 1)) | ||||
for i in xrange(start, start + length): | for i in xrange(start, start + length): | ||||
patch = self.series[i] | patch = self.series[i] | ||||
if patch in applied: | if patch in applied: | ||||
char, state = 'A', 'applied' | char, state = 'A', 'applied' | ||||
elif self.pushable(i)[0]: | elif self.pushable(i)[0]: | ||||
char, state = 'U', 'unapplied' | char, state = 'U', 'unapplied' | ||||
else: | else: | ||||
char, state = 'G', 'guarded' | char, state = 'G', 'guarded' | ||||
return nextpatch(end + 1) | return nextpatch(end + 1) | ||||
return nextpatch(end) | return nextpatch(end) | ||||
def appliedname(self, index): | def appliedname(self, index): | ||||
pname = self.applied[index].name | pname = self.applied[index].name | ||||
if not self.ui.verbose: | if not self.ui.verbose: | ||||
p = pname | p = pname | ||||
else: | else: | ||||
p = str(self.series.index(pname)) + " " + pname | p = ("%d" % self.series.index(pname)) + " " + pname | ||||
return p | return p | ||||
def qimport(self, repo, files, patchname=None, rev=None, existing=None, | def qimport(self, repo, files, patchname=None, rev=None, existing=None, | ||||
force=None, git=False): | force=None, git=False): | ||||
def checkseries(patchname): | def checkseries(patchname): | ||||
if patchname in self.series: | if patchname in self.series: | ||||
raise error.Abort(_('patch %s is already in the series file') | raise error.Abort(_('patch %s is already in the series file') | ||||
% patchname) | % patchname) |
"""build prefix to patch subject""" | """build prefix to patch subject""" | ||||
flag = _formatflags(ui, repo, rev, flags) | flag = _formatflags(ui, repo, rev, flags) | ||||
if flag: | if flag: | ||||
flag = ' ' + flag | flag = ' ' + flag | ||||
if not numbered: | if not numbered: | ||||
return '[PATCH%s]' % flag | return '[PATCH%s]' % flag | ||||
else: | else: | ||||
tlen = len(str(total)) | tlen = len("%d" % total) | ||||
return '[PATCH %0*d of %d%s]' % (tlen, idx, total, flag) | return '[PATCH %0*d of %d%s]' % (tlen, idx, total, flag) | ||||
def makepatch(ui, repo, rev, patchlines, opts, _charsets, idx, total, numbered, | def makepatch(ui, repo, rev, patchlines, opts, _charsets, idx, total, numbered, | ||||
patchname=None): | patchname=None): | ||||
desc = [] | desc = [] | ||||
node = None | node = None | ||||
body = '' | body = '' | ||||
if bookmark not in repo._bookmarks: | if bookmark not in repo._bookmarks: | ||||
raise error.Abort(_("bookmark '%s' not found") % bookmark) | raise error.Abort(_("bookmark '%s' not found") % bookmark) | ||||
revs = repair.stripbmrevset(repo, bookmark) | revs = repair.stripbmrevset(repo, bookmark) | ||||
revs = scmutil.revrange(repo, revs) | revs = scmutil.revrange(repo, revs) | ||||
if outgoing: | if outgoing: | ||||
revs = _getoutgoing(repo, dest, revs) | revs = _getoutgoing(repo, dest, revs) | ||||
if bundle: | if bundle: | ||||
opts['revs'] = [str(r) for r in revs] | opts['revs'] = ["%d" % r for r in revs] | ||||
# check if revision exist on the public destination | # check if revision exist on the public destination | ||||
publicurl = repo.ui.config('patchbomb', 'publicurl') | publicurl = repo.ui.config('patchbomb', 'publicurl') | ||||
if publicurl: | if publicurl: | ||||
repo.ui.debug('checking that revision exist in the public repo\n') | repo.ui.debug('checking that revision exist in the public repo\n') | ||||
try: | try: | ||||
publicpeer = hg.peer(repo, {}, publicurl) | publicpeer = hg.peer(repo, {}, publicurl) | ||||
except error.RepoError: | except error.RepoError: |
except IndexError: | except IndexError: | ||||
raise error.Abort(_("no '://' in scheme url '%s'") % url) | raise error.Abort(_("no '://' in scheme url '%s'") % url) | ||||
parts = url.split('/', self.parts) | parts = url.split('/', self.parts) | ||||
if len(parts) > self.parts: | if len(parts) > self.parts: | ||||
tail = parts[-1] | tail = parts[-1] | ||||
parts = parts[:-1] | parts = parts[:-1] | ||||
else: | else: | ||||
tail = '' | tail = '' | ||||
context = dict((str(i + 1), v) for i, v in enumerate(parts)) | context = dict(('%d' % (i + 1), v) for i, v in enumerate(parts)) | ||||
return ''.join(self.templater.process(self.url, context)) + tail | return ''.join(self.templater.process(self.url, context)) + tail | ||||
def hasdriveletter(orig, path): | def hasdriveletter(orig, path): | ||||
if path: | if path: | ||||
for scheme in schemes: | for scheme in schemes: | ||||
if path.startswith(scheme + ':'): | if path.startswith(scheme + ':'): | ||||
return False | return False | ||||
return orig(path) | return orig(path) |