Index: svnperms.py
===================================================================
--- svnperms.py	(revision 37182)
+++ svnperms.py	(working copy)
@@ -6,15 +6,10 @@
 # $LastChangedBy$
 # $LastChangedRevision$
 
+from subprocess import PIPE, Popen
 import sys, os
 import getopt
 try:
-  # Python >=3.0
-  from subprocess import getstatusoutput as subprocess_getstatusoutput
-except ImportError:
-  # Python <3.0
-  from commands import getstatusoutput as subprocess_getstatusoutput
-try:
     my_getopt = getopt.gnu_getopt
 except AttributeError:
     my_getopt = getopt.getopt
@@ -146,15 +141,18 @@
         self.rev = rev
 
     def _execcmd(self, *cmd, **kwargs):
-        cmdstr = " ".join(cmd)
-        status, output = subprocess_getstatusoutput(cmdstr)
-        if status != 0:
-            sys.stderr.write(cmdstr)
-            sys.stderr.write("\n")
-            sys.stderr.write(output)
-            raise Error("command failed: %s\n%s" % (cmdstr, output))
-        return status, output
+        process = Popen(cmd, stdout = PIPE, stderr = PIPE)
+        status = process.wait()
+        if 0 == status:
+            return status, process.stdout.read()
 
+        cmdstr = ' '.join(cmd)
+        error_output = process.stderr.read()
+        sys.stderr.write(cmdstr)
+        sys.stderr.write('\n')
+        sys.stderr.write(error_output)
+        raise Error("command failed: %s\n%s" % (cmdstr, error_output))
+
     def _execsvnlook(self, cmd, *args, **kwargs):
         execcmd_args = ["svnlook", cmd, self.repospath]
         self._add_txnrev(execcmd_args, kwargs)

