1050 function |
1050 function |
1051 ''' |
1051 ''' |
1052 return self[node].walk(match) |
1052 return self[node].walk(match) |
1053 |
1053 |
1054 def status(self, node1='.', node2=None, match=None, |
1054 def status(self, node1='.', node2=None, match=None, |
1055 ignored=False, clean=False, unknown=False): |
1055 ignored=False, clean=False, unknown=False, |
|
1056 listsubrepos=False): |
1056 """return status of files between two nodes or node and working directory |
1057 """return status of files between two nodes or node and working directory |
1057 |
1058 |
1058 If node1 is None, use the first dirstate parent instead. |
1059 If node1 is None, use the first dirstate parent instead. |
1059 If node2 is None, compare node1 with working directory. |
1060 If node2 is None, compare node1 with working directory. |
1060 """ |
1061 """ |
1156 else: |
1157 else: |
1157 added.append(fn) |
1158 added.append(fn) |
1158 removed = mf1.keys() |
1159 removed = mf1.keys() |
1159 |
1160 |
1160 r = modified, added, removed, deleted, unknown, ignored, clean |
1161 r = modified, added, removed, deleted, unknown, ignored, clean |
|
1162 |
|
1163 if listsubrepos: |
|
1164 for subpath in ctx1.substate: |
|
1165 sub = ctx1.sub(subpath) |
|
1166 if working: |
|
1167 rev2 = None |
|
1168 else: |
|
1169 rev2 = ctx2.substate[subpath][1] |
|
1170 try: |
|
1171 submatch = matchmod.narrowmatcher(subpath, match) |
|
1172 s = sub.status(rev2, match=submatch, ignored=listignored, |
|
1173 clean=listclean, unknown=listunknown, |
|
1174 listsubrepos=True) |
|
1175 for rfiles, sfiles in zip(r, s): |
|
1176 rfiles.extend("%s/%s" % (subpath, f) for f in sfiles) |
|
1177 except error.LookupError: |
|
1178 self.ui.status(_("skipping missing subrepository: %s\n") |
|
1179 % subpath) |
|
1180 |
1161 [l.sort() for l in r] |
1181 [l.sort() for l in r] |
1162 return r |
1182 return r |
1163 |
1183 |
1164 def heads(self, start=None): |
1184 def heads(self, start=None): |
1165 heads = self.changelog.heads(start) |
1185 heads = self.changelog.heads(start) |