From: Pavel Roskin Date: Wed, 11 Jan 2006 22:19:26 GMT Subject: [PATCH] stgit: fix clone Message-ID: <1137017966.10975.8.camel@dv> "stg clone" is currently broken: $ stg clone http://homepage.ntlworld.com/cmarinas/stgit.git stg clone: git-rev-parse --git-dir failed This happens with current git. "git-rev-parse --git-dir" doesn't work in an empty directory. The patch avoids running "git-rev-parse --git-dir" when the requested command doesn't assume existence of git repository. Signed-off-by: Pavel Roskin --- Warning: this is my first non-trivial patch to StGIT and the first patch to a Python program. diff --git a/stgit/git.py b/stgit/git.py index a7b1c3f..0e63f69 100644 --- a/stgit/git.py +++ b/stgit/git.py @@ -82,13 +82,16 @@ __commits = dict() # Functions # -def get_base_dir(): +def get_base_dir(assume_top = False): """Different start-up variables read from the environment """ if 'GIT_DIR' in os.environ: return os.environ['GIT_DIR'] else: - return _output_one_line('git-rev-parse --git-dir') + if assume_top: + return '.git' + else: + return _output_one_line('git-rev-parse --git-dir') def get_commit(id_hash): """Commit objects factory. Save/look-up them in the __commits diff --git a/stgit/stack.py b/stgit/stack.py index 8b7c296..1c080b3 100644 --- a/stgit/stack.py +++ b/stgit/stack.py @@ -263,7 +263,7 @@ class Series: self.__name = git.get_head_file() if self.__name: - base_dir = git.get_base_dir() + base_dir = git.get_base_dir(assume_top = (name == 'master')) self.__patch_dir = os.path.join(base_dir, 'patches', self.__name) self.__base_file = os.path.join(base_dir, 'refs', 'bases', -- Regards, Pavel Roskin