summaryrefslogtreecommitdiffstats
path: root/git_refs.py
diff options
context:
space:
mode:
Diffstat (limited to 'git_refs.py')
-rw-r--r--git_refs.py57
1 files changed, 29 insertions, 28 deletions
diff --git a/git_refs.py b/git_refs.py
index 300d2b30..2d4a8090 100644
--- a/git_refs.py
+++ b/git_refs.py
@@ -67,37 +67,38 @@ class GitRefs(object):
67 self._LoadAll() 67 self._LoadAll()
68 68
69 def _NeedUpdate(self): 69 def _NeedUpdate(self):
70 with Trace(': scan refs %s', self._gitdir): 70 Trace(': scan refs %s', self._gitdir)
71 for name, mtime in self._mtime.items(): 71
72 try: 72 for name, mtime in self._mtime.items():
73 if mtime != os.path.getmtime(os.path.join(self._gitdir, name)): 73 try:
74 return True 74 if mtime != os.path.getmtime(os.path.join(self._gitdir, name)):
75 except OSError:
76 return True 75 return True
77 return False 76 except OSError:
77 return True
78 return False
78 79
79 def _LoadAll(self): 80 def _LoadAll(self):
80 with Trace(': load refs %s', self._gitdir): 81 Trace(': load refs %s', self._gitdir)
81 82
82 self._phyref = {} 83 self._phyref = {}
83 self._symref = {} 84 self._symref = {}
84 self._mtime = {} 85 self._mtime = {}
85 86
86 self._ReadPackedRefs() 87 self._ReadPackedRefs()
87 self._ReadLoose('refs/') 88 self._ReadLoose('refs/')
88 self._ReadLoose1(os.path.join(self._gitdir, HEAD), HEAD) 89 self._ReadLoose1(os.path.join(self._gitdir, HEAD), HEAD)
89 90
90 scan = self._symref 91 scan = self._symref
91 attempts = 0 92 attempts = 0
92 while scan and attempts < 5: 93 while scan and attempts < 5:
93 scan_next = {} 94 scan_next = {}
94 for name, dest in scan.items(): 95 for name, dest in scan.items():
95 if dest in self._phyref: 96 if dest in self._phyref:
96 self._phyref[name] = self._phyref[dest] 97 self._phyref[name] = self._phyref[dest]
97 else: 98 else:
98 scan_next[name] = dest 99 scan_next[name] = dest
99 scan = scan_next 100 scan = scan_next
100 attempts += 1 101 attempts += 1
101 102
102 def _ReadPackedRefs(self): 103 def _ReadPackedRefs(self):
103 path = os.path.join(self._gitdir, 'packed-refs') 104 path = os.path.join(self._gitdir, 'packed-refs')