Php Git直接从源代码导出achive

Php Git直接从源代码导出achive,php,git,zip,archive,Php,Git,Zip,Archive,我想创建一个简单的脚本,将插件从远程存储库下载到目录中。我有一个URL数组,指向远程服务器上的git文件——就像GitHub中的这个。GitHub支持下载ZIP档案,但我有许多其他存储库的插件,它们不提供此选项 回到我的问题上来——有没有办法获得归档文件,而不是在命令行中使用git下载完整的存储库并从中导出归档文件?我发现了这个问题——但这在使用PHP时是不可能的。这提供了有关以您提到的方式导出git的详细信息 git archive HEAD--format=zip>archive.zip 还

我想创建一个简单的脚本,将插件从远程存储库下载到目录中。我有一个URL数组,指向远程服务器上的git文件——就像GitHub中的这个。GitHub支持下载ZIP档案,但我有许多其他存储库的插件,它们不提供此选项

回到我的问题上来——有没有办法获得归档文件,而不是在命令行中使用git下载完整的存储库并从中导出归档文件?我发现了这个问题——但这在使用PHP时是不可能的。

这提供了有关以您提到的方式导出git的详细信息

git archive HEAD--format=zip>archive.zip

还可以使用--remote=选项归档远程文件。只是 请注意,这不适用于GitHub remotes,因为它们 鼓励您改用下载按钮。还有其他的吗 不过,远程操作应该可以正常工作,如果需要,请检查手册页 有问题

但是这个方法的问题是,当我同时使用githubbitbuck尝试它时,我发现
remote不支持协议
错误


我刚刚在我的机器上为一个通用解决方案编写了代码,它对我来说是可行的。让我和你分享。您可以使用php执行shell命令


如果启用phpsafemode,shell_exec将无法工作。您可能需要为脚本等设置适当的权限。但是我认为这是一个从php开始的想法,为了得到你想要的东西

<?php 

//clearing a folder named test if it exist(avoiding git errors) 
shell_exec('rm -rf test');

//cloning into test folder
shell_exec('git clone https://github.com/nette/sandbox.git test');

//archiving
shell_exec('cd test && git archive HEAD --format=zip > archive.zip');

//copying to root folder
shell_exec('cp test/archive.zip archive.zip');

//removing the temp test folder we created
shell_exec('rm -rf test');

?>