Example #1
0
 def add(self, list, prefix=""):
     join = lambda f: os.path.join(prefix, f)
     wlock = self._repo.wlock()
     ui, ds = self._repo.ui, self._repo.dirstate
     try:
         rejected = []
         for f in list:
             scmutil.checkportable(ui, join(f))
             p = self._repo.wjoin(f)
             try:
                 st = os.lstat(p)
             except OSError:
                 ui.warn(_("%s does not exist!\n") % join(f))
                 rejected.append(f)
                 continue
             if st.st_size > 10000000:
                 ui.warn(_("%s: up to %d MB of RAM may be required "
                           "to manage this file\n"
                           "(use 'hg revert %s' to cancel the "
                           "pending addition)\n")
                           % (f, 3 * st.st_size // 1000000, join(f)))
             if not (stat.S_ISREG(st.st_mode) or stat.S_ISLNK(st.st_mode)):
                 ui.warn(_("%s not added: only files and symlinks "
                           "supported currently\n") % join(f))
                 rejected.append(p)
             elif ds[f] in 'amn':
                 ui.warn(_("%s already tracked!\n") % join(f))
             elif ds[f] == 'r':
                 ds.normallookup(f)
             else:
                 ds.add(f)
         return rejected
     finally:
         wlock.release()
    def copyfile(abssrc, relsrc, otarget, exact):
        abstarget = scmutil.canonpath(repo.root, cwd, otarget)
        reltarget = repo.pathto(abstarget, cwd)
        target = repo.wjoin(abstarget)
        src = repo.wjoin(abssrc)
        state = repo.dirstate[abstarget]

        scmutil.checkportable(ui, abstarget)

        # check for collisions
        prevsrc = targets.get(abstarget)
        if prevsrc is not None:
            ui.warn(
                _('%s: not overwriting - %s collides with %s\n') %
                (reltarget, repo.pathto(abssrc, cwd), repo.pathto(
                    prevsrc, cwd)))
            return

        # check for overwrites
        exists = os.path.lexists(target)
        if not after and exists or after and state in 'mn':
            if not opts['force']:
                ui.warn(_('%s: not overwriting - file exists\n') % reltarget)
                return

        if after:
            if not exists:
                if rename:
                    ui.warn(
                        _('%s: not recording move - %s does not exist\n') %
                        (relsrc, reltarget))
                else:
                    ui.warn(
                        _('%s: not recording copy - %s does not exist\n') %
                        (relsrc, reltarget))
                return
        elif not dryrun:
            try:
                if exists:
                    os.unlink(target)
                targetdir = os.path.dirname(target) or '.'
                if not os.path.isdir(targetdir):
                    os.makedirs(targetdir)
                util.copyfile(src, target)
                srcexists = True
            except IOError, inst:
                if inst.errno == errno.ENOENT:
                    ui.warn(_('%s: deleted in working copy\n') % relsrc)
                    srcexists = False
                else:
                    ui.warn(
                        _('%s: cannot copy - %s\n') % (relsrc, inst.strerror))
                    return True  # report a failure
Example #3
0
    def copyfile(abssrc, relsrc, otarget, exact):
        abstarget = scmutil.canonpath(repo.root, cwd, otarget)
        reltarget = repo.pathto(abstarget, cwd)
        target = repo.wjoin(abstarget)
        src = repo.wjoin(abssrc)
        state = repo.dirstate[abstarget]

        scmutil.checkportable(ui, abstarget)

        # check for collisions
        prevsrc = targets.get(abstarget)
        if prevsrc is not None:
            ui.warn(_('%s: not overwriting - %s collides with %s\n') %
                    (reltarget, repo.pathto(abssrc, cwd),
                     repo.pathto(prevsrc, cwd)))
            return

        # check for overwrites
        exists = os.path.lexists(target)
        if not after and exists or after and state in 'mn':
            if not opts['force']:
                ui.warn(_('%s: not overwriting - file exists\n') %
                        reltarget)
                return

        if after:
            if not exists:
                if rename:
                    ui.warn(_('%s: not recording move - %s does not exist\n') %
                            (relsrc, reltarget))
                else:
                    ui.warn(_('%s: not recording copy - %s does not exist\n') %
                            (relsrc, reltarget))
                return
        elif not dryrun:
            try:
                if exists:
                    os.unlink(target)
                targetdir = os.path.dirname(target) or '.'
                if not os.path.isdir(targetdir):
                    os.makedirs(targetdir)
                util.copyfile(src, target)
                srcexists = True
            except IOError, inst:
                if inst.errno == errno.ENOENT:
                    ui.warn(_('%s: deleted in working copy\n') % relsrc)
                    srcexists = False
                else:
                    ui.warn(_('%s: cannot copy - %s\n') %
                            (relsrc, inst.strerror))
                    return True # report a failure
Example #4
0
 def add(self, list, prefix=""):
     join = lambda f: os.path.join(prefix, f)
     wlock = self._repo.wlock()
     ui, ds = self._repo.ui, self._repo.dirstate
     try:
         rejected = []
         for f in list:
             scmutil.checkportable(ui, join(f))
             p = self._repo.wjoin(f)
             try:
                 st = os.lstat(p)
             except OSError:
                 ui.warn(_("%s does not exist!\n") % join(f))
                 rejected.append(f)
                 continue
             if st.st_size > 10000000:
                 ui.warn(
                     _("%s: up to %d MB of RAM may be required "
                       "to manage this file\n"
                       "(use 'hg revert %s' to cancel the "
                       "pending addition)\n") %
                     (f, 3 * st.st_size // 1000000, join(f)))
             if not (stat.S_ISREG(st.st_mode) or stat.S_ISLNK(st.st_mode)):
                 ui.warn(
                     _("%s not added: only files and symlinks "
                       "supported currently\n") % join(f))
                 rejected.append(p)
             elif ds[f] in 'amn':
                 ui.warn(_("%s already tracked!\n") % join(f))
             elif ds[f] == 'r':
                 ds.normallookup(f)
             else:
                 ds.add(f)
         return rejected
     finally:
         wlock.release()