-rw-r--r-- | scripts/builder/repository.py | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/scripts/builder/repository.py b/scripts/builder/repository.py index 9da98a2..f8528c2 100644 --- a/scripts/builder/repository.py +++ b/scripts/builder/repository.py | |||
@@ -1,75 +1,77 @@ | |||
1 | #!/usr/bin/env python | 1 | #!/usr/bin/env python |
2 | # -*- coding: UTF-8 -*- | 2 | # -*- coding: UTF-8 -*- |
3 | 3 | ||
4 | 4 | ||
5 | def repositoryWithPath (path): | 5 | def repositoryWithPath (path): |
6 | try: | 6 | try: |
7 | from dulwich.repo import Repo | 7 | from git import Repo |
8 | 8 | ||
9 | repo = Repo(path) | 9 | repo = Repo(path) |
10 | result = GitRepository(repo, path) | 10 | result = GitRepository(repo, path) |
11 | except: | 11 | except ImportError: |
12 | print "Failed to import git, please install http://gitorious.org/git-python" | ||
13 | #except: | ||
12 | from mercurial import ui, hg | 14 | from mercurial import ui, hg |
13 | 15 | ||
14 | repo = hg.repository(ui.ui(), path) | 16 | repo = hg.repository(ui.ui(), path) |
15 | result = HgRepository(repo, path) | 17 | result = HgRepository(repo, path) |
16 | 18 | ||
17 | return result | 19 | return result |
18 | 20 | ||
19 | 21 | ||
20 | #=================================================================== | 22 | #=================================================================== |
21 | 23 | ||
22 | 24 | ||
23 | class Repository(object): | 25 | class Repository(object): |
24 | 26 | ||
25 | def __init__ (self, repository, path): | 27 | def __init__ (self, repository, path): |
26 | self.repository = repository | 28 | self.repository = repository |
27 | self.path = path | 29 | self.path = path |
28 | 30 | ||
29 | 31 | ||
30 | def revision (self): | 32 | def revision (self): |
31 | raise NotImplementedError() | 33 | raise NotImplementedError() |
32 | 34 | ||
33 | 35 | ||
34 | def areTherePendingChanges (self): | 36 | def areTherePendingChanges (self): |
35 | raise NotImplementedError() | 37 | raise NotImplementedError() |
36 | 38 | ||
37 | 39 | ||
38 | def version (self): | 40 | def version (self): |
39 | result = self.revision() | 41 | result = self.revision() |
40 | if self.areTherePendingChanges(): | 42 | if self.areTherePendingChanges(): |
41 | result = '>>> ' + result + ' <<<' | 43 | result = '>>> ' + result + ' <<<' |
42 | 44 | ||
43 | # print "VERSION: " + result | 45 | # print "VERSION: " + result |
44 | return result | 46 | return result |
45 | 47 | ||
46 | 48 | ||
47 | #=================================================================== | 49 | #=================================================================== |
48 | 50 | ||
49 | 51 | ||
50 | class GitRepository(Repository): | 52 | class GitRepository(Repository): |
51 | 53 | ||
52 | def revision (self): | 54 | def revision (self): |
53 | return self.repository.refs['HEAD'] | 55 | return self.repository.head.commit.hexsha |
54 | 56 | ||
55 | 57 | ||
56 | def areTherePendingChanges (self): | 58 | def areTherePendingChanges (self): |
57 | return self.repository.is_dirty() | 59 | return self.repository.is_dirty() |
58 | 60 | ||
59 | 61 | ||
60 | #=================================================================== | 62 | #=================================================================== |
61 | 63 | ||
62 | 64 | ||
63 | class HgRepository(Repository): | 65 | class HgRepository(Repository): |
64 | #http://mercurial.selenic.com/wiki/MercurialApi | 66 | #http://mercurial.selenic.com/wiki/MercurialApi |
65 | 67 | ||
66 | def revision (self): | 68 | def revision (self): |
67 | return 'hg:' + str(self.repository['tip']) | 69 | return 'hg:' + str(self.repository['tip']) |
68 | 70 | ||
69 | 71 | ||
70 | def areTherePendingChanges (self): | 72 | def areTherePendingChanges (self): |
71 | # TODO: FIXME: repository.status() does not report 'unknown(?)' files. :( | 73 | # TODO: FIXME: repository.status() does not report 'unknown(?)' files. :( |
72 | return not all(map(lambda fileList: len(fileList) == 0, self.repository.status())) | 74 | return not all(map(lambda fileList: len(fileList) == 0, self.repository.status())) |
73 | 75 | ||
74 | 76 | ||
75 | #=================================================================== | 77 | #=================================================================== |