公司经常添加SVN项目。相关领导发一个邮件,注明权限什么的, 然后按这个权限添加。
现在这个脚本,直接把附件的excel文件直接添加, 导入。
#!/usr/bin/python import xlrd import os import sys import tempfile def usage(): tmp = ‘‘‘ useage: ./script excel_file [release username] e.g. ./script abc.xls ./script abc-rel.xls xiao.mi ‘‘‘ print tmp shread = { "xiaomi":"xiao.mi", "lishi":"lishi" } if os.getuid() != 0: print "Non Root User!" sys.exit(1) if len(sys.argv) < 2: usage() sys.exit(1) if not os.path.isfile(sys.argv[1]): print "File Is Not Exist" sys.exit(1) file_type = int(os.popen("file %s | grep Excel | wc -l" % sys.argv[1]).read()) if file_type != 1: print "File Is Not EXCEL FILE!" sys.exit(1) if not sys.argv[-1] in shread.values(): print "User Not Exist" sys.exit(1) data = xlrd.open_workbook(sys.argv[1]) table = data.sheets()[0] svn_name = sys.argv[1].split(‘.‘)[0].upper() svn_home = "/local_home/svn/" svn_auth = "/etc/apache2/%s.authz" % svn_name dav_svn = "/etc/apache2/mods-enabled/dav_svn.conf" svn_tmp = tempfile.mkdtemp() auth = ‘‘‘ [groups] shread = %s [%s:/] bian = rw @shread = r * = ‘‘‘ % (",".join(shread.values()), svn_name) print "svn name is %s" % svn_name if raw_input("Are You Sure Add This SVN? [y|n] \n" ) != ‘y‘: sys.exit(0) if list(set(table.col_values(2))) == [‘‘]: os.makedirs(svn_tmp + "/" + svn_name + "/branches") os.makedirs(svn_tmp + "/" + svn_name + "/tags") os.makedirs(svn_tmp + "/" + svn_name + "/trunk") auth = auth + ‘[‘ + svn_name + ‘:/branches]\n‘ auth = auth + ‘%s = rw‘ % sys.argv[-1] else: for i in xrange(table.nrows): tmp = table.row_values(i) if list(set(tmp)) == [‘‘]: #blank row next else: if tmp[3] == ‘‘: rw = "rw" else: if u"\u5199" in tmp[3]: rw = "rw" else: rw = "r" #====================== if shread.has_key(tmp[2].strip()): tmp[2] = shread[tmp[2].strip()] #====================== if tmp[0] == tmp[1] == ‘‘: next elif tmp[0] == ‘‘ and tmp[1] != ‘‘: try: tmp[0] = row0 except: pass svn_name = row0.split(‘/‘)[0] svn_module = row0.replace(svn_name,‘‘) os.makedirs(svn_tmp + "/" + row0 + "/" + tmp[1]) auth = auth + ‘[‘ + svn_name + ":" + svn_module + "/" + tmp[1] + "]\n" auth = auth + tmp[2] + " = " + rw + "\n" else: svn_name = tmp[0].split(‘/‘)[0] svn_module = tmp[0].replace(svn_name,‘‘) row0 = tmp[0] if tmp[1] != ‘‘: os.makedirs(svn_tmp + "/" + tmp[0] + "/" + tmp[1]) auth = auth + ‘[‘ + svn_name + ":" + svn_module + "/" + tmp[1] + "]\n" auth = auth + tmp[2] + " = " + rw + "\n" else: os.makedirs(svn_tmp + "/" + tmp[0]) auth = auth + ‘[‘ + svn_name + ":" + svn_module + "]\n" auth = auth + tmp[2] + " = " + rw + "\n" def wirte_file(filename,content,arg): f = open(filename, arg) f.write(content) f.close() apache_dav = ‘‘‘ <Location /svn/%s> DAV svn SVNPath /local_home/svn/%s AuthType Basic AuthName "Subversion %s" AuthBasicProvider ldap file AuthzLDAPAuthoritative off AuthLDAPURL "ldap://fw.163.net:389/ou=People,dc=163,dc=net?uid?sub?(objectClass=*)" AuthzSVNAccessFile /etc/apache2/%s.authz #AuthUserFile /etc/apache2/%s.passwd Require valid-user </Location> ‘‘‘ % (svn_name,svn_name,svn_name,svn_name,svn_name) os.system("svnadmin create %s" % (svn_home + svn_name)) os.system("chown -R www-data:subversion %s" % svn_home) os.system("chmod -R g+rws %s" % (svn_home + svn_name)) wirte_file(dav_svn,apache_dav,‘a‘) wirte_file(svn_auth,auth,‘w‘) os.system("/etc/init.d/apache2 restart") os.chdir(svn_tmp) os.system("svn co http://%s.163.net/svn/%s --username=bian --password=%s --no-auth-cache" % (str.lower(svn_name),svn_name,"123123")) os.chdir("./" + svn_name) folder = " ".join(os.listdir(‘.‘)) os.system("svn add %s" % folder) os.system("svn ci %s -m ‘create by bian.wu‘ --username=bian --password=%s --no-auth-cache" % (folder,"123123")) os.chdir("/tmp") os.system(‘rm -rf $(ls -1 /tmp | grep -E "tmp[a-zA-Z0-9]{6}")‘) print "SVN ADD OK"
excel文件格式
目录 子目录 人员 权限
ABC/Code test xiaomi 读写
如果excel第三列都是空的, 则添加 release 版本
时间: 2024-10-09 06:36:30