diff --git a/reclass/storage/yaml_git/__init__.py b/reclass/storage/yaml_git/__init__.py
index 51a9713..a2a0019 100644
--- a/reclass/storage/yaml_git/__init__.py
+++ b/reclass/storage/yaml_git/__init__.py
@@ -39,11 +39,13 @@
         self.repo = None
         self.branch = None
         self.root = None
+        self.cache_dir = None
         self.update(dictionary)
 
     def update(self, dictionary):
         if 'repo' in dictionary: self.repo = dictionary['repo']
         if 'branch' in dictionary: self.branch = dictionary['branch']
+        if 'cache_dir' in dictionary: self.cache_dir = dictionary['cache_dir']
         if 'root' in dictionary:
             if dictionary['root'] is None:
                 self.root = None
@@ -56,18 +58,23 @@
 
 class GitRepo(object):
 
-    def __init__(self, url):
+    def __init__(self, url, cache_dir):
         self.transport, _, self.url = url.partition('://')
         self.name = self.url.replace('/', '_')
         self.credentials = None
         self.remotecallbacks = None
+
+        if cache_dir is None:
+            self.cache_dir = '{0}/{1}/{2}'.format(os.path.expanduser("~"), '.reclass/cache/git', self.name)
+        else:
+            self.cache_dir = '{0}/{1}'.format(cache_dir, self.name)
+
         self._init_repo()
         self._fetch()
         self.branches = self.repo.listall_branches()
         self.files = self.files_in_repo()
 
     def _init_repo(self):
-        self.cache_dir = '{0}/{1}/{2}'.format(os.path.expanduser("~"), '.reclass/cache/git', self.name)
         if os.path.exists(self.cache_dir):
             self.repo = pygit2.Repository(self.cache_dir)
         else:
@@ -182,13 +189,13 @@
         if nodes_uri is not None:
             self._nodes_uri = GitURI({ 'branch': 'master' })
             self._nodes_uri.update(nodes_uri)
-            self._load_repo(self._nodes_uri.repo)
+            self._load_repo(self._nodes_uri.repo, self._nodes_uri.cache_dir)
             self._nodes = self._repos[self._nodes_uri.repo].nodes(self._nodes_uri.branch, self._nodes_uri.root)
 
         if classes_uri is not None:
             self._classes_default_uri = GitURI({ 'branch': '__env__' })
             self._classes_default_uri.update(classes_uri)
-            self._load_repo(self._classes_default_uri.repo)
+            self._load_repo(self._classes_default_uri.repo, self._classes_default_uri.cache_dir)
 
             self._classes_uri = []
             if 'env_overrides' in classes_uri:
@@ -222,9 +229,9 @@
     def enumerate_nodes(self):
         return self._nodes.keys()
 
-    def _load_repo(self, url):
+    def _load_repo(self, url, cache_dir):
         if url not in self._repos:
-            self._repos[url] = GitRepo(url)
+            self._repos[url] = GitRepo(url, cache_dir)
 
     def _env_to_uri(self, environment):
         ret = None
