在对liunx操作svn的方式,做了改动,使用python的,subprocess进行操作

在第一种方案中,我使用了先拉到本地,然后再创建,在进行上传,实际在svn中可以直接创建文件,并进行文件复制,具体代码如下

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# CreateDate: 2018-01-17 import os
import re
import subprocess
import locale
import sys class SvnCommand(object):
def __init__(self, project):
self.cmd = 'http://svn.egomsl.com/svn/repos/autotest.globalegrow.com/projectScript/uitest'
self.project = project # 获取文件路径 def checkout(self): #下载目录
"""
checkout code from SVN respoitory.
:params url: svn url.
:params path: target path.
"""
command = 'svn checkout ' + self.cmd
message = 'checkout code success'
subprocess.check_output(command, shell=True)
return {'code': 0, 'msg': message} # 新建文件
def crate(self):
# 新建svn目录
project = self.cmd + '/' + self.project
command = 'svn mkdir -m "making" ' + project
print command
message = 'create file success'
subprocess.check_output(command, shell=True)
s.copyfile();
return {'code': 0, 'msg': message} def copyfile(self):
targetDir = self.cmd + '/' + self.project #要复制的文件
url = 'svn list http://svn.egomsl.com/svn/repos/autotest.globalegrow.com/projectScript/uitest/template' #模板文件
address = subprocess.check_output(url, shell=True)
pri_list = address.split('\n')
print pri_list
for i in range(len(pri_list)):
sourceDir = self.cmd + "/template" + "/" + pri_list[i]
command2 = 'svn copy ' + sourceDir + ' ' + targetDir + " -m 'copy project' "
print command2
subprocess.check_output(command2, shell=True)
def update(self): #更新项目
"""
update latest code.
"""
self.cmd = 'svn update'
message = 'update code success'
try:
subprocess.check_output(self.cmd, shell=True)
except Exception:
self.cmd = 'svn cleanup'
subprocess.check_output(self.cmd, shell=True)
self.cmd = 'svn update'
subprocess.check_output(self.cmd, shell=True)
return {'code': 0, 'msg': message} # 更新svn时需要获取svn的地址,这样只更新自己的项目
def svncommit(self):
project = self.cmd + '/' + self.project
print u"开始提交svn地址"
command = "svn ci -m commit 'commit' " + project
print command
message = 'commit code success'
subprocess.check_output(command, shell=True)
return {'code': 0, 'msg': message} if __name__ == "__main__":
s = SvnCommand(sys.argv[1])
s.crate()
s.copyfile()

  

使用python 操作liunx的svn,方案二的更多相关文章

  1. 使用python 操作liunx的svn,方案一

    在服务器中要做几个操作,使用命令操作svn,svn文件的创建,svn文件更新,并把指定demo路径,移动到创建的文件夹中,进行提交, # -*- coding:utf-8 -*- import pys ...

  2. Python全栈开发之MySQL(二)------navicate和python操作MySQL

    一:Navicate的安装 1.什么是navicate? Navicat是一套快速.可靠并价格相宜的数据库管理工具,专为简化数据库的管理及降低系统管理成本而设.它的设计符合数据库管理员.开发人员及中小 ...

  3. redis学习 (key)键,Python操作redis 键 (二)

    # -*- coding: utf-8 -*- import redis #这个redis 连接不能用,请根据自己的需要修改 r =redis.Redis(host=") 1. delete ...

  4. python + docker, 实现天气数据 从FTP获取以及持久化(二)-- python操作MySQL数据库

    前言 在这一节中,我们主要介绍如何使用python操作MySQL数据库. 准备 MySQL数据库使用的是上一节中的docker容器 “test-mysql”. Python 操作 MySQL 我们使用 ...

  5. MongoDB的安装与python操作MongoDB

    一.安装MongoDB 因为我个人使用的是windows,就只记录下windows下的安装 1.下载安装 就是官网,下载msi,选个路径安装 2.配置 看见别的地方说需要手动在bin同级目录创建dat ...

  6. es的查询、排序查询、分页查询、布尔查询、查询结果过滤、高亮查询、聚合函数、python操作es

    今日内容概要 es的查询 Elasticsearch之排序查询 Elasticsearch之分页查询 Elasticsearch之布尔查询 Elasticsearch之查询结果过滤 Elasticse ...

  7. 五、Python操作redis

    五.Python操作redis 一.python对redis基本操作 (1)连接redis # 方式1 import redis r = redis.Redis(host='127.0.0.1', p ...

  8. Python(九) Python 操作 MySQL 之 pysql 与 SQLAchemy

    本文针对 Python 操作 MySQL 主要使用的两种方式讲解: 原生模块 pymsql ORM框架 SQLAchemy 本章内容: pymsql 执行 sql 增\删\改\查 语句 pymsql ...

  9. Python 【第六章】:Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy

    Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度 ...

随机推荐

  1. 利用jquery的ajax实现跨域,内部其实是jsonp协议了,不是XHRhttp协议

    一.同源策略 要理解跨域,先要了解一下“同源策略”.所谓同源是指,域名,协议,端口相同.所谓“同源策略“,简单的说就是基于安全考虑,当前域不能访问其他域的东西. 一些常见的是否同源示例可参照下表: 在 ...

  2. [学习线路] 零基础学习hadoop到上手工作线路指导(初级篇)

    about云课程最新课程Cloudera课程   零基础学习hadoop,没有想象的那么困难,也没有想象的那么容易.在刚接触云计算,曾经想过培训,但是培训机构的选择就让我很纠结.所以索性就自己学习了. ...

  3. MySQL学习基础

    MySQL是被Sun公司收购了,所以也有热咖啡图标,不过MySQL的作者后来又做了一个MariaDB,小海豚图标,也很好用. MySQL学习: <MySQL网络数据库设计与开发>(电子工业 ...

  4. CSS级联样式表-css选择器

    CSS概念 Cascading Style sheet 级联样式表 表现HTMl或XHTML文件样式的计算机语言 包括对字体,颜色,边距,高度,宽度,背景图片,网页定位等设定 建议:把表示样式的代码从 ...

  5. 如何把连接字符串放到App.cfg配置文件中

    首先主Windows程序要添加一个[应用程序配置文件]会在项目中生成一个App.config文件. 在项目中也引用System.Configuration这个引用 当前文档中没有源. 在后台数据类库中 ...

  6. 三、hbase JavaAPI

    hbase是Java编写的,当然也提供了Java的API来操作hbase. 如果你是使用虚拟机来安装配置hbase那么你需要配置一下hostname,不然JavaAPI访问虚拟机的时候会无法连接,请参 ...

  7. 一、cent OS安装配置JDK

    到oracle官网下载JDKhttp://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html 在cent OS ...

  8. 您必须先调用“WebSecurity.InitializeDatabaseConnection”方法,然后再调用"WebSecurity"类的任何其他方法。

    今天调试程序的时候出现了这个是,可惜没截图! 您必须先调用“WebSecurity.InitializeDatabaseConnection”方法,然后再调用"WebSecurity&quo ...

  9. Spring扩展:Spring框架的由来

    一.Spring框架的由来

  10. CenOs7安装oracle图文详细过程(02)

    原创作品,转载请在文章头部(显眼位置)注明出处:https://www.cnblogs.com/sunshine5683/p/10011574.html 8.修改用户限制 vim /etc/secur ...