瀏覽代碼

Set forall environment variables to empty string if None

If the value obtained is None we now set the variable to
'' instead, in an attempt to make execve() happier about
our 3rd argument, the env dictionary.

Signed-off-by: Shawn O. Pearce <sop@google.com>
Shawn O. Pearce 17 年之前
父節點
當前提交
1775dbe176
共有 1 個文件被更改,包括 12 次插入7 次删除
  1. 12 7
      subcmds/forall.py

+ 12 - 7
subcmds/forall.py

@@ -82,16 +82,21 @@ not redirected.
     rc = 0
     rc = 0
     for project in self.GetProjects(args):
     for project in self.GetProjects(args):
       env = dict(os.environ.iteritems())
       env = dict(os.environ.iteritems())
-      env['REPO_PROJECT'] = project.name
-      env['REPO_PATH'] = project.relpath
-      env['REPO_REMOTE'] = project.remote.name
-      env['REPO_LREV'] = project\
+      def setenv(name, val):
+        if val is None:
+          val = ''
+        env[name] = val
+
+      setenv('REPO_PROJECT', project.name)
+      setenv('REPO_PATH', project.relpath)
+      setenv('REPO_REMOTE', project.remote.name)
+      setenv('REPO_LREV', project\
         .GetRemote(project.remote.name)\
         .GetRemote(project.remote.name)\
-        .ToLocal(project.revision)
-      env['REPO_RREV'] = project.revision
+        .ToLocal(project.revision))
+      setenv('REPO_RREV', project.revision)
 
 
       if mirror:
       if mirror:
-        env['GIT_DIR'] = project.gitdir
+        setenv('GIT_DIR', project.gitdir)
         cwd = project.gitdir
         cwd = project.gitdir
       else:
       else:
         cwd = project.worktree
         cwd = project.worktree