-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbackup_manager.py
More file actions
107 lines (67 loc) · 1.53 KB
/
Copy pathbackup_manager.py
File metadata and controls
107 lines (67 loc) · 1.53 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
"""
RepoForge V3 Backup Manager
Protects files before AI modifications.
"""
from pathlib import Path
import shutil
from datetime import datetime
class BackupManager:
"""
Creates safe backups before patches.
"""
def __init__(
self,
repo_path
):
self.repo_path = Path(
repo_path
)
self.backup_dir = (
self.repo_path
/
".repoforge"
/
"backups"
)
self.backup_dir.mkdir(
parents=True,
exist_ok=True
)
def create_backup(
self,
file_path
):
"""
Create timestamped backup.
Returns:
backup path or None
"""
file_path = Path(
file_path
)
if not file_path.exists():
return None
timestamp = (
datetime.now()
.strftime(
"%Y%m%d_%H%M%S"
)
)
backup_name = (
f"{file_path.name}.{timestamp}.bak"
)
backup_path = (
self.backup_dir
/
backup_name
)
try:
shutil.copy2(
file_path,
backup_path
)
if backup_path.exists():
return backup_path
except Exception:
return None
return None