/** * {@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)); }