SVN版本控制拾遗

SVN版本控制拾遗

(原创内容,转载请注明来源,谢谢)

一、概念

仓库(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 2017.08.23

原文发布于微信公众号 - 决胜机器学习(phpthinker)

原文发表时间:2017-08-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏北京马哥教育

出了Linux 故障找不到方法?看大牛简单、朴实的解决思路

本文由马哥教育Linux云计算面授班23期学员推荐,转载自互联网,作者为Lis,Linux资深技术专家,内容略经小编改编和加工,观点跟作者无关,最后感谢作者的辛...

3196
来自专栏云计算教程系列

如何在Ubuntu 14.04上备份,还原和迁移MongoDB数据库

MongoDB是最受欢迎的NoSQL数据库引擎之一。它以可扩展,强大,可靠和易于使用而闻名。在本文中,我们将向您展示如何备份,还原和迁移MongoDB数据库。

984
来自专栏北京马哥教育

给小白的 Nginx 30分钟入门指南

运维行业正在变革,推荐阅读:30万年薪Linux运维工程师成长魔法 Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服...

3857
来自专栏开发之途

Android 系统权限

1194
来自专栏淡定的博客

windows下WorkerMan实现简单的多人在线聊天

Workerman是一款纯PHP开发的开源高性能的PHP socket 服务框架。

611
来自专栏性能与架构

linux 定时任务crontab防止脚本运行冲突

定时任务crontab是linux下常用的功能,可以设置一定的间隔时间执行任务,但有可能出现任务脚本运行冲突问题 例如某脚本要运行30分钟,在crontab里...

27410
来自专栏魏艾斯博客www.vpsss.net

lnmp 开启 Opcache 脚本缓存提高 php 性能

lnmp 开启 Opcache 脚本缓存可以提高 php 运行性能,进而提高整体服务器的运行效率。Opcache 是 Zend 开发的闭源但可以免费使用的 PH...

1025
来自专栏Python数据科学

解读爬虫中HTTP的秘密(高阶篇)

上一篇我们介绍了爬虫中HTTP的基础内容,相信看过的朋友们应该对HTTP已经有个初步的认识了。本篇博主将分享一些HTTP的高级内容,以及在爬虫中的应用,让大家更...

602
来自专栏Zephery

谈谈个人网站的建立(五)—— 小集群的部署

欢迎访问我的个人网站O(∩_∩)O哈哈~希望大佬们能给个star,个人网站网址:http://www.wenzhihuai.com,个人网站代码地址:https...

3183
来自专栏java一日一条

常用的 Python 爬虫技巧总结

用python也差不多一年多了,python应用最多的场景还是web快速开发、爬虫、自动化运维:写过简单网站、写过自动发帖脚本、写过收发邮件脚本、写过简单验证码...

715

扫描关注云+社区