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. 注意事项

glide引出恶心的git submodule的更多相关文章

  1. git submodule初用

    git submodule主要是用于针对git项目中还存在git子模块的情况.在一般情况下,我们通过git clone 获取项目的时候会把项目中的所有信息都拿到.但是,如果相关中存在git子模块那么, ...

  2. git submodule 使用

    这个是备忘录,原网页: https://medium.com/@porteneuve/mastering-git-submodules-34c65e940407 http://cncc.bingj.c ...

  3. git submodule(转载)

    From:http://www.worldhello.net/2010/01/26/425.html 删除 git submodule (git 库子模组) 有两种情况会创建 git submodul ...

  4. Git submodule 特性

    当你习惯了代码的 VCS 后,基本上是离不开的. 作为一个依赖多个子项目组成的项目,要实现直观的代码逻辑结构,可以考虑使用 Git submodule 特性. 当然,如果只是单独的依赖的话,用依赖管理 ...

  5. Git subtree和Git submodule

    git submodule允许其他的仓库指定以一个commit嵌入仓库的子目录. git subtree替代git submodule命令,合并子仓库到项目中的子目录.不用像submodule那样每次 ...

  6. 使用git submodule管理一个需要多个分立开发或者第三方repo的项目

    在项目开发中,特别是web前端开发中,有非常多的开源第三方library,我们希望引用他们,同时也希望能够方便地保持这些第三方 开源repo的更新.另外一方面如果我们自己在开发一个网站的项目,这个项目 ...

  7. Git submodule实战

    http://blog.jqian.net/post/git-submodule.html 使用git管理的项目开发中,如果碰到公共库和基础工具,可以用submodule来管理. 常用操作 例如, 公 ...

  8. git submodule的操作

    对于有submodule的库,检出的方法是: git clone https://github.com/BelledonneCommunications/linphone-android.git -- ...

  9. git submodule相关操作

    $ cd 项目目录 // 初始化 $ git init $ git submodule add https://github.com/XXXX // 普通更新 $ git submodule upda ...

随机推荐

  1. Effective前端1---chapter 1 HTML/CSS优化

    最近在读高效前端:web高效编程与优化实践,借此本书的感受总结下前端代码与性能优化,纯属自己见解,如有错误,欢迎指出. 1.能用HTML/CSS解决的问题就不要用js 场景1:鼠标悬浮时显示 鼠标悬浮 ...

  2. BZOJ-8-2115: [Wc2011] Xor

    https://www.lydsy.com/JudgeOnline/problem.php?id=2115 题意 : 给出一个连通无向图,求从1到n异或和最小的路径. 思路 :随意找一条简单路径 1- ...

  3. Winform-DataGridView

    Winform-DataGridView 1 常用属性 // 1.点击后的选中模式 this.dgv.SelectionMode = DataGridViewSelectionMode.FullRow ...

  4. Alpha(10/10)

    鐵鍋燉腯鱻 项目:小鱼记账 团队成员 项目燃尽图 冲刺情况描述 站立式会议照片 各成员情况 团队成员 学号 姓名 git地址 博客地址 031602240 许郁杨 (组长) https://githu ...

  5. Windows下的Hadoop安装(本地模式)

    时隔许久的博客.. 系统为Windows 10,Hadoop版本2.8.3. 虽然之前已经在Linux虚拟机上成功运行了Hadoop,但我还是在Windows上编码更加习惯,所以尝试了在Window上 ...

  6. C# 控制左右声道

    private void button1_Click(object sender, EventArgs e) { axWindowsMediaPlayer1.settings.balance = -; ...

  7. Windows 账户名及机器名相关问题记录

    问题 1 背景:因为部门调动,需要接手同事的 PC.相关工具配置好之后,通过"控制面板->用户帐户和家庭安全->用户帐户->管理帐户->更改帐户->重命名帐户& ...

  8. 60.Search Insert Position.md

    描述 给定一个排序数组和一个目标值,如果在数组中找到目标值则返回索引.如果没有,返回到它将会被按顺序插入的位置. 你可以假设在数组中无重复元素. 您在真实的面试中是否遇到过这个题? 样例 Given ...

  9. 2D Rotated Rectangle Collision

    Introduction While working on a project for school, I found it necessary to perform a collision chec ...

  10. 简单配置umiJS学习笔记

    最近跟着Antd-Pro官方教程学习umi,这里给大家推荐一下这个教程,特别适合初学者学习,教程涉及了AntD,AntD-Pro,umiJS,dvaJS等框架知识. 学习过程中跟着教程做了个Demo, ...