diff options
author | Aaron Bentley <aaron.bentley@utoronto.ca> | 2007-07-15 12:43:30 -0400 |
---|---|---|
committer | Aaron Bentley <aaron.bentley@utoronto.ca> | 2007-07-15 12:43:30 -0400 |
commit | 7969f5ec12c0107b7c799a7bf26d8c43c1615b15 (patch) | |
tree | 1d7f3f22fceabe46752fe85907bd24c40175abe2 /libbe/rcs.py | |
parent | 9703aefca39996f954a91f5426f193c06661e69c (diff) | |
parent | b14962ab20d38c2a8fdaba8ecde55174141891a5 (diff) | |
download | bugseverywhere-7969f5ec12c0107b7c799a7bf26d8c43c1615b15.tar.gz |
Merge from panometrics
Diffstat (limited to 'libbe/rcs.py')
-rw-r--r-- | libbe/rcs.py | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/libbe/rcs.py b/libbe/rcs.py index ac96734..64503db 100644 --- a/libbe/rcs.py +++ b/libbe/rcs.py @@ -15,6 +15,8 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA from subprocess import Popen, PIPE +import sys + def rcs_by_name(rcs_name): """Return the module for the RCS with the given name""" if rcs_name == "Arch": @@ -23,6 +25,9 @@ def rcs_by_name(rcs_name): elif rcs_name == "bzr": import bzr return bzr + elif rcs_name == "hg": + import hg + return hg elif rcs_name == "None": import no_rcs return no_rcs @@ -31,10 +36,13 @@ def detect(dir): """Return the module for the rcs being used in this directory""" import arch import bzr + import hg if arch.detect(dir): return arch elif bzr.detect(dir): return bzr + elif hg.detect(dir): + return hg import no_rcs return no_rcs @@ -44,10 +52,14 @@ class CommandError(Exception): self.err_str = err_str self.status = status -def invoke(args, expect=(0,)): - q = Popen(args, stdin=PIPE, stdout=PIPE, stderr=PIPE) - output = q.stdout.read() - error = q.stderr.read() +def invoke(args, expect=(0,), cwd=None): + if sys.platform != "win32": + q = Popen(args, stdin=PIPE, stdout=PIPE, stderr=PIPE, cwd=cwd) + else: + # win32 don't have os.execvp() so have to run command in a shell + q = Popen(args, stdin=PIPE, stdout=PIPE, stderr=PIPE, shell=True, + cwd=cwd) + output, error = q.communicate() status = q.wait() if status not in expect: raise CommandError(error, status) |