diff --git a/git_config.py b/git_config.py
index 0379181..1b75741 100644
--- a/git_config.py
+++ b/git_config.py
@@ -677,7 +677,7 @@
     """True if the remote stores to the tracking ref.
     """
     for spec in self.fetch:
-      if spec.DestMatches(ref):
+      if spec.SourceMatches(ref):
         return True
     return False
 
diff --git a/project.py b/project.py
index 2228234..cb477c9 100644
--- a/project.py
+++ b/project.py
@@ -1163,7 +1163,7 @@
       self._UpdateHooks()
     self._InitRemote()
 
-    if is_new:
+    if is_new or optimized_fetch:
       alt = os.path.join(self.gitdir, 'objects/info/alternates')
       try:
         fd = open(alt, 'rb')
@@ -1190,6 +1190,7 @@
       elif self.manifest.default.sync_c:
         current_branch_only = True
 
+    self.optimized_fetch = optimized_fetch
     need_to_fetch = not (optimized_fetch and \
       (ID_RE.match(self.revisionExpr) and self._CheckForSha1()))
     if (need_to_fetch
@@ -1859,7 +1860,7 @@
     if remote.PreConnectFetch():
       ssh_proxy = True
 
-    if initial:
+    if initial or self.optimized_fetch:
       if alt_dir and 'objects' == os.path.basename(alt_dir):
         ref_dir = os.path.dirname(alt_dir)
         packed_refs = os.path.join(self.gitdir, 'packed-refs')
@@ -1872,7 +1873,7 @@
         for r, ref_id in GitRefs(ref_dir).all.items():
           if r not in all_refs:
             if r.startswith(R_TAGS) or remote.WritesTo(r):
-              all_refs[r] = ref_id
+              all_refs[remote.ToLocal(r)] = ref_id
               ids.add(ref_id)
               continue
 
@@ -1953,6 +1954,10 @@
 
     ok = False
     for _i in range(2):
+      if alt_dir and self.optimized_fetch:
+        ok = True
+        break
+
       gitcmd = GitCommand(self, cmd, bare=True, ssh_proxy=ssh_proxy)
       ret = gitcmd.Wait()
       if ret == 0:
