1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-12-28 08:20:57 +01:00
phorge-phorge/scripts/differential/detect_copied_code.php
2012-04-30 11:05:30 -07:00

50 lines
1.5 KiB
PHP
Executable file

#!/usr/bin/env php
<?php
/*
* Copyright 2012 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';
if ($argc != 3 || !is_numeric($argv[1]) || !is_numeric($argv[2])) {
echo "Usage: {$argv[0]} <diff_id_from> <diff_id_to>\n";
exit(1);
}
list(, $from, $to) = $argv;
for ($diff_id = $from; $diff_id <= $to; $diff_id++) {
echo "Processing $diff_id";
$diff = id(new DifferentialDiff())->load($diff_id);
if ($diff) {
$diff->attachChangesets($diff->loadChangesets());
$orig_copy = array();
foreach ($diff->getChangesets() as $i => $changeset) {
$orig_copy[$i] = idx((array)$changeset->getMetadata(), 'copy:lines');
$changeset->attachHunks($changeset->loadHunks());
}
$diff->detectCopiedCode();
foreach ($diff->getChangesets() as $i => $changeset) {
if (idx($changeset->getMetadata(), 'copy:lines') || $orig_copy[$i]) {
echo ".";
$changeset->save();
}
}
}
echo "\n";
}
echo "Done.\n";