Show More
@@ -26,7 +26,7 b' class convert_mercurial(converter_sink):' | |||
|
26 | 26 | |
|
27 | 27 | def putfile(self, f, e, data): |
|
28 | 28 | self.repo.wwrite(f, data, e) |
|
29 |
if self.repo.dirstate |
|
|
29 | if f not in self.repo.dirstate: | |
|
30 | 30 | self.repo.dirstate.add(f) |
|
31 | 31 | |
|
32 | 32 | def copyfile(self, source, dest): |
@@ -240,7 +240,7 b' def sign(ui, repo, *revs, **opts):' | |||
|
240 | 240 | |
|
241 | 241 | repo.wfile(".hgsigs", "ab").write(sigmessage) |
|
242 | 242 | |
|
243 | if repo.dirstate.state(".hgsigs") == '?': | |
|
243 | if '.hgsigs' not in repo.dirstate: | |
|
244 | 244 | repo.add([".hgsigs"]) |
|
245 | 245 | |
|
246 | 246 | if opts["no_commit"]: |
@@ -1872,7 +1872,7 b' def rename(ui, repo, patch, name=None, *' | |||
|
1872 | 1872 | r = q.qrepo() |
|
1873 | 1873 | if r: |
|
1874 | 1874 | wlock = r.wlock() |
|
1875 |
if r.dirstate |
|
|
1875 | if r.dirstate[name] == 'r': | |
|
1876 | 1876 | r.undelete([name], wlock) |
|
1877 | 1877 | r.copy(patch, name, wlock) |
|
1878 | 1878 | r.remove([patch], False, wlock) |
@@ -638,12 +638,12 b' def addremove(repo, pats=[], opts={}, wl' | |||
|
638 | 638 | mapping = {} |
|
639 | 639 | for src, abs, rel, exact in walk(repo, pats, opts): |
|
640 | 640 | target = repo.wjoin(abs) |
|
641 |
if src == 'f' and repo.dirstate |
|
|
641 | if src == 'f' and abs not in repo.dirstate: | |
|
642 | 642 | add.append(abs) |
|
643 | 643 | mapping[abs] = rel, exact |
|
644 | 644 | if repo.ui.verbose or not exact: |
|
645 | 645 | repo.ui.status(_('adding %s\n') % ((pats and rel) or abs)) |
|
646 |
if repo.dirstate |
|
|
646 | if repo.dirstate[abs] != 'r' and not util.lexists(target): | |
|
647 | 647 | remove.append(abs) |
|
648 | 648 | mapping[abs] = rel, exact |
|
649 | 649 | if repo.ui.verbose or not exact: |
@@ -33,7 +33,7 b' def add(ui, repo, *pats, **opts):' | |||
|
33 | 33 | if ui.verbose: |
|
34 | 34 | ui.status(_('adding %s\n') % rel) |
|
35 | 35 | names.append(abs) |
|
36 |
elif repo.dirstate |
|
|
36 | elif abs not in repo.dirstate: | |
|
37 | 37 | ui.status(_('adding %s\n') % rel) |
|
38 | 38 | names.append(abs) |
|
39 | 39 | if not opts.get('dry_run'): |
@@ -456,7 +456,7 b' def commit(ui, repo, *pats, **opts):' | |||
|
456 | 456 | elif not (stat.S_ISREG(mode) or stat.S_ISLNK(mode)): |
|
457 | 457 | raise util.Abort(_("can't commit %s: " |
|
458 | 458 | "unsupported file type!") % rf) |
|
459 |
elif repo.dirstate |
|
|
459 | elif f not in repo.dirstate: | |
|
460 | 460 | raise util.Abort(_("file %s not tracked!") % rf) |
|
461 | 461 | else: |
|
462 | 462 | files = [] |
@@ -482,7 +482,7 b' def docopy(ui, repo, pats, opts, wlock):' | |||
|
482 | 482 | def okaytocopy(abs, rel, exact): |
|
483 | 483 | reasons = {'?': _('is not managed'), |
|
484 | 484 | 'r': _('has been marked for remove')} |
|
485 |
state = repo.dirstate |
|
|
485 | state = repo.dirstate[abs] | |
|
486 | 486 | reason = reasons.get(state) |
|
487 | 487 | if reason: |
|
488 | 488 | if exact: |
@@ -510,7 +510,7 b' def docopy(ui, repo, pats, opts, wlock):' | |||
|
510 | 510 | repo.pathto(prevsrc, cwd))) |
|
511 | 511 | return |
|
512 | 512 | if (not opts['after'] and os.path.exists(target) or |
|
513 |
opts['after'] and repo.dirstate |
|
|
513 | opts['after'] and repo.dirstate[abstarget] in 'mn'): | |
|
514 | 514 | if not opts['force']: |
|
515 | 515 | ui.warn(_('%s: not overwriting - file exists\n') % |
|
516 | 516 | reltarget) |
@@ -525,7 +525,7 b' def docopy(ui, repo, pats, opts, wlock):' | |||
|
525 | 525 | if not os.path.isdir(targetdir) and not opts.get('dry_run'): |
|
526 | 526 | os.makedirs(targetdir) |
|
527 | 527 | try: |
|
528 |
restore = repo.dirstate |
|
|
528 | restore = repo.dirstate[abstarget] == 'r' | |
|
529 | 529 | if restore and not opts.get('dry_run'): |
|
530 | 530 | repo.undelete([abstarget], wlock) |
|
531 | 531 | try: |
@@ -547,7 +547,7 b' def docopy(ui, repo, pats, opts, wlock):' | |||
|
547 | 547 | ui.status(_('copying %s to %s\n') % (relsrc, reltarget)) |
|
548 | 548 | targets[abstarget] = abssrc |
|
549 | 549 | if abstarget != origsrc: |
|
550 |
if repo.dirstate |
|
|
550 | if repo.dirstate[origsrc] == 'a': | |
|
551 | 551 | if not ui.quiet: |
|
552 | 552 | ui.warn(_("%s has not been committed yet, so no copy " |
|
553 | 553 | "data will be stored for %s.\n") |
@@ -718,12 +718,11 b' def debugrebuildstate(ui, repo, rev=""):' | |||
|
718 | 718 | def debugcheckstate(ui, repo): |
|
719 | 719 | """validate the correctness of the current dirstate""" |
|
720 | 720 | parent1, parent2 = repo.dirstate.parents() |
|
721 | dc = repo.dirstate | |
|
722 | 721 | m1 = repo.changectx(parent1).manifest() |
|
723 | 722 | m2 = repo.changectx(parent2).manifest() |
|
724 | 723 | errors = 0 |
|
725 |
for f in |
|
|
726 |
state = repo.dirstate |
|
|
724 | for f in repo.dirstate: | |
|
725 | state = repo.dirstate[f] | |
|
727 | 726 | if state in "nr" and f not in m1: |
|
728 | 727 | ui.warn(_("%s in state %s, but not in manifest1\n") % (f, state)) |
|
729 | 728 | errors += 1 |
@@ -735,7 +734,7 b' def debugcheckstate(ui, repo):' | |||
|
735 | 734 | (f, state)) |
|
736 | 735 | errors += 1 |
|
737 | 736 | for f in m1: |
|
738 |
state = repo.dirstate |
|
|
737 | state = repo.dirstate[f] | |
|
739 | 738 | if state not in "nrm": |
|
740 | 739 | ui.warn(_("%s in manifest1, but listed as state %s") % (f, state)) |
|
741 | 740 | errors += 1 |
@@ -787,8 +786,10 b' def debugsetparents(ui, repo, rev1, rev2' | |||
|
787 | 786 | |
|
788 | 787 | def debugstate(ui, repo): |
|
789 | 788 | """show the contents of the current dirstate""" |
|
790 | dc = repo.dirstate | |
|
791 | for file_ in dc: | |
|
789 | dc = repo.dirstate._map | |
|
790 | k = dc.keys() | |
|
791 | k.sort() | |
|
792 | for file_ in k: | |
|
792 | 793 | if dc[file_][3] == -1: |
|
793 | 794 | # Pad or slice to locale representation |
|
794 | 795 | locale_len = len(time.strftime("%x %X", time.localtime(0))) |
@@ -1758,7 +1759,7 b' def locate(ui, repo, *pats, **opts):' | |||
|
1758 | 1759 | default='relglob'): |
|
1759 | 1760 | if src == 'b': |
|
1760 | 1761 | continue |
|
1761 |
if not node and repo.dirstate |
|
|
1762 | if not node and abs not in repo.dirstate: | |
|
1762 | 1763 | continue |
|
1763 | 1764 | if opts['fullpath']: |
|
1764 | 1765 | ui.write(os.path.join(repo.root, abs), end) |
@@ -2216,7 +2217,7 b' def remove(ui, repo, *pats, **opts):' | |||
|
2216 | 2217 | forget.append(abs) |
|
2217 | 2218 | continue |
|
2218 | 2219 | reason = _('has been marked for add (use -f to force removal)') |
|
2219 |
elif repo.dirstate |
|
|
2220 | elif abs not in repo.dirstate: | |
|
2220 | 2221 | reason = _('is not managed') |
|
2221 | 2222 | elif opts['after'] and not exact and abs not in deleted: |
|
2222 | 2223 | continue |
@@ -88,11 +88,14 b' class dirstate(object):' | |||
|
88 | 88 | return path.replace(os.sep, '/') |
|
89 | 89 | return path |
|
90 | 90 | |
|
91 | def __del__(self): | |
|
92 | self.write() | |
|
93 | ||
|
94 | 91 | def __getitem__(self, key): |
|
95 | return self._map[key] | |
|
92 | ''' current states: | |
|
93 | n normal | |
|
94 | m needs merging | |
|
95 | r marked for removal | |
|
96 | a marked for addition | |
|
97 | ? not tracked''' | |
|
98 | return self._map.get(key, ("?",))[0] | |
|
96 | 99 | |
|
97 | 100 | def __contains__(self, key): |
|
98 | 101 | return key in self._map |
@@ -117,14 +120,6 b' class dirstate(object):' | |||
|
117 | 120 | self._branch = branch |
|
118 | 121 | self._opener("branch", "w").write(branch + '\n') |
|
119 | 122 | |
|
120 | def state(self, key): | |
|
121 | ''' current states: | |
|
122 | n normal | |
|
123 | m needs merging | |
|
124 | r marked for removal | |
|
125 | a marked for addition''' | |
|
126 | return self._map.get(key, ("?",))[0] | |
|
127 | ||
|
128 | 123 | def _read(self): |
|
129 | 124 | self._map = {} |
|
130 | 125 | self._copymap = {} |
@@ -460,7 +455,7 b' class dirstate(object):' | |||
|
460 | 455 | |
|
461 | 456 | for src, fn, st in self.statwalk(files, match, ignored=list_ignored): |
|
462 | 457 | try: |
|
463 | type_, mode, size, time = self[fn] | |
|
458 | type_, mode, size, time = self._map[fn] | |
|
464 | 459 | except KeyError: |
|
465 | 460 | if list_ignored and self._ignore(fn): |
|
466 | 461 | ignored.append(fn) |
@@ -156,7 +156,7 b' class localrepository(repo.repository):' | |||
|
156 | 156 | # committed tags are stored in UTF-8 |
|
157 | 157 | writetag(fp, name, util.fromlocal, prevtags) |
|
158 | 158 | |
|
159 |
if use_dirstate and self.dirstate |
|
|
159 | if use_dirstate and '.hgtags' not in self.dirstate: | |
|
160 | 160 | self.add(['.hgtags']) |
|
161 | 161 | |
|
162 | 162 | tagnode = self.commit(['.hgtags'], message, user, date, p1=parent, |
@@ -651,8 +651,8 b' class localrepository(repo.repository):' | |||
|
651 | 651 | if use_dirstate: |
|
652 | 652 | if files: |
|
653 | 653 | for f in files: |
|
654 |
s = self.dirstate |
|
|
655 |
if s in 'nma |
|
|
654 | s = self.dirstate[f] | |
|
655 | if s in 'nma': | |
|
656 | 656 | commit.append(f) |
|
657 | 657 | elif s == 'r': |
|
658 | 658 | remove.append(f) |
@@ -970,7 +970,7 b' class localrepository(repo.repository):' | |||
|
970 | 970 | if not (stat.S_ISREG(st.st_mode) or stat.S_ISLNK(st.st_mode)): |
|
971 | 971 | self.ui.warn(_("%s not added: only files and symlinks " |
|
972 | 972 | "supported currently\n") % f) |
|
973 |
elif self.dirstate |
|
|
973 | elif self.dirstate[f] in 'an': | |
|
974 | 974 | self.ui.warn(_("%s already tracked!\n") % f) |
|
975 | 975 | else: |
|
976 | 976 | self.dirstate.add(f) |
@@ -979,7 +979,7 b' class localrepository(repo.repository):' | |||
|
979 | 979 | if not wlock: |
|
980 | 980 | wlock = self.wlock() |
|
981 | 981 | for f in list: |
|
982 |
if self.dirstate |
|
|
982 | if self.dirstate[f] != 'a': | |
|
983 | 983 | self.ui.warn(_("%s not added!\n") % f) |
|
984 | 984 | else: |
|
985 | 985 | self.dirstate.forget(f) |
@@ -997,7 +997,7 b' class localrepository(repo.repository):' | |||
|
997 | 997 | for f in list: |
|
998 | 998 | if unlink and os.path.exists(self.wjoin(f)): |
|
999 | 999 | self.ui.warn(_("%s still exists!\n") % f) |
|
1000 |
elif self.dirstate |
|
|
1000 | elif self.dirstate[f] == 'a': | |
|
1001 | 1001 | self.dirstate.forget(f) |
|
1002 | 1002 | elif f not in self.dirstate: |
|
1003 | 1003 | self.ui.warn(_("%s not tracked!\n") % f) |
@@ -1011,7 +1011,7 b' class localrepository(repo.repository):' | |||
|
1011 | 1011 | if not wlock: |
|
1012 | 1012 | wlock = self.wlock() |
|
1013 | 1013 | for f in list: |
|
1014 |
if self.dirstate |
|
|
1014 | if self.dirstate[f] != 'r': | |
|
1015 | 1015 | self.ui.warn("%s not removed!\n" % f) |
|
1016 | 1016 | else: |
|
1017 | 1017 | t = self.file(f).read(m[f]) |
@@ -1028,7 +1028,7 b' class localrepository(repo.repository):' | |||
|
1028 | 1028 | else: |
|
1029 | 1029 | if not wlock: |
|
1030 | 1030 | wlock = self.wlock() |
|
1031 |
if self.dirstate |
|
|
1031 | if dest not in self.dirstate: | |
|
1032 | 1032 | self.dirstate.add(dest) |
|
1033 | 1033 | self.dirstate.copy(source, dest) |
|
1034 | 1034 |
General Comments 0
You need to be logged in to leave comments.
Login now