Page MenuHomestyx hydra

No OneTemporary

diff --git a/scripts/repository/audit.php b/scripts/repository/audit.php
new file mode 100755
index 0000000000..6e729d5352
--- /dev/null
+++ b/scripts/repository/audit.php
@@ -0,0 +1,99 @@
+#!/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';
+
+$args = new PhutilArgumentParser($argv);
+$args->setTagline('manage open Audit requests');
+$args->setSynopsis(<<<EOSYNOPSIS
+**audit.php** __repository_callsign__
+ Close all open audit requests in a repository. This is intended to
+ reset the state of an imported repository which triggered a bunch of
+ spurious audit requests during import.
+
+EOSYNOPSIS
+ );
+$args->parseStandardArguments();
+$args->parse(
+ array(
+ array(
+ 'name' => 'more',
+ 'wildcard' => true,
+ ),
+ ));
+
+$more = $args->getArg('more');
+if (count($more) !== 1) {
+ $args->printHelpAndExit();
+}
+$callsign = reset($more);
+
+$repository = id(new PhabricatorRepository())->loadOneWhere(
+ 'callsign = %s',
+ $callsign);
+if (!$repository) {
+ throw new Exception("No repository exists with callsign '{$callsign}'!");
+}
+
+$ok = phutil_console_confirm(
+ 'This will reset all open audit requests ("Audit Required" or "Concern '.
+ 'Raised") for commits in this repository to "Audit Not Required". This '.
+ 'operation destroys information and can not be undone! Are you sure '.
+ 'you want to proceed?');
+if (!$ok) {
+ echo "OK, aborting.\n";
+ die(1);
+}
+
+echo "Loading commits...\n";
+$all_commits = id(new PhabricatorRepositoryCommit())->loadAllWhere(
+ 'repositoryID = %d',
+ $repository->getID());
+
+echo "Clearing audit requests...\n";
+
+foreach ($all_commits as $commit) {
+ $query = id(new PhabricatorAuditQuery())
+ ->withStatus(PhabricatorAuditQuery::STATUS_OPEN)
+ ->withCommitPHIDs(array($commit->getPHID()));
+ $requests = $query->execute();
+
+ echo "Clearing ".$commit->getPHID()."... ";
+
+ if (!$requests) {
+ echo "nothing to do.\n";
+ continue;
+ } else {
+ echo count($requests)." requests to clear";
+ }
+
+ foreach ($requests as $request) {
+ $request->setAuditStatus(
+ PhabricatorAuditStatusConstants::AUDIT_NOT_REQUIRED);
+ $request->save();
+ echo ".";
+ }
+
+ $commit->setAuditStatus(PhabricatorAuditCommitStatusConstants::NONE);
+ $commit->save();
+ echo "\n";
+}
+
+echo "Done.\n";

File Metadata

Mime Type
text/x-diff
Expires
Sat, Sep 20, 8:08 AM (1 d, 5 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
241537
Default Alt Text
(2 KB)

Event Timeline