Procházet zdrojové kódy

remove unnecessary refs functions from Repo that are now on refs.

Jelmer Vernooij před 16 roky
rodič
revize
cdf2df28db
2 změnil soubory, kde provedl 13 přidání a 55 odebrání
  1. 12 54
      dulwich/repo.py
  2. 1 1
      dulwich/tests/test_repository.py

+ 12 - 54
dulwich/repo.py

@@ -69,7 +69,11 @@ class RefsContainer(object):
         return follow_ref(self, name)
 
     def set_ref(self, name, other):
-        self['HEAD'] = "ref: %s\n" % other
+        self[name] = "ref: %s\n" % other
+
+    def import_refs(self, base, other):
+        for name, value in other.iteritems():
+            self["%s/%s" % (base, name)] = value
 
 
 class DiskRefsContainer(RefsContainer):
@@ -120,28 +124,6 @@ class DiskRefsContainer(RefsContainer):
             os.remove(file)
 
 
-class Tags(DiskRefsContainer):
-    """Tags container."""
-
-    def __init__(self, tagdir, tags):
-        DiskRefsContainer.__init__(self, tagdir)
-        self.tags = tags
-
-    def __setitem__(self, name, value):
-        DiskRefsContainer.__setitem__(self, name, value)
-        self.tags[name] = value
-
-    def __getitem__(self, name):
-        return self.tags[name]
-    
-    def __len__(self):
-        return len(self.tags)
-
-    def iteritems(self):
-        for k in self.tags:
-            yield k, self[k]
-
-
 def read_packed_refs(f):
     """Read a packed refs file.
 
@@ -161,9 +143,12 @@ def read_packed_refs(f):
 
 
 class Repo(object):
-    """A local git repository."""
-
-    ref_locs = ['', REFSDIR, 'refs/tags', 'refs/heads', 'refs/remotes']
+    """A local git repository.
+    
+    :ivar refs: Dictionary with the refs in this repository
+    :ivar object_store: Dictionary-like object for accessing
+        the objects
+    """
 
     def __init__(self, root):
         if os.path.isdir(os.path.join(root, ".git", OBJECTDIR)):
@@ -176,7 +161,6 @@ class Repo(object):
             raise NotGitRepository(root)
         self.path = root
         self.refs = DiskRefsContainer(self.controldir())
-        self.tags = Tags(self.tagdir(), self.get_tags())
         self.object_store = DiskObjectStore(
             os.path.join(self.controldir(), OBJECTDIR))
 
@@ -216,7 +200,7 @@ class Repo(object):
 
     def get_graph_walker(self, heads=None):
         if heads is None:
-            heads = self.heads().values()
+            heads = self.refs.as_dict('refs/heads').values()
         return self.object_store.get_graph_walker(heads)
 
     def ref(self, name):
@@ -255,32 +239,6 @@ class Repo(object):
         finally:
             f.close()
 
-    def set_ref(self, name, value):
-        """Set a new ref.
-
-        :param name: Name of the ref
-        :param value: SHA1 to point at
-        """
-        self.refs[name] = value
-
-    def remove_ref(self, name):
-        """Remove a ref.
-
-        :param name: Name of the ref
-        """
-        del self.refs[name]
-
-    def tagdir(self):
-        """Tag directory."""
-        return os.path.join(self.controldir(), REFSDIR, REFSDIR_TAGS)
-
-    def get_tags(self):
-        return self.refs.as_dict("%s/%s" % (REFSDIR, REFSDIR_TAGS))
-
-    def heads(self):
-        """Return dictionary with heads."""
-        return self.refs.as_dict("%s/%s" % (REFSDIR, REFSDIR_HEADS))
-
     def head(self):
         """Return the SHA1 pointed at by HEAD."""
         return self.refs.follow('HEAD')

+ 1 - 1
dulwich/tests/test_repository.py

@@ -129,4 +129,4 @@ class RepositoryTests(unittest.TestCase):
   
     def test_get_tags_empty(self):
         r = self.open_repo('ooo_merge')
-        self.assertEquals({}, r.get_tags())
+        self.assertEquals({}, r.refs.as_dict('refs/tags'))