mercurial/commit.py
changeset 45230 5d0998ccedbb
parent 45223 d056a131c93f
child 45231 f0d4d1343cb4
equal deleted inserted replaced
45223:d056a131c93f 45230:5d0998ccedbb
     4 # GNU General Public License version 2 or any later version.
     4 # GNU General Public License version 2 or any later version.
     5 
     5 
     6 from __future__ import absolute_import
     6 from __future__ import absolute_import
     7 
     7 
     8 import errno
     8 import errno
     9 import weakref
       
    10 
     9 
    11 from .i18n import _
    10 from .i18n import _
    12 from .node import (
    11 from .node import (
    13     hex,
    12     hex,
    14     nullid,
    13     nullid,
    60     if writechangesetcopy:
    59     if writechangesetcopy:
    61         p1copies = ctx.p1copies()
    60         p1copies = ctx.p1copies()
    62         p2copies = ctx.p2copies()
    61         p2copies = ctx.p2copies()
    63     filesadded, filesremoved = None, None
    62     filesadded, filesremoved = None, None
    64     with repo.lock(), repo.transaction(b"commit") as tr:
    63     with repo.lock(), repo.transaction(b"commit") as tr:
    65         trp = weakref.proxy(tr)
       
    66 
       
    67         if ctx.manifestnode():
    64         if ctx.manifestnode():
    68             # reuse an existing manifest revision
    65             # reuse an existing manifest revision
    69             repo.ui.debug(b'reusing known manifest\n')
    66             repo.ui.debug(b'reusing known manifest\n')
    70             mn = ctx.manifestnode()
    67             mn = ctx.manifestnode()
    71             files = ctx.files()
    68             files = ctx.files()
   100                     if fctx is None:
    97                     if fctx is None:
   101                         removed.append(f)
    98                         removed.append(f)
   102                     else:
    99                     else:
   103                         added.append(f)
   100                         added.append(f)
   104                         m[f], is_touched = _filecommit(
   101                         m[f], is_touched = _filecommit(
   105                             repo, fctx, m1, m2, linkrev, trp, writefilecopymeta,
   102                             repo, fctx, m1, m2, linkrev, tr, writefilecopymeta,
   106                         )
   103                         )
   107                         if is_touched:
   104                         if is_touched:
   108                             touched.append(f)
   105                             touched.append(f)
   109                             if writechangesetcopy and is_touched == 'added':
   106                             if writechangesetcopy and is_touched == 'added':
   110                                 filesadded.append(f)
   107                                 filesadded.append(f)
   154                 # one case where we might have files outside the narrowspec
   151                 # one case where we might have files outside the narrowspec
   155                 # at this point is merges, and we already error out in the
   152                 # at this point is merges, and we already error out in the
   156                 # case where the merge has files outside of the narrowspec,
   153                 # case where the merge has files outside of the narrowspec,
   157                 # so this is safe.
   154                 # so this is safe.
   158                 mn = mctx.write(
   155                 mn = mctx.write(
   159                     trp,
   156                     tr,
   160                     linkrev,
   157                     linkrev,
   161                     p1.manifestnode(),
   158                     p1.manifestnode(),
   162                     p2.manifestnode(),
   159                     p2.manifestnode(),
   163                     added,
   160                     added,
   164                     drop,
   161                     drop,
   189         repo.changelog.delayupdate(tr)
   186         repo.changelog.delayupdate(tr)
   190         n = repo.changelog.add(
   187         n = repo.changelog.add(
   191             mn,
   188             mn,
   192             files,
   189             files,
   193             ctx.description(),
   190             ctx.description(),
   194             trp,
   191             tr,
   195             p1.node(),
   192             p1.node(),
   196             p2.node(),
   193             p2.node(),
   197             user,
   194             user,
   198             ctx.date(),
   195             ctx.date(),
   199             ctx.extra().copy(),
   196             ctx.extra().copy(),