将android 代码上传服务器并用repo 管理

1. 配置default.xml

default.xml是跟Android代码配套的,可参考google Android源码下的default.xml(.repo/manifests/default.xml)进行修改。
新建仓库all/manifest.git

ssh -p 29418 jeffrey@172.21.16.236 gerrit create-project --empty-commit RK3128/manifest

clone到本地
git clone ssh://jeffrey@172.21.16.236:29418/RK3128/manifest.git
配置default.xml
PS: 将.repo 下项目所使用的manifest.xml copy 出来。用del_remote_version.py 脚本去除remote version 等信息。生成default.xml
del_remote_version.py 如下

#!/usr/bin/python3

import os
import sys

if len(sys.argv) == 1:
    print('错误!请传入 xml 文件')
elif len(sys.argv) > 2:
    print('错误!传入参数太多')
else:
    print('传入的文件是 %s' % sys.argv[1])

newfilestr = ''
    
with open(sys.argv[1], 'r') as fin:
    while True:
        linestr = fin.readline()
        if linestr == '':       #表示文件结束
            break
        #print(linestr)
        linestr = linestr[:len(linestr)-1]      # 去除行尾
        #下面开始对本行内容分析
        if (('name=' in linestr) or ('name =' in linestr)) and (('project' in linestr) or ('path' in linestr)):   #本行内容含有name信息,进行处理
            #print(linestr)
            newstr = linestr
            #下面开始分析本行内容,删除remote和revision等内容
            if ' remote=' in newstr:    # 包含remote信息,删除掉
                str1 = ' remote="'
                str2 = '"'
                newstr = newstr[0:newstr.index(str1)] + newstr[newstr.index(str1) + len(str1) + newstr[newstr.index(str1)+len(str1):].index(str2)+1:]
            if ' revision=' in newstr:   # 包含revision信息,删除掉
                str1 = ' revision="'
                str2 = '"'
                newstr = newstr[0:newstr.index(str1)] + newstr[newstr.index(str1) + len(str1) + newstr[newstr.index(str1)+len(str1):].index(str2)+1:]
            if ' upstream=' in newstr:   # 包含revision信息,删除掉
                str1 = ' upstream="'
                str2 = '"'
                newstr = newstr[0:newstr.index(str1)] + newstr[newstr.index(str1) + len(str1) + newstr[newstr.index(str1)+len(str1):].index(str2)+1:]
            #print(newstr)
            newfilestr = newfilestr + newstr + '\n'
        else:           # 本行没有name信息,不关心,原样输出
            newfilestr = newfilestr + linestr + '\n'

print(newfilestr)
with open(sys.argv[1], 'w') as fout:
    fout.write(newfilestr)


上传到远程仓库

1	git add .
2	git comm -am "add default.xml"
3	git push origin master

  1. 创建git仓库
    进入Android代码目录,新建脚本文件,
    1 cd src
    vi gerrit_create.sh
LOCAL_PATH=`pwd`
MANIFEST_XML_FILE=$LOCAL_PATH/../manifest/default.xml
USER_NAME="jeffrey.liao"
SERVER_IP="172.21.16.199"
SERVER_PORT="29418"
OUTPUT_PROJECT_LIST_FILE_NAME=$LOCAL_PATH/project_list_name
OUTPUT_PROJECT_LIST_FILE_PATH=$LOCAL_PATH/project_list_path
function getNameAndPath()
{
echo > $OUTPUT_PROJECT_LIST_FILE_NAME
echo > $OUTPUT_PROJECT_LIST_FILE_PATH
while read LINE
do
command_line=`echo $LINE | grep "<project"`
if [ "$command_line" ]
then
#echo $LINE
reposity_name_sec=${LINE#*name=\"}
reposity_path_sec=${LINE#*path=\"}
if [ "$reposity_name_sec" ] && [ "$reposity_path_sec" ]
then
reposity_name=${reposity_name_sec%%\"*}
reposity_path=${reposity_path_sec%%\"*}
echo "$reposity_name">> $OUTPUT_PROJECT_LIST_FILE_NAME
echo "$reposity_path">> $OUTPUT_PROJECT_LIST_FILE_PATH
fi
fi
done < $MANIFEST_XML_FILE
}
function creatEmptyGerritProject()
{
for i in `cat $OUTPUT_PROJECT_LIST_FILE_NAME`;
do
echo $i
echo "ssh -p $SERVER_PORT $USER_NAME@$SERVER_IP gerrit create-project --empty-commit $i"
ssh -p $SERVER_PORT $USER_NAME@$SERVER_IP gerrit create-project --empty-commit $i
done
}

function removeFiles()
{
rm -rf $LOCAL_PATH/project_list_name
rm -rf $LOCAL_PATH/project_list_path
}

getNameAndPath
creatEmptyGerritProject
removeFiles

运行脚本,创建git仓库,

1	. gerrit_create.sh

  1. 上传代码到远程仓库
    新建脚本gerrit_push.sh
1	vi gerrit_push.sh

内容如下,

LOCAL_PATH=`pwd`
MANIFEST_XML_FILE=$LOCAL_PATH/../manifest/default.xml

USER_NAME="jeffrey.liao"
SERVER_IP="172.21.16.199"
SERVER_PORT="29418"

function pushLocalToRemote()
{

while read LINE
do
cd $LOCAL_PATH
command_line=`echo $LINE | grep "<project"`
if [ "$command_line" ]
then
#echo $LINE
reposity_name_sec=${LINE#*name=\"}
reposity_path_sec=${LINE#*path=\"}

if [ "$reposity_name_sec" ] && [ "$reposity_path_sec" ]
then
reposity_name=${reposity_name_sec%%\"*}
reposity_path=${reposity_path_sec%%\"*}

src_path=$LOCAL_PATH/$reposity_path

if [ -d "$src_path" ]; then
cd $src_path
echo `pwd`

rm -rf .git
#rm -rf .gitignore
git init
git remote add origin ssh://$USER_NAME@$SERVER_IP:$SERVER_PORT/$reposity_name.git
git pull origin master
git add -A . -f
git commit -am"init commit"
git push origin master
cd -
fi
fi
fi

done < $MANIFEST_XML_FILE
}

pushLocalToRemote

运行脚本,push代码,

. gerrit_push.sh
  1. 下载代码
1	mkdir -p ../des
2	cd ../des
3	repo init -u ssh://admin@192.168.130.10:29418/all/manifest.git
4	repo sync -f -j8
展开阅读全文

Python数据分析与挖掘

01-08
92讲视频课+16大项目实战+源码+¥800元课程礼包+讲师社群1V1答疑+社群闭门分享会=99元   为什么学习数据分析?       人工智能、大数据时代有什么技能是可以运用在各种行业的?数据分析就是。       从海量数据中获得别人看不见的信息,创业者可以通过数据分析来优化产品,营销人员可以通过数据分析改进营销策略,产品经理可以通过数据分析洞察用户习惯,金融从业者可以通过数据分析规避投资风险,程序员可以通过数据分析进一步挖掘出数据价值,它和编程一样,本质上也是一个工具,通过数据来对现实事物进行分析和识别的能力。不管你从事什么行业,掌握了数据分析能力,往往在其岗位上更有竞争力。    本课程共包含五大模块: 一、先导篇: 通过分析数据分析师的一天,让学员了解全面了解成为一个数据分析师的所有必修功法,对数据分析师不在迷惑。   二、基础篇: 围绕Python基础语法介绍、数据预处理、数据可视化以及数据分析与挖掘......这些核心技能模块展开,帮助你快速而全面的掌握和了解成为一个数据分析师的所有必修功法。   三、数据采集篇: 通过网络爬虫实战解决数据分析的必经之路:数据从何来的问题,讲解常见的爬虫套路并利用三大实战帮助学员扎实数据采集能力,避免没有数据可分析的尴尬。   四、分析工具篇: 讲解数据分析避不开的科学计算库Numpy、数据分析工具Pandas及常见可视化工具Matplotlib。   五、算法篇: 算法是数据分析的精华,课程精选10大算法,包括分类、聚类、预测3大类型,每个算法都从原理和案例两个角度学习,让你不仅能用起来,了解原理,还能知道为什么这么做。
©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值