767 # check current working dir |
767 # check current working dir |
768 return (self.p2() or self.branch() != self.p1().branch() or |
768 return (self.p2() or self.branch() != self.p1().branch() or |
769 self.modified() or self.added() or self.removed() or |
769 self.modified() or self.added() or self.removed() or |
770 (missing and self.deleted())) |
770 (missing and self.deleted())) |
771 |
771 |
772 def add(self, list): |
772 def add(self, list, prefix=""): |
|
773 join = lambda f: os.path.join(prefix, f) |
773 wlock = self._repo.wlock() |
774 wlock = self._repo.wlock() |
774 ui, ds = self._repo.ui, self._repo.dirstate |
775 ui, ds = self._repo.ui, self._repo.dirstate |
775 try: |
776 try: |
776 rejected = [] |
777 rejected = [] |
777 for f in list: |
778 for f in list: |
778 p = self._repo.wjoin(f) |
779 p = self._repo.wjoin(f) |
779 try: |
780 try: |
780 st = os.lstat(p) |
781 st = os.lstat(p) |
781 except: |
782 except: |
782 ui.warn(_("%s does not exist!\n") % f) |
783 ui.warn(_("%s does not exist!\n") % join(f)) |
783 rejected.append(f) |
784 rejected.append(f) |
784 continue |
785 continue |
785 if st.st_size > 10000000: |
786 if st.st_size > 10000000: |
786 ui.warn(_("%s: up to %d MB of RAM may be required " |
787 ui.warn(_("%s: up to %d MB of RAM may be required " |
787 "to manage this file\n" |
788 "to manage this file\n" |
788 "(use 'hg revert %s' to cancel the " |
789 "(use 'hg revert %s' to cancel the " |
789 "pending addition)\n") |
790 "pending addition)\n") |
790 % (f, 3 * st.st_size // 1000000, f)) |
791 % (f, 3 * st.st_size // 1000000, join(f))) |
791 if not (stat.S_ISREG(st.st_mode) or stat.S_ISLNK(st.st_mode)): |
792 if not (stat.S_ISREG(st.st_mode) or stat.S_ISLNK(st.st_mode)): |
792 ui.warn(_("%s not added: only files and symlinks " |
793 ui.warn(_("%s not added: only files and symlinks " |
793 "supported currently\n") % f) |
794 "supported currently\n") % join(f)) |
794 rejected.append(p) |
795 rejected.append(p) |
795 elif ds[f] in 'amn': |
796 elif ds[f] in 'amn': |
796 ui.warn(_("%s already tracked!\n") % f) |
797 ui.warn(_("%s already tracked!\n") % join(f)) |
797 elif ds[f] == 'r': |
798 elif ds[f] == 'r': |
798 ds.normallookup(f) |
799 ds.normallookup(f) |
799 else: |
800 else: |
800 ds.add(f) |
801 ds.add(f) |
801 return rejected |
802 return rejected |