mercurial/commit.py
changeset 45708 60c46cc28bf4
parent 45707 035302e6bb38
child 45715 0428978bca22
equal deleted inserted replaced
45707:035302e6bb38 45708:60c46cc28bf4
   112 def _prepare_files(tr, ctx, error=False, origctx=None):
   112 def _prepare_files(tr, ctx, error=False, origctx=None):
   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     files = metadata.ChangingFiles()
   117     ms = mergestate.mergestate.read(repo)
   118     ms = mergestate.mergestate.read(repo)
   118     salvaged = _get_salvaged(repo, ms, ctx)
   119     salvaged = _get_salvaged(repo, ms, ctx)
       
   120     for s in salvaged:
       
   121         files.mark_salvaged(s)
   119 
   122 
   120     if ctx.manifestnode():
   123     if ctx.manifestnode():
   121         # reuse an existing manifest revision
   124         # reuse an existing manifest revision
   122         repo.ui.debug(b'reusing known manifest\n')
   125         repo.ui.debug(b'reusing known manifest\n')
   123         mn = ctx.manifestnode()
   126         mn = ctx.manifestnode()
   124         files = metadata.ChangingFiles()
       
   125         files.update_touched(ctx.files())
   127         files.update_touched(ctx.files())
   126         if writechangesetcopy:
   128         if writechangesetcopy:
   127             files.update_added(ctx.filesadded())
   129             files.update_added(ctx.filesadded())
   128             files.update_removed(ctx.filesremoved())
   130             files.update_removed(ctx.filesremoved())
   129     elif not ctx.files():
   131     elif not ctx.files():
   130         repo.ui.debug(b'reusing manifest from p1 (no file change)\n')
   132         repo.ui.debug(b'reusing manifest from p1 (no file change)\n')
   131         mn = p1.manifestnode()
   133         mn = p1.manifestnode()
   132         files = metadata.ChangingFiles()
       
   133     else:
   134     else:
   134         mn, files = _process_files(tr, ctx, ms, error=error)
   135         mn = _process_files(tr, ctx, ms, files, error=error)
   135 
   136 
   136     if origctx and origctx.manifestnode() == mn:
   137     if origctx and origctx.manifestnode() == mn:
   137         origfiles = origctx.files()
   138         origfiles = origctx.files()
   138         assert files.touched.issubset(origfiles)
   139         assert files.touched.issubset(origfiles)
   139         files.update_touched(origfiles)
   140         files.update_touched(origfiles)
   140 
   141 
   141     if writechangesetcopy:
   142     if writechangesetcopy:
   142         files.update_copies_from_p1(ctx.p1copies())
   143         files.update_copies_from_p1(ctx.p1copies())
   143         files.update_copies_from_p2(ctx.p2copies())
   144         files.update_copies_from_p2(ctx.p2copies())
   144 
       
   145     for s in salvaged:
       
   146         files.mark_salvaged(s)
       
   147 
   145 
   148     return mn, files
   146     return mn, files
   149 
   147 
   150 
   148 
   151 def _get_salvaged(repo, ms, ctx):
   149 def _get_salvaged(repo, ms, ctx):
   163                     if fname in ctx:
   161                     if fname in ctx:
   164                         salvaged.append(fname)
   162                         salvaged.append(fname)
   165     return salvaged
   163     return salvaged
   166 
   164 
   167 
   165 
   168 def _process_files(tr, ctx, ms, error=False):
   166 def _process_files(tr, ctx, ms, files, error=False):
   169     repo = ctx.repo()
   167     repo = ctx.repo()
   170     p1 = ctx.p1()
   168     p1 = ctx.p1()
   171     p2 = ctx.p2()
   169     p2 = ctx.p2()
   172 
   170 
   173     writechangesetcopy, writefilecopymeta = _write_copy_meta(repo)
   171     writechangesetcopy, writefilecopymeta = _write_copy_meta(repo)
   177     mctx = m1ctx.copy()
   175     mctx = m1ctx.copy()
   178 
   176 
   179     m = mctx.read()
   177     m = mctx.read()
   180     m1 = m1ctx.read()
   178     m1 = m1ctx.read()
   181     m2 = m2ctx.read()
   179     m2 = m2ctx.read()
   182 
       
   183     files = metadata.ChangingFiles()
       
   184 
   180 
   185     # check in files
   181     # check in files
   186     added = []
   182     added = []
   187     removed = list(ctx.removed())
   183     removed = list(ctx.removed())
   188     linkrev = len(repo)
   184     linkrev = len(repo)
   229             if not rf(f):
   225             if not rf(f):
   230                 files.mark_removed(f)
   226                 files.mark_removed(f)
   231 
   227 
   232     mn = _commit_manifest(tr, linkrev, ctx, mctx, m, files.touched, added, drop)
   228     mn = _commit_manifest(tr, linkrev, ctx, mctx, m, files.touched, added, drop)
   233 
   229 
   234     return mn, files
   230     return mn
   235 
   231 
   236 
   232 
   237 def _filecommit(
   233 def _filecommit(
   238     repo, fctx, manifest1, manifest2, linkrev, tr, includecopymeta, ms,
   234     repo, fctx, manifest1, manifest2, linkrev, tr, includecopymeta, ms,
   239 ):
   235 ):