summaryrefslogtreecommitdiff
path: root/scripts/builder/repository.py
Unidiff
Diffstat (limited to 'scripts/builder/repository.py') (more/less context) (show whitespace changes)
-rw-r--r--scripts/builder/repository.py8
1 files changed, 5 insertions, 3 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
5def repositoryWithPath (path): 5def 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
23class Repository(object): 25class 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
50class GitRepository(Repository): 52class 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
63class HgRepository(Repository): 65class 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#===================================================================