summaryrefslogtreecommitdiff
authorJosh <jokajak@gmail.com>2012-03-19 01:30:36 (UTC)
committer Josh <jokajak@gmail.com>2012-03-19 01:30:36 (UTC)
commit67ba4cd7b5bc5e834db3106b3081677ee70d18f7 (patch) (unidiff)
tree811b944f321218fdb3d9d02df13da2ea2eef4949
parent758bd68eee9c0ae1d3ad8dc50481c78557bd6228 (diff)
downloadclipperz-67ba4cd7b5bc5e834db3106b3081677ee70d18f7.zip
clipperz-67ba4cd7b5bc5e834db3106b3081677ee70d18f7.tar.gz
clipperz-67ba4cd7b5bc5e834db3106b3081677ee70d18f7.tar.bz2
add code to handle older version of GitPython
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--scripts/builder/repository.py11
1 files changed, 9 insertions, 2 deletions
diff --git a/scripts/builder/repository.py b/scripts/builder/repository.py
index 0045de7..a47e249 100644
--- a/scripts/builder/repository.py
+++ b/scripts/builder/repository.py
@@ -1,81 +1,88 @@
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 14
15 repo = Repo(path) 15 repo = Repo(path)
16 result = GitRepository(repo, path) 16 result = GitRepository(repo, path)
17 except ImportError, exception: 17 except ImportError, exception:
18 print "Failed to import git, please install http://gitorious.org/git-python" 18 print "Failed to import git, please install http://gitorious.org/git-python"
19 raise exception 19 raise exception
20 20
21 21
22 return result 22 return result
23 23
24 24
25#=================================================================== 25#===================================================================
26 26
27 27
28class Repository(object): 28class Repository(object):
29 29
30 def __init__ (self, repository, path): 30 def __init__ (self, repository, path):
31 self.repository = repository 31 self.repository = repository
32 self.path = path 32 self.path = path
33 33
34 34
35 def revision (self): 35 def revision (self):
36 raise NotImplementedError() 36 raise NotImplementedError()
37 37
38 38
39 def areTherePendingChanges (self): 39 def areTherePendingChanges (self):
40 raise NotImplementedError() 40 raise NotImplementedError()
41 41
42 42
43 def version (self): 43 def version (self):
44 result = self.revision() 44 result = self.revision()
45 if self.areTherePendingChanges(): 45 if self.areTherePendingChanges():
46 result = '>>> ' + result + ' <<<' 46 result = '>>> ' + result + ' <<<'
47 47
48 # print "VERSION: " + result 48 # print "VERSION: " + result
49 return result 49 return result
50 50
51 51
52#=================================================================== 52#===================================================================
53 53
54 54
55class GitRepository(Repository): 55class GitRepository(Repository):
56 #http://gitorious.org/git-python 56 #http://gitorious.org/git-python
57 57
58 def revision (self): 58 def revision (self):
59 return self.repository.head.commit.hexsha 59 try:
60 return self.repository.head.commit.hexsha
61 except:
62 return self.repository.commits()[0].id
60 63
61 64
62 def areTherePendingChanges (self): 65 def areTherePendingChanges (self):
63 return self.repository.is_dirty() 66 try:
67 return self.repository.is_dirty()
68 except TypeError, te:
69 return self.repository.is_dirty
70
64 71
65 72
66#=================================================================== 73#===================================================================
67 74
68 75
69class HgRepository(Repository): 76class HgRepository(Repository):
70 #http://mercurial.selenic.com/wiki/MercurialApi 77 #http://mercurial.selenic.com/wiki/MercurialApi
71 78
72 def revision (self): 79 def revision (self):
73 return 'hg:' + str(self.repository['tip']) 80 return 'hg:' + str(self.repository['tip'])
74 81
75 82
76 def areTherePendingChanges (self): 83 def areTherePendingChanges (self):
77 # TODO: FIXME: repository.status() does not report 'unknown(?)' files. :( 84 # TODO: FIXME: repository.status() does not report 'unknown(?)' files. :(
78 return not all(map(lambda fileList: len(fileList) == 0, self.repository.status())) 85 return not all(map(lambda fileList: len(fileList) == 0, self.repository.status()))
79 86
80 87
81#=================================================================== 88#===================================================================