Skip to content

Commit b97598c

Browse files
Clean up temporary local repo clones before running commands to aboid conflicts
Signed-off-by: Jacob Stopak <jacob@initialcommit.io>
1 parent 88bf60d commit b97598c

File tree

6 files changed

+26
-32
lines changed

6 files changed

+26
-32
lines changed

git_sim/clone.py

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ def construct(self):
6565
self.repo.git.clear_cache()
6666

6767
# Delete the local clones
68-
shutil.rmtree(new_dir, onerror=del_rw)
68+
shutil.rmtree(new_dir, onerror=self.del_rw)
6969

7070
def add_details(self, repo_name):
7171
text1 = m.Text(
@@ -95,8 +95,3 @@ def add_details(self, repo_name):
9595
self.play(m.AddTextLetterByLetter(text1), m.AddTextLetterByLetter(text2))
9696
else:
9797
self.add(text1, text2)
98-
99-
100-
def del_rw(action, name, exc):
101-
os.chmod(name, stat.S_IWRITE)
102-
os.remove(name)

git_sim/fetch.py

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -72,9 +72,4 @@ def construct(self):
7272
self.fadeout()
7373
self.show_outro()
7474
self.repo.git.clear_cache()
75-
shutil.rmtree(new_dir, onerror=del_rw)
76-
77-
78-
def del_rw(action, name, exc):
79-
os.chmod(name, stat.S_IWRITE)
80-
os.remove(name)
75+
shutil.rmtree(new_dir, onerror=self.del_rw)

git_sim/git_sim_base_command.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
import platform
22
import sys
3+
import os
4+
import tempfile
5+
import shutil
6+
import stat
37

48
import git
59
import manim as m
@@ -52,6 +56,17 @@ def __init__(self):
5256
def init_repo(self):
5357
try:
5458
self.repo = Repo(search_parent_directories=True)
59+
repo_name = os.path.basename(self.repo.working_dir)
60+
new_dir = os.path.join(tempfile.gettempdir(), "git_sim", repo_name)
61+
new_dir2 = os.path.join(tempfile.gettempdir(), "git_sim", repo_name + "2")
62+
try:
63+
shutil.rmtree(new_dir, onerror=self.del_rw)
64+
except FileNotFoundError:
65+
pass
66+
try:
67+
shutil.rmtree(new_dir2, onerror=self.del_rw)
68+
except FileNotFoundError:
69+
pass
5570
except InvalidGitRepositoryError:
5671
print("git-sim error: No Git repository found at current path.")
5772
sys.exit(1)
@@ -1180,6 +1195,10 @@ def add_group_to_author_groups(self, author, group):
11801195
else:
11811196
self.author_groups[author].append(group)
11821197

1198+
def del_rw(self, action, name, exc):
1199+
os.chmod(name, stat.S_IWRITE)
1200+
os.remove(name)
1201+
11831202

11841203
class DottedLine(m.Line):
11851204
def __init__(self, *args, dot_spacing=0.4, dot_kwargs={}, **kwargs):

git_sim/merge.py

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ def construct(self):
148148
self.repo.git.clear_cache()
149149

150150
# Delete the local clone
151-
shutil.rmtree(new_dir, onerror=del_rw)
151+
shutil.rmtree(new_dir, onerror=self.del_rw)
152152

153153

154154
def check_merge_conflict(self, branch1, branch2):
@@ -185,8 +185,3 @@ def populate_zones(
185185
):
186186
for filename in self.conflicted_files:
187187
secondColumnFileNames.add(filename)
188-
189-
190-
def del_rw(action, name, exc):
191-
os.chmod(name, stat.S_IWRITE)
192-
os.remove(name)

git_sim/pull.py

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ def construct(self):
8282
f"git-sim error: git pull failed for unhandled reason: {e.stdout}"
8383
)
8484
self.repo.git.clear_cache()
85-
shutil.rmtree(new_dir, onerror=del_rw)
85+
shutil.rmtree(new_dir, onerror=self.del_rw)
8686
sys.exit(1)
8787

8888
self.color_by()
@@ -93,7 +93,7 @@ def construct(self):
9393
self.repo.git.clear_cache()
9494

9595
# Delete the local clone
96-
shutil.rmtree(new_dir, onerror=del_rw)
96+
shutil.rmtree(new_dir, onerror=self.del_rw)
9797

9898
# Override to display conflicted filenames
9999
def populate_zones(
@@ -107,8 +107,3 @@ def populate_zones(
107107
):
108108
for filename in self.conflicted_files:
109109
secondColumnFileNames.add(filename)
110-
111-
112-
def del_rw(action, name, exc):
113-
os.chmod(name, stat.S_IWRITE)
114-
os.remove(name)

git_sim/push.py

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -109,8 +109,8 @@ def construct(self):
109109
self.orig_repo.git.clear_cache()
110110

111111
# Delete the local clones
112-
shutil.rmtree(new_dir, onerror=del_rw)
113-
shutil.rmtree(new_dir2, onerror=del_rw)
112+
shutil.rmtree(new_dir, onerror=self.del_rw)
113+
shutil.rmtree(new_dir2, onerror=self.del_rw)
114114

115115
def failed_push(self, push_result):
116116
if push_result == 1:
@@ -196,8 +196,3 @@ def failed_push(self, push_result):
196196
self.play(*[m.AddTextLetterByLetter(t) for t in texts])
197197
else:
198198
self.add(*texts)
199-
200-
201-
def del_rw(action, name, exc):
202-
os.chmod(name, stat.S_IWRITE)
203-
os.remove(name)

0 commit comments

Comments
 (0)