SVN教程(三)基本命令

到了最枯燥的内容了。

如果你看了第二节的内容,在检出的文件夹中试图添加或删除文件,然后再通过svn commit去提交这种变化,你会发现没有任何内容会提交给SVN。也就是说,SVN能够感知文件内容的变化,但却不能感知文件夹结构的变化。文件夹结构的变化必须要以svn命令的形式,显示地通知版本库。比如,增加、删除文件,更改文件路径等等操作,你不能使用操作系统提供的命令,而必须要使用svn提供的命令。

1、增加文件 -- svn add
格式:svn  add PATH...
需要注意的是,这个命令只是在客户端标识了添加的文件或文件夹,它会在下一次commit的时候提交到版本库。也就是说,如果你用svn add一个文件后,再用svn list去查看版本库时是看不到这个文件的。另外,你还必须先把这个文件或文件夹创建出来准备好,svn add不会在本地给你创建文件的。
还有,如果添加的是一个文件夹,那么这个文件夹下的所有内容都会被添加。当然如果你是在add完之后才向文件夹中添加文件的,那么这个文件必须要再次add才会被提交。

2、删除文件 -- svn delete
格式:svn delete PATH...
     svn delete URL...
前者在删除工作副本的路径的同时,会在下一次提交时同步版本库;后者则会立即删除URL标识的版本库,但本地的工作副本会得以保留,下一次提交时这个文件不会被提交。你可以使用--keep-local,要求保留本地工作副本。

3、复制文件 -- svn copy
格式:copy SRC[@REV]... DST
注意@REV代表的是版本号,因为源文件可能有多个版本
复制可以是在本地的工作副本中完成,也可以是直接在版本库中完成。同样的,如果是在本地工作副本中完成,将会在本地复制,但要等到下一次提交时才能同步到版本库;而如果针对版本库则会直接在库中复制。

4、移动文件 -- svn move
格式:move SRC... DST
与复制很像,不同的只是将文件换了个地方,即要删除原来的文件。

5、创建路径 -- svn mkdir
格式:mkdir PATH...
     mkdir URL...
同样的,前者是针对本地工作副本,后者是针对版本库。

6、查看变化 -- svn status & svn diff
这两个命令用于查看工作副本相对于版本库的变化
svn status的基本格式是:svn status [PATH]
status命令提供了一个对工作副本的总体概览,哪些文件是新增加的,哪些文件修改了,哪些文件还没有同步到版本库,都会在这个命令后列出来。status使用了一些单字符代表状态信息,比如“?”代表没有同步到版本库、“!”代表丢失、“A”代表添加等等。比如,我执行该命令后的输出如下:



这就说明有三个文件不在版本控制之下,需要使用svn add添加,一个文件被修改,需要提交。
svn diff的格式有很多种,我不一一列举了,它的主要作用就是查看修改文件的具体变化内容。比如,我想查看上述目录中的变化情况,可以使用命令:
svn diff d:/ztest/out/
这样SVN会将这个目录下修改的文件内容都列举出来,就可以看到哪些地方更改了。

7、补丁 -- svn patch
patch,即补丁,是一个独立的文件,记录了两个版本之间的差异数据,可以使用以下命令生成补丁文件:
svn diff > [补丁文件名称]
然后,在工作副本中应用补丁:
svn patch [补丁文件名称] [工作副本路径]

8、更新 -- svn update
svn update用于同步本地工作副本与版本库,可以使用-r选项,告诉更新到哪一个版本,例如
svn update -r354,它的意思就是要更新到354这个版本


以上介绍一些典型的命令,当然这不是全部。就算我有兴趣将这些命令都在这节里写出来,我估计你也没有兴趣把它们看完。所以就介绍8个吧,还比较吉利的数字。你可以使用svn help查看这些命令,当你需要用的时候。

这些碎碎念念的东西,就是构成SVN命令行客户端的基本命令。虽然我们后面会介绍TortoiseSVN这种可视化的客户端工具,但这些命令对于我们深入理解SVN还是十分有帮助的。

猜你喜欢

转载自weatry.iteye.com/blog/2128536