Show More
@@ -81,7 +81,6 b' class shelvedfile(object):' | |||||
81 | def __init__(self, repo, name, filetype=None): |
|
81 | def __init__(self, repo, name, filetype=None): | |
82 | self.name = name |
|
82 | self.name = name | |
83 | self.vfs = vfsmod.vfs(repo.vfs.join(shelvedir)) |
|
83 | self.vfs = vfsmod.vfs(repo.vfs.join(shelvedir)) | |
84 | self.backupvfs = vfsmod.vfs(repo.vfs.join(backupdir)) |
|
|||
85 | if filetype: |
|
84 | if filetype: | |
86 | self.fname = name + b'.' + filetype |
|
85 | self.fname = name + b'.' + filetype | |
87 | else: |
|
86 | else: | |
@@ -90,22 +89,6 b' class shelvedfile(object):' | |||||
90 | def exists(self): |
|
89 | def exists(self): | |
91 | return self.vfs.exists(self.fname) |
|
90 | return self.vfs.exists(self.fname) | |
92 |
|
91 | |||
93 | def backupfilename(self): |
|
|||
94 | def gennames(base): |
|
|||
95 | yield base |
|
|||
96 | base, ext = base.rsplit(b'.', 1) |
|
|||
97 | for i in itertools.count(1): |
|
|||
98 | yield b'%s-%d.%s' % (base, i, ext) |
|
|||
99 |
|
||||
100 | for n in gennames(self.fname): |
|
|||
101 | if not self.backupvfs.exists(n): |
|
|||
102 | return self.backupvfs.join(n) |
|
|||
103 |
|
||||
104 | def movetobackup(self): |
|
|||
105 | if not self.backupvfs.isdir(): |
|
|||
106 | self.backupvfs.makedir() |
|
|||
107 | util.rename(self.vfs.join(self.fname), self.backupfilename()) |
|
|||
108 |
|
||||
109 |
|
92 | |||
110 | class Shelf(object): |
|
93 | class Shelf(object): | |
111 | """Represents a shelf, including possibly multiple files storing it. |
|
94 | """Represents a shelf, including possibly multiple files storing it. | |
@@ -119,6 +102,7 b' class Shelf(object):' | |||||
119 | self.repo = repo |
|
102 | self.repo = repo | |
120 | self.name = name |
|
103 | self.name = name | |
121 | self.vfs = vfsmod.vfs(repo.vfs.join(shelvedir)) |
|
104 | self.vfs = vfsmod.vfs(repo.vfs.join(shelvedir)) | |
|
105 | self.backupvfs = vfsmod.vfs(repo.vfs.join(backupdir)) | |||
122 |
|
106 | |||
123 | def exists(self): |
|
107 | def exists(self): | |
124 | return self.vfs.exists(self.name + b'.' + patchextension) |
|
108 | return self.vfs.exists(self.name + b'.' + patchextension) | |
@@ -188,6 +172,27 b' class Shelf(object):' | |||||
188 | def open_patch(self, mode=b'rb'): |
|
172 | def open_patch(self, mode=b'rb'): | |
189 | return self.vfs(self.name + b'.patch', mode) |
|
173 | return self.vfs(self.name + b'.patch', mode) | |
190 |
|
174 | |||
|
175 | def _backupfilename(self, filename): | |||
|
176 | def gennames(base): | |||
|
177 | yield base | |||
|
178 | base, ext = base.rsplit(b'.', 1) | |||
|
179 | for i in itertools.count(1): | |||
|
180 | yield b'%s-%d.%s' % (base, i, ext) | |||
|
181 | ||||
|
182 | for n in gennames(filename): | |||
|
183 | if not self.backupvfs.exists(n): | |||
|
184 | return self.backupvfs.join(n) | |||
|
185 | ||||
|
186 | def movetobackup(self): | |||
|
187 | if not self.backupvfs.isdir(): | |||
|
188 | self.backupvfs.makedir() | |||
|
189 | for suffix in shelvefileextensions: | |||
|
190 | filename = self.name + b'.' + suffix | |||
|
191 | if self.vfs.exists(filename): | |||
|
192 | util.rename( | |||
|
193 | self.vfs.join(filename), self._backupfilename(filename) | |||
|
194 | ) | |||
|
195 | ||||
191 |
|
196 | |||
192 | class shelvedstate(object): |
|
197 | class shelvedstate(object): | |
193 | """Handle persistence during unshelving operations. |
|
198 | """Handle persistence during unshelving operations. | |
@@ -602,10 +607,7 b' def cleanupcmd(ui, repo):' | |||||
602 |
|
607 | |||
603 | with repo.wlock(): |
|
608 | with repo.wlock(): | |
604 | for _mtime, name in listshelves(repo): |
|
609 | for _mtime, name in listshelves(repo): | |
605 | for suffix in shelvefileextensions: |
|
610 | Shelf(repo, name).movetobackup() | |
606 | shfile = shelvedfile(repo, name, suffix) |
|
|||
607 | if shfile.exists(): |
|
|||
608 | shfile.movetobackup() |
|
|||
609 | cleanupoldbackups(repo) |
|
611 | cleanupoldbackups(repo) | |
610 |
|
612 | |||
611 |
|
613 | |||
@@ -619,10 +621,7 b' def deletecmd(ui, repo, pats):' | |||||
619 | raise error.InputError( |
|
621 | raise error.InputError( | |
620 | _(b"shelved change '%s' not found") % name |
|
622 | _(b"shelved change '%s' not found") % name | |
621 | ) |
|
623 | ) | |
622 | for suffix in shelvefileextensions: |
|
624 | Shelf(repo, name).movetobackup() | |
623 | shfile = shelvedfile(repo, name, suffix) |
|
|||
624 | if shfile.exists(): |
|
|||
625 | shfile.movetobackup() |
|
|||
626 | cleanupoldbackups(repo) |
|
625 | cleanupoldbackups(repo) | |
627 |
|
626 | |||
628 |
|
627 | |||
@@ -791,10 +790,7 b' def restorebranch(ui, repo, branchtorest' | |||||
791 | def unshelvecleanup(ui, repo, name, opts): |
|
790 | def unshelvecleanup(ui, repo, name, opts): | |
792 | """remove related files after an unshelve""" |
|
791 | """remove related files after an unshelve""" | |
793 | if not opts.get(b'keep'): |
|
792 | if not opts.get(b'keep'): | |
794 | for filetype in shelvefileextensions: |
|
793 | Shelf(repo, name).movetobackup() | |
795 | shfile = shelvedfile(repo, name, filetype) |
|
|||
796 | if shfile.exists(): |
|
|||
797 | shfile.movetobackup() |
|
|||
798 | cleanupoldbackups(repo) |
|
794 | cleanupoldbackups(repo) | |
799 |
|
795 | |||
800 |
|
796 |
General Comments 0
You need to be logged in to leave comments.
Login now