Ubuntu——SVN 的命令使用指南

Python-SVN自动化脚本(二):add,commit,changelist,export,mkdir 通过python执行svn add,commit,changelist,export,mkdir命令 阅读详情

Svn简介:

Svn的全名是Subversion,它使用服务端—客户端的结构,当然服务端与客户端可以都运行在同一台服务器上。在服务端是存放着所有受控制数据的Subversion仓库,另一端是Subversion的客户端程序,管理着受控数据的一部分在本地的映射(称为工作副本)。在这两端之间,是通过各种仓库存取层(RepositoryAccess,简称RA)的多条通道进行访问的。这些通道中,可以通过不同的网络协议,例如HTTP、SSH等,或本地文件的方式来对仓库进行操作。


Subversion是一种开放源码的全新版本控制系统,支持可在本地访问或通过网络访问的数据库和文件系统存储库。不但提供了常见的比较、修补、标记、提交、回复和分支功能性,Subversion还增加了追踪移动和删除的能力。此外,它支持非ASCII文本和二进制数据,所有这一切都使Subversion不仅对传统的编程任务非常有用,同时也适于Web开发、图书创作和其他在传统方式下未采纳版本控制功能的领域.


Subversion的官方网站是:http://subversion.tigris.org/


大部分的发行版都已经提供Subversion套件,ubuntu下安装subversion客户端:

sudo apt-get installsubversion


使用Subversion

  Subversion一般使用两种后台服务模式:一种是其自己实现的svnserve,可以通过svn协议访问,另一种是借助mod_dav_svn模块,由Apachehttp服务器来实现,然后通过HTTP或HTTPS协议来访问。

1、通过svn协议访问

  svn协议

  客户端若要通过svn协议访问仓库,必须在存放仓库的机器上运行svnserve服务程序。启动该程序后,会监听在3690端口,以响应客户端的访问工作。


2、通过HTTP协议访问版本库

  通过HTTP协议访问版本库是Subversion的亮点之一,这种方式具备许多svnserve服务器所没有的特性,使用上更加灵活。


以下是svn常用的一些命令,详细请看http://www.subversion.org.cn/svnbook/1.1/index.html


  1. 将文件checkout到本地目录

命令:checkout或co

示例:

I、svn co http://路径(目录或文件的全路径) [本地目录全路径] --username 用户名--password密码

II、svn co svn://路径(目录或文件的全路径) [本地目录全路径] --username 用户名--password密码

III、svn checkout http://路径(目录或文件的全路径) [本地目录全路径] --username 用户名

IV、svn checkout svn://路径(目录或文件的全路径) [本地目录全路径] --username 用户名


注意事项:

1、如果不带--password参数传输密码的话,会提示输入密码,建议不要用明文的--password选项。推荐使用示例c、d,其执行之后会提示输入密码

2、其中username与password前是两个短线,不是一个。

3、若不指定本地目录全路径,则检出到当前目录下。


例子:

svn cosvn://192.168.0.6/test /home/test --username xxx

svn cohttp://192.168.0.6/test/testapp --username xxx

svn checkoutsvn://192.168.0.6/ test /home/ test --username xxx

svn checkouthttp://192.168.0.3/test/testapp --username xxx


2、添加新文件

命令:svn add

svn add 文件名

注:告诉SVN服务器要添加文件了,还要用svncommint -m真实的上传上去!

例子:

I、svnadd test.c<-添加test.c

svn commint -m “添加测试用test.c“test.php


II、svnadd *.c<-添加当前目录下所有的c文件

svn commint -m“添加测试用全部c文件“*.c


3、导出(导出一个干净的不带.svn文件夹的目录)

命令:svn export

svn export [-r 版本号] http://路径(目录或文件的全路径)[本地目录全路径] --username 用户名

svn export [-r 版本号] svn://路径(目录或文件的全路径)[本地目录全路径] --username 用户名

svn export 本地检出的(即带有.svn文件夹的)目录全路径要导出的本地目录全路径


注:第一种从版本库导出干净工作目录树的形式是指定URL,

   如果指定了修订版本号,会导出相应的版本,

   如果没有指定修订版本,则会导出最新的,导出到指定位置。

   如果省略本地目录全路径,URL的最后一部分会作为本地目录的名字。

  

第二种形式是指定本地检出的目录全路径到要导出的本地目录全路径,所有的本地修改将会保留,但是不在版本控制下(即没提交的新文件,因为.svn文件夹里没有与之相关的信息记录)的文件不会拷贝。

例子:

svn exportsvn://192.168.0.3/ test /home/ test --username xxx

svn exporthttp://192.168.0.3/test/testapp --username xxx

svn export /home/ test/home/ testbak


4、将改动的文件提交到版本库

命令:svn commint或svn ci


svn commint -m “提交备注信息文本“ [-N] [--no-unlock] 文件名

svn ci -m “提交备注信息文本“ [-N] [--no-unlock] 文件名

svn commit -m"LogMessage" [-N] [--no-unlock]PATH(如果选择了保持锁,就使用–no-unlock开关)


必须带上-m参数,参数可以为空,但是必须写上-m

例子:

svn commint -m“提交当前目录下的全部在版本控制下的文件“*<-注意这个*表示全部文件

svn commint -m“提交测试用test.c“test.c


svn commint -m“提交测试用test.c“-N --no-unlock test.c<-保持锁就用–no-unlock开关


svn ci -m“提交当前目录下的全部在版本控制下的文件“*<-注意这个*表示全部文件


svn ci -m “提交测试用test.c“test.c


svn ci -m “提交测试用test.c“-N --no-unlock test.c<-保持锁就用–no-unlock开关


5、更新文件

命令:svn update或svn up


svn update -r 修正版本 文件名

svn update 文件名


例子:

svn update <-后面没有目录,默认将当前目录以及子目录下的所有文件都更新到最新版本

svn update -r 1300test.c <-将版本库中的文件test.c还原到修正版本(revision)1300

svn update test.c <-更新与版本库同步。


提交的时候提示过期冲突,需要先update修改文件,

然后清除svnresolved,最后再提交commit。


6、删除文件

命令:svn delete或svn del, svnremove,svnrm

svn delete svn://路径(目录或文件的全路径)-m“删除备注信息文本”

推荐如下操作:

svn delete 文件名

svn ci -m “删除备注信息文本”

例子:

svn deletesvn://192.168.1.1/ trunk /main /test.c -m“删除测试文件test.c”


推荐如下操作:

svn delete test.c

svn ci -m“删除测试文件test.c”


svn delete path -m"delete test fle"

例如:svndelete svn://192.168.1.1/ trunk /main/test.c -m "delete testfile"

或者直接svndelete test.c然后再svnci -m‘delete test file‘,推荐使用这种


7、加锁/解锁

命令:svn lock

svn lock -m “加锁备注信息文本“ [--force] 文件名

svn unlock 文件名

svn lock -m"LockMessage" [--force] PATH

例如:svnlock -m "lock test file" test.c

svn unlock PATH


例子:

svn lock -m“锁信测试用test.c文件“test.c

svn unlock test.php


8、比较差异

命令:svn diff

svn diff 文件名

svn diff -r 修正版本号m:修正版本号n 文件名

例子:

svn diff test.php<-将修改的文件与基础版本比较

svn diff -r 200:201test.php<-对修正版本号200和修正版本号201比较差异


svn diffpath(将修改的文件与基础版本比较)

例如:svndiff test.php

svn diff -r m:npath(对版本m和版本n比较差异)

例如:svndiff -r 200:201 test.php

简写:svndi


9、将两个版本之间的差异合并到当前文件

命令:svnmerge

svn merge -r m:n path

例如:svnmerge -r 200:205 test.php(将版本200与205之间的差异合并到当前文件,但是一般都会产生冲突,需要处理一下)


10、查看文件或者目录状态

命令:svnstatus或svnst


svn st 目录路径/名

svn status 目录路径/名<-目录下的文件和子目录的状态,正常状态不显示

             【?:不在svn的控制中;M:内容被修改;C:发生冲突;

              A:预定加入到版本库;K:被锁定】

svn -v 目录路径/名

svn status -v 目录路径/名<-显示文件和子目录状态

              【第一列保持相同,第二列显示工作版本号,

               第三和第四列显示最后一次修改的版本号和修改人】

注:svnstatus、svndiff和svn revert这三条命令在没有网络的情况下也可以执行的,

  原因是svn在本地的.svn中保留了本地版本的原始拷贝。


1)svnstatus path(目录下的文件和子目录的状态,正常状态不显示)

【?:不在svn的控制中;M:内容被修改;C:发生冲突;A:预定加入到版本库;K:被锁定】

2)svnstatus -v path(显示文件和子目录状态)

第一列保持相同,第二列显示工作版本号,第三和第四列显示最后一次修改的版本号和修改人.

注:svnstatus、svndiff和svnrevert这三条命令在没有网络的情况下也可以执行的,原因是svn在本地的.svn中保留了本地版本的原始拷贝.

简写:svnst


11、查看日志

命令:svn log 

svn log 文件名

svn log path

例子:

svn log test.php<-显示这个文件的所有修改记录,及其版本号的变化


12、查看文件详细信息

命令:svn info 

svn info 文件名

svn info path

例子:

svn info test.php


13、SVN帮助

命令:svn help

svn help<-全部功能选项

svn help ci<-具体功能的说明


14、查看版本库下的文件和目录列表

命令:svn list或svn ls

svn list svn://路径(目录或文件的全路径)

svn ls svn://路径(目录或文件的全路径)

例子:

svn listsvn://192.168.0.3/test

svn lssvn://192.168.0.3/test <-显示svn://192.168.0.3/test目录下的所有属于版本库的文件和目录


15、创建纳入版本控制下的新目录

命令:svn mkdir

svn mkdir 目录名

svn mkdir -m "新增目录备注文本" http://目录全路径

创建版本控制的目录.

1、每一个以工作副本PATH指定的目录,都会创建在本地端,并且加入新增

调度,以待下一次的提交.

2、每个以URL指定的目录,都会透过立即提交于仓库中创建.

在这两个情况下,所有的中间目录都必须事先存在.

例子:

svn mkdir newdir

svn mkdir -m "Makinga new dir." http://192.168.0.3/test/newdir

注:添加完子目录后,一定要回到根目录更新一下,不然在该目录下提交文件会提示“提交失败”

svn update

注:如果手工在checkout出来的目录里创建了一个新文件夹newsubdir,

  再用svnmkdir newsubdir命令后,SVN会提示:

  svn:尝试用“svn add”或“svn add --non-recursive”代替?

  svn:无法创建目录“hello”:文件已经存在

  此时,用如下命令解决:

  svnadd --non-recursive newsubdir

  在进入这个newsubdir文件夹,用ls-a查看它下面的全部目录与文件,会发现多了:.svn目录

  再用svn mkdir -m "添hello功能模块文件"svn://192.168.0.3/test/newdir/newsubdir命令,

  SVN提示:

  svn:File already exists: filesystem '/data/svnroot/test/db', transaction'4541-1',

  path'/newdir/newsubdir '


16、恢复本地修改,恢复原始未改变的工作副本文件

命令:svn revert 

svn revert [--recursive] 文件名

注意:本子命令不会存取网络,并且会解除冲突的状况。但是它不会恢复被删除的目录。

例子:

svn revert foo.c <-丢弃对一个文件的修改

svn revert --recursive. <-恢复一整个目录的文件,.为当前目录


17、代码库URL变更,把工作拷贝更新到别的URL

命令:svn switch或svnsw

svn switch http://目录全路径 本地目录全路径

例子:

svn switchhttp://192.163.0.3/test/456 .<-(原为123的分支)当前所在目录分支到192.163.0.3/test/456



svn switch (sw):更新工作副本至不同的URL.

用法:1、switchURL [PATH]

2、switch–relocate FROM TO [PATH...]


1、更新你的工作副本,映射到一个新的URL,其行为跟“svnupdate”很像,也会将

服务器上文件与本地文件合并.这是将工作副本对应到同一仓库中某个分支或者标记的

方法.

2、改写工作副本的URL元数据,以反映单纯的URL上的改变.当仓库的根URL变动

(比如方案名或是主机名称变动),但是工作副本仍旧对映到同一仓库的同一目录时使用

这个命令更新工作副本与仓库的对应关系.


18、解决冲突,移除工作副本的目录或文件的“冲突”状态.

命令:svn resolved

svn resolved [本地目录全路径]

例子:

$ svn update

C foo.c

Updated to revision 31.

如果你在更新时得到冲突,你的工作拷贝会产生三个新的文件:

$ ls

foo.c

foo.c.mine

foo.c.r30

foo.c.r31

当你解决了foo.c的冲突,并且准备提交,运行svnresolved让你的工作拷贝知道你已经完成了所有事情。

你可以仅仅删除冲突的文件并且提交,但是svnresolved除了删除冲突文件,还修正了一些记录在工作拷贝管理区域的记录数据,所以我们推荐你使用这个命令。


注意:本子命令不会依语法来解决冲突或是移除冲突标记;它只是移除冲突的

相关文件,然后让PATH可以再次提交.


19、不checkout而查看输出特定文件或URL的内容

命令:svn cat 

svn cat http://文件全路径

svn cat目标[@版本]…如果指定了版本,将从指定的版本开始查找.

svn cat -r PREVfilename > filename (PREV是上一版本

例子:

svn cathttp://192.168.0.3/test/readme.txt

Ubuntu 搭建SVN服务 配置文件目录lsauthz:作用:authz 文件用于定义版本库的访问控制权限。它指定了哪些用户或用户组可以访问哪些目录和文件,以及他们拥有的权限级别(如读取、写入或无访问权限)。作用:hooks-env.tmpl 是一个模板文件,用于设置 SVN 钩子(hooks)的环境变量。钩子是 SVN 在特定事件#(如提交或更新)发生时自动执行的脚本。passwd:作用:passwd 文件存储 SVN 用户的密码信息。它通常与 authz 文件一起使用,来控制对 SVN 版本库的访问。 阅读详情

相关推荐

Ubuntu 22.04.5 部署 SVN服务

test是示例项目名,后续可以继续添加更多项目。安装TortoiseSVN。我们将所有仓库统一放在。

weixin_45636416的博客 849

SVN环境中add命令详解

把index.html文件纳入到版本控制中 svn add index.html 如果add文件夹,则默认把该文件夹下未纳入版本控制的文件一并纳入控制 svn add css 如果只想把目录纳入控制,而不想把所有该目录下的文件纳入控制,可以增加non-recursive svn add js --non-recursive 一次性增加所有(这种情况下会排除non-recursive的目录下的...

huangbaokang的博客 4万+

手把手教你调试RTL8201F:从芯片手册解读到LWIP驱动移植

本文详细解析了RTL8201F PHY芯片的开发流程,从寄存器配置到LWIP驱动移植,重点介绍了RMII模式下的特殊配置要点和调试技巧。通过实战案例和高级调试方法,帮助工程师解决网络性能问题,实现与FreeRTOS+LWIP协议栈的稳定集成。

ik678901234的博客 972

Linux ubuntu下svn的命令使用指南

Svn简介: Svn的全名是Subversion,它使用服务端—客户端的结构,当然服务端与客户端可以都运行在同一台服务器上。在服务端是存放着所有受控制数据的Subversion仓库,另一端是Subversion的客户端程序,管理着受控数据的一部分在本地的映射(称为工作副本)。在这两端之间,是通过各种仓库存取层(RepositoryAccess,简称RA)的多条通道进行访问的。这些通道中,可以通过

toy53的专栏 2万+

从零搭建Simulink-Adams联合仿真平台:实现电机转速的精准闭环控制

本文详细介绍了从零搭建Simulink-Adams联合仿真平台的完整流程,旨在实现电机转速的精准闭环控制。通过将Simulink的控制算法与Adams的物理模型相结合,构建了一个包含真实机械效应的数字孪生系统。文章涵盖了Adams物理模型构建、接口定义、Simulink控制闭环搭建、PID参数调试以及常见避坑指南,为机电系统仿真提供了实用的工程实践指导。

weixin_29189373的博客 153

硬件测试之—纹波测试为什么不要使用接地夹子

示波器为什么不推荐使用接地夹

qq_19294353的博客 2988

ubuntu svn命令

ubuntu SVN命令大全 1、将文件checkout到本地目录 svn checkout path(path 是服务器上的目录) 例如:svn checkout svn://192.168.1.1/pro/domain 简写:svn co 2、往版本库中添加新的文件 svn add file 例如:svn add test.php(添加te

zy332719794的专栏 5034

Ubuntu登录界面黑屏?手把手教你排查和修复LightDM启动失败(附debug命令详解)

本文详细介绍了Ubuntu系统中LightDM(Light Display Manager)启动失败导致登录界面黑屏的排查与修复方法。通过系统状态检查、调试模式分析、常见故障解决方案及高级调试技巧,帮助用户快速定位并解决LightDM相关问题,恢复正常的图形登录环境。

weixin_34005090的博客 316

Ubuntu使用SVN 命令以及使用方法

用多了Windows 吐了,可是偏偏用不起MAC 。于是转战Ubuntu。整理一些常用命令。以后方便后期使用。 1.SVN 的安装 sudo apt-get install subversion然后... 正在读取软件包列表... 完成 正在分析软件包的依赖关系树 正在读取状态信息... 完成 将会同时安装下列软件: libapr1 libaprutil1 l

LewChich 1408

Cadence数模混合仿真实战:从Verilog到ADE L的完整流程解析

本文详细解析了Cadence数模混合仿真的完整流程,从Verilog代码编写到ADE L仿真环境配置。通过实战案例讲解如何创建Config文件、搭建混合信号原理图,并分享提高仿真效率的技巧和常见问题排查方法,帮助工程师掌握这一关键芯片设计验证技术。

weixin_29246195的博客 986

Python无法拒绝的表白界面(完整代码)

Python制作一个无法拒绝的表白界面的完整代码。

AIGC 5万+

ubuntu下svn命令

原文地址:http://blog.sina.com.cn/s/blog_4c451e0e0100dhbl.html ubuntu下安装subversion客户端: sudo apt-get install subversion subversion-tools 详细请看 http://www.subversion.org.cn/svnbook/1.1/index.html svn

xyyangkun的专栏 1222

A.特定领域知识图谱知识推理方案:知识图谱推理算法综述[五]-GeniePath会自动过滤多度“邻居“的图神经网络算法。

构图对于GNN格外重要。那么怎样构图才有信息、有意义呢?如果节点的邻居只有自己,即邻接矩阵为对角阵时,GNN会退化成一个DNN模型。图中每个节点都是孤立的,相当图信息并不能相比其他方法带来增益。如果图特别稠密,比如是一个clique,即每个节点都和所有其他节点有边连接。同样的,这样的图信息同样是信息熵为0。经验上讲,节点度分布有区分度的图是相对有价值的。查看图的节点度分布。比如二类分类,分析正负例的图拓扑当然,构图和实际场景强相关。

丨汀、的博客 437

SVN命令以及ubuntu下SVN的安装

最近在使用svn,总结下svn使用的命令,这些命令基本能满足工作中的要求,后面也提供了svn安装的方法 一、svn简单命令 1.svn checkout  将代码拉倒本地 svn checkout  path (path服务器目录) 2.提交: 1)在使用命令时,如果有锁定文件或者强制取消操作而出现报错的,执行 svn cleanup 2)如果有

pizili000的博客 494

OWASP 2025版AI大模型攻击安全风险汇总(攻击方法种类)

提示词注入是大模型最基础、最常见的核心漏洞,攻击者通过构造直接或间接的恶意自然语言输入,篡改大模型原本的正常行为与输出结果。哪怕这类恶意内容对人类是隐藏、不可见的,只要模型能够正常解析读取,就会触发漏洞。它和大家常说的模型“越狱”相关,但并不等同:越狱是提示词注入的极端形式,会直接让模型彻底无视所有内置安全协议,完全脱离管控;而普通提示词注入,更多是针对性篡改模型行为、诱导执行特定操作。

墨痕诉清风的博客 517

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

ubuntu安装svn以及常用svn命令

ubuntu安装svn以及常用svn命令 apt-get install subversion 更新文件(update)。 svn update,在要更新的目录运行这个命令就可以了。

西京刀客 1296

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

ubuntu中使用svn命令

ubuntu安装svn及检查: sudo apt-get install subversion svn --version,返回 svn, version 1.7.5 (r1336830)    compiled Sep 28 2012, 11:22:04 Copyright (C) 2012 The Apache Software Foundation.

1_millet的专栏 547

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

ubuntu svn命令行下使用

原文出处 : http://blog.sina.com.cn/s/blog_6273990801013dlp.html ubuntu svn命令行下使用 (2012-06-18 12:27:04) 转载▼ 标签: 杂谈 分类:Ubuntu add-apt-repository ppa:rabbitvcs/pp

SoftwareEngineerLiu的专栏 749

ubuntu系统使用svn常用命令

个人感觉,svn是轻量级代码管理工具,适合3-5人小团队使用,冲突少,提交和下载也够方便。 不过,网上关于svn使用的教程,大多数是windows系统的图形化管理工具TortoiseSVN,而linux系统svn的常用指令却七零八碎。 这里对自己在ubuntu中使用svn的常用命令做一个简单总结,便于自己和别人查阅。 1.安装svn sudo apt install subversion 2.下载源码 假如svn服务器地址为http://127.0.0.1:23001/svn,我们要下载test

zerfew的博客 1921

ubuntu SVN命令大全

1、将文件checkout到本地目录 svn checkoutpath(path 是服务器上的目录) 例如:svn checkout svn://192.168.1.1/pro/domain 简写:svn co 2、往版本库中添加新的文件 svnaddfile 例如:svnaddtest.php(添加test.php) svnadd*.php(添加当前目录下所有的php文件) ...

w0z1y的专栏 839

svn常用命令介绍[ Ubuntu ]

这两天在ubuntu上用到了svn,下面介绍一下svn客户端常用的一些命令。 其实大家也可以参考这个网站 http://svnbook.red-bean.com/nightly/zh/index.html 。 1、添加一个文件或者目录,添加目录时,连同里面的文件一并添加了。 svn add file svn add directory      添加目录时,如果只想添加

脚印 1126

ubuntu设置svn命令免输入密码

在~/.subversion/config文件里面把存储密码的模式改成simple。在~/.subversion/servers设置不保存新密码,以免覆盖我们自己设置的密码。~/.subversion/auth/svn.simple/xxxx 配置我们自己的密码以及密码的模式为simple。

slov8的博客 1605

ubuntu下svn命令详解

转自:https://blog.youkuaiyun.com/ameyume/article/details/6320694SVN作为日常开发中不可缺少的工具,今天终于开始在Ubuntu下使用了。1、首先需要安装SVN。Ubuntu下的SVN安装十分简单,sudo apt-get install subversion,然后根据提示一步一步,就完成了SVN的安装;2、检出文件(checkout)。     使用...

fengzijinliang的专栏 1965
上一篇: Android—— 4.2 Vold挂载管理_mmcblk内置-双sdcard (八)
下一篇: Android——4.2 - 3G移植之路之 reference-ril .pppd 拨号上网 (三)
南丶烟
博客等级 码龄14年 569粉丝 98原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值