• 创建一个版本库、项目目录。

创建一个版本库:

svnadmin create ~/SVNTestRepo

创建一个项目目录:

svn mkdir file:///home/lsf/SVNTestRepo/Project1 -m "create a dir."
在项目下创建目录,用来保存项目的主干线、分支、标签:

svn mkdir file:///home/lsf/SVNTestRepo/Project1/trunk -m "create trunk."

svn mkdir file:///home/lsf/SVNTestRepo/Project1/branches -m "create branches."

svn mkdir file:///home/lsf/SVNTestRepo/Project1/tags -m "create tags."

可以用list查看当前版本库下的目录:

svn list  file:///home/lsf/SVNTestRepo/Project1

  • 导入新文件到版本库指定的目录。

我们一般导入新文件或目录到主干线trunk目录下。

如导入一个新文件:

svn import ./t1.txt file:///home/lsf/SVNTestRepo/Project1/trunk/t1.txt -m "import t1.txt"

导入文件时要指定目标目录,还可以重命名文件,我在这里就不重命名了,直接使用原文件名导入。

还可以导入一个目录下的所有文件:

svn import ~/temp/ file:///home/lsf/SVNTestRepo/Project1/trunk/temp -m "import temp.temp is a path."

这里将本地的temp目录下的文件导入到版本库trunk下的temp目录下。

如果导入的目标版本库不存在,会导入失败,失败信息可能如下:

svn: Unable to open an ra_local session to URL
svn: Unable to open repository 'file:///home/lsf/SVNRepo/SVNTest2'

使用file:///形式的URL来访问Subversion库,这表示在本地通过文件系统访问。但我们的Subversion库可能需要通过网络被其它用户访问,这就需要用到其它的协议,下面是Subversion支持的各种访问协议:

file:/// 通过本地磁盘访问。

http:// 与Apache组合,通过WebDAV协议访问。

https:// 同上,但支持SSL协议加密连接。

svn:// 通过svnserve服务自定义的协议访问。

svn+ssh:// 同上,但通过SSH协议加密连接。

  • 获取指定版本库对应的工作副本

导入成功后,导入的源目录还不是SVN工作目录,要用checkout来获取指定版本库对应的工作副本,即工作目录:

svn checkout file:///home/lsf/SVNRepo/SVNTest1/ ~/SVNProject1

如果成功,会输出以下信息:
A    /home/lsf/SVNProject1/trunk
A    /home/lsf/SVNProject1/branches
A    /home/lsf/SVNProject1/tags
Checked out revision 1.

  • linux svn 切换用户

1. 临时切换

在所有命令下强制加上--username 和--password选项。

例如:svn up --username zhangsan --password 123456

当然,最后不要加上--password,在需要时才输入比较好。
2.永久切换
删除目录 ~/.subversion/auth/  下的所有文件。下一次操作svn时会提示你重新输入用户名和密码的。换成你想用的就可以了。然后系统默认会记录下来的。

  • 创建分支

执行copy命令来创建分支:

svn copy svn://192.168.232.129/Project/trunk svn://192.168.232.129/Project/branches/branch1 -m "create a branch of trunk."

这里在branches后加上了branch1目录,即将trunk下的所有文件都添加到branch1目录了。

如果不上branch1,则会在branches下生成trunk目录,有点尴尬。

  • 切换工作副本

svn switch命令改变存在的工作副本到另一个分支。

在分支工作时,最好查一下当前的工作副本究竟是什么,因为switch会切换工作副本的。

查看当前工作副本的URL:svn info | grep URL

如果switch后,记得要switch回去,避免后面造成目录的混乱。

  • 合并分支

合并时,务必指定合并的版本号范围。

举个例子,把分支的修改合并到trunk来:

先切换到trunk工作副本的目录,update一下,

svn merge -r r1:r2  svn://192.168.232.129/Project/branches/branch1

r1和r2是一个合并范围,要注意的是,r1分支的初始状态版本,即为创建分支的版本,或者为上次合并分支时的版本;r2为分支当前的最新版本HEAD。

通过在trunk和分支中执行svn log -v | less可以查看r1和r2。

有时会将主干trunk合并到分支,同样要注意r1和r2。
参考:http://blog.csdn.net/fbysss/article/details/5437157

  • 一些错误处理

1.svn: Can't connect to host '127.0.0.1': Connection refused

无法连接到SVN服务器,应该是SVN服务器未启动。

启动:svnserve -d -r 版本库目录,如svnserve -d -r /home/user1/SVNRepo

停止SVN:killall svnserve

2.在启动SVN时出错,即执行命令svnserve -d -r /home/lsf/SVNRepo/后,提示:
svnserve: Can't bind server socket: Address already in use
 然后查看系统进程,发现svnserve已经启动了,那为什么会出错呢?是因为我在之前启动SVN时没有指定正确的版本库,即执行了svnserve -d -r /home/lsf/SVNRepo2/,这里SVNRepo2不是有效的版本库,导致后面的SVN操作出错:svn: No repository found in 'svn://127.0.0.1'
因此,启动SVN务必指定正确的版本库。
这里,先停止SVN:killall svnserve ,再重新启动,指定正确的版本库就行:svnserve -d -r /home/lsf/SVNRepo/

  • SVN配置

版本库目录的配置文件,在版本库下conf的 目录下,有3个配置文件:

authz passwd svnserve.conf 。
如果在操作时出现svn: Authorization failed这个错误,是因为授权配置文件authz配置不正确。

如果svnserve的启动参数 -r 所指定的目录为版本库的目录,这时为单个版本库的工作,用户权限的段名要配置成这样:
[/] 
admin=rw
/为版本库的根目录。
 
如果svnserve的启动参数 -r 所指定的目录为版本库的上级目录,这时一个svnserve可以为多个版本库工作,这时如果想限制指定库的权限,就应该指定具体的库,像这样:
[TestRepo:/] 
admin=rw
TestRepo为其中一个版本库,这种方式就是在多版本库时指定其中一个版本库的用户的权限。

配置详见:http://www.ccdream.com/s/hacker/54.html

 

linux svn用法的更多相关文章

  1. linux svn服务器搭建、客户端操作、备份与恢复

    Subversion(SVN)是一个开源的版本控制系統,管理着随时间改变的数据.这些数据放置在一个中央资料档案库中,这个档案库很像一个普通的文件服务器,它会记住每一次文件的变动,这样就可以把档案恢复到 ...

  2. Linux SVN 搭建(YUM)安装

    安装说明 系统环境:CentOS安装方式:yum install (源码安装容易产生版本兼容的问题)安装软件:系统自动下载SVN软件 Linux svn服务端配置 检查已安装版本 #检查是否安装了低版 ...

  3. linux curl用法详解

    linux ‍‍curl用法详解 ‍‍curl的应用方式,一是可以直接通过命令行工具,另一种是利用libcurl库做上层的开发.本篇主要总结一下命令行工具的http相关的应用, 尤其是http下载方面 ...

  4. linux svn迁移备份的三种方法

    原文:http://www.iitshare.com/linux-svn-migration.html svn备份方式对比分析 一般采用三种方式: 1.svnadmin dump 2.svnadmin ...

  5. linux svn安装和配置

    linux svn安装和配置,不结合apache http://blog.51yip.com/server/901.html 张映 发表于 2010-07-07 分类目录: 服务器相关 今天有个同事在 ...

  6. [转载]expect spawn、linux expect 用法小记

    原文地址:expect spawn.linux expect 用法小记作者:悟世 使用expect实现自动登录的脚本,网上有很多,可是都没有一个明白的说明,初学者一般都是照抄.收藏.可是为什么要这么写 ...

  7. Linux SvN操作

    Linux svn管理工具的12个命令实践 2010-08-25 10:50 佚名 icycling.cublog.cn 字号:T | T 目前,绝大多数开源软件都使用svn作为代码版本管理软件.本文 ...

  8. linux svn启动和关闭

    linux svn启动和关闭 博客分类: linux系统 svnlinux  1,启动SVN sudo svnserve -d -r /home/data/svn/ 其中 -d 表示守护进程, -r ...

  9. Linux svn仓库备份到Windows机器上

    Linux svn仓库备份到Windows机器上 1,需求说明,Linux作为主库(A),Windows作为本地备份库(B),要求每天将Linux库中的代码备份到本地 2,B机器上安装svn服务端 3 ...

随机推荐

  1. VMWare 虚拟机

    http://pan.baidu.com/share/link?shareid=5873&uk=941708466 VMWare是虚拟化解决方案厂商,旗下有多款虚拟机软件产品,其中最知名的要数 ...

  2. HDU---4417Super Mario 树状数组 离线操作

    题意:给定 n个数,查询 位置L R内 小于x的数有多少个. 对于某一次查询 把所有比x小的数 ”的位置“ 都加入到树状数组中,然后sum(R)-sum(L-1)就是答案,q次查询就要离线操作了,按高 ...

  3. Web开发之RSET API

    REST介绍 如果要说什么是REST的话,那最好先从Web(万维网)说起. 什么是Web呢?读者可以查看维基百科的词条(http://zh.wikipedia.org/zh-cn/Web),具体的我就 ...

  4. actionBar兼容2.1及以上版本的做法 .

    正在准备一个项目,需要尊重android design的同时还要做到很好的兼容低版本,于是就先从actionBar开始吧. 1,新建一个android工程startActionBar,minSdkVe ...

  5. the process cannot access the file because it is being used by another process

    当在IIS中改动绑定的port号后启动时遇到例如以下错误,表明你的port号已经被占用了 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdmljMDIyOA ...

  6. OC特有语法-分类(category)

    本文转载Keefo. Objective-C的Object-oriented programming特性提供subclass和category这2个比较非常重要的部分.subclass应该反复被各种编 ...

  7. <微信应用开发系列>定时刷新AccessToken

    微信内嵌H5站一直很火,很多公司也想借助微信的用户群和社交群来做点事情,所以对于各位代码君来说也算是一个研究方向吧. access_token是公众号的全局唯一票据,公众号调用各接口时都需使用acce ...

  8. Enable-Migrations 在应用程序配置文件中找不到xx连接字符串

    在解决方案中有多个项目时,使用Enable-Migrations 命令进行数据迁移时,出现以下错误: 尝试在Enable-Migrations 命令中指定-projectName也不行,最后将要操作的 ...

  9. 后台js

    Response.Write("<script>alert('该用户名不存在或密码错误或未参加教学活动,请重新输入!');history.back()</script> ...

  10. Android-图标

    首先需要申明一点,系统图标并不存在于项目资源中,而是存在于设备中. 这就带来一个大问题,界面风格的控制权交到了不同的设备手中.这是我们不愿意看到的. 如何解决这个问题?有两种方法: 1.创建自己的图标 ...