2015-01-03 69 views
0

我想創建一個簡單的腳本,它將從遠程存儲庫下載插件到目錄中。我有一組URL,用於在遠程服務器上對git文件進行git - 就像GitHub https://github.com/nette/sandbox.git中的一個。 GitHub支持下載ZIP壓縮文件,但我有很多其他庫插件,它不提供此選項。Git直接從原始導出存檔

回到我的問題 - 有沒有任何選擇如何獲得存檔,而不是下載完整的存儲庫,並從命令行使用git導出存檔?我發現了這個問題 - Do a "git export" (like "svn export")? - 但這不可能使用PHP。

回答

0

post爲您提供有關以您提及的方式導出git的詳細信息。

GIT中存檔HEAD --format =拉鍊>歸檔.zip

也可以歸檔的遠程使用--remote =選項。只需 請注意,這不適用於GitHub遙控器,因爲它們 鼓勵您改用下載按鈕。與其他 遠程它應該工作得很好,並檢查手冊頁,如果你有 有問題。

但該方法的問題是,當我與兩個github上bitbuck嘗試了,我得到remote doesn't support protocol錯誤。


我剛剛在我的機器上寫了一個通用解決方案的代碼,它爲我工作。讓我與你分享。您可以使用shell_exec使用php執行shell命令。如果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'); 

?> 

了shell_exec將無法​​正常工作。您可能需要爲腳本等設置適當的權限。但我認爲這是一個想法開始與PHP,爲了得到你想要的。