equal
deleted
inserted
replaced
788 |
788 |
789 def docopy(ui, repo, pats, opts): |
789 def docopy(ui, repo, pats, opts): |
790 cwd = repo.getcwd() |
790 cwd = repo.getcwd() |
791 errors = 0 |
791 errors = 0 |
792 copied = [] |
792 copied = [] |
|
793 targets = {} |
793 |
794 |
794 def okaytocopy(abs, rel, exact): |
795 def okaytocopy(abs, rel, exact): |
795 reasons = {'?': _('is not managed'), |
796 reasons = {'?': _('is not managed'), |
796 'a': _('has been marked for add')} |
797 'a': _('has been marked for add')} |
797 reason = reasons.get(repo.dirstate.state(abs)) |
798 reason = reasons.get(repo.dirstate.state(abs)) |
801 return True |
802 return True |
802 |
803 |
803 def copy(abssrc, relsrc, target, exact): |
804 def copy(abssrc, relsrc, target, exact): |
804 abstarget = util.canonpath(repo.root, cwd, target) |
805 abstarget = util.canonpath(repo.root, cwd, target) |
805 reltarget = util.pathto(cwd, abstarget) |
806 reltarget = util.pathto(cwd, abstarget) |
806 if os.path.exists(reltarget): |
807 prevsrc = targets.get(abstarget) |
|
808 if prevsrc is not None: |
|
809 ui.warn(_('%s: not overwriting - %s collides with %s\n') % |
|
810 (reltarget, abssrc, prevsrc)) |
|
811 return |
|
812 elif os.path.exists(reltarget): |
807 if opts['force']: |
813 if opts['force']: |
808 os.unlink(reltarget) |
814 os.unlink(reltarget) |
809 else: |
815 else: |
810 ui.warn(_('%s: not overwriting - file exists\n') % |
816 ui.warn(_('%s: not overwriting - file exists\n') % |
811 reltarget) |
817 reltarget) |
827 else: |
833 else: |
828 ui.warn(_('%s: cannot copy - %s\n') % |
834 ui.warn(_('%s: cannot copy - %s\n') % |
829 (relsrc, inst.strerror)) |
835 (relsrc, inst.strerror)) |
830 errors += 1 |
836 errors += 1 |
831 return |
837 return |
|
838 targets[abstarget] = abssrc |
832 repo.copy(abssrc, abstarget) |
839 repo.copy(abssrc, abstarget) |
833 copied.append((abssrc, relsrc, exact)) |
840 copied.append((abssrc, relsrc, exact)) |
834 |
841 |
835 pats = list(pats) |
842 pats = list(pats) |
836 if not pats: |
843 if not pats: |