glide引出噁心的git submodule

 
  1. 原由
    1. 某一天一個同事,在看那個glide,而後我路過,看到他爲什麼不編譯「glide」項目(他說,編譯中出錯,反正都是看源碼而已,因此就懶得搞,而後我出於「好心」,給他弄一下,我擦)
    2. 報錯:
      1. Process 'command 'git'' finished with non-zero exit value 128
        1. 這個簡單,由於他是直接從github那裏下載(獲得一個zip文件,天朝clone github的代碼很慢的)的,而不是直接clone出來,因此執行時,報這個錯,很正常,只須要把在該文件夾中執行"git init"就好了
      2. Cannot evaluate module disklrucache : Configuration with name 'default' not found.
        1. 這個就比較麻煩了。是由於,檢查到模塊"disklrucache",只是一個「空目錄」,因此gradle,不認識它。就直接報錯。
      3. 問題來了:爲何 模塊"disklrucache"是空目錄,是由於在settings.gradle中聲明的更新「外部模塊」
        1. exec { commandLine "git", "submodule", "update", "--init", "--recursive"}
        2. 執行完,沒有把「disklrucache」進行更新
        3. 而後進入正題了,git submodule
        4. 直接敲"git submodule"能查看當前git中有哪些子外部模塊(相關文章:http://www.tuicool.com/articles/jqiEJzU
        5. 我查看後,沒有聲明disklrucache做爲「子外部模塊」,只留了那個目錄在那裏
        6. 只好查看一下,如何添加「子外部模塊」
        7. 添加
爲當前工程添加submodule,命令以下:
git submodule add 倉庫地址 路徑
  1. 如下代碼,是我無聊寫的。能夠忽略的
def getGitModules(){
File configFile = file(".gitmodules")
println configFile.getAbsolutePath()
def lines = configFile.readLines()
String line = ""
String path = ""
String url = ""
Map<String,String> gitModules = new HashMap<>()
for (int i = 0; i < lines.size(); i++) {
line = lines.get(i)
if(line.startsWith("[submodule")){
path = lines.get(i+1).split(" = ")[1]
url = lines.get(i+2).split(" = ")[1]
//println String.format("path:%s",path)
//println String.format("url:%s",url)
if (url.endsWith(".git")) {
gitModules.put(path,url)
}
}
}
gitModules
}
 
def getGitModulesByClone(){
Map<String,String> gitModules = getGitModules()
String path = ""
String url = ""
for(String key: gitModules.keySet()){
File moduleDir = file(key)
if (moduleDir.exists()) {
moduleDir.delete()
}
path = key
url = gitModules.get(key)
println String.format("path:%s",path)
println String.format("url:%s",url)
try{
exec {
commandLine "git", "submodule", "add", url , key
}
}catch(Exception e){
 
}
}
}
def gitInit(){
exec {
commandLine "git", "init"
}
println("gitInit")
}
def gitSubmoduleUpdate(){
/**
try{
exec {
commandLine "git", "submodule", "update", "--init", "--recursive"
}
println("gitSubmoduleUpdate")
}catch(Exception e){
getGitModulesByClone()
}
*/
getGitModulesByClone()
}
 
try{
gitSubmoduleUpdate()
}catch(Exception e){
gitInit()
gitSubmoduleUpdate()
}
  1. 結論
    1. 注意事項
相關文章
相關標籤/搜索