在对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. Delphi下OpenGL2d绘图(05)-画图片Bmp

    一.前言 找了不少资料,要画图片要先处理一下,需要引用别的单元,Delphi中没带,需要另外下载Gl.pas.看网上说是自带的OpenGl单元封装的是1.0版的,有此函数未声明.网上可以找到Gl.pa ...

  2. java 基础 --- volatile

    问题  : volatile 解决的是什么问题 有什么应用场景 概述 某些共享变量的时候我们使用volatile 修饰,它会保证修改的值立即被更新到主存,或是从主存中获取最新的值.它的底层是如何实现的 ...

  3. 基于Spark GraphX计算二度关系

    关系计算问题描述 二度关系是指用户与用户通过关注者为桥梁发现到的关注者之间的关系.目前微博通过二度关系实现了潜在用户的推荐.用户的一度关系包含了关注.好友两种类型,二度关系则得到关注的关注.关注的好友 ...

  4. java 自定义异常处理

    package com.direct.work; import java.io.FileNotFoundException; import java.io.IOException; import ja ...

  5. UOJ#347. 【WC2018】通道(边分治)

    传送门 就是求两个点 \(a,b\) 使得 \(dis_1(a,b)+dis_2(a,b)+dis_3(a,b)\) 最大 step1 对第一棵树边分治 那么变成 \(d_1(a)+d_1(b)+di ...

  6. Maven学习总结(六):pom.xml文件的说明

    什么是POM? POM是项目对象模型(Project Object Model)的简称,它是Maven项目中的文件,使用XML表示,名称叫做pom.xml.作用类似ant的build.xml文件,功能 ...

  7. Bootstrap Modal多个弹出层顺序

    Bootstrap Modal多个弹出层顺序与div的顺序关联.后来者居上:即div靠后的modal层弹出的时候会在上层. 比如上图所示,模态框2弹出的时候会在模态框1上面.

  8. IE、火狐、谷歌浏览器下兼容统一select样式

    项目开发时,对于不同浏览器下的select样式不统一问题,各种查,这里记录一下,项目已使用 IE浏览器下样式: 火狐浏览器下样式: 谷歌浏览器下样式: 上代码: 1.html 2.css 至此,大功告 ...

  9. js 数组转json,json转数组

    //数组转json串var arr = [1,2,3, { a : 1 } ];JSON.stringify( arr ); //json字符串转数组var jsonStr = '[1,2,3,{&q ...

  10. 如何在Ubuntu上安装gcc-6.3

    装显卡驱动推荐 gcc 6.3 版本,其实linux上多个版本的gcc是可以共存的,需要的的时候切换就好,参加之前的博客 https://www.cnblogs.com/jins-note/p/951 ...