[ Index ]

PHP Cross Reference of Phabricator

title

Body

[close]

/src/applications/differential/management/ -> PhabricatorHunksManagementMigrateWorkflow.php (source)

   1  <?php
   2  
   3  final class PhabricatorHunksManagementMigrateWorkflow
   4    extends PhabricatorHunksManagementWorkflow {
   5  
   6    protected function didConstruct() {
   7      $this
   8        ->setName('migrate')
   9        ->setExamples('**migrate**')
  10        ->setSynopsis(pht('Migrate hunks to modern storage.'))
  11        ->setArguments(array());
  12    }
  13  
  14    public function execute(PhutilArgumentParser $args) {
  15      $saw_any_rows = false;
  16      $console = PhutilConsole::getConsole();
  17  
  18      $table = new DifferentialHunkLegacy();
  19      foreach (new LiskMigrationIterator($table) as $hunk) {
  20        $saw_any_rows = true;
  21  
  22        $id = $hunk->getID();
  23        $console->writeOut("%s\n", pht('Migrating hunk %d...', $id));
  24  
  25        $new_hunk = id(new DifferentialHunkModern())
  26          ->setChangesetID($hunk->getChangesetID())
  27          ->setOldOffset($hunk->getOldOffset())
  28          ->setOldLen($hunk->getOldLen())
  29          ->setNewOffset($hunk->getNewOffset())
  30          ->setNewLen($hunk->getNewLen())
  31          ->setChanges($hunk->getChanges())
  32          ->setDateCreated($hunk->getDateCreated())
  33          ->setDateModified($hunk->getDateModified());
  34  
  35        $hunk->openTransaction();
  36          $new_hunk->save();
  37          $hunk->delete();
  38        $hunk->saveTransaction();
  39  
  40        $old_len = strlen($hunk->getChanges());
  41        $new_len = strlen($new_hunk->getData());
  42        if ($old_len) {
  43          $diff_len = ($old_len - $new_len);
  44          $console->writeOut(
  45            "%s\n",
  46            pht(
  47              'Saved %s bytes (%s).',
  48              new PhutilNumber($diff_len),
  49              sprintf('%.1f%%', 100 * ($diff_len / $old_len))));
  50        }
  51  
  52        break;
  53      }
  54  
  55      if ($saw_any_rows) {
  56        $console->writeOut("%s\n", pht('Done.'));
  57      } else {
  58        $console->writeOut("%s\n", pht('No rows to migrate.'));
  59      }
  60    }
  61  
  62  }


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