广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Pysvn使用指南
  • 539
分享到

Pysvn使用指南

Pysvn使用 2023-02-20 21:02:28 539人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

这是一篇关于pysvn模块的指南. 完整和详细的api请参考 Http://pysvn.tigris.org/docs/pysvn_prog_ref.html pysvn是操作Sub

这是一篇关于pysvn模块的指南.

完整和详细的api请参考 Http://pysvn.tigris.org/docs/pysvn_prog_ref.html

pysvn是操作Subversion版本控制的python接口模块. 这个API接口可以管理一个工作副本, 查询档案库, 和同步两个.

该API不能创建新的仓库; 只能作用在现有仓库上. 如果你需要创建一个仓库, 请使用Subversion的svnadmin命令.

使用这个API, 你可以check out一份工作拷贝, 添加, 编辑, 和删除工作文件, 和check in, 比较, 或者放弃更改. 仓库属性, 如关键字扩展, 行字符结束, 或者忽略的列表也可以检查和控制.

Subversion 模型

Subversion是一个更新-编辑-提交的模型. 首先在本地建立一个工作副本. 在工作副本上进行修改, 最后提交到中央仓库 (可以是本地或者远程).

这个模型允许多人偶尔会同时修改同一个文件. 大多情况下. Subversion不会干预合并这些不同修改, 如果一个提交失败, 用户或者应用则要重新检查和修改然后再次提交.

常见任务

本节给出一些使用pysvn接口的常用例子. 业务可以会递归的处理目录. 添加参数recurse=False以防止这种行为; 例如, 你可以需要添加内容没有增加一个目录.

check out一份工作副本

import pysvn
client = pysvn.Client()
#check out the current version of the pysvn project
client.checkout('http://localhost/example/trunk',
    './examples/pysvn')
#check out revision 11 of the pysvn project
client.checkout('http://localhost/example/trunk',
   './examples/pysvn-11',
   revision=pysvn.Revision(pysvn.opt_revision_kind.number, 11))

这是一个建立example测试项目的例子,目录是examples/pysvn. 这个项目是用在剩下的例子.

添加一个文件或者目录到仓库

import pysvn
# write a file foo.txt
f = file('./examples/pysvn/foo.txt', 'w')
f.write('Sample versioned file via pithon\n')
f.close()
client = pysvn.Client()
#schedule the addition;
#  the working copy will now track the file as a scheduled change
client.add('./examples/pysvn/foo.txt')
#committing the change actually adds the file to the repository
client.checkin(['./examples/pysvn/foo.txt'], 'Adding a sample file')

这个例子是在工作副本中创建了'foo.txt'文件, 然后添加到仓库. 请注意Client.import_()命令会同时增加和提交. 大多数应用, 会在许多修改后再提交.

更新工作副本

import pysvn
client = pysvn.Client()
client.update('./examples/pysvn')

从仓库中更新其他用户修改并保存到本地副本. 大多数应用应该经常这样做以防止冲突.

提交更新到仓库

import pysvn
# edit the file foo.txt
f = open('./examples/pysvn/foo.txt', 'w')
f.write('Sample versioned file via Python\n')
f.close()
# checkin the change with a log message
client = pysvn.Client()
client.checkin(['./examples/pysvn'], 'Corrected spelling of python in foo.txt')

提交到Subversion是原子的. 要么所有修改都成功提交, 要么提交失败. 大部分应用会提交工作副本所有修改, 如本例所示, 或者通过个别文件或者目录, 但必须是同一单位.

放弃工作副本修改

import pysvn
# edit the file foo.txt
f = file('./examples/pysvn/foo.txt', 'w')
f.write('This change will never be seen\n')
f.close()
#discard the edits
client = pysvn.Client()
client.revert('./examples/pysvn/foo.txt')

这丢弃在工作拷贝和恢复的文件或目录的任何未提交的未经编辑的状态变化.

正在计划增加或移除留无版本或恢复到工作拷贝.

重命名或者移动文件

import pysvn
client = pysvn.Client()
#rename the file client side
client.move('./examples/pysvn/foo.txt', './examples/pysvn/foo2.txt')
#checkin the change removes the file from the repository
client.checkin(['./examples/pysvn/foo.txt', './examples/pysvn/foo2.txt'], 'Foo has become Foo2')

移动或重命名文件删除旧路径或名称的文件, 并增加了在新的位置, 同时保留以前的版本有关的信息.

在这个例子里, 我们通过文件名Client.checkin()传递父目录也将是有效的.

转移和合并可以在服务器端单步完成; 可以参见仓库任务的那节例子.

从仓库中删除文件或目录

import pysvn
client = pysvn.Client()
#schedule the removal;
#  the file will be removed from the working copy
client.remove('./examples/pysvn/foo2.txt')
#committing the change removes the file from the repository
client.checkin(['./examples/pysvn/foo2.txt'], 'Removing sample file')

有些人把删除的文件, 或是用完全清除存储库目录. 该文件仍然存在于以前的版本, 可以通过检查或以其他方式进行审查以前修订的内容检索.

确定等待变动

import pysvn
client = pysvn.Client()
changes = client.status('./examples/pysvn')
print 'files to be added:'
print [f.path for f in changes if f.text_status == pysvn.wc_status_kind.added]
print 'files to be removed:'
print [f.path for f in changes if f.text_status == pysvn.wc_status_kind.deleted]
print 'files that have changed:'
print [f.path for f in changes if f.text_status == pysvn.wc_status_kind.modified]
print 'files with merge conflicts:'
print [f.path for f in changes if f.text_status == pysvn.wc_status_kind.conflicted]
print 'unversioned files:'
print [f.path for f in changes if f.text_status == pysvn.wc_status_kind.unversioned]

生成差异或补丁

import pysvn
client = pysvn.Client()
diff_text = client.diff('./tmp-file-prefix-', '.')

获取仓库URL

import pysvn
client = pysvn.Client()
entry = client.info('.')
print 'Url:',entry.url

仓库任务

本节说明任务的例子, 操纵或检查仓库.虽然共同任务, 通过本地工作副本时间的变化, 这些任务直接影响到库
获取仓库目录的清单

import pysvn
client = pysvn.Client()
entry_list = client.ls('.')

从仓库获取文件内容

import pysvn
client = pysvn.Client()
file_content = client.cat('file.txt')

创建一个标记或分支

import pysvn
client = pysvn.Client()
log_message = "reason for change"
def get_log_message():
    return True, log_message
client.callback_get_log_message = get_log_message
client.copy('http://svnrepo.com/svn/trunk', 'http://svnrepo.com/svn/tag/%s' % tag_name )

从仓库中转移或者重命名

import pysvn
client = pysvn.Client()
client.move( 'file_old.txt', 'file_new.txt' )

定文件

import pysvn
client = pysvn.Client()
client.lock( 'file.txt', 'reason for locking' )

锁定文件并锁定其他用户或者工作副本

import pysvn
client = pysvn.Client()
client.lock( 'file.txt', 'reason for locking', force=True )

解锁

import pysvn
client = pysvn.Client()
client.unlock( 'file.txt' )

解锁文件并锁定其他用户或工作副本

import pysvn
client = pysvn.Client()
client.unlock( 'file.txt', force=True )

测试锁定文件

Method 1:

all_entries = self.client.info2( path, recurse=False )
for path, info in all_entries:
    if info['lock']:
        if info['lock']['token'] != '':
            print '%s is locked' % path
        print info['lock']['comment']

Method 2:

all_status = self.client.status( path, recurse=False, update=True )
for status in all_status:
    if status.entry is not None:
        if status.entry.lock_token is not None:
            print '%s is locked' % status.path

到此这篇关于Pysvn 使用指南的文章就介绍到这了,更多相关Pysvn 使用内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Pysvn使用指南

本文链接: https://www.lsjlt.com/news/196760.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Pysvn使用指南
    这是一篇关于pysvn模块的指南. 完整和详细的API请参考 http://pysvn.tigris.org/docs/pysvn_prog_ref.html pysvn是操作Sub...
    99+
    2023-02-20
    Pysvn 使用
  • Pysvn如何使用
    这篇文章主要讲解了“Pysvn如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Pysvn如何使用”吧!pysvn是操作Subversion版本控制的Python接口模块. 这个API接...
    99+
    2023-07-05
  • FlexBuilder3使用指南
    FlexBuilder3是一款用于构建Flex应用程序的集成开发环境(IDE),以下是一份FlexBuilder3的使用指南:1. ...
    99+
    2023-09-05
    FlexBuilder3
  • postgresql 使用指南
    centos系列安装分为:yum安装源码安装一、yum安装按照官方的安装文档进行。安装postgresql官方yum仓库yum install https://download.postgresq...
    99+
    2022-10-18
  • MySQL kill指令使用指南
    KILL [CONNECTION | QUERY] processlist_id 在Mysql中每个连接都是单独线程运行,可以使用语句 KILL processlist_id statement.来终止语句执...
    99+
    2022-05-19
    MySQL kill指令 MySQL kill
  • cxGrid 使用指南 3
    现在特将收集的一些文章与大家分享,也希望大家不要重蹈我的覆辙.    http://www.delphibbs.com/keylife/iblog_show.aspxid=19911大富翁论坛-富翁笔记-cxgrid (数据库控件)控件...
    99+
    2023-01-31
    使用指南 cxGrid
  • redis使用指南(一)
    redis使用指南一、Redis简介 redis展开来看就是remote directory server。redis是开源的,基于内存的数据结构存储,可以作为数据库,缓存系统或者消息队列。它支持...
    99+
    2022-10-18
  • Vue3<scriptsetuplang=“ts“>使用指南
    本文主要是讲解 <script setup> 与 TypeScript 的基本使用。 <script setup>&n...
    99+
    2022-12-08
    Vue3 <script setup lang=“ts“> Vue3 <script setup>
  • Nokia Booklet 3G使用指南
    在购买联通3G上网卡套餐之前,为了避免买来的usim卡不能使用,我特地先去nokia的booklet支持网站查了查帖子。结果发现有个捷克的兄弟从美国的Bestbuy买了机器,却不能用他的3G sim卡上网,因为3G modem被锁定了,只能...
    99+
    2023-01-31
    使用指南 Nokia Booklet
  • Android中viewPager使用指南
    viewPager是谷歌官方提供的一种方便实现页面滑动效果的控件,可以直接使用也可以和fragment联合使用。这里只简单说下直接使用。  使用viewPager的步...
    99+
    2022-06-06
    viewpager Android
  • Spring WebFlux的使用指南
    目录Spring-WebFlux框架 依赖项 响应式应用 响应式RestController 单一资源 集合资源 反应式Web客户端 检索单个资源 检索集合资源 Spring Web...
    99+
    2022-11-12
  • Mac上使用Git指南
    Mac上使用Git的教程 一、安装Git二、创建Git仓库三、配置Git四、提交代码五、分支管理六、远程仓库七、克隆仓库八、撤销更改 本指南介绍了如何在Mac上使用Git。包括安装Git、创建Git仓库、配置Git、提交代...
    99+
    2023-08-16
    git macos github
  • Flutter LinearProgressIndicator使用指南分析
    Flutter中的LinearProgressIndicator是一个线性进度指示器,可以用于显示当前操作的进度。使用LinearP...
    99+
    2023-08-14
    Flutter
  • DeepSpeed使用指南(简略版)
    现在的模型越来越大,动辄几B甚至几百B。但是显卡显存大小根本无法支撑训练推理。例如,一块RTX2090的10G显存,光把模型加载上去,就会OOM,更别提后面的训练优化。 作为传统pytorch Dat...
    99+
    2023-09-10
    深度学习 python 人工智能 pytorch
  • mysql+nosql安装使用指南
    下面讲讲关于mysql+nosql安装使用指南,文字的奥妙在于贴近主题相关。所以,闲话就不谈了,我们直接看下文吧,相信看完mysql+nosql安装使用指南这篇文章你一定会有所受益。1.安装gcc*2.安装...
    99+
    2022-10-18
  • 使用VS开发 Node.js指南
    NTVS(Node.jsToolsforVisualStudio)是一款 可以运行在VS2012、VS2013上的一个IDE工具。 使用这个插件对于我们传统.net的开发人员学习node.js无疑是一大福音...
    99+
    2022-06-04
    指南 Node js
  • Flutter LinearProgressIndicator使用指南分析
    目录正文创建基本的进度条设置进度条的外观自定义进度条的外观总结正文 LinearProgressIndicator 是 Flutter 中用于创建线性进度指示器的 widget。它...
    99+
    2023-03-20
    Flutter LinearProgressIndicator Flutter LinearProgressIndicator使用
  • Android关于BottomNavigationView使用指南
    目录前言一、初识BottomNavigationView二、BottomNavigationView中的颜色关键实现代码解析(举例)三、开始解决问题1.如何修改图标颜色2.如何使图标...
    99+
    2022-11-12
  • Java Swagger技术使用指南
    目录Swagger的作用与概念在项目中使用swagger配置swaggerApiInfo 配置swagger配置扫描接口配置api文档分组多个分组实体类配置Swagger的作用与概念...
    99+
    2022-11-12
  • JPA 之 Hibernate EntityManager 使用指南
    Hibernate EntityManager 专题 参考: JPA – EntityManager常用API详解EntityManager基本概念 基本概念及获得 EntityManager 对象 基本概念 在使用持久化工具的时候,一般都...
    99+
    2023-08-16
    hibernate java entityManager jpa
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作