mercurial/context.py
changeset 12270 166b9866580a
parent 12070 fddacca3202e
child 12345 e0ee3e822a9a
equal deleted inserted replaced
12269:877236cdd437 12270:166b9866580a
   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