Как скачать репозиторий в zip с помощью github API - PullRequest
0 голосов
/ 07 января 2020

Я разрабатываю веб-приложение с laravel и angularjs (я новичок в обоих), в котором, когда вы нажимаете на кнопку, вы должны загрузить репозиторий github (или клонировать его)

Я знаю, что если я добавлю "href='/:owner/:repo/archive/master.zip' к тегу привязки, его можно будет загрузить, но я не хочу, чтобы папка с именем "repo-master"

У меня есть идея клонировать хранилище, используя exec("git clone clone_url");, а затем каким-то образом сжать его и связать его с сетью, но я не думаю, что это лучшее решение.

РЕДАКТИРОВАТЬ:

Проблема загрузки .zip поскольку «repo-master.zip» - это не только имя zip, но и папка внутри, так как он также называет «repo-master».

Я решил это так:

$module = Module::findOrFail($id);
$clone = $module->link_repo.".git";
$name_module = $module->name;
$zip_file = $name_module.'.zip'; // Name of our archive to download
exec("git clone ". $clone);
$zip = new \ZipArchive();
$zip->open($zip_file, \ZipArchive::CREATE | \ZipArchive::OVERWRITE);

$path = "C:/laragon/www/project/public/".$name_module;
$files = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($path));
foreach ($files as $name => $file)
{
 // We're skipping all subfolders
    if (!$file->isDir()) {
        $filePath     = $file->getRealPath();
        // extracting filename with substr/strlen
        $relativePath = $name_module."/". substr($filePath, strlen($path) + 1);

        $zip->addFile($filePath, $relativePath);
     }
}
$zip->close();

Ссылка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...