private function generateFiles()
{
$pwd = getcwd();
chdir($this->path);
if ($pipe = popen("git ls-tree -r --name-only HEAD", "r")) {
$path = realpath($this->path);
while (!feof($pipe)) {
if (strlen($file = trim(fgets($pipe)))) {
/* there may be symlinks, so no realpath here */
(yield "{$path}/{$file}");
}
}
pclose($pipe);
}
chdir($pwd);
}