Mercurial > hg
comparison hgext/convert/git.py @ 10986:610f047326b9 stable
convert/git: check status when reading the whole output
author | Patrick Mezard <pmezard@gmail.com> |
---|---|
date | Sun, 25 Apr 2010 22:59:50 +0200 |
parents | 7fab6ae3f688 |
children | b3af02b1f19f |
comparison
equal
deleted
inserted
replaced
10985:7fab6ae3f688 | 10986:610f047326b9 |
---|---|
28 os.environ['GIT_DIR'] = prevgitdir | 28 os.environ['GIT_DIR'] = prevgitdir |
29 else: | 29 else: |
30 def gitopen(self, s): | 30 def gitopen(self, s): |
31 return util.popen('GIT_DIR=%s %s' % (self.path, s), 'rb') | 31 return util.popen('GIT_DIR=%s %s' % (self.path, s), 'rb') |
32 | 32 |
33 def gitread(self, s): | |
34 fh = self.gitopen(s) | |
35 data = fh.read() | |
36 return data, fh.close() | |
37 | |
33 def __init__(self, ui, path, rev=None): | 38 def __init__(self, ui, path, rev=None): |
34 super(convert_git, self).__init__(ui, path, rev=rev) | 39 super(convert_git, self).__init__(ui, path, rev=rev) |
35 | 40 |
36 if os.path.isdir(path + "/.git"): | 41 if os.path.isdir(path + "/.git"): |
37 path += "/.git" | 42 path += "/.git" |
42 | 47 |
43 self.path = path | 48 self.path = path |
44 | 49 |
45 def getheads(self): | 50 def getheads(self): |
46 if not self.rev: | 51 if not self.rev: |
47 fh = self.gitopen('git rev-parse --branches --remotes') | 52 heads, ret = self.gitread('git rev-parse --branches --remotes') |
48 return fh.read().splitlines() | 53 heads = heads.splitlines() |
49 else: | 54 else: |
50 fh = self.gitopen("git rev-parse --verify %s" % self.rev) | 55 heads, ret = self.gitread("git rev-parse --verify %s" % self.rev) |
51 return [fh.read()[:-1]] | 56 heads = [heads[:-1]] |
57 if ret: | |
58 raise util.Abort(_('cannot retrieve git heads')) | |
59 return heads | |
52 | 60 |
53 def catfile(self, rev, type): | 61 def catfile(self, rev, type): |
54 if rev == "0" * 40: | 62 if rev == "0" * 40: |
55 raise IOError() | 63 raise IOError() |
56 fh = self.gitopen("git cat-file %s %s" % (type, rev)) | 64 data, ret = self.gitread("git cat-file %s %s" % (type, rev)) |
57 return fh.read() | 65 if ret: |
66 raise util.Abort(_('cannot read %r object at %s') % (type, rev)) | |
67 return data | |
58 | 68 |
59 def getfile(self, name, rev): | 69 def getfile(self, name, rev): |
60 return self.catfile(rev, "blob") | 70 return self.catfile(rev, "blob") |
61 | 71 |
62 def getmode(self, name, rev): | 72 def getmode(self, name, rev): |