| ␊ | 
| public function commit($request, $match)␊ | 
| {␊ | 
| ␊ | 
| $git = new IDF_Git(Pluf::f('git_repository'));␊ | 
| $commit = $match[2];␊ | 
| $branches = $git->getBranches();␊ | 
|  | 
| $request);␊ | 
| }␊ | 
| ␊ | 
| ␊ | 
| /**␊ | 
| * Get a zip archive of the current commit.␊ | 
| *␊ | 
| */␊ | 
| public function download($request, $match)␊ | 
| {␊ | 
| $commit = trim($match[2]);␊ | 
| $git = new IDF_Git(Pluf::f('git_repository'));␊ | 
| $branches = $git->getBranches();␊ | 
| if ('commit' != $git->testHash($commit)) {␊ | 
| // Redirect to the first branch␊ | 
| $url = Pluf_HTTP_URL_urlForView('IDF_Views_Source::treeBase',␊ | 
| array($request->project->shortname,␊ | 
| $branches[0]));␊ | 
| return new Pluf_HTTP_Response_Redirect($url);␊ | 
| }␊ | 
| $base = $request->project->shortname.'-'.$commit;␊ | 
| $cmd = $git->getArchiveCommand($commit, $base.'/');␊ | 
| $rep = new Pluf_HTTP_Response_CommandPassThru($cmd, 'application/x-zip');␊ | 
| $rep->headers['Content-Transfer-Encoding'] = 'binary';␊ | 
| $rep->headers['Content-Disposition'] = 'attachment; filename="'.$base.'.zip"';␊ | 
| return $rep;␊ | 
| }␊ | 
| }␊ | 
| ␊ | 
| function IDF_Views_Source_PrettySize($size)␊ |