913 for f in r: |
913 for f in r: |
914 getfile(f, mmap[f]) |
914 getfile(f, mmap[f]) |
915 util.set_exec(repo.wjoin(f), mmap.execf(f)) |
915 util.set_exec(repo.wjoin(f), mmap.execf(f)) |
916 repo.dirstate.update(m + r, 'n') |
916 repo.dirstate.update(m + r, 'n') |
917 for f in a: |
917 for f in a: |
918 try: os.unlink(repo.wjoin(f)) |
918 try: |
919 except: raise |
919 os.unlink(repo.wjoin(f)) |
|
920 except OSError, e: |
|
921 if e.errno != errno.ENOENT: |
|
922 raise |
920 try: os.removedirs(os.path.dirname(repo.wjoin(f))) |
923 try: os.removedirs(os.path.dirname(repo.wjoin(f))) |
921 except: pass |
924 except: pass |
922 if a: |
925 if a: |
923 repo.dirstate.forget(a) |
926 repo.dirstate.forget(a) |
924 repo.dirstate.setparents(qp, revlog.nullid) |
927 repo.dirstate.setparents(qp, revlog.nullid) |
1059 self.applied[-1] = statusentry(revlog.hex(n), patchfn) |
1062 self.applied[-1] = statusentry(revlog.hex(n), patchfn) |
1060 self.applied_dirty = 1 |
1063 self.applied_dirty = 1 |
1061 else: |
1064 else: |
1062 self.printdiff(repo, patchparent, fp=patchf) |
1065 self.printdiff(repo, patchparent, fp=patchf) |
1063 patchf.close() |
1066 patchf.close() |
|
1067 added = repo.status()[1] |
|
1068 for a in added: |
|
1069 f = repo.wjoin(a) |
|
1070 try: |
|
1071 os.unlink(f) |
|
1072 except OSError, e: |
|
1073 if e.errno != errno.ENOENT: |
|
1074 raise |
|
1075 try: os.removedirs(os.path.dirname(f)) |
|
1076 except: pass |
|
1077 # forget the file copies in the dirstate |
|
1078 # push should readd the files later on |
|
1079 repo.dirstate.forget(added) |
1064 self.pop(repo, force=True, wlock=wlock) |
1080 self.pop(repo, force=True, wlock=wlock) |
1065 self.push(repo, force=True, wlock=wlock) |
1081 self.push(repo, force=True, wlock=wlock) |
1066 |
1082 |
1067 def init(self, repo, create=False): |
1083 def init(self, repo, create=False): |
1068 if os.path.isdir(self.path): |
1084 if os.path.isdir(self.path): |