为了同步CyanogenMod源代码,你也学会了FQ,对吗?

通常 .repo/manifest.xml 文件有Google AOSP的Project,也有Github的Project;

访问Github不需要FQ,而同步Google源代码则避免不了了;

想分开同步,想智能一点吗?

 1 #!/usr/bin/env python
 2 # encoding: utf-8
 3
 4 import os,sys,subprocess
 5 import xml.dom.minidom
 6 from xml.dom.minidom import Node
 7
 8 # 代理环境
 9 proxy_user=''
10 proxy_pass=''
11 proxy_host='123.123.123.123' # 请改
12 proxy_port=12345 # 请改
13 if len(proxy_user) == 0:
14     http_proxy="http://%s:%d" %(proxy_host, proxy_port)
15     https_proxy="http://%s:%d" %(proxy_host, proxy_port)
16 else:
17     http_proxy="http://%s:%s@%s:%d" %(proxy_user, proxy_pass, proxy_host, proxy_port)
18     https_proxy="http://%s:%s@%s:%d" %(proxy_user, proxy_pass, proxy_host, proxy_port)
19 proxyenv={"http_proxy":http_proxy, "https_proxy":https_proxy}
20
21 # 解析.repo/manifest.xml文件,取出project节点
22 doc = xml.dom.minidom.parse('.repo/manifest.xml')
23 projects = doc.getElementsByTagName('project')
24
25 github_projects=[]
26 google_projects=[]
27
28 errorsync_projects=[]
29
30 # 执行同步函数
31 def sync_project(project, env=None):
32     """
33     执行同步命令
34     project: 期望同步的Project name
35     """
36     cmd="repo sync %s" %project
37     print '>>>', cmd
38     # 执行同步
39     process = subprocess.Popen(cmd, shell=True, env=env,\
40             stdout=subprocess.PIPE, stderr=subprocess.PIPE)
41     # 实时读取STDOUT
42     out = process.stdout.readline()
43     while out:
44         print out,
45         out = process.stdout.readline()
46     err = process.stderr.readline()
47     # 实时读取STDERR
48     while err:
49         print err,
50         err = process.stderr.readline()
51     # 等待进程结束获得返回值
52     process.poll()
53     errcode = process.returncode
54     # 若有错误追加到错误数组
55     if errcode != 0:
56         errorsync_projects.append(project)
57
58 # 对project进行分类
59 # AOSP的Project保存在 google_projects 数组
60 # CyanogenMod的Project保存在 github_project 数组
61 for node in projects:
62     remote=node.getAttribute('remote')
63     project=node.getAttribute('name')
64     if remote == 'aosp':
65         google_projects.append(project)
66     else:
67         github_projects.append(project)
68
69 cur_env=os.environ.copy()
70 cur_env["http_proxy"]=http_proxy
71 cur_env["https_proxy"]=https_proxy
72 # 同步来自Google的Project
73 for project in google_projects:
74     sync_project(project, cur_env)
75     sys.exit()
76
77 # 同步来自Github的Project
78 for project in github_projects:
79     sync_project(project)
80
81 # 输出同步出错的Project
82 if len(errorsync_projects) != 0:
83     print '>>> 同步出现了错误的Project: '
84     for project in errorsync_projects:
85         print project
86
87     print '>>> 请执行命令以重新同步Project: '
88     for project in errorsync_projects:
89         if project in google_projects:
90             sync_cmd="env http_proxy=%s https_proxy=%s repo sync %s" %(http_proxy, https_proxy, project)91         else:
92             sync_cmd="repo sync %s" %project
93         print sync_cmd

保存脚本到 sync_split.py,同步的时候执行:

  cd /path/to/src

  python sync_split.py

Enjoy!

转载于:https://www.cnblogs.com/scue/p/4126879.html

〖Android〗代理与正常网络分开同步CyangenMod源码相关推荐

  1. Okhttp同步请求源码分析

    进阶android,OKhttp源码分析--同步请求的源码分析 OKhttp是我们经常用到的框架,作为开发者们,我们不单单要学会灵活使用,还要知道他的源码是如何设计的. 今天我们来分析一下OKhttp ...

  2. linux内核设计与实现 epub_mongodb内核源码设计实现、性能优化、最佳运维系列-网络传输层模块源码实现四...

    1. 说明 本文分析网络传输层模块中的最后一个子模块:service_executor服务运行子模块,即线程模型子模块.在阅读该文章前,请提前阅读下<<Mongodb网络传输处理源码实现及 ...

  3. ensp大型网络环境设计与实现_mongodb内核源码设计实现、性能优化、最佳运维系列-网络传输层模块源码实现三...

    1. 说明 在之前的<<Mongodb网络传输处理源码实现及性能调优-体验内核性能极致设计>>和<<mongodb内核源码设计实现.性能优化.最佳运维系列-tran ...

  4. Android图片爬虫,看妹纸神器项目源码,ListView单张图片查看

    Android图片爬虫,看妹纸神器项目源码 刚自学完安卓,国庆7七天花了6天纯手写入门级app,从集成图片爬虫到整个项目结束真是一步一个坑. 整个项目没有用框架,都是手写纯属练手,项目中主要用到的技术 ...

  5. (仿微信Android)IM聊天+抢红包+直播+朋友圈源码发布了

    (仿微信Android)IM聊天+抢红包+直播+朋友圈源码发布了 功能概览: IM聊天 单聊/群聊/聊天室--基于环信sdk 红包功能: 1.一对一红包 2.群红包(抢红包.答题红包.专属红包) 3. ...

  6. 安卓Android与H5双向交互MathJax展示数学公式(源码+解析)

    安卓Android与H5双向交互MathJax展示数学公式(源码+解析) 博主就今天周五又做了个需求(安卓Android与H5交互),原来上线的功能是服务器配置过来的学习报告(一个H5页面)并提供原始 ...

  7. 【Android项目】本地FM收音机开发及源码简析

    [Android项目]本地FM收音机开发及源码简析 目录 1.概述 2.收音机的基本原理 3.收音机其他信息 RDS功能 4.Android开发FM收音机源码解析 5.App层如何设计本地FM应用 6 ...

  8. Android wifi探究二:Wifi framework层源码分析

    上一篇博客初步认识了wpa_supplicant的作用和使用方法,并且尝试着梳理了wifi的大框架,不过,java层的框架我们忽略了,没有分析,也就是说上一篇博客简单的指出了wifi代码的大框架,那么 ...

  9. android 随手记 170多个示例demo源码

    下载地址:http://pan.baidu.com/s/101PEN 2012-10-1513:03   2,098,836     AdXmpp(Openfire+asmack+spark) .zi ...

最新文章

  1. Ubuntu上五款搜索工具:Albert、Synapse、Utools、Ulauncher、FSearch
  2. 一文图解机器学习的基本算法!
  3. 在项目中同时使用Objective-C和Swift
  4. C# 如何使用 Elasticsearch (ES)
  5. UA MATH563 概率论的数学基础 中心极限定理21 Skorohod定理的证明
  6. DELL安装不了mysql_Windows 版本 Mysql 8.x 安装
  7. 定义一个dto对象_业务代码的救星——Java 对象转换框架 MapStruct 妙用
  8. 6、EIGRP配置实验之负载均衡
  9. python自动化框架pytest pdf_Python 自动化测试框架 unittest 和 pytest 对比
  10. 服务发现与负载均衡traefik ingress
  11. python入门小程序代码_Python入门小程序(二)
  12. php怎么获取权限操作 shell,利用php利用root权限执行shell脚本必须进行以下几个步骤...
  13. oracle buffercache,Oracle DBA开发之:使用sql来查看buffer cache的使用情况
  14. 大道至简java伪代码
  15. matlab中emd未定义,EMD的Matlab程序
  16. 连接数据库是显示无法连接到服务器,数据库无法连接到服务器怎么办(解决服务器连接故障的技巧)...
  17. html如何插入动图,动态图片如何插入到PPT里?
  18. PaddleSeg快速开始之 人像分割
  19. LT8911EXB:MIPI CSI/DSI转EDP信号转换芯片-润百信科技提供技术批量支持
  20. 怎么用VBA在excel中指定位置画图表? 如怎么用VBA在 A7:G13位置画出图标

热门文章

  1. Jenkins + Git + Maven + tomcat集成环境搭建
  2. 太阳能正在崛起 光伏养老蔚然成风
  3. 数据显示,近半数人依然坚持在用 Windows 7
  4. oracle递归查询(查询条件ID下得所有子集)
  5. 【Android】开源图表库MPAndroidChart的学习
  6. 最全面的Linux指令大全
  7. office365中文版
  8. Amazing Slide(图片轮播制作工具)中文版
  9. document的createElement方法创建具有指定标签的DOM对象
  10. 一份超级全面的PHP面试题