changeset 5229:149742a628fd

convert: fix issue702 about GIT_DIR= construct unsupported under Windows.
author Patrick Mezard <pmezard@gmail.com>
date Sun, 26 Aug 2007 14:51:27 +0200
parents 39e6deaa8b81
children 4fa0f2dff643
files hgext/convert/git.py
diffstat 1 files changed, 17 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/hgext/convert/git.py
+++ b/hgext/convert/git.py
@@ -14,8 +14,23 @@ def recode(s):
             return s.decode("utf-8", "replace").encode("utf-8")
 
 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):
         if os.path.isdir(path + "/.git"):