/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to dulwich/dulwich/repo.py

SupportĀ settingĀ tags.

Show diffs side-by-side

added added

removed removed

Lines of Context:
41
41
 
42
42
class Tags(object):
43
43
 
44
 
    def __init__(self, tags):
 
44
    def __init__(self, tagdir, tags):
 
45
        self.tagdir = tagdir
45
46
        self.tags = tags
46
47
 
47
48
    def __getitem__(self, name):
48
49
        return self.tags[name]
 
50
    
 
51
    def __setitem__(self, name, ref):
 
52
        self.tags[name] = ref
 
53
        f = open(os.path.join(self.tagdir, name), 'wb')
 
54
        try:
 
55
            f.write("%s\n" % ref)
 
56
        finally:
 
57
            f.close()
49
58
 
50
59
    def __len__(self):
51
60
        return len(self.tags)
69
78
    else:
70
79
      raise NotGitRepository(root)
71
80
    self.path = root
72
 
    self.tags = Tags(self.get_tags())
 
81
    self.tags = Tags(self.tagdir(), self.get_tags())
73
82
    self._object_store = None
74
83
 
75
84
  def controldir(self):
193
202
      os.remove(file)
194
203
      return
195
204
 
 
205
  def tagdir(self):
 
206
    return os.path.join(self.controldir(), 'refs', 'tags')
 
207
 
196
208
  def get_tags(self):
197
209
    ret = {}
198
 
    for root, dirs, files in os.walk(os.path.join(self.controldir(), 'refs', 'tags')):
 
210
    for root, dirs, files in os.walk(self.tagdir()):
199
211
      for name in files:
200
212
        ret[name] = self._get_ref(os.path.join(root, name))
201
213
    return ret