[ Index ]

PHP Cross Reference of Phabricator

title

Body

[close]

/scripts/repository/ -> rebuild_summaries.php (source)

   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";


Generated: Sun Nov 30 09:20:46 2014 Cross-referenced by PHPXref 0.7.1