mercurial/cmdutil.py
changeset 26561 1f14920a892c
parent 26547 b9be8ab6e628
child 26562 dd2f5e014806
equal deleted inserted replaced
26560:75d448d56a9d 26561:1f14920a892c
   829             os.close(logfilefd)
   829             os.close(logfilefd)
   830 
   830 
   831     if runfn:
   831     if runfn:
   832         return runfn()
   832         return runfn()
   833 
   833 
       
   834 ## facility to let extension process additional data into an import patch
       
   835 # list of identifier to be executed in order
       
   836 extrapreimport = []  # run before commit
       
   837 # mapping from identifier to actual import function
       
   838 #
       
   839 # 'preimport' are run before the commit is made and are provided the following
       
   840 # arguments:
       
   841 # - repo: the localrepository instance,
       
   842 # - patchdata: data extracted from patch header (cf m.patch.patchheadermap),
       
   843 # - extra: the future extra dictionnary of the changeset, please mutate it,
       
   844 # - opts: the import options.
       
   845 # XXX ideally, we would just pass an ctx ready to be computed, that would allow
       
   846 # mutation of in memory commit and more. Feel free to rework the code to get
       
   847 # there.
       
   848 extrapreimportmap = {}
       
   849 
   834 def tryimportone(ui, repo, hunk, parents, opts, msgs, updatefunc):
   850 def tryimportone(ui, repo, hunk, parents, opts, msgs, updatefunc):
   835     """Utility function used by commands.import to import a single patch
   851     """Utility function used by commands.import to import a single patch
   836 
   852 
   837     This function is explicitly defined here to help the evolve extension to
   853     This function is explicitly defined here to help the evolve extension to
   838     wrap this part of the import logic.
   854     wrap this part of the import logic.
   947                 if opts.get('exact'):
   963                 if opts.get('exact'):
   948                     editor = None
   964                     editor = None
   949                 else:
   965                 else:
   950                     editor = getcommiteditor(editform=editform, **opts)
   966                     editor = getcommiteditor(editform=editform, **opts)
   951                 allowemptyback = repo.ui.backupconfig('ui', 'allowemptycommit')
   967                 allowemptyback = repo.ui.backupconfig('ui', 'allowemptycommit')
       
   968                 extra = {}
       
   969                 for idfunc in extrapreimport:
       
   970                     extrapreimportmap[idfunc](repo, extractdata, extra, opts)
   952                 try:
   971                 try:
   953                     if partial:
   972                     if partial:
   954                         repo.ui.setconfig('ui', 'allowemptycommit', True)
   973                         repo.ui.setconfig('ui', 'allowemptycommit', True)
   955                     n = repo.commit(message, opts.get('user') or user,
   974                     n = repo.commit(message, opts.get('user') or user,
   956                                     opts.get('date') or date, match=m,
   975                                     opts.get('date') or date, match=m,
   957                                     editor=editor)
   976                                     editor=editor, extra=extra)
   958                 finally:
   977                 finally:
   959                     repo.ui.restoreconfig(allowemptyback)
   978                     repo.ui.restoreconfig(allowemptyback)
   960             dsguard.close()
   979             dsguard.close()
   961         else:
   980         else:
   962             if opts.get('exact') or opts.get('import_branch'):
   981             if opts.get('exact') or opts.get('import_branch'):