zoukankan      html  css  js  c++  java
  • 在Windows下使用svn命令行教程及svn命令行的解释

    本文转载自:https://blog.csdn.net/yangxiao2shi/article/details/50719286/

    以前在公司一直使用git,现在的公司改用svn,一时间还真的不知道如何下手,在网上搜寻了很多大神和官网文档的指导,总结了下面一份教程,希望能够帮助大家快速上手,如果想更细致的了解相关内容,可以点击每个小节里提供的的链接。

    1、Windows下命令行工具:

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

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

     
    2、简明教程:
     
    目录约定:
    • /trunck:开发主线
    • /branches:支线副本
    • /tags:标签副本(一旦创建,不允许修改)

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

    一般的,我们的所有的开发都是基于trunk进行开发,当一个版本(release)开发告一段落(开发、测试、文档、制作安装程序、打包等结束后),代码处于冻结状态(人为规定,可以通过hook来进行管理)。此时应该基于当前冻结的代码库,打tag。

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

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

    3、常用命令
    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    解决冲突
    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
     
    4、关于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
     
    5、关于解决冲突
    发生冲突之后会出现三个临时文件:
    XXX.mine XXX.r1 XXX.r2
    一旦解决了冲突,需用svn resolved让subversion知道,这样就会删除这三个临时文件,冲突状态解决。
    三种解决方式:
    • 手工合并冲突:需要将冲突标志删除
    • 用某一个临时文件覆盖自己的工作文件
    • 用svn revert 放弃本地修改,不需要执行resolved
     
    6、高级教程 很棒!!
    https://i18n-zh.googlecode.com/svn/www/svnbook-1.4/index.html
     
    7、Git和SVN的区别
    Git是分布式svn是集中式;svn只有一个中央版本库,而git有无限个;svn有全局的版本号,git没有;git不必联网就可以看到所有的log,svn必须联网;git保存的是元数据,svn是复制整个文档;git强调分支,svn只是不同的文件目录,就是copy。
  • 相关阅读:
    Hello TensorFlow 二 (GPU)
    Hello TensorFlow
    C/C++调用Golang 二
    C/C++调用Golang 一
    再谈cgo(转)
    Go语言第一深坑
    通过样式改变图片明暗度,不是透明度哦
    webpack vue-loader was used without the corresponding plugin. Make sure to include VueLoaderPlugin
    webpack打包报错Chunk.entrypoints: Use Chunks.groupsIterable and filter by instanceof Entrypoint instead
    [Vue warn]: You are using the runtime-only build of Vue where the template compiler is not available. Either pre-compile the templates into render functions, or use the compiler-included build.
  • 原文地址:https://www.cnblogs.com/wpcnblog/p/8961051.html
Copyright © 2011-2022 走看看