mercurial/cmdutil.py
changeset 21553 bee0e1cffdd3
parent 21419 272785489ed3
child 21574 404ff404db79
equal deleted inserted replaced
21552:61151f429a5f 21553:bee0e1cffdd3
   589     editor = getcommiteditor(**opts)
   589     editor = getcommiteditor(**opts)
   590     update = not opts.get('bypass')
   590     update = not opts.get('bypass')
   591     strip = opts["strip"]
   591     strip = opts["strip"]
   592     sim = float(opts.get('similarity') or 0)
   592     sim = float(opts.get('similarity') or 0)
   593     if not tmpname:
   593     if not tmpname:
   594         return (None, None)
   594         return (None, None, False)
   595     msg = _('applied to working directory')
   595     msg = _('applied to working directory')
       
   596 
       
   597     rejects = False
   596 
   598 
   597     try:
   599     try:
   598         cmdline_message = logmessage(ui, opts)
   600         cmdline_message = logmessage(ui, opts)
   599         if cmdline_message:
   601         if cmdline_message:
   600             # pickup the cmdline msg
   602             # pickup the cmdline msg
   637                 repo.setparents(p1.node(), p2.node())
   639                 repo.setparents(p1.node(), p2.node())
   638 
   640 
   639             if opts.get('exact') or opts.get('import_branch'):
   641             if opts.get('exact') or opts.get('import_branch'):
   640                 repo.dirstate.setbranch(branch or 'default')
   642                 repo.dirstate.setbranch(branch or 'default')
   641 
   643 
       
   644             partial = opts.get('partial', False)
   642             files = set()
   645             files = set()
   643             patch.patch(ui, repo, tmpname, strip=strip, files=files,
   646             try:
   644                         eolmode=None, similarity=sim / 100.0)
   647                 patch.patch(ui, repo, tmpname, strip=strip, files=files,
       
   648                             eolmode=None, similarity=sim / 100.0)
       
   649             except patch.PatchError, e:
       
   650                 if not partial:
       
   651                     raise util.Abort(str(e))
       
   652                 if partial:
       
   653                     rejects = True
       
   654 
   645             files = list(files)
   655             files = list(files)
   646             if opts.get('no_commit'):
   656             if opts.get('no_commit'):
   647                 if message:
   657                 if message:
   648                     msgs.append(message)
   658                     msgs.append(message)
   649             else:
   659             else:
   654                     m = None
   664                     m = None
   655                 else:
   665                 else:
   656                     m = scmutil.matchfiles(repo, files or [])
   666                     m = scmutil.matchfiles(repo, files or [])
   657                 n = repo.commit(message, opts.get('user') or user,
   667                 n = repo.commit(message, opts.get('user') or user,
   658                                 opts.get('date') or date, match=m,
   668                                 opts.get('date') or date, match=m,
   659                                 editor=editor)
   669                                 editor=editor, force=partial)
   660         else:
   670         else:
   661             if opts.get('exact') or opts.get('import_branch'):
   671             if opts.get('exact') or opts.get('import_branch'):
   662                 branch = branch or 'default'
   672                 branch = branch or 'default'
   663             else:
   673             else:
   664                 branch = p1.branch()
   674                 branch = p1.branch()
   682         if opts.get('exact') and hex(n) != nodeid:
   692         if opts.get('exact') and hex(n) != nodeid:
   683             raise util.Abort(_('patch is damaged or loses information'))
   693             raise util.Abort(_('patch is damaged or loses information'))
   684         if n:
   694         if n:
   685             # i18n: refers to a short changeset id
   695             # i18n: refers to a short changeset id
   686             msg = _('created %s') % short(n)
   696             msg = _('created %s') % short(n)
   687         return (msg, n)
   697         return (msg, n, rejects)
   688     finally:
   698     finally:
   689         os.unlink(tmpname)
   699         os.unlink(tmpname)
   690 
   700 
   691 def export(repo, revs, template='hg-%h.patch', fp=None, switch_parent=False,
   701 def export(repo, revs, template='hg-%h.patch', fp=None, switch_parent=False,
   692            opts=None):
   702            opts=None):