Changeset 476
- Timestamp:
- 05/21/08 11:16:54
(8 months ago)
- Author:
- jmowery
- Message:
more storage fixes: locking, export and clean
-
Files:
-
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
| r475 |
r476 |
|
| 428 | 428 | applied_file = self.get_current(file) |
|---|
| 429 | 429 | if applied_file: |
|---|
| 430 | | dest_file = os.path.join(dest_path, os.path.basename(applied_file)) |
|---|
| | 430 | dest_file = os.path.join(dest_path, get_local_name(applied_file)) |
|---|
| 431 | 431 | shutil.copy2(applied_file, dest_file) |
|---|
| 432 | 432 | os.chmod(dest_file, os.stat(dest_file)[stat.ST_MODE]|stat.S_IWUSR) |
|---|
| … | … | |
| 623 | 623 | def clean(self, names, recursive=False): |
|---|
| 624 | 624 | '''For each file or directory in names remove all storage files with timestamps newer than the applied time.''' |
|---|
| 625 | | if not storage: |
|---|
| | 625 | if not self.storage: |
|---|
| 626 | 626 | raise RuntimeError, 'Attempt to clean uncontrolled layer.' |
|---|
| 627 | 627 | if names.__class__ == [].__class__: |
|---|
| … | … | |
| 641 | 641 | if recursive: |
|---|
| 642 | 642 | self.clean(self.list_controlled_dirs(), recursive) |
|---|
| | 643 | self.rollback(name='.', recursive=recursive) #will call update() no need to call again |
|---|
| 643 | 644 | return |
|---|
| 644 | 645 | elif self.entries[name].type == 'DIR' or self.entries[name].type == 'LOCAL': |
|---|
| … | … | |
| 655 | 656 | if f.startswith(name): |
|---|
| 656 | 657 | if int(get_timestamp(f)) > self.entries[name].applied: |
|---|
| 657 | | os.remove(f) |
|---|
| | 658 | os.remove(os.path.join(self.storage.storage_dir, f)) |
|---|
| | 659 | self.modified = True |
|---|
| 658 | 660 | self.update() #call again to update latest entries |
|---|
| 659 | 661 | |
|---|
| … | … | |
| 840 | 842 | def lock(self, names=['.'], recursive=False): |
|---|
| 841 | 843 | '''Lock each file or directory in names preventing modifications other than rollback.''' |
|---|
| 842 | | if not self.stprage: |
|---|
| | 844 | if not self.storage: |
|---|
| 843 | 845 | raise RuntimeError, 'Attempt to lock files in uncontroled layer.' |
|---|
| 844 | 846 | if names.__class__ == [].__class__: |
|---|
| 845 | 847 | for name in names: |
|---|
| 846 | 848 | self.lock(name, recursive) |
|---|
| 847 | | name = os.path.basename(name) |
|---|
| | 849 | name = os.path.basename(names) |
|---|
| 848 | 850 | if not self.entries.has_key(name): |
|---|
| 849 | 851 | raise ValueError, 'Layer \'' + self.name + '\' has no entry for \'' + name +'\'.' |
|---|
| … | … | |
| 874 | 876 | def unlock(self, names=['.'], recursive=False): |
|---|
| 875 | 877 | '''Unlock each file or directory in names.''' |
|---|
| 876 | | if not self.stprage: |
|---|
| | 878 | if not self.storage: |
|---|
| 877 | 879 | raise RuntimeError, 'Attempt to lock files in uncontroled layer.' |
|---|
| 878 | 880 | if names.__class__ == [].__class__: |
|---|
| 879 | 881 | for name in names: |
|---|
| 880 | 882 | self.unlock(name, recursive) |
|---|
| 881 | | name = os.path.basename(name) |
|---|
| | 883 | name = os.path.basename(names) |
|---|
| 882 | 884 | if not self.entries.has_key(name): |
|---|
| 883 | 885 | raise ValueError, 'Layer \'' + self.name + '\' has no entry for \'' + name +'\'.' |
|---|
Download in other formats:
* Generating other formats may take time.