/**
  * {@inheritdoc}
  *
  * @throws \RuntimeException When invalid mode is specified.
  */
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $mode = $this->io->getOption('mode');
     if (!in_array($mode, $this->getModes())) {
         throw new \RuntimeException('The "' . $mode . '" mode is unknown.');
     }
     $wc_path = $this->getWorkingCopyPath();
     switch ($mode) {
         case self::MODE_SHOW:
             $recorded_conflicts = $this->_workingCopyConflictTracker->getRecordedConflicts($wc_path);
             if (!$recorded_conflicts) {
                 $this->io->writeln('<info>The working copy doesn\'t have any recorded conflicts.</info>');
             } else {
                 $this->io->writeln('<error>Recorded Conflicts (' . count($recorded_conflicts) . ' paths):</error>');
                 foreach ($recorded_conflicts as $conflicted_path) {
                     $this->io->writeln(' * ' . $conflicted_path);
                 }
             }
             break;
         case self::MODE_ADD:
             $this->_workingCopyConflictTracker->add($wc_path);
             $this->io->writeln('<info>Conflicts updated.</info>');
             break;
         case self::MODE_REPLACE:
             $this->_workingCopyConflictTracker->replace($wc_path);
             $this->io->writeln('<info>Conflicts updated.</info>');
             break;
         case self::MODE_ERASE:
             $this->_workingCopyConflictTracker->erase($wc_path);
             $this->io->writeln('<info>Conflicts erased.</info>');
             break;
     }
 }
 /**
  * Returns commit message fragment for recent conflicts.
  *
  * @param string $wc_path Working copy path.
  *
  * @return string
  */
 protected function getFragmentForRecentConflicts($wc_path)
 {
     $recorded_conflicts = $this->workingCopyConflictTracker->getRecordedConflicts($wc_path);
     if (!$recorded_conflicts) {
         return '';
     }
     // Ensure empty line before.
     $ret = PHP_EOL . 'Conflicts:';
     foreach ($recorded_conflicts as $conflict_path) {
         $ret .= PHP_EOL . ' * ' . $conflict_path;
     }
     return $ret;
 }
 /**
  * {@inheritdoc}
  */
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $wc_path = $this->getWorkingCopyPath();
     // Collect added path before "svn revert" because then they won't be shown as added by "svn status".
     $added_paths = $this->getAddedPaths();
     $this->io->writeln('Reverting local changes in working copy ... ');
     $command = $this->repositoryConnector->getCommand('revert', '--depth infinity {' . $wc_path . '}');
     $command->runLive(array($wc_path => '.'));
     $this->deletePaths($added_paths);
     $recorded_conflicts = $this->_workingCopyConflictTracker->getRecordedConflicts($wc_path);
     if ($recorded_conflicts) {
         $this->io->writeln(array('', 'Reverted Recorded Conflicts (' . count($recorded_conflicts) . ' paths):'));
         foreach ($recorded_conflicts as $conflicted_path) {
             $this->io->writeln(' * ' . $conflicted_path);
         }
     }
     $this->_workingCopyConflictTracker->erase($wc_path);
     $this->io->writeln('<info>Done</info>');
 }
 public function testGetRecordedConflicts()
 {
     $wc_path = '/path/to/working-copy';
     $this->expectRecordedConflicts($wc_path, array('old-file.txt'));
     $this->assertEquals(array('old-file.txt'), $this->workingCopyConflictTracker->getRecordedConflicts($wc_path));
 }