comparison mercurial/metadata.py @ 45323:aea6a812f7cb

commitctx: return a richer object from _prepare_files Instead of returning a lot of different list, we introduce a rich object that hold all the file related information. The unique object help with data consistency and simply functions arguments and return. In the rest of this series we will increase usage of this object to simplify more code.
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Sat, 25 Jul 2020 15:49:12 +0200
parents 25512a65cefd
children c6eea5804551
comparison
equal deleted inserted replaced
45322:c3376a724e32 45323:aea6a812f7cb
18 18
19 from .revlogutils import ( 19 from .revlogutils import (
20 flagutil as sidedataflag, 20 flagutil as sidedataflag,
21 sidedata as sidedatamod, 21 sidedata as sidedatamod,
22 ) 22 )
23
24
25 class ChangingFiles(object):
26 """A class recording the changes made to a file by a revision
27 """
28
29 def __init__(
30 self, touched=(), added=(), removed=(), p1_copies=(), p2_copies=(),
31 ):
32 self._added = set(added)
33 self._removed = set(removed)
34 self._touched = set(touched)
35 self._touched.update(self._added)
36 self._touched.update(self._removed)
37 self._p1_copies = dict(p1_copies)
38 self._p2_copies = dict(p2_copies)
39
40 @property
41 def added(self):
42 return frozenset(self._added)
43
44 def mark_added(self, filename):
45 self._added.add(filename)
46 self._touched.add(filename)
47
48 def update_added(self, filenames):
49 for f in filenames:
50 self.mark_added(f)
51
52 @property
53 def removed(self):
54 return frozenset(self._removed)
55
56 def mark_removed(self, filename):
57 self._removed.add(filename)
58 self._touched.add(filename)
59
60 def update_removed(self, filenames):
61 for f in filenames:
62 self.mark_removed(f)
63
64 @property
65 def touched(self):
66 return frozenset(self._touched)
67
68 def mark_touched(self, filename):
69 self._touched.add(filename)
70
71 def update_touched(self, filenames):
72 for f in filenames:
73 self.mark_touched(f)
74
75 @property
76 def copied_from_p1(self):
77 return self._p1_copies.copy()
78
79 def mark_copied_from_p1(self, source, dest):
80 self._p1_copies[dest] = source
81
82 def update_copies_from_p1(self, copies):
83 for dest, source in copies.items():
84 self.mark_copied_from_p1(source, dest)
85
86 @property
87 def copied_from_p2(self):
88 return self._p2_copies.copy()
89
90 def mark_copied_from_p2(self, source, dest):
91 self._p2_copies[dest] = source
92
93 def update_copies_from_p2(self, copies):
94 for dest, source in copies.items():
95 self.mark_copied_from_p2(source, dest)
23 96
24 97
25 def computechangesetfilesadded(ctx): 98 def computechangesetfilesadded(ctx):
26 """return the list of files added in a changeset 99 """return the list of files added in a changeset
27 """ 100 """