返回顶部
首页 > 资讯 > 精选 >Pysvn如何使用
  • 439
分享到

Pysvn如何使用

2023-07-05 04:07:07 439人浏览 安东尼
摘要

这篇文章主要讲解了“Pysvn如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Pysvn如何使用”吧!pysvn是操作Subversion版本控制的python接口模块. 这个api接

这篇文章主要讲解了“Pysvn如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Pysvn如何使用”吧!

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

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

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

Subversion 模型

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

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

常见任务

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

check out一份工作副本

import pysvnclient = pysvn.Client()#check out the current version of the pysvn projectclient.checkout('Http://localhost/example/trunk',    './examples/pysvn')#check out revision 11 of the pysvn projectclient.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.txtf = 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 changeclient.add('./examples/pysvn/foo.txt')#committing the change actually adds the file to the repositoryclient.checkin(['./examples/pysvn/foo.txt'], 'Adding a sample file')

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

更新工作副本

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

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

提交更新到仓库

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

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

放弃工作副本修改

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

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

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

重命名或者移动文件

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

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

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

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

从仓库中删除文件或目录

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

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

确定等待变动

import pysvnclient = 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 pysvnclient = pysvn.Client()diff_text = client.diff('./tmp-file-prefix-', '.')

获取仓库URL

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

仓库任务

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

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

从仓库获取文件内容

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

创建一个标记或分支

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

从仓库中转移或者重命名

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

定文件

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

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

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

解锁

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

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

import pysvnclient = 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://lsjlt.com/news/349375.html(转载时请注明来源链接)

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

猜你喜欢
  • Pysvn如何使用
    这篇文章主要讲解了“Pysvn如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Pysvn如何使用”吧!pysvn是操作Subversion版本控制的Python接口模块. 这个API接...
    99+
    2023-07-05
  • Pysvn使用指南
    这是一篇关于pysvn模块的指南. 完整和详细的API请参考 http://pysvn.tigris.org/docs/pysvn_prog_ref.html pysvn是操作Sub...
    99+
    2023-02-20
    Pysvn 使用
  • python在windows调用svn-pysvn的实现
     作为EBS开发人员,开发工具用的多,部署代码类型多,管理程序麻烦,操作繁琐,一直是我最讨厌的事情。部署一次程序要使用好几个工具,改来改去,上传下载,实在难受。 扣了一下p...
    99+
    2023-02-20
    python调用svn-pysvn python svn-pysvn
  • python在windows中调用svn-pysvn怎么实现
    这篇文章主要讲解了“python在windows中调用svn-pysvn怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python在windows中调用svn-pysvn怎么实现”吧...
    99+
    2023-07-05
  • 如何使用redis
    这期内容当中小编将会给大家带来有关如何使用redis ,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。安装redis后,在命令行输入“redis-cli"会车输入...
    99+
    2024-04-02
  • patchnavicat如何使用
    小编给大家分享一下patchnavicat如何使用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1、把patchNavicat....
    99+
    2024-04-02
  • phpmyadmin如何使用
    这篇文章给大家分享的是有关phpmyadmin如何使用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。创建数据库在 phpMyAdmin 的主界面中,可以看见有 “语言-langu...
    99+
    2024-04-02
  • 如何使用navicat
    小编给大家分享一下如何使用navicat,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!Navicat注册和激活的过程就是Navicat安装的过程,激活过程也比较简便,只要输入Navicat...
    99+
    2024-04-02
  • 如何使用ORM
    本篇内容介绍了“如何使用ORM”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!ObjectvieSQL简介O...
    99+
    2024-04-02
  • autotrace如何使用
    这篇文章给大家分享的是有关autotrace如何使用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。autotrace定义:autotrace是一个可以自动获取SQL执行计划和相关...
    99+
    2024-04-02
  • SqlLoader如何使用
    这篇文章将为大家详细讲解有关SqlLoader如何使用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。SQL*Loader(SQLLDR)是Oracle的高速批量数据加载工...
    99+
    2024-04-02
  • navicat如何使用
    这篇文章将为大家详细讲解有关navicat如何使用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Navicat可以支持连接多种数据库,使用上的功能也比较强大。如果使用了I...
    99+
    2024-04-02
  • 如何使用DataGrip
    小编给大家分享一下如何使用DataGrip,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!DataGrip是什么DataGrip是...
    99+
    2024-04-02
  • navicat12如何使用
    这篇文章主要介绍navicat12如何使用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Navicat 12 具备多项改进和新功能,能满足你对数据库开发的需求。过百种增强的功能和耳目...
    99+
    2024-04-02
  • 如何使用CassandraUnit
    这篇文章主要为大家展示了“如何使用CassandraUnit”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用CassandraUnit”这篇文章吧。  C...
    99+
    2024-04-02
  • Hibernate如何使用
    这篇文章主要介绍Hibernate如何使用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!  hibernate的来源  数据在各个层次之间流转,在流转过程中会发生数据类型转换等一系列...
    99+
    2024-04-02
  • 如何使用NPM
    这篇文章主要为大家展示了“如何使用NPM”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用NPM”这篇文章吧。1. 初始化包我们可以运行 npm init命...
    99+
    2024-04-02
  • serialize()如何使用
    这篇文章主要讲解了“serialize()如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“serialize()如何使用”吧!   .seriali...
    99+
    2024-04-02
  • div如何使用
    本篇内容主要讲解“div如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“div如何使用”吧!<!doctype html> <...
    99+
    2024-04-02
  • callbacks.locked()如何使用
    本文小编为大家详细介绍“callbacks.locked()如何使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“callbacks.locked()如何使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作