centos 6.5,svn 1.6.11,pysvn 1.7.6,文章内容来自官网文档:http://pysvn.tigris.org/docs/pysvn_prog_guide.html

直接用yum安装即可

yum install pysvn -y

创建一个client

import pysvn
def get_login(realm, username, may_save):
retcode = True #True,如果需要验证;否则用False
username = 'myuser' #用户名
password = 'mypwd' #密码
save = False #True,如果想之后都不用验证;否则用False
return retcode, username, password, save
client = pysvn.Client()
client.callback_get_login = get_login

用这个client进行下面的各种操作

svnurl = 'svn://......'    #svn的路径
outpath = './test' #检出到的目标路径
client.checkout(svnurl, outpath) #检出最新版本
rv = pysvn.Revision(pysvn.opt_revision_kind.number, 1111))
client.checkout(svnurl, outpath, revision=rv) #检出指定版本
#Revision类型可以通过rv.number获取对应的数字
entry = client.info('./test')
print entry.url #拷贝对应的svn url
print entry.commit_revision #最新提交的revision
print entry.commit_author #最新提交的用户
import time
t = time.localtime(entry.commit_time) #最新提交的时间
print time.strftime('%Y-%m-%d %H:%M:%S', t)
entries_list = client.ls('./other')
for en in entries_list:
print en.name,en.size,en.time,en.last_author #文件属性
print en.created_rev #文件的revision
print en.kind #文件类型,file,dir,none,unknown 可以通过str(kind)=='file'判断
client.update('./test')    #更新
changes = client.status('./test')  #检测状态,获取各种新增、删除、修改、冲突、未版本化的状态
for f in changes:
if f.text_status == pysvn.wc_status_kind.added:
print f.path,'A'
elif f.text_status == pysvn.wc_status_kind.deleted:
print f.path,'D'
elif f.text_status == pysvn.wc_status_kind.modified:
print f.path,'M'
elif f.text_status == pysvn.wc_status_kind.conflicted:
print f.path,'C'
elif f.text_status == pysvn.wc_status_kind.unversioned:
print f.path,'U'
tmppath = '/tmp'    #对比需要使用临时文件,这个是临时文件的位置,会自动清除
print client.diff(tmppath, './svntest') #效果与svn diff一致
client.add('./svntest/add.txt')    #添加一个文件到版本控制
client.revert('./svntest/modify.txt') #还原文件的修改
client.move('./svntest/move1.txt', './svntest/move2.txt') #重命名或移动
client.remove('./svntest/delete.txt') #删除文件或目录
client.mkdir('./svntest/testdir', '提交message') #新建一个文件夹,提交message这里没用,当第一个参数是svnurl时直接提交才有用

client.checkin(['./svntest/delete.txt'], '提交message')    #提交一个或多个修改
entries_list = client.log('./other', discover_changed_paths=True)
for en in entries_list:
print en.author,en.date,en.message,en.revision #版本信息
for e in en.changed_paths:
print '\t',e.path,e.action #版本具体修改的信息

over

pysvn安装及常用方法的更多相关文章

  1. Python之——python-nmap的安装与常用方法说明

    一.python-nmap安装 # yum -y install nmap #安装nmap工具# 模块pip方式安装# pip install nmap# 模块源码安装# wget http://xa ...

  2. Linux上安装Nginx及常用命令

    一.Linux安装软件常用方法 1.rpm(或pkg)安装,类似于Windows安装程序,是预编译好的程序. 1)使用的是通用参数编译,配置参数不是最佳 2)可控制性不强,比如对程序特定组件的定制性安 ...

  3. python常用模块(模块和包的解释,time模块,sys模块,random模块,os模块,json和pickle序列化模块)

    1.1模块 什么是模块: 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文 ...

  4. python---filecmp

    ilecmp可以实现文件,目录,遍历子目录的差异对比功能. 自带filecmp模块,无需安装. 常用方法说明 filecmp提供3个操作方法,cmp(单文件对比),cmpfile(多文件对比),dir ...

  5. 洗礼灵魂,修炼python(65)--爬虫篇—BeautifulSoup:“忘掉正则表达式吧,我拉车养你”

    前面解析了正则表达式,其实内容还挺多的对吧?确实挺适用的,不仅是python,其他语言或者web前端后端基本都要掌握正则表达式知识,但是你说,这么多,要完全的掌握,灵活运用的话,得搞多久啊?并且如果一 ...

  6. Android数据存储:SDCard

    Android数据存储之SDCard 0.获取sd卡路径. 1.讲述 Environment 类. 2.讲述 StatFs 类. 3.完整例子读取 SDCard 内存 0.获取sd卡路径 方法一: p ...

  7. Linux----常用操作

    ------------------------------------------------------------------------Linux常用操作------------------- ...

  8. android 获取sd卡根目录

    dir:/storage/emulated/0 也就是 sdcard目录 ====== android 获取sd卡根目录 public String getSDPath(){        File ...

  9. Android获取SD卡路径及SDCard内存的方法

    这篇文章主要介绍了Android获取SD卡路径及SDCard内存的方法,较为详细的分析了Android针对SD卡操作所涉及的类及其具体函数功能,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了A ...

随机推荐

  1. leetcode 383. Ransom Note

    
Given
 an 
arbitrary
 ransom
 note
 string 
and 
another 
string 
containing 
letters from
 all 
th ...

  2. Oracle之ORDER BY

    ------------基本查询--1.查询出的是一张虚拟的结果表-----基本语法---- * 所有列(字段)select * from emps; -----查询指定字段select employ ...

  3. C++ 中的sort排序用法

    STL中就自带了排序函数sortsort 对给定区间所有元素进行排序 要使用此函数只需用#include <algorithm> sort即可使用,语法描述为:sort(begin,end ...

  4. jquery选择器和基本语句

    $("#aa"); //根据ID找 $(".aa"); //根据class找 $("div"); //根据标签名找 $("[id= ...

  5. js判断手指滑动方向(移动端)

    var startx, starty; //获得角度 function getAngle(angx, angy) { return Math.atan2(angy, angx) * 180 / Mat ...

  6. [原创] [YCM] YouCompleteMe安装完全指南

    因为实在实在受不鸟ctags了: 代码中有很多类具有相同名字的变量, 比如 "id". 当我想看下当前的这个 "id" 到底是哪个id的时候, 可怕的事情粗线了 ...

  7. zip命令的常用选项

    zip命令的常用选项 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 大家都知道,在linux上一切皆文件,在实际生产环境中,如果我们需要部署一些系统的服务,我们会将一些软件包提前下 ...

  8. JSP中动态INCLUDE与静态INCLUDE的区别

    动态INCLUDE 用法: <jsp:include page="included.jsp" flush="true" /> 说明: 它总是会检查所 ...

  9. UWP toast

    Windows10的自适应和交互式toast通知是一个新特性.它可以让你: 创建灵活的toast通知,包括内嵌图片及更多的内容,不在局限于之前Windows 8.1和Windows Phone 8.1 ...

  10. 【QUESTION】

    1. HTTP和HTTPS的区别? 2. Soap协议的理解? 3. 一个成功项目,从代码层分析存在可能的问题? 4. mysql 容载技术有哪些? 5. mysql的性能优化有哪些心得? ----- ...