项目开发示例
文件签出(拷贝)
# svn co file:///home/victorwmh/svn-repos/sesame/trunk sesame
参数co告诉subversion要执行签出操作,file://URL指定想要签出的项目仓库的位置,sesame告诉subversion要把工作拷贝签出到哪儿,本例中的sesame表示将工作拷贝签出到当前目录下的sesame目录中。
查看文件状态
# svn status Day.txt
输出结果中的M表示这个文件本地被修改过了,而且这些改动没有被存储到项目仓库中去。
查看修改情况
# svn diff Day.txt
输出结果中包含大量信息,如项目仓库文件的名字和版本号,被修改信息的具体位置等。
更新项目仓库
# svn commit -m "Cliend wants us to work on weekends"
commit的功能是存储所有改动到项目仓库中,-m选项用来给所做的改动附加有意义的注释。
# svn log Day.txt
查看文件修改历史的日志,包含项目仓库中的版本号。
# svn log --verbose Day.txt
增加--verbose选项,subversion输出更多信息,会告诉你每个版本中具体哪些被改动了。
# svn update
当提交修改后立马询问当前目录的日志时,subversion不会告诉你有什么改动,输出的日志为截止上次提交的内容。如果要看到最新的日志信息,得先运行svn update。
命令执行后,如果有更新会输出一个包含两段内容的列表,前面一个是状态组合符,后面一个为文件目录名。
状态符及含义如下:
A、项目仓库中有新文件,subversion为了更新工作拷贝,添加了一个文件到其中。
U、工作拷贝中的文件过期,因为有一个更新的版本签入到项目仓库中。subversion已经把工作拷贝中的文件更新为新的版本。
D、该文件已从项目仓库中删除了,subversion把它从工作拷贝中移除了。
G、工作拷贝中的文件过期,而且你本地还做了修改。subversion成功的把项目仓库中的版本和你本地的修改合并到了一起。
C、工作拷贝中的文件过期,而且你本地也做了修改。subversion尝试着合并项目仓库的改动和你本地的修改,但遇到了冲突。你需要把这个冲突解决了之后才能签入。
冲突
# svn status --show-updates
使用--show-updates(简写-u)让subversion从项目仓库中找出当前目录下的文件是否有更新。
# svn diff -r HEAD Number.txt
使用-rHEAD选项让subversion比较Number.txt的本地拷贝与项目仓库中最新版本间的差别,没有指定-r标识subversion会把本地拷贝的Number.txt与项目仓库的签出版本拿来进行比较。如果项目仓库中有人更新了Number.txt,你得到的svn diff Number.txt输出仍然为空。
冲突一:A、B同时修改相同文件的不同行
假如A先于B提交修改,那么执行如下:
A:
# svn commit -m "modify message"
B:
# svn update
# svn commit -m "modify message"
B提交修改前,需要执行svn update更新到仓库项目中的最新版本,不然冲突会导致提交失败。svn update命令会把本地的版本和项目仓库中的版本合并到一块。
冲突二:A、B同时修改相同文件的相同行
假如A先于B提交修改,那么执行如下:
A:
# svn commit -m "modify message"
B:
# svn update
相同的修改冲突,在执行svn update命令后,修改冲突的地方会有一对<<<<<<< .mine和>>>>>>> .r5的标记,5为相应的版本号。修改好冲突后,执行以下命令。
# svn resolved Number.txt
resolved命令告诉subversion冲突已解决,Number.txt为冲突文件。
# svn commit -m "modify message"
操作属性
# svn propset checked-by "Mike Mason" Number.txt
# svn propedit checked-by Number.txt
注:这个命令需要使用SVN_EDITOR环境变量,如果没有设置该环境变量的话,将报以下错误:"SVN:没有设置 SVN_EDITOR,VISUAL 或 EDITOR 环境变量,运行时的配置参数中也没有“editor-cmd”选项"。
解决方法:linux下在/etc/profile或~/.bash_profile中设置export SVN_EDITOR=vim,或者直接在命令行下输入# export SVN_EDITOR=vim命令。windows下直接在高级设置的环境变量中添加,变量名为SVN_EDITOR,值为notepad。
值得说明的是,这个环境变量和服务端的subversion没任何关系,只和你前使用的subversion相关。网上很多apache+subversion配置文档都有标注这点内容,这样很不好容易引起初学者思维混乱,其实是在客户端碰到这种报错,但一直在服务器折腾。
# svn proplist Number.txt
# svn propget checked-by Number.txt
# svn propdel
加锁、解锁和破坏锁
subversion锁机制主要是为解决一些不可合并文件的冲突而设置,如声音、图片以及更多格式的文档等。
设置文件需要加锁
# svn propset svn:needs-lock true rates.xls
# svn commit -m "Enable locking for spreadsheet"
加锁
# svn lock rates.xls -m "Adding area rates"
# svn info rates.xls
这儿包含有很多信息,锁信息只要关注最后五行即可。另外,当一个文件已被人加锁时,其他人再加锁的话会提示错误信息。想了解谁对这个文件进行了加锁,可以执行类似#svn info url的命令查看,例如:svn info
http://192.168.1.200/svn/aladdin/rates.xls。
解锁或破坏锁
# svn unlock rates.xls
当文件的锁定者为你时,可以用unlock进行解锁。但当锁定者不是你时,这种解锁称为破坏锁。需要增加--force选项,以及指定完整的文件URL路径。
# svn unlock --force http://192.168.1.200/svn/aladdin/rates.xls
分享到:
相关推荐
使用Subversion进行版本控制针对 Subversion 1.4(根据r2866编译) 参照网页版 http://svndoc.iusesvn.com/svnbook/1.4/制作而成。 目录 前言 序言 读者 怎样阅读本书 本书约定 排版习惯 图标 本书的结构 本书是...
Subversion Edge详细安装与使用手册,包括3.1版本的而详细安装说明以及建库,权限配置说明
Subversion Subversion Subversion Subversion Subversion
ubuntu下安装subversion客户端及使用方法
ubuntu下Subversion-1.9.4安装与配置,图文描述
精通Subversion进行源代码管理.doc精通Subversion进行源代码管理.doc精通Subversion进行源代码管理.doc精通Subversion进行源代码管理.doc精通Subversion进行源代码管理.doc精通Subversion进行源代码管理.doc精通...
subversion 安装包与依赖包,以及安装教程,RHEL 6x、7x上测试通过
SVN是subversion的缩写,是一个开放源代码的版本控制系统,通过采用分支管理系统的高效管理,简而言之就是用于多个人共同开发同一个项目,实现共享资源,实现最终集中式的管理。
subversion svnadmin
Subversion与CVS的比较
Subversion,快速入门教程,本文是使用Subversion最快速的教程,在最短的时间里帮助您建立起一套可用的服务器环境,只需略加调整就可以应用到实际项目当中。
这有助于团队成员协同开发,减少冲突和错误。 分支和合并:SVN 支持创建分支,让团队成员在独立的工作副本上进行开发,并在完成后将更改合并到主干代码中。这种分支和合并的功能使得团队可以并行开发不同功能或修复...
Subversion服务器程序,版本控制器 服务端
Version Control with Subversion For Subversion 1.6 (Compiled from Revision 38063)
subversion客户端subversion客户端最新
subversion安装
Subversion1.7.5
SubVersion用法ppt详解
CollabNet-SubversionSubversion安装配置,非常详细的介绍了安装过程
Subversion 服务器端安装及配置手册