svn添加项目脚本

公司经常添加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

svn添加项目脚本的相关文章

如何使用SVN添加项目

一.在所要提取的文件夹中,右击选择 TortoiseSVN——Repo-browser,并复制URL中的地址: 二.在已经装好SVN需要放提取的文件夹中,右击选择 SVN Checkout,把上步复制的地址复制到这个URL中,选择下边Choose items选项,选择需要添加的项目,点击OK即可: 原文地址:https://www.cnblogs.com/fkcqwq/p/10863877.html

怎么添加项目到SVN上面

2014-07-25 09:28 72572人阅读 评论(4) 收藏 举报  分类: 版本管理_SVN(8)  版权声明:本文为博主原创文章,未经博主允许不得转载. 一.通过SVN客户端向服务器上面添加项目 1.在服务器上面创建一个文件夹,文件夹以项目名称命名. 2.在合适目录下右击后,点击SVN Checkout,将你在服务器上面创建的目录checkout下来,然后将你在本地项目下的文件或目 录导入到此目录中,然后选中要提交的文件或目录,右击,选择"Add",会在文件或目录上面显示了

Linux下SVN(Subversion)自动启动脚本

给大家分享下三种自动脚本,由易到难! 本人使用的方法二,其它方法没有实验 脚本一: 下面的shell脚本启动,是根据多项目使用的 svnserve -d --listen-port 3690 -r /svnroot/rekfan.com/ svnserve -d --listen-port 3691 -r /svnroot/rekfan.cn/ svn默认启动端口是3690,这里有两个svn库,所以当出现这样的情况时,上面的服务脚本只会启动一个svn库.所以就需要使用shell脚本来实现启动两个

怎样使用svn开发项目

那么首先什么是svn呢?官方有很好的解释,我说一下个人简单的理解,svn就是开源的版本控制软件, 那么什么是版本呢?简单的说版本就是标记,比如你买了一本书,同样的书名,但是版本不一定一样, 因为里面可能补充了一点内容,为了区分,就修改了版本号,大家可以这么理解.要想使用svn软件首先就得 安装,在服务器安装svn软件,创建项目文件夹shop,然后(下面是本机安装svn的操作) 创建仓库 dos:> svnadmin create d:/svnServer/myapp/shop 里面会生成一些文件

使用SVN进行项目版本管理

1.摘要 本文描述了利用SVN进行项目版本管理的方法,涉及项目版本号命名规则.SVN目录结构.第三方代码库的管理.版本创建.发布.修订.合并等行为的方法和原则. 2.版本号命名规则 版本号采用主版本号.次版本号.修订号组成.版本的重大变化主版本号增1,次版本号和修订号归零.版本的相对较小的变化主版本号维持不变,次版本号增1,修订号归零.当一个版本发布后出现了bug需要修订,此时,主.次版本号不变,修订号增1. 注意:对于主动性的程序功能性的变化,应该增加主或次版本号,不应该通过修订号来反映.修订

openladp 添加用户脚本

#!/bin/sh user="seqkit" myDomain="hyldap" passwd="******" echo -n "">./passwd.ldif echo -n "">./group.ldif for i in $user do     echo "Start write user info to passwd.ldif group.ldif"     g

SharePoint 2010 添加项目到用户/欢迎菜单

SharePoint 2010 添加项目到用户/欢迎菜单 最近QQ群里有人问如何添加链接项目到SharePoint 2010 站点右上角的下拉菜单中.其实,SharePoint 2010 添加项目到用户/欢迎菜单非常简单. 1. 创建空白SharePoint项目,命名MenuItemProject.部署为场解决方案.(确保.NET Framework选择3.5). 2. 右键单击Feature节点,添加功能. 3. 右键单击MenuItemProject节点,添加--新建项. 4. 添加空元素M

VS2010在空解决方案中添加项目

如题,在空解决方案中添加第一个项目的时候会看不到那个solution解决方案文件,而是你当前添加的项目,当你再添加其他项目的时候就悲催了,找不到这个solution,只能在这个项目文件上新加文件,很郁闷. 原来有个选项 工具-选项-项目和解决方案-总是显示解决方案,把这个选项勾选了就可以在solution里面添加新的项目了.截图如下. VS2010在空解决方案中添加项目,布布扣,bubuko.com

新建解决方案 在解决方案中添加项目中,解决方案消失的解决办法

新建空白解决方案的步骤:文件--新建项目--其他项目类型--Visual Studio 解决方案 这样就建立出了一个空白解决方案. 然后在资源管理器中可以添加项目,但是添加项目的时候会发现,解决方案消失了,解决办法  工具--选项--项目和解决方案(如果看不到这个,在下方有一个显示所有设置打勾),然后右边有一个 总是显示解决方案.勾上,解决方案就出现了 记录一下. 新建解决方案 在解决方案中添加项目中,解决方案消失的解决办法,布布扣,bubuko.com