Mercurial > hg > mercurial-crew-with-dirclash
comparison mercurial/localrepo.py @ 2661:5c10b7ed3411
status: add -c (clean) and -A (all files) options
also add new localrepo.status what is more uniform than localrepo.changes.
localrepo.changes is deprecated and will go away soon.
author | Vadim Gelfer <vadim.gelfer@gmail.com> |
---|---|
date | Thu, 20 Jul 2006 16:21:07 -0700 |
parents | 5a5852a417b1 |
children | 109a22f5434a |
comparison
equal
deleted
inserted
replaced
2640:02b6fa7bbfbf | 2661:5c10b7ed3411 |
---|---|
656 util.pathto(self.getcwd(), fn), short(node))) | 656 util.pathto(self.getcwd(), fn), short(node))) |
657 else: | 657 else: |
658 for src, fn in self.dirstate.walk(files, match, badmatch=badmatch): | 658 for src, fn in self.dirstate.walk(files, match, badmatch=badmatch): |
659 yield src, fn | 659 yield src, fn |
660 | 660 |
661 def changes(self, node1=None, node2=None, files=[], match=util.always, | 661 def status(self, node1=None, node2=None, files=[], match=util.always, |
662 wlock=None, show_ignored=None): | 662 wlock=None, list_ignored=False, list_clean=False): |
663 """return changes between two nodes or node and working directory | 663 """return status of files between two nodes or node and working directory |
664 | 664 |
665 If node1 is None, use the first dirstate parent instead. | 665 If node1 is None, use the first dirstate parent instead. |
666 If node2 is None, compare node1 with working directory. | 666 If node2 is None, compare node1 with working directory. |
667 """ | 667 """ |
668 | 668 |
677 for fn in mf.keys(): | 677 for fn in mf.keys(): |
678 if not match(fn): | 678 if not match(fn): |
679 del mf[fn] | 679 del mf[fn] |
680 return mf | 680 return mf |
681 | 681 |
682 modified, added, removed, deleted, unknown, ignored = [],[],[],[],[],[] | 682 modified, added, removed, deleted, unknown = [], [], [], [], [] |
683 ignored, clean = [], [] | |
684 | |
683 compareworking = False | 685 compareworking = False |
684 if not node1 or (not node2 and node1 == self.dirstate.parents()[0]): | 686 if not node1 or (not node2 and node1 == self.dirstate.parents()[0]): |
685 compareworking = True | 687 compareworking = True |
686 | 688 |
687 if not compareworking: | 689 if not compareworking: |
695 if not wlock: | 697 if not wlock: |
696 try: | 698 try: |
697 wlock = self.wlock(wait=0) | 699 wlock = self.wlock(wait=0) |
698 except lock.LockException: | 700 except lock.LockException: |
699 wlock = None | 701 wlock = None |
700 lookup, modified, added, removed, deleted, unknown, ignored = ( | 702 (lookup, modified, added, removed, deleted, unknown, |
701 self.dirstate.changes(files, match, show_ignored)) | 703 ignored, clean) = self.dirstate.status(files, match, |
704 list_ignored, list_clean) | |
702 | 705 |
703 # are we comparing working dir against its parent? | 706 # are we comparing working dir against its parent? |
704 if compareworking: | 707 if compareworking: |
705 if lookup: | 708 if lookup: |
706 # do a full compare of any files that might have changed | 709 # do a full compare of any files that might have changed |
719 for f in removed: | 722 for f in removed: |
720 if f in mf2: | 723 if f in mf2: |
721 del mf2[f] | 724 del mf2[f] |
722 else: | 725 else: |
723 # we are comparing two revisions | 726 # we are comparing two revisions |
724 deleted, unknown, ignored = [], [], [] | |
725 mf2 = mfmatches(node2) | 727 mf2 = mfmatches(node2) |
726 | 728 |
727 if not compareworking: | 729 if not compareworking: |
728 # flush lists from dirstate before comparing manifests | 730 # flush lists from dirstate before comparing manifests |
729 modified, added = [], [] | 731 modified, added, clean = [], [], [] |
730 | 732 |
731 # make sure to sort the files so we talk to the disk in a | 733 # make sure to sort the files so we talk to the disk in a |
732 # reasonable order | 734 # reasonable order |
733 mf2keys = mf2.keys() | 735 mf2keys = mf2.keys() |
734 mf2keys.sort() | 736 mf2keys.sort() |
735 for fn in mf2keys: | 737 for fn in mf2keys: |
736 if mf1.has_key(fn): | 738 if mf1.has_key(fn): |
737 if mf1[fn] != mf2[fn] and (mf2[fn] != "" or fcmp(fn, mf1)): | 739 if mf1[fn] != mf2[fn] and (mf2[fn] != "" or fcmp(fn, mf1)): |
738 modified.append(fn) | 740 modified.append(fn) |
741 elif list_clean: | |
742 clean.append(fn) | |
739 del mf1[fn] | 743 del mf1[fn] |
740 else: | 744 else: |
741 added.append(fn) | 745 added.append(fn) |
742 | 746 |
743 removed = mf1.keys() | 747 removed = mf1.keys() |
744 | 748 |
745 # sort and return results: | 749 # sort and return results: |
746 for l in modified, added, removed, deleted, unknown, ignored: | 750 for l in modified, added, removed, deleted, unknown, ignored, clean: |
747 l.sort() | 751 l.sort() |
748 if show_ignored is None: | 752 return (modified, added, removed, deleted, unknown, ignored, clean) |
749 return (modified, added, removed, deleted, unknown) | 753 |
754 def changes(self, node1=None, node2=None, files=[], match=util.always, | |
755 wlock=None, list_ignored=False, list_clean=False): | |
756 '''DEPRECATED - use status instead''' | |
757 marduit = self.status(node1, node2, files, match, wlock, | |
758 list_ignored, list_clean) | |
759 if list_ignored: | |
760 return marduit[:-1] | |
750 else: | 761 else: |
751 return (modified, added, removed, deleted, unknown, ignored) | 762 return marduit[:-2] |
752 | 763 |
753 def add(self, list, wlock=None): | 764 def add(self, list, wlock=None): |
754 if not wlock: | 765 if not wlock: |
755 wlock = self.wlock() | 766 wlock = self.wlock() |
756 for f in list: | 767 for f in list: |