@@ -111,7 +111,7 @@ async def scan_repository(self, new_cur_rev=None):
111
111
try :
112
112
if new_cur_rev is None :
113
113
new_cur_rev = self .repo_backend .get_head_rev ()
114
- wd , _ = self .repo_backend .request_rev (new_cur_rev )
114
+ wd , _ , _ = self .repo_backend .request_rev (new_cur_rev )
115
115
self .repo_backend .release_rev (self .cur_rev )
116
116
self .cur_rev = new_cur_rev
117
117
self .status ["cur_rev" ] = new_cur_rev
@@ -132,7 +132,7 @@ async def examine(self, filename, use_repository=True, revision=None):
132
132
if use_repository :
133
133
if revision is None :
134
134
revision = self .cur_rev
135
- wd , _ = self .repo_backend .request_rev (revision )
135
+ wd , _ , revision = self .repo_backend .request_rev (revision )
136
136
filename = os .path .join (wd , filename )
137
137
worker = Worker (self .worker_handlers )
138
138
try :
@@ -169,7 +169,7 @@ def get_head_rev(self):
169
169
return "N/A"
170
170
171
171
def request_rev (self , rev ):
172
- return self .root , None
172
+ return self .root , None , "N/A"
173
173
174
174
def release_rev (self , rev ):
175
175
pass
@@ -199,15 +199,22 @@ def __init__(self, root):
199
199
200
200
def get_head_rev (self ):
201
201
return str (self .git .head .target )
202
+
203
+
204
+ def _get_pinned_rev (self , rev ):
205
+ 'Resolve a git pointer (e.g. "HEAD", "master", "abcdef123456...") into a git hash'
206
+ commit , _ = self .git .resolve_refish (rev )
207
+ return commit .hex
202
208
203
209
def request_rev (self , rev ):
210
+ rev = self ._get_pinned_rev (rev )
204
211
if rev in self .checkouts :
205
212
co = self .checkouts [rev ]
206
213
co .ref_count += 1
207
214
else :
208
215
co = _GitCheckout (self .git , rev )
209
216
self .checkouts [rev ] = co
210
- return co .path , co .message
217
+ return co .path , co .message , rev
211
218
212
219
def release_rev (self , rev ):
213
220
co = self .checkouts [rev ]
0 commit comments