mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-30 02:32:42 +01:00
c728e4f7da
Summary: there are several places we open an 'r' connection but use it for writing. Fix them. Test Plan: ran parse_one_commit.php against one revision which executes the code with problem. It used to throw exception. Now it works fine. Reviewed By: Girish Reviewers: tuomaspelkonen, Girish Commenters: aran CC: aran, Girish Differential Revision: 213
74 lines
2.2 KiB
PHP
Executable file
74 lines
2.2 KiB
PHP
Executable file
#!/usr/bin/env php
|
|
<?php
|
|
|
|
/*
|
|
* Copyright 2011 Facebook, Inc.
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
$root = dirname(dirname(dirname(__FILE__)));
|
|
require_once $root.'/scripts/__init_script__.php';
|
|
require_once $root.'/scripts/__init_env__.php';
|
|
|
|
phutil_require_module('phutil', 'symbols');
|
|
PhutilSymbolLoader::loadClass('PhabricatorRepository');
|
|
PhutilSymbolLoader::loadClass('PhabricatorRepositoryCommit');
|
|
|
|
$commit = new PhabricatorRepositoryCommit();
|
|
|
|
$conn_w = id(new PhabricatorRepository())->establishConnection('w');
|
|
$sizes = queryfx_all(
|
|
$conn_w,
|
|
'SELECT repositoryID, count(*) N FROM %T GROUP BY repositoryID',
|
|
$commit->getTableName());
|
|
$sizes = ipull($sizes, 'N', 'repositoryID');
|
|
|
|
$maxes = queryfx_all(
|
|
$conn_w,
|
|
'SELECT repositoryID, max(epoch) maxEpoch FROM %T GROUP BY repositoryID',
|
|
$commit->getTableName());
|
|
$maxes = ipull($maxes, 'maxEpoch', 'repositoryID');
|
|
|
|
|
|
$repository_ids = array_keys($sizes + $maxes);
|
|
|
|
echo "Updating ".count($repository_ids)." repositories";
|
|
|
|
foreach ($repository_ids as $repository_id) {
|
|
$last_commit = queryfx_one(
|
|
$conn_w,
|
|
'SELECT id FROM %T WHERE repositoryID = %d AND epoch = %d LIMIT 1',
|
|
$commit->getTableName(),
|
|
$repository_id,
|
|
idx($maxes, $repository_id, 0));
|
|
if ($last_commit) {
|
|
$last_commit = $last_commit['id'];
|
|
} else {
|
|
$last_commit = 0;
|
|
}
|
|
queryfx(
|
|
$conn_w,
|
|
'INSERT INTO %T (repositoryID, lastCommitID, size, epoch)
|
|
VALUES (%d, %d, %d, %d) ON DUPLICATE KEY UPDATE
|
|
lastCommitID = VALUES(lastCommitID),
|
|
size = VALUES(size),
|
|
epoch = VALUES(epoch)',
|
|
PhabricatorRepository::TABLE_SUMMARY,
|
|
$repository_id,
|
|
$last_commit,
|
|
idx($sizes, $repository_id, 0),
|
|
idx($maxes, $repository_id, 0));
|
|
echo ".";
|
|
}
|
|
echo "\ndone.\n";
|