annotate mercurial/commit.py @ 45238:bd7515273fd6

commitctx: gather more preparation code within the lock context This is a small change that exist mostly for clarification. I am about to move a large amount of code in its own function. having all that code next to each other will make the next changeset clearer.
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Thu, 23 Jul 2020 23:58:23 +0200
parents 39f4ec4039a8
children 13814622b3b1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
45203
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
1 # commit.py - fonction to perform commit
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
2 #
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
3 # This software may be used and distributed according to the terms of the
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
4 # GNU General Public License version 2 or any later version.
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
5
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
6 from __future__ import absolute_import
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
7
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
8 import errno
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
9
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
10 from .i18n import _
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
11 from .node import (
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
12 hex,
45204
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
13 nullid,
45203
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
14 nullrev,
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
15 )
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
16
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
17 from . import (
45204
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
18 context,
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
19 mergestate,
45203
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
20 metadata,
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
21 phases,
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
22 scmutil,
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
23 subrepoutil,
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
24 )
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
25
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
26
45233
ada51c1b6916 commitctx: move copy meta config reading in a dedicated function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45232
diff changeset
27 def _write_copy_meta(repo):
ada51c1b6916 commitctx: move copy meta config reading in a dedicated function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45232
diff changeset
28 """return a (changelog, filelog) boolean tuple
ada51c1b6916 commitctx: move copy meta config reading in a dedicated function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45232
diff changeset
29
ada51c1b6916 commitctx: move copy meta config reading in a dedicated function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45232
diff changeset
30 changelog: copy related information should be stored in the changeset
ada51c1b6916 commitctx: move copy meta config reading in a dedicated function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45232
diff changeset
31 filelof: copy related information should be written in the file revision
ada51c1b6916 commitctx: move copy meta config reading in a dedicated function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45232
diff changeset
32 """
ada51c1b6916 commitctx: move copy meta config reading in a dedicated function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45232
diff changeset
33 if repo.filecopiesmode == b'changeset-sidedata':
ada51c1b6916 commitctx: move copy meta config reading in a dedicated function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45232
diff changeset
34 writechangesetcopy = True
ada51c1b6916 commitctx: move copy meta config reading in a dedicated function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45232
diff changeset
35 writefilecopymeta = True
ada51c1b6916 commitctx: move copy meta config reading in a dedicated function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45232
diff changeset
36 else:
ada51c1b6916 commitctx: move copy meta config reading in a dedicated function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45232
diff changeset
37 writecopiesto = repo.ui.config(b'experimental', b'copies.write-to')
ada51c1b6916 commitctx: move copy meta config reading in a dedicated function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45232
diff changeset
38 writefilecopymeta = writecopiesto != b'changeset-only'
ada51c1b6916 commitctx: move copy meta config reading in a dedicated function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45232
diff changeset
39 writechangesetcopy = writecopiesto in (
ada51c1b6916 commitctx: move copy meta config reading in a dedicated function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45232
diff changeset
40 b'changeset-only',
ada51c1b6916 commitctx: move copy meta config reading in a dedicated function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45232
diff changeset
41 b'compatibility',
ada51c1b6916 commitctx: move copy meta config reading in a dedicated function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45232
diff changeset
42 )
ada51c1b6916 commitctx: move copy meta config reading in a dedicated function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45232
diff changeset
43 return writechangesetcopy, writefilecopymeta
ada51c1b6916 commitctx: move copy meta config reading in a dedicated function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45232
diff changeset
44
ada51c1b6916 commitctx: move copy meta config reading in a dedicated function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45232
diff changeset
45
45203
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
46 def commitctx(repo, ctx, error=False, origctx=None):
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
47 """Add a new revision to the target repository.
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
48 Revision information is passed via the context argument.
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
49
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
50 ctx.files() should list all files involved in this commit, i.e.
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
51 modified/added/removed files. On merge, it may be wider than the
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
52 ctx.files() to be committed, since any file nodes derived directly
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
53 from p1 or p2 are excluded from the committed ctx.files().
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
54
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
55 origctx is for convert to work around the problem that bug
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
56 fixes to the files list in changesets change hashes. For
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
57 convert to be the identity, it can pass an origctx and this
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
58 function will use the same files list when it makes sense to
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
59 do so.
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
60 """
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
61 repo = repo.unfiltered()
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
62
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
63 p1, p2 = ctx.p1(), ctx.p2()
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
64 user = ctx.user()
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
65
45238
bd7515273fd6 commitctx: gather more preparation code within the lock context
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45237
diff changeset
66 with repo.lock(), repo.transaction(b"commit") as tr:
bd7515273fd6 commitctx: gather more preparation code within the lock context
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45237
diff changeset
67 writechangesetcopy, writefilecopymeta = _write_copy_meta(repo)
45233
ada51c1b6916 commitctx: move copy meta config reading in a dedicated function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45232
diff changeset
68
45238
bd7515273fd6 commitctx: gather more preparation code within the lock context
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45237
diff changeset
69 p1copies, p2copies = None, None
bd7515273fd6 commitctx: gather more preparation code within the lock context
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45237
diff changeset
70 if writechangesetcopy:
bd7515273fd6 commitctx: gather more preparation code within the lock context
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45237
diff changeset
71 p1copies = ctx.p1copies()
bd7515273fd6 commitctx: gather more preparation code within the lock context
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45237
diff changeset
72 p2copies = ctx.p2copies()
bd7515273fd6 commitctx: gather more preparation code within the lock context
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45237
diff changeset
73 filesadded, filesremoved = None, None
45203
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
74 if ctx.manifestnode():
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
75 # reuse an existing manifest revision
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
76 repo.ui.debug(b'reusing known manifest\n')
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
77 mn = ctx.manifestnode()
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
78 files = ctx.files()
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
79 if writechangesetcopy:
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
80 filesadded = ctx.filesadded()
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
81 filesremoved = ctx.filesremoved()
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
82 elif not ctx.files():
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
83 repo.ui.debug(b'reusing manifest from p1 (no file change)\n')
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
84 mn = p1.manifestnode()
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
85 files = []
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
86 else:
45236
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
87 mn, files, added, removed = _process_files(tr, ctx, error=error)
45203
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
88 if writechangesetcopy:
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
89 filesremoved = removed
45236
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
90 filesadded = added
45203
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
91
45237
39f4ec4039a8 commitctx: move a special case about files earlier
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45236
diff changeset
92 if origctx and origctx.manifestnode() == mn:
39f4ec4039a8 commitctx: move a special case about files earlier
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45236
diff changeset
93 files = origctx.files()
39f4ec4039a8 commitctx: move a special case about files earlier
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45236
diff changeset
94
45232
4eb6466e6889 commitctx: no longer use the `writecopiesto` variable in the function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45231
diff changeset
95 if not writefilecopymeta:
45203
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
96 # If writing only to changeset extras, use None to indicate that
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
97 # no entry should be written. If writing to both, write an empty
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
98 # entry to prevent the reader from falling back to reading
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
99 # filelogs.
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
100 p1copies = p1copies or None
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
101 p2copies = p2copies or None
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
102 filesadded = filesadded or None
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
103 filesremoved = filesremoved or None
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
104
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
105 # update changelog
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
106 repo.ui.note(_(b"committing changelog\n"))
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
107 repo.changelog.delayupdate(tr)
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
108 n = repo.changelog.add(
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
109 mn,
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
110 files,
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
111 ctx.description(),
45230
5d0998ccedbb commitctx: stop using weakref proxy for transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45223
diff changeset
112 tr,
45203
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
113 p1.node(),
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
114 p2.node(),
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
115 user,
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
116 ctx.date(),
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
117 ctx.extra().copy(),
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
118 p1copies,
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
119 p2copies,
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
120 filesadded,
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
121 filesremoved,
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
122 )
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
123 xp1, xp2 = p1.hex(), p2 and p2.hex() or b''
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
124 repo.hook(
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
125 b'pretxncommit', throw=True, node=hex(n), parent1=xp1, parent2=xp2,
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
126 )
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
127 # set the new commit is proper phase
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
128 targetphase = subrepoutil.newcommitphase(repo.ui, ctx)
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
129 if targetphase:
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
130 # retract boundary do not alter parent changeset.
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
131 # if a parent have higher the resulting phase will
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
132 # be compliant anyway
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
133 #
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
134 # if minimal phase was 0 we don't need to retract anything
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
135 phases.registernew(repo, tr, targetphase, [n])
ae5c1a3bc339 commitctx: extract the function in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
136 return n
45204
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
137
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
138
45236
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
139 def _process_files(tr, ctx, error=False):
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
140 repo = ctx.repo()
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
141 p1 = ctx.p1()
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
142 p2 = ctx.p2()
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
143
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
144 writechangesetcopy, writefilecopymeta = _write_copy_meta(repo)
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
145
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
146 m1ctx = p1.manifestctx()
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
147 m2ctx = p2.manifestctx()
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
148 mctx = m1ctx.copy()
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
149
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
150 m = mctx.read()
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
151 m1 = m1ctx.read()
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
152 m2 = m2ctx.read()
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
153
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
154 # check in files
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
155 added = []
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
156 filesadded = []
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
157 removed = list(ctx.removed())
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
158 touched = []
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
159 linkrev = len(repo)
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
160 repo.ui.note(_(b"committing files:\n"))
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
161 uipathfn = scmutil.getuipathfn(repo)
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
162 for f in sorted(ctx.modified() + ctx.added()):
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
163 repo.ui.note(uipathfn(f) + b"\n")
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
164 try:
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
165 fctx = ctx[f]
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
166 if fctx is None:
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
167 removed.append(f)
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
168 else:
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
169 added.append(f)
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
170 m[f], is_touched = _filecommit(
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
171 repo, fctx, m1, m2, linkrev, tr, writefilecopymeta,
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
172 )
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
173 if is_touched:
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
174 touched.append(f)
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
175 if is_touched == 'added':
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
176 filesadded.append(f)
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
177 m.setflag(f, fctx.flags())
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
178 except OSError:
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
179 repo.ui.warn(_(b"trouble committing %s!\n") % uipathfn(f))
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
180 raise
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
181 except IOError as inst:
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
182 errcode = getattr(inst, 'errno', errno.ENOENT)
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
183 if error or errcode and errcode != errno.ENOENT:
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
184 repo.ui.warn(_(b"trouble committing %s!\n") % uipathfn(f))
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
185 raise
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
186
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
187 # update manifest
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
188 removed = [f for f in removed if f in m1 or f in m2]
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
189 drop = sorted([f for f in removed if f in m])
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
190 for f in drop:
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
191 del m[f]
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
192 if p2.rev() != nullrev:
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
193 rf = metadata.get_removal_filter(ctx, (p1, p2, m1, m2))
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
194 removed = [f for f in removed if not rf(f)]
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
195
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
196 touched.extend(removed)
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
197
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
198 files = touched
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
199 mn = _commit_manifest(tr, linkrev, ctx, mctx, files, added, drop)
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
200
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
201 return mn, files, filesadded, removed
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
202
0c468fef09b3 commitctx: extract all the manual logic to process the files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45235
diff changeset
203
45204
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
204 def _filecommit(
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
205 repo, fctx, manifest1, manifest2, linkrev, tr, includecopymeta,
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
206 ):
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
207 """
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
208 commit an individual file as part of a larger transaction
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
209
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
210 input:
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
211
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
212 fctx: a file context with the content we are trying to commit
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
213 manifest1: manifest of changeset first parent
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
214 manifest2: manifest of changeset second parent
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
215 linkrev: revision number of the changeset being created
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
216 tr: current transation
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
217 individual: boolean, set to False to skip storing the copy data
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
218 (only used by the Google specific feature of using
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
219 changeset extra as copy source of truth).
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
220
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
221 output: (filenode, touched)
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
222
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
223 filenode: the filenode that should be used by this changeset
45223
d056a131c93f commitctx: document the None return for "touched" value
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45204
diff changeset
224 touched: one of: None (mean untouched), 'added' or 'modified'
45204
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
225 """
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
226
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
227 fname = fctx.path()
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
228 fparent1 = manifest1.get(fname, nullid)
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
229 fparent2 = manifest2.get(fname, nullid)
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
230 touched = None
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
231 if fparent1 == fparent2 == nullid:
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
232 touched = 'added'
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
233
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
234 if isinstance(fctx, context.filectx):
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
235 # This block fast path most comparisons which are usually done. It
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
236 # assumes that bare filectx is used and no merge happened, hence no
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
237 # need to create a new file revision in this case.
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
238 node = fctx.filenode()
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
239 if node in [fparent1, fparent2]:
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
240 repo.ui.debug(b'reusing %s filelog entry\n' % fname)
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
241 if (
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
242 fparent1 != nullid and manifest1.flags(fname) != fctx.flags()
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
243 ) or (
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
244 fparent2 != nullid and manifest2.flags(fname) != fctx.flags()
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
245 ):
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
246 touched = 'modified'
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
247 return node, touched
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
248
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
249 flog = repo.file(fname)
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
250 meta = {}
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
251 cfname = fctx.copysource()
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
252 fnode = None
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
253
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
254 if cfname and cfname != fname:
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
255 # Mark the new revision of this file as a copy of another
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
256 # file. This copy data will effectively act as a parent
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
257 # of this new revision. If this is a merge, the first
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
258 # parent will be the nullid (meaning "look up the copy data")
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
259 # and the second one will be the other parent. For example:
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
260 #
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
261 # 0 --- 1 --- 3 rev1 changes file foo
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
262 # \ / rev2 renames foo to bar and changes it
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
263 # \- 2 -/ rev3 should have bar with all changes and
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
264 # should record that bar descends from
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
265 # bar in rev2 and foo in rev1
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
266 #
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
267 # this allows this merge to succeed:
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
268 #
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
269 # 0 --- 1 --- 3 rev4 reverts the content change from rev2
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
270 # \ / merging rev3 and rev4 should use bar@rev2
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
271 # \- 2 --- 4 as the merge base
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
272 #
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
273
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
274 cnode = manifest1.get(cfname)
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
275 newfparent = fparent2
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
276
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
277 if manifest2: # branch merge
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
278 if fparent2 == nullid or cnode is None: # copied on remote side
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
279 if cfname in manifest2:
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
280 cnode = manifest2[cfname]
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
281 newfparent = fparent1
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
282
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
283 # Here, we used to search backwards through history to try to find
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
284 # where the file copy came from if the source of a copy was not in
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
285 # the parent directory. However, this doesn't actually make sense to
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
286 # do (what does a copy from something not in your working copy even
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
287 # mean?) and it causes bugs (eg, issue4476). Instead, we will warn
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
288 # the user that copy information was dropped, so if they didn't
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
289 # expect this outcome it can be fixed, but this is the correct
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
290 # behavior in this circumstance.
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
291
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
292 if cnode:
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
293 repo.ui.debug(b" %s: copy %s:%s\n" % (fname, cfname, hex(cnode)))
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
294 if includecopymeta:
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
295 meta[b"copy"] = cfname
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
296 meta[b"copyrev"] = hex(cnode)
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
297 fparent1, fparent2 = nullid, newfparent
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
298 else:
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
299 repo.ui.warn(
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
300 _(
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
301 b"warning: can't find ancestor for '%s' "
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
302 b"copied from '%s'!\n"
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
303 )
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
304 % (fname, cfname)
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
305 )
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
306
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
307 elif fparent1 == nullid:
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
308 fparent1, fparent2 = fparent2, nullid
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
309 elif fparent2 != nullid:
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
310 # is one parent an ancestor of the other?
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
311 fparentancestors = flog.commonancestorsheads(fparent1, fparent2)
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
312 if fparent1 in fparentancestors:
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
313 fparent1, fparent2 = fparent2, nullid
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
314 elif fparent2 in fparentancestors:
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
315 fparent2 = nullid
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
316 elif not fparentancestors:
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
317 # TODO: this whole if-else might be simplified much more
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
318 ms = mergestate.mergestate.read(repo)
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
319 if (
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
320 fname in ms
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
321 and ms[fname] == mergestate.MERGE_RECORD_MERGED_OTHER
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
322 ):
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
323 fparent1, fparent2 = fparent2, nullid
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
324
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
325 # is the file changed?
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
326 text = fctx.data()
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
327 if fparent2 != nullid or meta or flog.cmp(fparent1, text):
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
328 if touched is None: # do not overwrite added
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
329 touched = 'modified'
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
330 fnode = flog.add(text, meta, tr, linkrev, fparent1, fparent2)
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
331 # are just the flags changed during merge?
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
332 elif fname in manifest1 and manifest1.flags(fname) != fctx.flags():
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
333 touched = 'modified'
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
334 fnode = fparent1
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
335 else:
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
336 fnode = fparent1
ce9ee81df9ff commitctx: extract _filecommit too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45203
diff changeset
337 return fnode, touched
45231
f0d4d1343cb4 commitctx: extract the function that commit a new manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45230
diff changeset
338
f0d4d1343cb4 commitctx: extract the function that commit a new manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45230
diff changeset
339
f0d4d1343cb4 commitctx: extract the function that commit a new manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45230
diff changeset
340 def _commit_manifest(tr, linkrev, ctx, mctx, files, added, drop):
f0d4d1343cb4 commitctx: extract the function that commit a new manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45230
diff changeset
341 """make a new manifest entry (or reuse a new one)
f0d4d1343cb4 commitctx: extract the function that commit a new manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45230
diff changeset
342
f0d4d1343cb4 commitctx: extract the function that commit a new manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45230
diff changeset
343 given an initialised manifest context and precomputed list of
f0d4d1343cb4 commitctx: extract the function that commit a new manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45230
diff changeset
344 - files: files affected by the commit
f0d4d1343cb4 commitctx: extract the function that commit a new manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45230
diff changeset
345 - added: new entries in the manifest
f0d4d1343cb4 commitctx: extract the function that commit a new manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45230
diff changeset
346 - drop: entries present in parents but absent of this one
f0d4d1343cb4 commitctx: extract the function that commit a new manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45230
diff changeset
347
f0d4d1343cb4 commitctx: extract the function that commit a new manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45230
diff changeset
348 Create a new manifest revision, reuse existing ones if possible.
f0d4d1343cb4 commitctx: extract the function that commit a new manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45230
diff changeset
349
f0d4d1343cb4 commitctx: extract the function that commit a new manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45230
diff changeset
350 Return the nodeid of the manifest revision.
f0d4d1343cb4 commitctx: extract the function that commit a new manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45230
diff changeset
351 """
f0d4d1343cb4 commitctx: extract the function that commit a new manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45230
diff changeset
352 repo = ctx.repo()
f0d4d1343cb4 commitctx: extract the function that commit a new manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45230
diff changeset
353
f0d4d1343cb4 commitctx: extract the function that commit a new manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45230
diff changeset
354 md = None
f0d4d1343cb4 commitctx: extract the function that commit a new manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45230
diff changeset
355
f0d4d1343cb4 commitctx: extract the function that commit a new manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45230
diff changeset
356 # all this is cached, so it is find to get them all from the ctx.
f0d4d1343cb4 commitctx: extract the function that commit a new manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45230
diff changeset
357 p1 = ctx.p1()
f0d4d1343cb4 commitctx: extract the function that commit a new manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45230
diff changeset
358 p2 = ctx.p2()
f0d4d1343cb4 commitctx: extract the function that commit a new manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45230
diff changeset
359 m1ctx = p1.manifestctx()
f0d4d1343cb4 commitctx: extract the function that commit a new manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45230
diff changeset
360
f0d4d1343cb4 commitctx: extract the function that commit a new manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45230
diff changeset
361 m1 = m1ctx.read()
f0d4d1343cb4 commitctx: extract the function that commit a new manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45230
diff changeset
362
f0d4d1343cb4 commitctx: extract the function that commit a new manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45230
diff changeset
363 manifest = mctx.read()
f0d4d1343cb4 commitctx: extract the function that commit a new manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45230
diff changeset
364
f0d4d1343cb4 commitctx: extract the function that commit a new manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45230
diff changeset
365 if not files:
f0d4d1343cb4 commitctx: extract the function that commit a new manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45230
diff changeset
366 # if no "files" actually changed in terms of the changelog,
f0d4d1343cb4 commitctx: extract the function that commit a new manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45230
diff changeset
367 # try hard to detect unmodified manifest entry so that the
f0d4d1343cb4 commitctx: extract the function that commit a new manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45230
diff changeset
368 # exact same commit can be reproduced later on convert.
f0d4d1343cb4 commitctx: extract the function that commit a new manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45230
diff changeset
369 md = m1.diff(manifest, scmutil.matchfiles(repo, ctx.files()))
f0d4d1343cb4 commitctx: extract the function that commit a new manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45230
diff changeset
370 if not files and md:
f0d4d1343cb4 commitctx: extract the function that commit a new manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45230
diff changeset
371 repo.ui.debug(
f0d4d1343cb4 commitctx: extract the function that commit a new manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45230
diff changeset
372 b'not reusing manifest (no file change in '
f0d4d1343cb4 commitctx: extract the function that commit a new manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45230
diff changeset
373 b'changelog, but manifest differs)\n'
f0d4d1343cb4 commitctx: extract the function that commit a new manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45230
diff changeset
374 )
f0d4d1343cb4 commitctx: extract the function that commit a new manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45230
diff changeset
375 if files or md:
f0d4d1343cb4 commitctx: extract the function that commit a new manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45230
diff changeset
376 repo.ui.note(_(b"committing manifest\n"))
f0d4d1343cb4 commitctx: extract the function that commit a new manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45230
diff changeset
377 # we're using narrowmatch here since it's already applied at
f0d4d1343cb4 commitctx: extract the function that commit a new manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45230
diff changeset
378 # other stages (such as dirstate.walk), so we're already
f0d4d1343cb4 commitctx: extract the function that commit a new manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45230
diff changeset
379 # ignoring things outside of narrowspec in most cases. The
f0d4d1343cb4 commitctx: extract the function that commit a new manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45230
diff changeset
380 # one case where we might have files outside the narrowspec
f0d4d1343cb4 commitctx: extract the function that commit a new manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45230
diff changeset
381 # at this point is merges, and we already error out in the
f0d4d1343cb4 commitctx: extract the function that commit a new manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45230
diff changeset
382 # case where the merge has files outside of the narrowspec,
f0d4d1343cb4 commitctx: extract the function that commit a new manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45230
diff changeset
383 # so this is safe.
f0d4d1343cb4 commitctx: extract the function that commit a new manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45230
diff changeset
384 mn = mctx.write(
f0d4d1343cb4 commitctx: extract the function that commit a new manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45230
diff changeset
385 tr,
f0d4d1343cb4 commitctx: extract the function that commit a new manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45230
diff changeset
386 linkrev,
f0d4d1343cb4 commitctx: extract the function that commit a new manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45230
diff changeset
387 p1.manifestnode(),
f0d4d1343cb4 commitctx: extract the function that commit a new manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45230
diff changeset
388 p2.manifestnode(),
f0d4d1343cb4 commitctx: extract the function that commit a new manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45230
diff changeset
389 added,
f0d4d1343cb4 commitctx: extract the function that commit a new manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45230
diff changeset
390 drop,
f0d4d1343cb4 commitctx: extract the function that commit a new manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45230
diff changeset
391 match=repo.narrowmatch(),
f0d4d1343cb4 commitctx: extract the function that commit a new manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45230
diff changeset
392 )
f0d4d1343cb4 commitctx: extract the function that commit a new manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45230
diff changeset
393 else:
f0d4d1343cb4 commitctx: extract the function that commit a new manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45230
diff changeset
394 repo.ui.debug(
f0d4d1343cb4 commitctx: extract the function that commit a new manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45230
diff changeset
395 b'reusing manifest from p1 (listed files ' b'actually unchanged)\n'
f0d4d1343cb4 commitctx: extract the function that commit a new manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45230
diff changeset
396 )
f0d4d1343cb4 commitctx: extract the function that commit a new manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45230
diff changeset
397 mn = p1.manifestnode()
f0d4d1343cb4 commitctx: extract the function that commit a new manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45230
diff changeset
398
f0d4d1343cb4 commitctx: extract the function that commit a new manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45230
diff changeset
399 return mn