svn使用规范、在Windows下使用svn命令行工具、svn命令行的解释

之前在公司一直使用git,如今公司有用svn,一时间还真的不知道如何下手,在网上搜寻了不少大神和官网文档的指导,总结了下面一份教程,但愿可以帮助你们快速上手,若是想更细致的了解相关内容,能够点击每一个小节里提供的的连接。html

一、Windows下命令行工具:linux

发现原来安装的tortoisesvn已经集成到shell中,不能在命令行下使用。因而找到这个http://www.visualsvn.com/downloads/git

下载Apache Subversion command line tools,这是一个能够在cmd下使用的命令行工具,解压后把里面bin目录这个路径添加到环境变量的path,这样在cmd下就可使用了,和linux下使用svn的习惯同样了。shell

二、简明教程:服务器

http://www.flyne.org/article/851并发

目录约定:分布式

  • /trunck:开发主线
  • /branches:支线副本
  • /tags:标签副本(一旦建立,不容许修改)

1)使用trunk做为主要的开发目录svn

通常的,咱们的全部的开发都是基于trunk进行开发,当一个版本(release)开发告一段落(开发、测试、文档、制做安装程序、打包等结束后),代码处于冻结状态(人为规定,能够经过hook来进行管理)。此时应该基于当前冻结的代码库,打tag。工具

当下一个版本/阶段的开发任务开始时,继续在trunk进行开发。此时,若是发现了上一个已发行版本(Released Version)有一些bug,或者一些很急迫的功能要求,而正在开发的版本(Developing Version)没法知足时间要求,这时候就须要在上一个版本上进行修改了。解决方法是基于发行版对应的tag,作相应的分支(branch)进行开发。测试

2)下图为struts2的SVN仓库目录:

三、经常使用命令

svn help

svn --version

svn --version --quiet 只显示版本号

svn checkout 地址

svn add 文件或者文件夹 增长本地数据到服务器

svn commit / svn ci -m “注释” 文件名 提交代码,要先add才commit

svn update / svn up 没必要跟特定的文件或目录,也能够本身指定须要更新的文件或目录。每次commit或者改动以前最好更新一下。

svn log

svn delete 文件名

svn resolve 路径 --accept working 解决冲突

http://zccst.iteye.com/blog/1765519

svn switch 远程路径 版本切换

svn list 路径 / svn ls 列出版本库下的文件和目录

svn merge -r m:n 路径 合并文件,从版本号m到版本号n的远程分支都合并到当前分支中

svn info 确认工做目录的svn信息

svn diff -r m:n 路径 对版本m和版本n比较差别

svn cleanup 为失败的失误清场

svn status -v 在本地进行代码修改,检查修改状态

svn import 远程路径 --message “message” 将当前路径下文件导入到版本库中

svn export 远程路径 导出一份干净的项目

svn move/ svn mv 原文件名 新文件名 重命名

svn mkdir 文件名

svn copy / svn cp 源文件路径 新文件路径

svn revert 文件名 只能恢复未提交以前的操做

若要还原已提交的改动:只能用旧文件覆盖新文件。操做以下:

1)sun up    让本地工做拷贝更新到最新状态

2)svn

log your_file_path 查看文件日志,这时候提交时填写的说明信息就派上用场了

3)svn diff

-r 旧修订版序号:新修订版序号 your_file_path 查看两个修订版之间的不一样。

4)决定用哪一个旧的修订版号后,用旧的修订版号文件覆盖新的修订版号文件。svn

merge -r 新修订版序号:旧修订版序号 your_file_path

5)svn commit -m "恢复到某修订版(某修订版做废)"

本地的版本叫作working copy

四、关于merge

branch主要用于新功能的开发
合并发生在本地working copy,只要你不提交就不会影响到repository
合并前必定要先update、commit,保证不会out of day,并将本地的修改保存到repository
branch和trunk并行开发的过程当中,要常常同步,将trunk的修改合并到branch,合并时选择"Merge a range of revision"
branch最后合并回trunk时,merge type选择"Reintegrate a branch"

不论是从trunk合并到branch仍是最终从branch合并回trunk,在每次合并前最好先update,而后将本地的修改先所有commit,保护好现场,万一合并不理想随时均可以revert http://blog.csdn.net/eggcalm/article/details/6606520

http://zhengkun.readthedocs.org/zh_CN/latest/2014/02/07/svn-usage/

五、关于解决冲突

发生冲突以后会出现三个临时文件:

XXX.mine XXX.r1 XXX.r2

一旦解决了冲突,需用svn resolved让subversion知道,这样就会删除这三个临时文件,冲突状态解决。

三种解决方式:

  • 手工合并冲突:须要将冲突标志删除

  • 用某一个临时文件覆盖本身的工做文件
  • 用svn revert 放弃本地修改,不须要执行resolved

六、高级教程 很棒!!
https://i18n-zh.googlecode.com/svn/www/svnbook-1.4/index.html

七、Git和SVN的区别

http://blog.csdn.net/bruce_6/article/details/38299677

Git是分布式svn是集中式;svn只有一个中央版本库,而git有无限个;svn有全局的版本号,git没有;git没必要联网就能够看到全部的log,svn必须联网;git保存的是元数据,svn是复制整个文档;git强调分支,svn只是不一样的文件目录,就是copy。

相关文章
相关标签/搜索