使用python 操作liunx的svn,方案二
在对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,方案二的更多相关文章
- 使用python 操作liunx的svn,方案一
在服务器中要做几个操作,使用命令操作svn,svn文件的创建,svn文件更新,并把指定demo路径,移动到创建的文件夹中,进行提交, # -*- coding:utf-8 -*- import pys ...
- Python全栈开发之MySQL(二)------navicate和python操作MySQL
一:Navicate的安装 1.什么是navicate? Navicat是一套快速.可靠并价格相宜的数据库管理工具,专为简化数据库的管理及降低系统管理成本而设.它的设计符合数据库管理员.开发人员及中小 ...
- redis学习 (key)键,Python操作redis 键 (二)
# -*- coding: utf-8 -*- import redis #这个redis 连接不能用,请根据自己的需要修改 r =redis.Redis(host=") 1. delete ...
- python + docker, 实现天气数据 从FTP获取以及持久化(二)-- python操作MySQL数据库
前言 在这一节中,我们主要介绍如何使用python操作MySQL数据库. 准备 MySQL数据库使用的是上一节中的docker容器 “test-mysql”. Python 操作 MySQL 我们使用 ...
- MongoDB的安装与python操作MongoDB
一.安装MongoDB 因为我个人使用的是windows,就只记录下windows下的安装 1.下载安装 就是官网,下载msi,选个路径安装 2.配置 看见别的地方说需要手动在bin同级目录创建dat ...
- es的查询、排序查询、分页查询、布尔查询、查询结果过滤、高亮查询、聚合函数、python操作es
今日内容概要 es的查询 Elasticsearch之排序查询 Elasticsearch之分页查询 Elasticsearch之布尔查询 Elasticsearch之查询结果过滤 Elasticse ...
- 五、Python操作redis
五.Python操作redis 一.python对redis基本操作 (1)连接redis # 方式1 import redis r = redis.Redis(host='127.0.0.1', p ...
- Python(九) Python 操作 MySQL 之 pysql 与 SQLAchemy
本文针对 Python 操作 MySQL 主要使用的两种方式讲解: 原生模块 pymsql ORM框架 SQLAchemy 本章内容: pymsql 执行 sql 增\删\改\查 语句 pymsql ...
- Python 【第六章】:Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy
Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度 ...
随机推荐
- IOS TableView实现省市联动
之前用UIPickerView实现了省市联动,上个月网友让用UITableView给他实现了下.今天也把这些贴出来. // // ViewController.m // doubleTable // ...
- yii 页面加载完成后弹出模态框
<?php $js = <<<JS $('#page-modal').modal('show');//页面加载完显示模态框 $('.modal-dialog').css('wi ...
- 用INFORMATION_SCHEMA逻辑MySQL的索引
分库分表的场景下,变更目前还不知道有哪个表变更索引失败,是不是所有的表都变更成功了,所以可以从INFORMATION_SCHEMA通过罗列索引个数,或者查看索引行,就可以知道是不是所有的都变更成功了: ...
- XAMPP环境的搭建
XAMPP是一个强大的集成软件包(什么是集成软件包?就是多个软件打包一起安装了,比如office办公软件包括了word.Excel.PPT) XAMPP包括了Apache,MySQL,PHP,Perl ...
- 如鹏网学习笔记(九)JavaScript
JavaScript笔记 一.JavaScript简介 1,JavaScript是一种计算机编程语言,可以像等其他编程语言那样定义变量,执行循环等. 2,JavaScript代码主要执行在浏览器上,为 ...
- Cheatsheet: 2017 07.01 ~ 07.31
Other 8 Key Application Performance Metrics & How to Measure Them The Code Review: The Most Impo ...
- sql = 和<>遵循的sql-92标准的设置SET ANSI_NULLS ON
说明 SQL-92 标准要求在对空值进行等于 (=) 或不等于 (<>) 比较时取值为 FALSE. 当 SET ANSI_NULLS 为 ON 时,即使 column_name 中包含空 ...
- K:二叉查找树(BST)
相关介绍: 二叉查找树(英语:Binary Search Tree),也称二叉搜索树.有序二叉树(英语:ordered binary tree),排序二叉树(英语:sorted binary tre ...
- js中的同步与异步的问题
前言 近来,总是忙于拿js写一些案例,因为是小白,并没有什么丰富的经验,对各个知识点把握也不是很全面,写起来真的是...一言难尽,太痛苦了= =.尤其是在写一些轮播的时候,里面需要用到定时器,而一旦用 ...
- css权威指南读书笔记-第10章浮动和定位
这一章看了之后真是豁然开朗,之前虽然写了圣杯布局和双飞翼布局,有些地方也是模糊的,现在打算总结之后再写一遍. 以下都是从<css权威指南>中摘抄的我认为很有用的说明. 浮动元素 一个元素浮 ...