hgext/convert/git.py
changeset 5246 7d3dcdd92a1a
parent 5121 ef338e34a906
parent 5217 149742a628fd
child 5247 20770c5d41e0
--- a/hgext/convert/git.py	Sat Aug 25 12:25:53 2007 -0700
+++ b/hgext/convert/git.py	Sun Aug 26 16:49:26 2007 +0200
@@ -5,8 +5,23 @@
 from common import NoRepo, commit, converter_source
 
 class convert_git(converter_source):
-    def gitcmd(self, s):
-        return os.popen('GIT_DIR=%s %s' % (self.path, s))
+    # Windows does not support GIT_DIR= construct while other systems
+    # cannot remove environment variable. Just assume none have
+    # both issues.
+    if hasattr(os, 'unsetenv'):
+        def gitcmd(self, s):
+            prevgitdir = os.environ.get('GIT_DIR')
+            os.environ['GIT_DIR'] = self.path
+            try:
+                return os.popen(s)
+            finally:
+                if prevgitdir is None:
+                    del os.environ['GIT_DIR']
+                else:
+                    os.environ['GIT_DIR'] = prevgitdir
+    else:
+        def gitcmd(self, s):
+            return os.popen('GIT_DIR=%s %s' % (self.path, s))
 
     def __init__(self, ui, path, rev=None):
         super(convert_git, self).__init__(ui, path, rev=rev)