zoukankan      html  css  js  c++  java
  • Linux学习闲谈(二) ——SVN版本控制拾遗

     

    Linux学习闲谈(二)

    ——SVN版本控制拾遗

     

    (转载请附上本文链接——linhxx)

     

    一、概念

    仓库(repository)是代码总的存放的地方,工作副本(working copy)的每个开发者用于开发的地方。版本控制方法如下图:

     

    两个开发者一起检出,其中一个开发完提交,另一个后提交的,必须先update最新的仓库,否则无法提交。检出后,后者可以提交。该解决方案称为“复制-修改-合并”。

    但是,对于图片等二进制文件,用加锁-修改-解锁模型更好。因此还要根据实际情况。

    二、版本控制方法

    svn采用全局的版本号的方式,任意仓库的工作副本的提交,都会改变整个版本号。即版本号是全局的,不是给每个文件一个版本号。

     

    三、仓库寻址

    可以采用http、file、svn等方式进行寻址,如下:

    模式

    访问方式

    file:///

    直接仓库访问 (仓库在本地磁盘上)

    http://

    通过 WebDAV 协议访问可识别 Subversion 的 Apache 服务器

    https://

    和 http:// 相同, 但是增加了 SSL 封装 (加密和授权)

    svn://

    通过传统的协议访问 svnserve 服务器

    svn+ssh://

    和 svn:// 相同, 但是增加了 SSH 隧道

    其中,可以用^表示仓库的根目录,在工作副本中可以使用。另外,^/表示根路径。

    四、工作副本

    工作副本是用户的本地系统的目录,是用户的私有空间。对svn仓库的修改,并非从一个工作副本直接传递到另一个工作副本,而是要用户将工作副本提交到仓库,其他用户再从仓库中更新代码。

    在1.7版以前,Svn在工作副本的每一个子目录内都维护了一个.svn目录。svn1.7在存放和维护工作副本元数据上提出了一种全新的方法,从外面看最显著的变化是每个工作副本只创建了一个.svn目录,存放在工作副本的根目录下。

    1、工作原理

    svn为工作副本中的每一个文件记录两项信息:文件的版本号和时间戳,时间戳用于记录该文件最后一次在版本库更新的时间。

    当用户执行svn ci或者svn up时,会对文件的这两项进行判断:

    1)如果本地和仓库都没更新,则没反应。

    2)如果本地更新,仓库是旧的,则up没反应,ci会提交。

    3)如果本地没更新,仓库更新,则up会更新本地,ci没反应。

    4)如果本地和仓库都更新,直接ci会报冲突,需要先up,但如果该的是同一行,svn up会失败,则需要人工处理冲突,再ci提交。

    2、版本号混合

    仓库中当前两个文件a和b,当前版本号是1。现在在工作副本中,修改a,并提交。则工作副本中a版本号是2,b版本号还是1;仓库中a、b版本号都是2(对于b来说,版本号1和版本号2的内容是完全一样的)。只有再工作副本中,再次执行svn up,才会使工作副本的a、b版本号也都是2。

    即,更新和提交是分开的。执行提交,不会自动更新代码;执行更新,也不会自动提交代码。

    ——written by linhxx

    更多最新文章,欢迎关注微信公众号“决胜机器学习”,或扫描右边二维码。

    博客园这边,我会定期批量发布文章,如果想要实时看到最新的文章,欢迎关注微信公众号"决胜机器学习",里面有我最新的文章。linhxx
  • 相关阅读:
    值类型和引用类型区别
    json数据类型
    转:不再以讹传讹,GET和POST的真正区别
    简单投票系统学到的一些东西
    jq 全选和反选以及判断那条被选中
    PHP中获取当前页面的完整URL
    jq div鼠标放上、离开马上展开、收缩方法
    js 删除确定
    mysql 存储过程
    js 闭包原理理解
  • 原文地址:https://www.cnblogs.com/linhxx/p/8412864.html
Copyright © 2011-2022 走看看