From d63060fc9546e2132d0ad7791beb795906372e86 Mon Sep 17 00:00:00 2001 From: Nico Sallembien Date: Wed, 20 Jan 2010 10:27:50 -0800 Subject: [PATCH] Check that we are not overwriting a local repository when syncing. If a local git repository exists within the same folder as a new project that is added, when the user syncs the repo, the sync will overwrite the local files under the project's .git repository with its own symlinks. Make sure that we do not overwrite 'normal' files in repo and throw an error when that happens. --- project.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/project.py b/project.py index 4930a275..902a2b44 100644 --- a/project.py +++ b/project.py @@ -1120,7 +1120,10 @@ class Project(object): try: src = os.path.join(self.gitdir, name) dst = os.path.join(dotgit, name) - os.symlink(relpath(src, dst), dst) + if os.path.islink(dst) or not os.path.exists(dst): + os.symlink(relpath(src, dst), dst) + else: + raise GitError('cannot overwrite a local work tree') except OSError, e: if e.errno == errno.EPERM: raise GitError('filesystem must support symlinks')