[ Index ] |
PHP Cross Reference of Phabricator |
[Summary view] [Print] [Text view]
1 #!/usr/bin/env php 2 <?php 3 4 $root = dirname(dirname(dirname(__FILE__))); 5 require_once $root.'/scripts/__init_script__.php'; 6 7 $commit = new PhabricatorRepositoryCommit(); 8 9 $conn_w = id(new PhabricatorRepository())->establishConnection('w'); 10 $sizes = queryfx_all( 11 $conn_w, 12 'SELECT repositoryID, count(*) N FROM %T GROUP BY repositoryID', 13 $commit->getTableName()); 14 $sizes = ipull($sizes, 'N', 'repositoryID'); 15 16 $maxes = queryfx_all( 17 $conn_w, 18 'SELECT repositoryID, max(epoch) maxEpoch FROM %T GROUP BY repositoryID', 19 $commit->getTableName()); 20 $maxes = ipull($maxes, 'maxEpoch', 'repositoryID'); 21 22 23 $repository_ids = array_keys($sizes + $maxes); 24 25 echo 'Updating '.count($repository_ids).' repositories'; 26 27 foreach ($repository_ids as $repository_id) { 28 $last_commit = queryfx_one( 29 $conn_w, 30 'SELECT id FROM %T WHERE repositoryID = %d AND epoch = %d LIMIT 1', 31 $commit->getTableName(), 32 $repository_id, 33 idx($maxes, $repository_id, 0)); 34 if ($last_commit) { 35 $last_commit = $last_commit['id']; 36 } else { 37 $last_commit = 0; 38 } 39 queryfx( 40 $conn_w, 41 'INSERT INTO %T (repositoryID, lastCommitID, size, epoch) 42 VALUES (%d, %d, %d, %d) ON DUPLICATE KEY UPDATE 43 lastCommitID = VALUES(lastCommitID), 44 size = VALUES(size), 45 epoch = VALUES(epoch)', 46 PhabricatorRepository::TABLE_SUMMARY, 47 $repository_id, 48 $last_commit, 49 idx($sizes, $repository_id, 0), 50 idx($maxes, $repository_id, 0)); 51 echo '.'; 52 } 53 echo "\ndone.\n";
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Sun Nov 30 09:20:46 2014 | Cross-referenced by PHPXref 0.7.1 |