读书人

subversion的运用总结

发布时间: 2012-09-23 10:28:11 作者: rapoo

subversion的使用总结

对于开发人员来说,subversion的使用无非就是对subversion的命令行的使用,只要学会了subversion命令行,subversion就会成为我们身上的一把刀!

为了能更清晰地说明subversion命令行的使用,现在我们假设这样的一个场景:

subversion是安装在ubuntu系统上。
subversion的版本库的目录位置为/home/test/svn/repository/myproject,svn协议的地址为svn://localhost/myproject版本库的认证信息:username=abc password=abc

下面根据上面的场景来介绍svn的各个子命令。

svn import语法:
svn import [PATH] URL

描述:

把Path内容导入到URL指向的版本库目录。这里的PATH可以是一个目录,也可以是某个文件。

实例:

首先手工创建如下的目录结构~/svn/sample/trunk、~/svn/sample/branches、~/svn/sample/tags

#创建分支rain_branch-1.0test@test-desktop:~/rain$ svn cp svn://localhost/myproject/trunk@HEAD svn://localhost/myproject/branches/rain_branch-1.0 -m "create a branch for rain,version is 1.0"Committed revision 10.#创建分支sally_branch-1.0test@test-desktop:~/sally$ svn cp svn://localhost/myproject/trunk@HEAD svn://localhost/myproject/branches/sally_branch-1.0 -m "create a branch for sally,version is 1.0"Committed revision 11.
可能现在我们需要发布一个稳定的版本了——myproject1.0
test@tim-desktop:~/sally$ svn diff --old=svn://localhost/myproject/branches/rain_branch-1.0/rainDirectory/rainFile --new=svn://localhost/myproject/trunk/rainDirectory/rainFile@HEADIndex: rainFile===================================================================--- rainFile(.../branches/rain_branch-1.0/rainDirectory/rainFile)(revision 15)+++ rainFile(.../trunk/rainDirectory/rainFile)(revision 15)@@ -1 +1 @@-rainFile+rain modify rainFile


svn merge语法:
svn merge [-c M[,N...] | -r N:M ...] SOURCE[@REV] [TARGET_WCPATH]svn merge SOURCE1[@N] SOURCE2[@M] [TARGET_WCPATH]svn merge --reintegrate SOURCE[@REV] [TARGET_WCPATH]


描述:

对比两个SOURCE,把两者的差异合并到TARGET_WCPATH。如果省略TARGET_WCPATH,默认为当前目录,TARGET_WCPATH必须是受版本控制的。

SOURCE可以是工作拷贝路径(它会自动对应版本库的路径),也可以是URL指定的版本库路径

两个不同的SOURCE可以是两个具有相同路径不同版本的SOURCE,也可以是不同路径相同版本的SOURCE,当然也可以是即不同路径也不同版本的SOURCE。

关于merge命令有一个比较迷惑人的地方是————它是如何定义两个SOURCE的差异呢?

对于语法一,-r N:M的方式。假如M版本比N版本多了一个文件a.txt,即由N变成M需要添加a.txt文件(add操作),所以实际的merge命令会在TARGET_WCPATH上添加一个文件a.txt。(-c参数同理)如果变成-r M:N,那么实际的merge命令就会变成是在TARGET_WCPATH上删除a.txt。对于语法二,假如SOURCE1@N比SOURCE2@M少了一个文件a.txt,即由SOURCE1@N变成SOURCE2@M需要添加一个a.txt文件(add操作),所以实际的merge命令是在TARGET_WCPATH上添加a.txt文件。如果SOURCE1@N与SOURCE2@M的位置对调,那么实际的merge命令就会变成是在TARGET_WCPATH上删除a.txt文件一句话总结merge的机制就是:把版本N(SOURCE1@N)变化成版本M(SOURCE2@M)所需的操作应用到TARGET_WCPATH中。语法三中的SOURCE只能是URL指定的版本库目录,它的作用是把直接把SOURCE复制到TARGET_WCPATH。



svn status(stat,st)语法:

svn status [PATH...]

描述:

查看工作空间的的文件状态。


svn propdel/propedit/propget/propset/proplist语法:
svn prop* PROPNAME [PATH...]
svn prop* PROPNAME --revprop -r REV [TARGET]
描述:
这五个命令都是对svn的属性进行操作的,因此就放在一些说明了。语法一是作用于本地工作拷贝,而语法二则是作用于远程仓库的某个指定的版本。

实例:

如要忽略com目录下的sin90lzc目录,使其不受版本控制。

$ svn propset svn:ignore "sin90lzc" com

读书人网 >软件开发

热点推荐