• 一个类似repo的小程序


    #! /usr/bin/env python
    # -*- coding: utf-8 -*-
    # usage :  python EasyRepo.py -u "13051041" -v "v6.0.0"
    # by (13051041) 20160909
    
    import os
    try:
      import xml.etree.cElementTree as ET
    except ImportError:
      import xml.etree.ElementTree as ET
    import sys
    
    projectList = []
    
    class Project:
       def __init__(self,n,b):
            self.name = n
            self.branch = b
    
    def downloadManifest(username,version):
        manifest = "git clone ssh://%s@10.27.149.227:29418/manifest"%(username)
        os.system(manifest)
    
        path = os.path.join(os.getcwd(),"manifest")
        for parent,dirnames,filenames in os.walk(path):
            for filename in filenames:
                if version in str(filename):
                    print "the version xml file is:" + os.path.join(parent,filename)
                    return os.path.join(parent,filename)
    
        pass
    
    def analyzerXml(path):
        global projectList
        try:
            tree = ET.parse(path)
            root = tree.getroot()
        except Exception, e:
            print "Error:cannot parse file:country.xml."
            sys.exit(1)
        for project in root.findall('project'):
            name = project.get('name')
            version = project.get('revision')
            p = Project(name,version)
            projectList.append(p)
            print name, version
    
    def syncProject(username):
        global projectList
        for p in projectList:
            cmd = '''
            git clone ssh://%s@10.27.149.227:29418/%s && scp -p -P 29418 %s@10.27.149.227:hooks/commit-msg %s/.git/hooks/
            cd %s
            git pull
            git checkout %s
            '''% (username,p.name,username,p.name,p.name,p.branch)
            os.system(cmd)
    
    
    
    if __name__ == '__main__':
        help = '''usage :  python easyRepo.py -u 13051041 -v v6.0.0 '''
        username = ""
        version = ""
        numU = 0
        numV = 0
        numH = 0
        for i in range(1, len(sys.argv)):
            if "-v" in sys.argv[i]:
                numV = i
            if "-u" in sys.argv[i]:
                numU = i
            if "-h" in sys.argv[i]:
                numH = i
            if numU != 0 and i== numU+1:
                username = sys.argv[i]
            if numV != 0 and i== numV+1:
                version = sys.argv[i]
    
        if numH !=0:
            print help
    
        if numU == 0:
            print "参数有问题 没有 -u"
            print help
            sys.exit(1)
    
        if numV == 0:
            print "参数有问题 没有 -v"
            print help
            sys.exit(1)
    
        print "user name is ",username
        print "version name is ",version
    
        path = downloadManifest(username,version)
        analyzerXml(path)
        syncProject(username)
    

      

  • 相关阅读:
    【NOI1999、LOJ#10019】生日蛋糕(搜索、最优化剪枝、可行性剪枝)
    【NOI2016】区间
    【CodeForces688A】Opponents
    「LOJ10150」括号配对
    HDU6444(子段和、分情况比较)
    牛客练习赛41E(球的体积并)
    Codeforces 1154G(枚举)
    POJ1830(异或高斯消元)
    Codeforces 1114F(欧拉函数、线段树)
    牛客小白月赛13 G(双向搜索)
  • 原文地址:https://www.cnblogs.com/chenjie0949/p/5857359.html
Copyright © 2020-2023  润新知