mercurial/merge.py
changeset 45347 1aef38d973e8
parent 45346 3c783ff08d40
child 45348 490607efc992
equal deleted inserted replaced
45346:3c783ff08d40 45347:1aef38d973e8
   253         )
   253         )
   254         (flags,) = args
   254         (flags,) = args
   255         mresult.addfile(f, mergestatemod.ACTION_GET, (flags, backup), msg)
   255         mresult.addfile(f, mergestatemod.ACTION_GET, (flags, backup), msg)
   256 
   256 
   257 
   257 
   258 def _forgetremoved(wctx, mctx, branchmerge):
   258 def _forgetremoved(wctx, mctx, branchmerge, mresult):
   259     """
   259     """
   260     Forget removed files
   260     Forget removed files
   261 
   261 
   262     If we're jumping between revisions (as opposed to merging), and if
   262     If we're jumping between revisions (as opposed to merging), and if
   263     neither the working directory nor the target rev has the file,
   263     neither the working directory nor the target rev has the file,
   268     If we're merging, and the other revision has removed a file
   268     If we're merging, and the other revision has removed a file
   269     that is not present in the working directory, we need to mark it
   269     that is not present in the working directory, we need to mark it
   270     as removed.
   270     as removed.
   271     """
   271     """
   272 
   272 
   273     actions = {}
       
   274     m = mergestatemod.ACTION_FORGET
   273     m = mergestatemod.ACTION_FORGET
   275     if branchmerge:
   274     if branchmerge:
   276         m = mergestatemod.ACTION_REMOVE
   275         m = mergestatemod.ACTION_REMOVE
   277     for f in wctx.deleted():
   276     for f in wctx.deleted():
   278         if f not in mctx:
   277         if f not in mctx:
   279             actions[f] = m, None, b"forget deleted"
   278             mresult.addfile(f, m, None, b"forget deleted")
   280 
   279 
   281     if not branchmerge:
   280     if not branchmerge:
   282         for f in wctx.removed():
   281         for f in wctx.removed():
   283             if f not in mctx:
   282             if f not in mctx:
   284                 actions[f] = (
   283                 mresult.addfile(
   285                     mergestatemod.ACTION_FORGET,
   284                     f, mergestatemod.ACTION_FORGET, None, b"forget removed",
   286                     None,
       
   287                     b"forget removed",
       
   288                 )
   285                 )
   289 
       
   290     return actions
       
   291 
   286 
   292 
   287 
   293 def _checkcollision(repo, wmf, mresult):
   288 def _checkcollision(repo, wmf, mresult):
   294     """
   289     """
   295     Check for case-folding collisions.
   290     Check for case-folding collisions.
   701     def setactions(self, actions):
   696     def setactions(self, actions):
   702         self._filemapping = actions
   697         self._filemapping = actions
   703         self._actionmapping = collections.defaultdict(dict)
   698         self._actionmapping = collections.defaultdict(dict)
   704         for f, (act, data, msg) in pycompat.iteritems(self._filemapping):
   699         for f, (act, data, msg) in pycompat.iteritems(self._filemapping):
   705             self._actionmapping[act][f] = data, msg
   700             self._actionmapping[act][f] = data, msg
   706 
       
   707     def updateactions(self, updates):
       
   708         for f, (a, data, msg) in pycompat.iteritems(updates):
       
   709             self.addfile(f, a, data, msg)
       
   710 
   701 
   711     def hasconflicts(self):
   702     def hasconflicts(self):
   712         """ tells whether this merge resulted in some actions which can
   703         """ tells whether this merge resulted in some actions which can
   713         result in conflicts or not """
   704         result in conflicts or not """
   714         for a in self._actionmapping.keys():
   705         for a in self._actionmapping.keys():
  1194         repo.ui.note(_(b'end of auction\n\n'))
  1185         repo.ui.note(_(b'end of auction\n\n'))
  1195         # TODO: think about commitinfo when bid merge is used
  1186         # TODO: think about commitinfo when bid merge is used
  1196         mresult.updatevalues(diverge, renamedelete, {})
  1187         mresult.updatevalues(diverge, renamedelete, {})
  1197 
  1188 
  1198     if wctx.rev() is None:
  1189     if wctx.rev() is None:
  1199         fractions = _forgetremoved(wctx, mctx, branchmerge)
  1190         _forgetremoved(wctx, mctx, branchmerge, mresult)
  1200         mresult.updateactions(fractions)
       
  1201 
  1191 
  1202     sparse.filterupdatesactions(repo, wctx, mctx, branchmerge, mresult)
  1192     sparse.filterupdatesactions(repo, wctx, mctx, branchmerge, mresult)
  1203     _resolvetrivial(repo, wctx, mctx, ancestors[0], mresult)
  1193     _resolvetrivial(repo, wctx, mctx, ancestors[0], mresult)
  1204 
  1194 
  1205     return mresult
  1195     return mresult