/** * @param string $source * @param string $destination */ public function install($source, $destination) { $iterator = $this->getIterator($source, RecursiveIteratorIterator::SELF_FIRST); foreach ($iterator as $item) { $destinationFile = sprintf("%s/%s", $destination, $iterator->getSubPathName()); $filePath = $iterator->getSubPathName(); if ($this->exclude->exclude($filePath)) { continue; } if ($item->isDir()) { if (!file_exists($destinationFile)) { mkdir($destinationFile); } continue; } copy($item, $destinationFile); $this->gitIgnore->addEntry('/' . $iterator->getSubPathName()); } }
/** * @param string $source * @param string $destination */ public function install($source, $destination) { $iterator = $this->getIterator($source, RecursiveIteratorIterator::SELF_FIRST); foreach ($iterator as $item) { $destinationFile = sprintf("%s/%s", $destination, $iterator->getSubPathName()); $filePath = $iterator->getSubPathName(); if ($this->exclude->exclude($filePath)) { continue; } if ($item->isDir()) { $fileExists = file_exists($destinationFile); if (!$fileExists && is_link($destinationFile)) { throw new \RuntimeException(sprintf('File: "%s" appears to be a broken symlink referencing: "%s"', $destinationFile, readlink($destinationFile))); } if (!$fileExists) { mkdir($destinationFile); } continue; } copy($item, $destinationFile); $this->gitIgnore->addEntry('/' . $iterator->getSubPathName()); } }
public function testAddEntryDoesNotAddFileOrDirectoryIfItIsInsideAnIgnoredDirectory() { $ignoreDirs = array("dir1", "dir2/lol/"); $gitIgnore = new GitIgnore($this->gitIgnoreFile, $ignoreDirs); $gitIgnore->addEntry("dir1/file1.txt"); $gitIgnore->addEntry("dir2/lol/file2.txt"); $gitIgnore->addEntry("dir2/file3.txt"); $expected = array('dir1', 'dir2/lol/', 'dir2/file3.txt'); $this->assertEquals($expected, $gitIgnore->getEntries()); }