@@ -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
@@ -198,16 +198,22 @@ def __init__(self, root):
198
198
self .checkouts = dict ()
199
199
200
200
def get_head_rev (self ):
201
- return str (self .git .head .target )
201
+ return str (self .git .head .target )
202
+
203
+ def _get_pinned_rev (self , rev ):
204
+ 'Resolve a git pointer (e.g. "HEAD", "master", "abcdef123456...") into a git hash'
205
+ commit , _ = self .git .resolve_refish (rev )
206
+ return commit .hex
202
207
203
208
def request_rev (self , rev ):
209
+ rev = self ._get_pinned_rev (rev )
204
210
if rev in self .checkouts :
205
211
co = self .checkouts [rev ]
206
212
co .ref_count += 1
207
213
else :
208
214
co = _GitCheckout (self .git , rev )
209
215
self .checkouts [rev ] = co
210
- return co .path , co .message
216
+ return co .path , co .message , rev
211
217
212
218
def release_rev (self , rev ):
213
219
co = self .checkouts [rev ]
0 commit comments