本文整理汇总了Python中mercurial.hg.clean函数的典型用法代码示例。如果您正苦于以下问题:Python clean函数的具体用法?Python clean怎么用?Python clean使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了clean函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: harvest
def harvest(ui, repo, branch, dest="default", **opts):
"""Close and merge a named branch into the destination branch"""
if branch not in repo.branchtags():
ui.warn("Branch %s does not exist! (use 'hg branches' to get a list of branches)\n" % branch)
return
if dest not in repo.branchtags():
ui.warn("Destination branch %s does not exist! (use 'hg branches' to get a list of branches)\n" % branch)
return
heads = repo.branchheads(branch)
if len(heads) == 0:
ui.warn("Cannot harvest branch %s because it is currently closed. \nUse 'hg merge' to merge it manually.\n" % branch)
return
if len(heads) > 1:
ui.warn("Branch %s has multiple heads. \nUse 'hg merge' to merge it manually.\n" % branch)
return
rev = repo.branchtip(branch)
newrev = context.memctx(repo, [rev, None], "Closed branch %s" % branch, [], None, opts.get('user'), opts.get('date'), extra={'close':1, 'branch':branch})
newrev.commit()
#don't need to switch if already on destination branch
curr = repo[None].branch()
if dest != curr:
hg.clean(repo, dest, False)
ui.status("Switched to branch %s before merging\n" % dest)
failed = hg.merge(repo, branch, remind = False)
if not failed:
repo.commit("Merged %s" % branch, opts.get('user'), opts.get('date'), None)
ui.status("Completed merge of %s into %s\n" % (branch, dest))
开发者ID:jbowtie,项目名称:hg-branching,代码行数:33,代码来源:__init__.py
示例2: strip
def strip(ui, repo, revs, update=True, backup=True, force=None, bookmarks=None):
wlock = lock = None
try:
wlock = repo.wlock()
lock = repo.lock()
if update:
checklocalchanges(repo, force=force)
urev, p2 = repo.changelog.parents(revs[0])
if (util.safehasattr(repo, 'mq') and
p2 != nullid
and p2 in [x.node for x in repo.mq.applied]):
urev = p2
hg.clean(repo, urev)
repo.dirstate.write(repo.currenttransaction())
repair.strip(ui, repo, revs, backup)
repomarks = repo._bookmarks
if bookmarks:
with repo.transaction('strip') as tr:
if repo._activebookmark in bookmarks:
bookmarksmod.deactivate(repo)
for bookmark in bookmarks:
del repomarks[bookmark]
repomarks.recordchange(tr)
for bookmark in sorted(bookmarks):
ui.write(_("bookmark '%s' deleted\n") % bookmark)
finally:
release(lock, wlock)
开发者ID:motlin,项目名称:cyg,代码行数:30,代码来源:strip.py
示例3: cleanup
def cleanup(self):
try:
commands.revert(self.repo.ui, self.repo, date=None, rev=None,
all=True, no_backup=True)
hg.clean(self.repo, self.branch, show_stats=False)
except Exception, e:
logger.error(e)
开发者ID:dahool,项目名称:vertaal,代码行数:7,代码来源:hg.py
示例4: test_push_executable_file
def test_push_executable_file(self):
self.test_push_to_default(commit=True)
repo = self.repo
def file_callback(repo, memctx, path):
if path == 'gamma':
return context.memfilectx(path=path,
data='foo',
islink=False,
isexec=True,
copied=False)
raise IOError(errno.EINVAL, 'Invalid operation: ' + path)
ctx = context.memctx(repo,
(repo['tip'].node(), node.nullid),
'message',
['gamma', ],
file_callback,
'author',
'2008-10-29 21:26:00 -0500',
{'branch': 'default', })
new_hash = repo.commitctx(ctx)
hg.clean(repo, repo['tip'].node())
self.pushrevisions()
tip = self.repo['tip']
self.assertNotEqual(tip.node(), new_hash)
self.assert_('@' in self.repo['tip'].user())
self.assertEqual(tip['gamma'].flags(), 'x')
self.assertEqual(tip['gamma'].data(), 'foo')
self.assertEqual([x for x in tip.manifest().keys() if 'x' not in
tip[x].flags()], ['alpha', 'beta', 'adding_file', ])
开发者ID:bulwinkel,项目名称:dot-files,代码行数:29,代码来源:test_push_command.py
示例5: strip
def strip(ui, repo, revs, update=True, backup=True, force=None, bookmark=None):
wlock = lock = None
try:
wlock = repo.wlock()
lock = repo.lock()
if update:
checklocalchanges(repo, force=force)
urev, p2 = repo.changelog.parents(revs[0])
if (util.safehasattr(repo, 'mq') and
p2 != nullid
and p2 in [x.node for x in repo.mq.applied]):
urev = p2
hg.clean(repo, urev)
repo.dirstate.write()
repair.strip(ui, repo, revs, backup)
marks = repo._bookmarks
if bookmark:
if bookmark == repo._bookmarkcurrent:
bookmarks.unsetcurrent(repo)
del marks[bookmark]
marks.write()
ui.write(_("bookmark '%s' deleted\n") % bookmark)
finally:
release(lock, wlock)
开发者ID:areshero,项目名称:ThirdWorldApp,代码行数:27,代码来源:strip.py
示例6: switch_branch
def switch_branch(ui, repo, branch, **opts):
"""Switch to the named branch"""
if branch not in repo.branchtags():
ui.warn("Branch %s does not exist! (use 'hg branches' to get a list of branches)\n" % branch)
return
curr = repo[None].branch()
if branch == curr:
ui.status("Already on branch %s\n" % branch)
return
hg.clean(repo, branch)
开发者ID:jbowtie,项目名称:hg-branching,代码行数:10,代码来源:__init__.py
示例7: clean
def clean(self, rev=None):
'''Bring workspace up to REV (or tip) forcefully (discarding in
progress changes)'''
if rev != None:
rev = self.repo.lookup(rev)
else:
rev = self.repo.changelog.tip()
hg.clean(self.repo, rev, show_stats=False)
开发者ID:apprisi,项目名称:illumos-gate,代码行数:10,代码来源:WorkSpace.py
示例8: cleanup
def cleanup(self, repo, pats=[], opts={}):
'''removes all changes from the working copy and makes it so
there isn't a patch applied'''
node = repo.dirstate.parents()[0]
if not pats and not opts.get('include') and not opts.get('exclude'):
hg.clean(repo, node, False)
else:
opts['date'] = None
opts['all'] = True # Just to trick revert
opts['rev'] = node
commands.revert(self.ui, repo, *pats, **opts)
self.applied = ''
self.persiststate()
开发者ID:michaelbernstein,项目名称:homedir,代码行数:13,代码来源:attic.py
示例9: commitchanges
def commitchanges(self, changes, parent='tip', message='automated test'):
"""Commit changes to mercurial directory
'changes' is a sequence of tuples (source, dest, data). It can look
like:
- (source, source, data) to set source content to data
- (source, dest, None) to set dest content to source one, and mark it as
copied from source.
- (source, dest, data) to set dest content to data, and mark it as copied
from source.
- (source, None, None) to remove source.
"""
repo = self.repo
parentctx = repo[parent]
changed, removed = [], []
for source, dest, newdata in changes:
if dest is None:
removed.append(source)
else:
changed.append(dest)
def filectxfn(repo, memctx, path):
if path in removed:
return compathacks.filectxfn_deleted(memctx, path)
entry = [e for e in changes if path == e[1]][0]
source, dest, newdata = entry
if newdata is None:
newdata = parentctx[source].data()
copied = None
if source != dest:
copied = source
return compathacks.makememfilectx(repo,
path=dest,
data=newdata,
islink=False,
isexec=False,
copied=copied)
ctx = context.memctx(repo,
(parentctx.node(), node.nullid),
message,
changed + removed,
filectxfn,
'an_author',
'2008-10-07 20:59:48 -0500')
nodeid = repo.commitctx(ctx)
repo = self.repo
hg.clean(repo, nodeid)
return nodeid
开发者ID:fuzzball81,项目名称:dotfiles,代码行数:50,代码来源:test_util.py
示例10: strip
def strip(self, repo, revs, update=True, backup="all", force=None):
wlock = lock = None
try:
wlock = repo.wlock()
lock = repo.lock()
if update:
self.checklocalchanges(repo, force=force, refresh=False)
urev = self.qparents(repo, revs[0])
hg.clean(repo, urev)
repo.dirstate.write()
repair.strip(self.ui, repo, revs, backup)
finally:
release(lock, wlock)
开发者ID:peiyaoyao,项目名称:intellij-community,代码行数:15,代码来源:mq.py
示例11: process_revision
def process_revision(revision):
# change to revision and create metrics
print 'Processing revision : %s' % revision
# change repository to revision
hg.clean(repo, revision)
# collect files to process
exclude = re.compile('|'.join([translate(ep)
for ep in exclude_pattern]))
files = [os.path.relpath(os.path.join(dp, name), base) for
(dp, dn, fn) in os.walk(base)
for name in fn
if not exclude.match(os.path.relpath(os.path.join(dp, name), base))]
print 'Number of files to process : %d' % len(files)
return create_metrics(files)
开发者ID:pombredanne,项目名称:visualiser,代码行数:16,代码来源:hg_walker.py
示例12: update
def update(ui, args, repo, clean=False, **opts):
"""update to a specified Subversion revision number
"""
assert len(args) == 1
rev = int(args[0])
meta = repo.svnmeta()
answers = []
for k, v in meta.revmap.iteritems():
if k[0] == rev:
answers.append((v, k[1]))
if len(answers) == 1:
if clean:
return hg.clean(repo, answers[0][0])
return hg.update(repo, answers[0][0])
elif len(answers) == 0:
ui.status('revision %s did not produce an hg revision\n' % rev)
return 1
else:
ui.status('ambiguous revision!\n')
revs = ['%s on %s' % (node.hex(a[0]), a[1]) for a in answers] + ['']
ui.status('\n'.join(revs))
return 1
开发者ID:chaptastic,项目名称:config_files,代码行数:25,代码来源:svncommands.py
示例13: update
def update(ui, args, repo, clean=False, **opts):
"""update to a specified Subversion revision number
"""
try:
rev = int(args[0])
except IndexError:
raise error.CommandError('svn',
"no revision number specified for 'update'")
except ValueError:
raise error.Abort("'%s' is not a valid Subversion revision number"
% args[0])
meta = repo.svnmeta()
answers = []
for k, v in meta.revmap.iteritems():
if k[0] == rev:
answers.append((v, k[1]))
if len(answers) == 1:
if clean:
return hg.clean(repo, answers[0][0])
return hg.update(repo, answers[0][0])
elif len(answers) == 0:
ui.status('revision %s did not produce an hg revision\n' % rev)
return 1
else:
ui.status('ambiguous revision!\n')
revs = ['%s on %s' % (node.hex(a[0]), a[1]) for a in answers] + ['']
ui.status('\n'.join(revs))
return 1
开发者ID:fuzzball81,项目名称:dotfiles,代码行数:32,代码来源:svncommands.py
示例14: strip
def strip(ui, repo, revs, update=True, backup="all", force=None):
wlock = lock = None
try:
wlock = repo.wlock()
lock = repo.lock()
if update:
checklocalchanges(repo, force=force)
urev, p2 = repo.changelog.parents(revs[0])
if p2 != nullid and p2 in [x.node for x in repo.mq.applied]:
urev = p2
hg.clean(repo, urev)
repo.dirstate.write()
repair.strip(ui, repo, revs, backup)
finally:
release(lock, wlock)
开发者ID:jordigh,项目名称:mercurial-crew,代码行数:17,代码来源:strip.py
示例15: postincoming
def postincoming(other, modheads):
if modheads == 0:
return 0
if modheads == 1:
return hg.clean(repo, repo.changelog.tip())
newheads = repo.heads(parent)
newchildren = [n for n in repo.heads(parent) if n != parent]
newparent = parent
if newchildren:
newparent = newchildren[0]
hg.clean(repo, newparent)
newheads = [n for n in repo.heads() if n != newparent]
if len(newheads) > 1:
ui.status(_('not merging with %d other new heads '
'(use "hg heads" and "hg merge" to merge them)') %
(len(newheads) - 1))
return
err = False
if newheads:
# By default, we consider the repository we're pulling
# *from* as authoritative, so we merge our changes into
# theirs.
if opts['switch_parent']:
firstparent, secondparent = newparent, newheads[0]
else:
firstparent, secondparent = newheads[0], newparent
ui.status(_('updating to %d:%s\n') %
(repo.changelog.rev(firstparent),
short(firstparent)))
hg.clean(repo, firstparent)
ui.status(_('merging with %d:%s\n') %
(repo.changelog.rev(secondparent), short(secondparent)))
err = hg.merge(repo, secondparent, remind=False)
if not err:
mod, add, rem = repo.status()[:3]
message = (cmdutil.logmessage(opts) or
(_('Automated merge with %s') %
util.removeauth(other.url())))
force_editor = opts.get('force_editor') or opts.get('edit')
n = repo.commit(mod + add + rem, message,
opts['user'], opts['date'], force=True,
force_editor=force_editor)
ui.status(_('new changeset %d:%s merges remote changes '
'with local\n') % (repo.changelog.rev(n),
short(n)))
开发者ID:c0ns0le,项目名称:cygwin,代码行数:45,代码来源:fetch.py
示例16: mergeone
def mergeone(self, repo, mergeq, head, patch, rev, diffopts):
# first try just applying the patch
(err, n) = self.apply(repo, [patch], update_status=False,
strict=True, merge=rev)
if err == 0:
return (err, n)
if n is None:
raise util.Abort(_("apply failed for patch %s") % patch)
self.ui.warn(_("patch didn't work out, merging %s\n") % patch)
# apply failed, strip away that rev and merge.
hg.clean(repo, head)
self.strip(repo, [n], update=False, backup='strip')
ctx = repo[rev]
ret = hg.merge(repo, rev)
if ret:
raise util.Abort(_("update returned %d") % ret)
n = newcommit(repo, None, ctx.description(), ctx.user(), force=True)
if n is None:
raise util.Abort(_("repo commit failed"))
try:
ph = patchheader(mergeq.join(patch), self.plainmode)
except Exception:
raise util.Abort(_("unable to read %s") % patch)
diffopts = self.patchopts(diffopts, patch)
patchf = self.opener(patch, "w")
comments = str(ph)
if comments:
patchf.write(comments)
self.printdiff(repo, diffopts, head, n, fp=patchf)
patchf.close()
self.removeundo(repo)
return (0, n)
开发者ID:peiyaoyao,项目名称:intellij-community,代码行数:38,代码来源:mq.py
示例17: _getRepo
def _getRepo(self):
try:
return self._hg
except AttributeError:
# dirstate walker uses simple string comparison between
# repo root and os.getcwd, so root should be canonified.
from os.path import realpath
ui = self._getUI()
self._hg = hg.repository(ui=ui, path=realpath(self.repository.basedir),
create=False)
# Pick up repository-specific UI settings.
self._ui = self._hg.ui
# 0.9.5 repos does not have update()...
if not hasattr(self._hg, 'update'):
# Use clean(), to force a clean merge clobbering local changes
self._hg.update = lambda n: hg.clean(self._hg, n)
return self._hg
开发者ID:lelit,项目名称:tailor,代码行数:20,代码来源:hg.py
示例18: _histedit
def _histedit(ui, repo, *freeargs, **opts):
# TODO only abort if we try and histedit mq patches, not just
# blanket if mq patches are applied somewhere
mq = getattr(repo, 'mq', None)
if mq and mq.applied:
raise util.Abort(_('source has mq patches applied'))
# basic argument incompatibility processing
outg = opts.get('outgoing')
cont = opts.get('continue')
abort = opts.get('abort')
force = opts.get('force')
rules = opts.get('commands', '')
revs = opts.get('rev', [])
goal = 'new' # This invocation goal, in new, continue, abort
if force and not outg:
raise util.Abort(_('--force only allowed with --outgoing'))
if cont:
if util.any((outg, abort, revs, freeargs, rules)):
raise util.Abort(_('no arguments allowed with --continue'))
goal = 'continue'
elif abort:
if util.any((outg, revs, freeargs, rules)):
raise util.Abort(_('no arguments allowed with --abort'))
goal = 'abort'
else:
if os.path.exists(os.path.join(repo.path, 'histedit-state')):
raise util.Abort(_('history edit already in progress, try '
'--continue or --abort'))
if outg:
if revs:
raise util.Abort(_('no revisions allowed with --outgoing'))
if len(freeargs) > 1:
raise util.Abort(
_('only one repo argument allowed with --outgoing'))
else:
revs.extend(freeargs)
if len(revs) != 1:
raise util.Abort(
_('histedit requires exactly one ancestor revision'))
if goal == 'continue':
(parentctxnode, rules, keep, topmost, replacements) = readstate(repo)
parentctx = repo[parentctxnode]
parentctx, repl = bootstrapcontinue(ui, repo, parentctx, rules, opts)
replacements.extend(repl)
elif goal == 'abort':
(parentctxnode, rules, keep, topmost, replacements) = readstate(repo)
mapping, tmpnodes, leafs, _ntm = processreplacement(repo, replacements)
ui.debug('restore wc to old parent %s\n' % node.short(topmost))
# check whether we should update away
parentnodes = [c.node() for c in repo[None].parents()]
for n in leafs | set([parentctxnode]):
if n in parentnodes:
hg.clean(repo, topmost)
break
else:
pass
cleanupnode(ui, repo, 'created', tmpnodes)
cleanupnode(ui, repo, 'temp', leafs)
os.unlink(os.path.join(repo.path, 'histedit-state'))
return
else:
cmdutil.checkunfinished(repo)
cmdutil.bailifchanged(repo)
topmost, empty = repo.dirstate.parents()
if outg:
if freeargs:
remote = freeargs[0]
else:
remote = None
root = findoutgoing(ui, repo, remote, force, opts)
else:
rootrevs = list(repo.set('roots(%lr)', revs))
if len(rootrevs) != 1:
raise util.Abort(_('The specified revisions must have '
'exactly one common root'))
root = rootrevs[0].node()
keep = opts.get('keep', False)
revs = between(repo, root, topmost, keep)
if not revs:
raise util.Abort(_('%s is not an ancestor of working directory') %
node.short(root))
ctxs = [repo[r] for r in revs]
if not rules:
rules = '\n'.join([makedesc(c) for c in ctxs])
rules += '\n\n'
rules += editcomment % (node.short(root), node.short(topmost))
rules = ui.edit(rules, ui.username())
# Save edit rules in .hg/histedit-last-edit.txt in case
# the user needs to ask for help after something
# surprising happens.
f = open(repo.join('histedit-last-edit.txt'), 'w')
f.write(rules)
f.close()
else:
#.........这里部分代码省略.........
开发者ID:leetaizhu,项目名称:Odoo_ENV_MAC_OS,代码行数:101,代码来源:histedit.py
示例19: fetch
def fetch(ui, repo, source='default', **opts):
'''pull changes from a remote repository, merge new changes if needed.
This finds all changes from the repository at the specified path
or URL and adds them to the local repository.
If the pulled changes add a new branch head, the head is
automatically merged, and the result of the merge is committed.
Otherwise, the working directory is updated to include the new
changes.
When a merge occurs, the newly pulled changes are assumed to be
"authoritative". The head of the new changes is used as the first
parent, with local changes as the second. To switch the merge
order, use --switch-parent.
See 'hg help dates' for a list of formats valid for -d/--date.
'''
date = opts.get('date')
if date:
opts['date'] = util.parsedate(date)
parent, p2 = repo.dirstate.parents()
branch = repo.dirstate.branch()
branchnode = repo.branchtags().get(branch)
if parent != branchnode:
raise util.Abort(_('working dir not at branch tip '
'(use "hg update" to check out branch tip)'))
if p2 != nullid:
raise util.Abort(_('outstanding uncommitted merge'))
wlock = lock = None
try:
wlock = repo.wlock()
lock = repo.lock()
mod, add, rem, del_ = repo.status()[:4]
if mod or add or rem:
raise util.Abort(_('outstanding uncommitted changes'))
if del_:
raise util.Abort(_('working directory is missing some files'))
bheads = repo.branchheads(branch)
bheads = [head for head in bheads if len(repo[head].children()) == 0]
if len(bheads) > 1:
raise util.Abort(_('multiple heads in this branch '
'(use "hg heads ." and "hg merge" to merge)'))
other = hg.repository(cmdutil.remoteui(repo, opts),
ui.expandpath(source))
ui.status(_('pulling from %s\n') %
url.hidepassword(ui.expandpath(source)))
revs = None
if opts['rev']:
try:
revs = [other.lookup(rev) for rev in opts['rev']]
except error.CapabilityError:
err = _("Other repository doesn't support revision lookup, "
"so a rev cannot be specified.")
raise util.Abort(err)
# Are there any changes at all?
modheads = repo.pull(other, heads=revs)
if modheads == 0:
return 0
# Is this a simple fast-forward along the current branch?
newheads = repo.branchheads(branch)
newheads = [head for head in newheads if len(repo[head].children()) == 0]
newchildren = repo.changelog.nodesbetween([parent], newheads)[2]
if len(newheads) == 1:
if newchildren[0] != parent:
return hg.clean(repo, newchildren[0])
else:
return
# Are there more than one additional branch heads?
newchildren = [n for n in newchildren if n != parent]
newparent = parent
if newchildren:
newparent = newchildren[0]
hg.clean(repo, newparent)
newheads = [n for n in newheads if n != newparent]
if len(newheads) > 1:
ui.status(_('not merging with %d other new branch heads '
'(use "hg heads ." and "hg merge" to merge them)\n') %
(len(newheads) - 1))
return
# Otherwise, let's merge.
err = False
if newheads:
# By default, we consider the repository we're pulling
# *from* as authoritative, so we merge our changes into
# theirs.
if opts['switch_parent']:
firstparent, secondparent = newparent, newheads[0]
else:
firstparent, secondparent = newheads[0], newparent
#.........这里部分代码省略.........
开发者ID:Nurb432,项目名称:plan9front,代码行数:101,代码来源:fetch.py
示例20: histedit
#.........这里部分代码省略.........
elif action in ('f', 'fold', ):
message = 'fold-temp-revision %s' % currentnode
new = None
if m or a or r or d:
new = repo.commit(text=message, user=oldctx.user(), date=oldctx.date(),
extra=oldctx.extra())
if action in ('f', 'fold'):
if new:
tmpnodes.append(new)
else:
new = newchildren[-1]
(parentctx, created_,
replaced_, tmpnodes_, ) = finishfold(ui, repo,
parentctx, oldctx, new,
opts, newchildren)
replaced.extend(replaced_)
created.extend(created_)
tmpnodes.extend(tmpnodes_)
elif action not in ('d', 'drop'):
if new != oldctx.node():
replaced.append(oldctx.node())
if new:
if new != oldctx.node():
created.append(new)
parentctx = repo[new]
elif opts.get('abort', False):
if len(parent) != 0:
raise util.Abort('no arguments allowed with --abort')
(parentctxnode, created, replaced, tmpnodes,
existing, rules, keep, tip, replacemap) = readstate(repo)
ui.debug('restore wc to old tip %s\n' % node.hex(tip))
hg.clean(repo, tip)
ui.debug('should strip created nodes %s\n' %
', '.join([node.hex(n)[:12] for n in created]))
ui.debug('should strip temp nodes %s\n' %
', '.join([node.hex(n)[:12] for n in tmpnodes]))
for nodes in (created, tmpnodes, ):
for n in reversed(nodes):
try:
repair.strip(ui, repo, n)
except error.LookupError:
pass
os.unlink(os.path.join(repo.path, 'histedit-state'))
return
else:
bailifchanged(repo)
if os.path.exists(os.path.join(repo.path, 'histedit-state')):
raise util.Abort('history edit already in progress, try '
'--continue or --abort')
tip, empty = repo.dirstate.parents()
if len(parent) != 1:
raise util.Abort('requires exactly one parent revision')
parent = _revsingle(repo, parent[0]).node()
keep = opts.get('keep', False)
revs = between(repo, parent, tip, keep)
ctxs = [repo[r] for r in revs]
existing = [r.node() for r in ctxs]
rules = opts.get('commands', '')
if not rules:
开发者ID:charettes,项目名称:dotfiles,代码行数:67,代码来源:hg_histedit.py
注:本文中的mercurial.hg.clean函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论