专家指导:SVN学习笔记

本节就在学习SVN的过程中总结的SVN学习笔记和大家分享一下,内容主要包括SVN的安装和一些基本的操作等,欢迎大家一起来学习SVN学习笔记。

SVN学习笔记

1)安装

2)新建版本库
如果我打算将在/SVN_Repo中建立所有的版本库
svnadmincreate/SVN_Repo(本地磁盘路径名)

3)建立要导入版本库的文件和目录
这里假设我要导入/test整个目录,如果不存在则必须要新建,然后整个项目文件包括文件和子目录放入test目录下,然后
svnimport/testfile:///SVN_Repo/-m"initialimport"

4)从版本库中取出项目到/work_dir目录
svncheckoutfile:///SVN_Repo//work_dir
你可以使用版本库的URL作为唯一参数取出一个工作拷贝,你也可以在版本库URL之后指定一个目录,这样会将你的工作目录放到你的新目录

5)本地修改
svndiff查看区别
svncommit提交
在版本库里,每次提交都当作一次原子食物操作,要么所有都改变,要么什么都不改变,SybVersion的修订号是针对整个目录树的,而不是单个文件。
SVN学习笔记提醒你需要特别注意的是,工作拷贝并不一定对应版本库中的单个修订版本,他们可能包含多个修订版本的文件。举个例子,你从版本库检出一个工作拷贝,最近的修订号是4:
calc/Makefile:4integer.c:4button.c:4
此刻,工作目录与版本库的修订版本4完全对应,然而,你修改了button.c并且提交之后,假设没有别的提交出现,你的提交会在版本库建立修订版本5,你的工作拷贝会是这个样子的:
calc/Makefile:4integer.c:4button.c:5
假设此刻,Sally提交了对integer.c的修改,建立修订版本6,如果你使用svnupdate来更新你的工作拷贝,你会看到:
calc/Makefile:6integer.c:6button.c:6
Sally对integer.c的改变会出现在你的工作拷贝,你对button.c的改变还在,在这个例子里,Makefile在4、5、6修订版本都是一样的,但是Subversion会把他的Makefile的修订号设为6来表明它是最新的,所以你在工作拷贝顶级目录作一次干净的更新,会使得所有内容对应版本库的同一修订版本。
svnupdate同步本地工作目录

修订版本号
当你新建了一个Subversion版本库,从修订版本号0开始,每一次成功的提交加1,当你提交成功,Subversion告诉客户端这个新版本号。

修订版本日期
注意在日期中有空格时需要使用引号
$svncheckout--revision{2002-02-17}
$svncheckout--revision{15:30}
$svncheckout--revision{15:30:00.200000}
$svncheckout--revision{"2002-02-1715:30"}
$svncheckout--revision{"2002-02-1715:30+0230"}
$svncheckout--revision{2002-02-17T15:30}
$svncheckout--revision{2002-02-17T15:30Z}
$svncheckout--revision{2002-02-17T15:30-04:00}
$svncheckout--revision{20020217T1530}
$svncheckout--revision{20020217T1530Z}
$svncheckout--revision{20020217T1530-0500}

基本的工作周期
SVN学习笔记介绍一下SVN基本的工作周期。Subversion有许多特性、选项和华而不实的高级功能,但日常的工作中你只使用其中的一小部分,有一些只在特殊情况才会使用,在这一节里,我们会介绍许多你在日常工作中常见的命令。
典型的工作周期是这样的:

更新你的工作拷贝
svnupdate

做出修改
svnadd
预定将文件、目录或者符号链foo添加到版本库,当你下次提交后,foo会成为其父目录的一个子对象。注意,如果foo是目录,所有foo中的内容也会预定添加进去,如果你只想添加foo本身,使用--non-recursive(-N)参数。

svndelete
预定将文件、目录或者符号链foo从版本库中删除掉,如果foo是文件,它马上从工作拷贝中删除,如果是目录,不会被删除,但是Subversion准备好删除了,当你提交你的修改,foo就会在你的工作拷贝和版本库中被删除。

svncopy
建立一个新的项目bar作为foo的复制品,当在下次提交时会将bar添加到版本库,这种拷贝历史会记录下来(按照来自foo的方式记录),svncopy并不建立中介目录

svnmove
这个命令与与运行svncopyfoobar;svndeletefoo完全相同,bar作为foo的拷贝准备添加,foo已经预定要被删除,svnmove不建立中介的目录

相关推荐