summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--scripts/builder/repository.py3
1 files changed, 2 insertions, 1 deletions
diff --git a/scripts/builder/repository.py b/scripts/builder/repository.py
index 7a44e47..2d4a12b 100644
--- a/scripts/builder/repository.py
+++ b/scripts/builder/repository.py
@@ -1,99 +1,100 @@
1#!/usr/bin/env python 1#!/usr/bin/env python
2# -*- coding: UTF-8 -*- 2# -*- coding: UTF-8 -*-
3 3
4 4
5def repositoryWithPath (path): 5def repositoryWithPath (path):
6 try: 6 try:
7 from mercurial import ui, hg 7 from mercurial import ui, hg
8 8
9 repo = hg.repository(ui.ui(), path) 9 repo = hg.repository(ui.ui(), path)
10 result = HgRepository(repo, path) 10 result = HgRepository(repo, path)
11 except: 11 except:
12 try: 12 try:
13 from git import Repo 13 from git import Repo
14 repo = Repo(path) 14 repo = Repo(path)
15 result = GitRepository(repo, path) 15 result = GitRepository(repo, path)
16 except ImportError, exception: 16 except ImportError, exception:
17 print "Failed to import git, please install http://gitorious.org/git-python" 17 print "Failed to import git, please install http://gitorious.org/git-python"
18 raise exception 18 print "Use sudo apt-get install python-git for Ubuntu/Debian"
19 print "Use sudo yum install GitPython for Fedora/RHEL/CentOS"
19 except: 20 except:
20 result = SnapshotRepository('', path) 21 result = SnapshotRepository('', path)
21 22
22 23
23 return result 24 return result
24 25
25 26
26#=================================================================== 27#===================================================================
27 28
28 29
29class Repository(object): 30class Repository(object):
30 31
31 def __init__ (self, repository, path): 32 def __init__ (self, repository, path):
32 self.repository = repository 33 self.repository = repository
33 self.path = path 34 self.path = path
34 35
35 36
36 def revision (self): 37 def revision (self):
37 raise NotImplementedError() 38 raise NotImplementedError()
38 39
39 40
40 def areTherePendingChanges (self): 41 def areTherePendingChanges (self):
41 raise NotImplementedError() 42 raise NotImplementedError()
42 43
43 44
44 def version (self): 45 def version (self):
45 result = self.revision() 46 result = self.revision()
46 if self.areTherePendingChanges(): 47 if self.areTherePendingChanges():
47 result = '>>> ' + result + ' <<<' 48 result = '>>> ' + result + ' <<<'
48 49
49 # print "VERSION: " + result 50 # print "VERSION: " + result
50 return result 51 return result
51 52
52 53
53#=================================================================== 54#===================================================================
54 55
55 56
56class GitRepository(Repository): 57class GitRepository(Repository):
57 #http://gitorious.org/git-python 58 #http://gitorious.org/git-python
58 59
59 def revision (self): 60 def revision (self):
60 try: 61 try:
61 return self.repository.head.commit.hexsha 62 return self.repository.head.commit.hexsha
62 except: 63 except:
63 return self.repository.commits()[0].id 64 return self.repository.commits()[0].id
64 65
65 66
66 def areTherePendingChanges (self): 67 def areTherePendingChanges (self):
67 try: 68 try:
68 return self.repository.is_dirty() 69 return self.repository.is_dirty()
69 except TypeError, te: 70 except TypeError, te:
70 return self.repository.is_dirty 71 return self.repository.is_dirty
71 72
72 73
73 74
74#=================================================================== 75#===================================================================
75 76
76 77
77class HgRepository(Repository): 78class HgRepository(Repository):
78 #http://mercurial.selenic.com/wiki/MercurialApi 79 #http://mercurial.selenic.com/wiki/MercurialApi
79 80
80 def revision (self): 81 def revision (self):
81 return 'hg:' + str(self.repository['tip']) 82 return 'hg:' + str(self.repository['tip'])
82 83
83 84
84 def areTherePendingChanges (self): 85 def areTherePendingChanges (self):
85 # TODO: FIXME: repository.status() does not report 'unknown(?)' files. :( 86 # TODO: FIXME: repository.status() does not report 'unknown(?)' files. :(
86 return not all(map(lambda fileList: len(fileList) == 0, self.repository.status())) 87 return not all(map(lambda fileList: len(fileList) == 0, self.repository.status()))
87 88
88 89
89#=================================================================== 90#===================================================================
90 91
91 92
92class SnapshotRepository(Repository): 93class SnapshotRepository(Repository):
93 94
94 def revision (self): 95 def revision (self):
95 return 'SNAPSHOT' 96 return 'SNAPSHOT'
96 97
97 98
98 def areTherePendingChanges (self): 99 def areTherePendingChanges (self):
99 return False 100 return False