2012-12-05 40 views

回答

20

克隆可以使用Gradle-git plugin來完成。要使用該插件,你應該首先下載:

buildscript { 
    repositories { mavenCentral() } 
    dependencies { classpath 'org.ajoberstar:gradle-git:0.2.3' } 
} 

然後寫這樣一個任務:

import org.ajoberstar.gradle.git.tasks.* 

task cloneGitRepo(type: GitClone) { 
     def destination = file("destination_folder") 
     uri = "your_git_repo_uri" 
     destinationPath = destination 
     bare = false 
     enabled = !destination.exists() //to clone only once 
} 
+1

有沒有辦法克隆回購的特定功能分支? –

+0

這個答案仍然正確嗎?似乎從Gradle 2.7開始,不再需要Git插件。那是對的嗎? https://github.com/gradle/gradle/pull/386 – haysclark

+0

你如何指定要克隆的分支? – revolutionary

4

Gradle-git插件有GitClone task這應該有所幫助。因爲我不知道Gradle,所以我無法幫助你如何使用它。

+2

是的,我發現它已經。你看,我是Gradle的新手,所以我需要一個關於如何使用插件克隆回購的詳細說明。不管怎麼說,你都可以上傳你的答案,謝謝 –

5

有一個Git插件 - 文檔在這裏:Gradle-git。該插件有一個克隆方法:GitClone

大概的東西沿着線:

GitClone clone = new GitClone(); 
clone.setUri("http://remote.repository/"); 
clone.setDestinationPath("//local/path"); 
clone.setBare(false); 
clone.cloneRepo(); 
5

上述搖籃 - git的插件似乎已經從提供簡單的「克隆此回購繼續前行該目錄」的功能,所以我寫了一個簡單的任務,不只是這一點:

https://github.com/palominolabs/gradle-git-clone-task

+0

謝謝你。我會如何在另一項任務中調用它? – vsp

+0

執行此任務的方法是依賴* GitCloneTask類型的* *任務。但是,我看不出有什麼理由不能創建一個GitCloneTask對象,並且如果你願意的話可以調用setUpRepo()。根據需要設置屬性並開除:https://github.com/palominolabs/gradle-git-clone-task/blob/master/src/main/groovy/com/palominolabs/gradle/task/git/clone/GitCloneTask。 groovy – mpierce

16

隨着新版本(0.7.0及以上),你會創建這樣的任務:

import org.ajoberstar.grgit.* 

task clone << { 
    Grgit.clone(dir: file('build/repo'), uri: '[email protected]:user/repo.git') 
} 
+1

有什麼辦法克隆回購的特定功能分支? –

+0

如何在自定義gradle插件中使用克隆操作? – sver

+0

@ObaidMaroof,可能會使用checkout操作幫助[grgit.checkout(branch:'existing-branch')](http://ajoberstar.org/grgit/docs/groovydoc/org/ajoberstar/grgit/operation/CheckoutOp的.html)。 – Abhijeet