author | Giulio Cesare Solaroli <giulio.cesare@clipperz.com> | 2012-02-11 23:48:42 (UTC) |
---|---|---|
committer | Giulio Cesare Solaroli <giulio.cesare@clipperz.com> | 2012-02-11 23:48:42 (UTC) |
commit | a0661c3b02aa26d6b08ff13dc321e09478868159 (patch) (unidiff) | |
tree | 87bd0af25a0732adb9d14a34d25f9d5479fdf5ee /scripts/builder/repository.py | |
parent | 96d01919d3ff42c3fdd7f6186a0500caccd3c140 (diff) | |
parent | 7804333809bf725e32a08c531a06acd7d668e190 (diff) | |
download | clipperz-a0661c3b02aa26d6b08ff13dc321e09478868159.zip clipperz-a0661c3b02aa26d6b08ff13dc321e09478868159.tar.gz clipperz-a0661c3b02aa26d6b08ff13dc321e09478868159.tar.bz2 |
Merge pull request #25 from gcsolaroli/master
Initial integration of /beta and /gamma with a single backend
Diffstat (limited to 'scripts/builder/repository.py') (more/less context) (ignore whitespace changes)
-rw-r--r-- | scripts/builder/repository.py | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/scripts/builder/repository.py b/scripts/builder/repository.py new file mode 100644 index 0000000..89db9a5 --- a/dev/null +++ b/scripts/builder/repository.py | |||
@@ -0,0 +1,75 @@ | |||
1 | #!/usr/bin/env python | ||
2 | # -*- coding: UTF-8 -*- | ||
3 | |||
4 | |||
5 | def repositoryWithPath (path): | ||
6 | try: | ||
7 | from dulwich.repo import Repo | ||
8 | |||
9 | repo = Repo(path) | ||
10 | result = GitRepository(repo, path) | ||
11 | except: | ||
12 | from mercurial import ui, hg | ||
13 | |||
14 | repo = hg.repository(ui.ui(), path) | ||
15 | result = HgRepository(repo, path) | ||
16 | |||
17 | return result | ||
18 | |||
19 | |||
20 | #=================================================================== | ||
21 | |||
22 | |||
23 | class Repository(object): | ||
24 | |||
25 | def __init__ (self, repository, path): | ||
26 | self.repository = repository | ||
27 | self.path = path | ||
28 | |||
29 | |||
30 | def revision (self): | ||
31 | raise NotImplementedError() | ||
32 | |||
33 | |||
34 | def areTherePendingChanges (self): | ||
35 | raise NotImplementedError() | ||
36 | |||
37 | |||
38 | def version (self): | ||
39 | result = self.revision() | ||
40 | if self.areTherePendingChanges(): | ||
41 | result = '>>> ' + result + ' <<<' | ||
42 | |||
43 | # print "VERSION: " + result | ||
44 | return result | ||
45 | |||
46 | |||
47 | #=================================================================== | ||
48 | |||
49 | |||
50 | class GitRepository(Repository): | ||
51 | |||
52 | def revision (self): | ||
53 | return repository.refs['HEAD'] | ||
54 | |||
55 | |||
56 | def areTherePendingChanges (self): | ||
57 | return repository.is_dirty() | ||
58 | |||
59 | |||
60 | #=================================================================== | ||
61 | |||
62 | |||
63 | class HgRepository(Repository): | ||
64 | #http://mercurial.selenic.com/wiki/MercurialApi | ||
65 | |||
66 | def revision (self): | ||
67 | return 'hg:' + str(self.repository['tip']) | ||
68 | |||
69 | |||
70 | def areTherePendingChanges (self): | ||
71 | # TODO: FIXME: repository.status() does not report 'unknown(?)' files. :( | ||
72 | return not all(map(lambda fileList: len(fileList) == 0, self.repository.status())) | ||
73 | |||
74 | |||
75 | #=================================================================== | ||