美文网首页
SVN 日常使用

SVN 日常使用

作者: wayyyy | 来源:发表于2020-04-02 21:32 被阅读0次

SVN全名Subversion,即版本控制系统。

版本模型

所有的版本控制系统都需要解决一个基础问题:怎样让系统允许用户共享信息,而不会让他们因意外而互相干扰?版本库里意外覆盖别人的更改非常的容易。

  • 拷贝-修改-合并方案
    每一个客户联系项目版本库建立一个个人工作拷贝―版本库中文件和目录的本地映射。用户并行工作,修改各自的工作拷贝,最终,各个私有的拷贝合并在一起,成为最终的版本,这种系统通常可以辅助合并操作,但是最终要靠人工去确定正误。

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


linux 日常使用

  • svn checkout

    svn checkout svn://xxxx --username xxx --password  xxx
    

    上面的操作会svn会询问是否将验证信息缓存在磁盘上面,用脚本拉取代码时不合适

    svn checkout svn://xxxx --username xxx --password  xxx --no-auto-cache
    
    • 检出某个版本的代码
      检出20版本的代码。
      svn checkout -r 20 svn://xxxx 
      
  • svn export
    检出的项目仍然被SVN进行管理,有.svn隐藏的文件夹,和版本库仍然关联,导出的项目相当于一些普普通通的文件,不再和版本库、SVN有任何关系。

    svn export -r 版本号 svn://xxxx 本地目录 --username xxx --password  xxx
    
  • svn update

    svn update .  # 将当前目录更新到最新版本
    
    • U foo
      文件foo更新。
    • A foo
      文件或目录foo被添加到版本库中。
    • D foo
      文件或目录foo在版本库被删除了。
    • R foo
      foo被删除,而一个新的同样名字的项目添加进来,它们具有同样的名字,但是版本库会把它们看作具备不同历史的不同对象。
    • G foo
      文件foo接收到版本库的更改,你的本地版本也已经修改,但改变没有互相影响,svn成功的将版本库和本地文件合并,没有发生任何问题。
    • C foo
      文件foo的修改与服务器冲突,服务器的修改与你的修改交迭在一起。
  • svn add foo
    将文件、目录或者符号链foo添加到版本库,当你下次 提交后,foo会成为其父目录的一个子对象。注意,如果foo是目录,所有foo中的内容也会预定添加进去,如果你只想添加foo本身,使用--non-recursive(-N)参数。
  • svn delete foo
    将文件、目录或者符号链foo从版本库中删除掉,如果foo是文件,它马上从工作拷贝中删除,如果是目录,不会被删除,但是Subversion准备好删除了,当你提交你的修改,foo就会在你的工作拷贝和版本库中被删除。

  • svn move

  • svn status
  • svn diff
  • svn commit

    svn commit -m "upload test.log"
    
  • svn revert

    • 修改过的东西没有提交
      svn revert [-R] file or dir
      

    如果回滚的是一个目录,-R选项表示递归。

    • 修改过的东西已经提交
      这种情况下,需要用svn merge命令来进行回滚。
      第一步,先将自己修改备份一下。
      第二步,执行svn update 保证工作区文件是最新的。
      第三步,利用svn log找出要回滚的确切版本号,比如版本号是10。
      第四步,利用svn merge回滚到具体版本
      svn merge -r 20:10 file or dir
      
      第四步,提交回滚
      svn commit -m "..."
      
  • 重命名

  • 查看版本日志

    • 查看某一文件的版本变化
      svn log test.log  # 查看这个文件的所有修改记录,及其版本号的变化。
      
    • 查看一段日期的日志
      svn log -r {2018-07-03}:{2018-07-09}
      
    • 查看某一版本所修改的文件列表及说明
      svn log -r r196674 -v
      

冲突

如果两个程序员同时修改了同一个文件,SVN可以合并这两个程序员的改动。
实际上SVN管理源代码是以行为单位的,就是说两个程序员只要不是修改了同一行程序,SVN都会自动合并两种修改。如果是同一行,SVN会提示文件Confict冲突,需要手动确认。


分支

SVN 新建资源仓库时,可选择默认创建3个文件夹,这3个文件夹分别是:trunk,branches,tags。

  • trunk
    一般用于存放目前项目主线,也就是项目所有功能模块的集合体,一整个项目所有代码库。一般来说,存放在trunk中的代码都是稳定可正常运行的。
  • branches
    分支,其实也就是主线的拷贝,主要应用于在项目需要有新的开发时,不针对主线进行,而是在主线的基础上,拷贝一份或者多份。针对每个模块小组,均可根据自己的开发情况,创建自己的分支进行开发,最后将分支一起合并到trunk上来,从而最后合并为一个项目。
  • tags
    标记是主线中一个特定版本的定型版。比如一个系统1.0开发完成,就会将主线的代码打一个tag,标记1.0开发完成。所以Tags中的代码只读的,也就是tags中的版本是不允许再动了。

trunk负责保存当前稳定版本。
branches 负责保持你分支版本,进行新需求开发。
tags则保存最终发布上线版本,所以不可再修改。
各司其职,各尽其责,使得开发过程中版本控制有条不紊。


开发工作流

日常开发过程其实就是这样的,(假设你已经Checkout并且已经工作了几天):Update(获得最新的代码) -->作出自己的修改并调试成功 --> Commit(大家就可以看到你的修改了)

windows 日常使用

  • 检出代码
    右键菜单中点击 SVN Checkout。

  • 更新到最新版本
    更新本地代码与SVN服务器上最新的版本一致,只要在需要更新的文件夹上点击右键或者在文件下空白处点击右键,选择”SVN Update” (获取指定版本中的内容,点击右键执行SVN菜单中的“Update to reversion“),就可以了。

  • 提交

    • 加入版本库
      右键SVN菜单执行“Add“操作提交到”变更列表中
    • 提交更新
      右键SVN菜单执行”SVN Commit”提交到版本库中
  • 回退至某个版本
    右击想要回退的文件或者文件夹,在TortoiseSVN弹出菜单中选择"Update to reversion…"。

  • 删除
    方法1:选择被删除文件,右键svn菜单执行”delete”操作,然后选择被删除文件的父目录,右键svn菜单执行”SVN Commit”。

    方法2:使用操作系统的删除操作删除该文件,然后选择被删除文件的父目录,右键svn菜单执行”SVN Commit”,在变更列表中选择被删除的文件

  • 重命名
    选中需要重命名的文件或文件夹,然后右键“TortoiseSVN->Rename“,在弹出的对话框中输入新名称,点击”ok”按钮,并将修改文件名后的文件或文件夹通过 “SVN Commit”提交到SVN服务器上。



参考资料

  1. https://zhuanlan.zhihu.com/p/38573577
  2. https://blog.csdn.net/mrluzle/article/details/70140956
  3. https://www.cnblogs.com/harveylv/p/6835738.html
  4. https://www.kancloud.cn/i281151/svn/197105

相关文章

  • SVN 日常使用

    SVN全名Subversion,即版本控制系统。 版本模型 所有的版本控制系统都需要解决一个基础问题:怎样让系统允...

  • ubuntu下使用svn

    SVN作为日常开发中不可缺少的工具,今天终于开始在Ubuntu下使用了。 1、首先需要安装SVN。Ubuntu下的...

  • iOS开发中使用SVN的正确姿势

    日常开发中,源代码管理我们一般使用Git和SVN.本文主要介绍如何在iOS开发中使用SVN命令行和Xcode对源代...

  • 更换git版本的过程及心得

    一、使用svn遇到的问题 从参加工作至今,一直使用svn作为代码版本工具,基本能够满足日常工程开发过程中的代码版本...

  • git的工作流程思考

    一直以来公司都是svn来进行版本控制,虽然svn的版本控制也可以说满足公司的日常需求,但是作为使用git的人来说,...

  • 源代码管理

    SVN的使用 SVN在Mac上使用Xcode+Cornerstone GIT的使用

  • svn使用,版本管理具体操作记录(快速迭代) 结

    日常工作中的svn使用大部分是update和commit,但对版本控制了解不多。 svn的图形界面十分方便,命令行...

  • SVN恢复已删除或丢失的文件

    svn中文件正在使用时,执行svn up更新后,使用中的文件丢失。使用svn status 查看丢失的文件列表状态...

  • Idea使用篇-使用版本控制工具Svn

    1.添加Svn客户端 2.配置Svn 3.使用Svn基本命令 4.使用Svn版本文件对比 5.Svn注意事项

  • Module-SVN使用说明

    Linux-SVN使用说明 SVN EXCEL比对工具 SVN WORD比对工具 SVN创建分支

网友评论

      本文标题:SVN 日常使用

      本文链接:https://www.haomeiwen.com/subject/sbkxphtx.html