mercurial/commit.py
changeset 45328 e52031f5e046
parent 45327 6de4c5647db3
child 45329 dcbad0f17d76
equal deleted inserted replaced
45327:6de4c5647db3 45328:e52031f5e046
   113     repo = ctx.repo()
   113     repo = ctx.repo()
   114     p1 = ctx.p1()
   114     p1 = ctx.p1()
   115 
   115 
   116     writechangesetcopy, writefilecopymeta = _write_copy_meta(repo)
   116     writechangesetcopy, writefilecopymeta = _write_copy_meta(repo)
   117 
   117 
   118     filesadded, filesremoved = None, None
       
   119     if ctx.manifestnode():
   118     if ctx.manifestnode():
   120         # reuse an existing manifest revision
   119         # reuse an existing manifest revision
   121         repo.ui.debug(b'reusing known manifest\n')
   120         repo.ui.debug(b'reusing known manifest\n')
   122         mn = ctx.manifestnode()
   121         mn = ctx.manifestnode()
   123         touched = ctx.files()
   122         files = metadata.ChangingFiles()
       
   123         files.update_touched(ctx.files())
   124         if writechangesetcopy:
   124         if writechangesetcopy:
   125             filesadded = ctx.filesadded()
   125             files.update_added(ctx.filesadded())
   126             filesremoved = ctx.filesremoved()
   126             files.update_removed(ctx.filesremoved())
   127     elif not ctx.files():
   127     elif not ctx.files():
   128         repo.ui.debug(b'reusing manifest from p1 (no file change)\n')
   128         repo.ui.debug(b'reusing manifest from p1 (no file change)\n')
   129         mn = p1.manifestnode()
   129         mn = p1.manifestnode()
   130         touched = []
   130         files = metadata.ChangingFiles()
   131     else:
   131     else:
   132         r = _process_files(tr, ctx, error=error)
   132         mn, touched, added, removed = _process_files(tr, ctx, error=error)
   133         mn, touched, filesadded, filesremoved = r
   133         files = metadata.ChangingFiles()
       
   134         files.update_touched(touched)
       
   135         if added:
       
   136             files.update_added(added)
       
   137         if removed:
       
   138             files.update_removed(removed)
   134 
   139 
   135     if origctx and origctx.manifestnode() == mn:
   140     if origctx and origctx.manifestnode() == mn:
   136         touched = origctx.files()
   141         origfiles = origctx.files()
   137 
   142         assert files.touched.issubset(origfiles)
   138     files = metadata.ChangingFiles()
   143         files.update_touched(origfiles)
   139     if touched:
   144 
   140         files.update_touched(touched)
       
   141     if writechangesetcopy:
   145     if writechangesetcopy:
   142         files.update_copies_from_p1(ctx.p1copies())
   146         files.update_copies_from_p1(ctx.p1copies())
   143         files.update_copies_from_p2(ctx.p2copies())
   147         files.update_copies_from_p2(ctx.p2copies())
   144     if filesadded:
       
   145         files.update_added(filesadded)
       
   146     if filesremoved:
       
   147         files.update_removed(filesremoved)
       
   148 
   148 
   149     return mn, files
   149     return mn, files
   150 
   150 
   151 
   151 
   152 def _process_files(tr, ctx, error=False):
   152 def _process_files(tr, ctx, error=False):