Linux学习闲谈(三) ——SVN用法及切版本与合版本

Linux学习闲谈(三)

——SVN用法及切版本与合版本

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

SVN(Subversion)在工程中运用广泛,多人合作项目、项目版本控制等方面,SVN都是不可或缺的。虽然最近很多项目也在使用Git,但SVN仍是现在流行的版本控制系统。SVN与Git相比,最大的一个优势是存在全局版本号。

一、概述

SVN分为客户端和服务端,即需要在一台大家都能访问到的服务器上安装SVN的服务端,然后各自的电脑里安装SVN的客户端。安装的过程这里不讲,有很多博客如http://www.cnblogs.com/xiaobaihome/archive/2012/03/20/2407610.html讲的不错。

二、基础命令

1、获取代码

svn checkout svn版本路径。checkout可以简写为co。

该命令用于获取SVN服务器上某个版本路径的代码。

2、更新代码

svn update [路径/文件名]。update可以简写为up。

该命令用于获取SVN服务器上某路径某文件的最新内容,如果不加路径和文件默认获取SVN服务器最新版本的所有内容。

3、提交代码到临时路径

1)svn add 文件名。

新添加的文件,需要使用此方法将新的文件提交到临时路径下。

2)svn delete 文件名。delete 可以简写为del或者rm。

删除一个文件,需要使用此方法,告诉临时路径该文件即将被删除。

4、提交代码到SVN服务器

svn ci –m ‘comment’ 文件名。commit可以缩写为co,-m是用于添加备注的,建议每次commit的时候,都需要提交备注,这样以后有问题的时候,也便于查找原因。

上述第三点的add和delete命令输完后,必须使用commit命令提交到服务器,才会生效。另外,平时修改完的文件,也需要commit才会生效。

5、冲突解决

svn resolve

svn up获取svn ci时,假设发现文件my.php有冲突,会收到如下提示:选择: (p) 推迟,(df) 显示全部差异,(e) 编辑,(mc) 我的版本, (tc) 他人的版本,(s) 显示全部选项。

如果要抛弃自己的编辑,可以选择tc,如果已经确定别人不需要他们的改动了,可以选择mc。但是,通常选择p进行推迟,然后会生成my.php.mine,my.php.r上一版本号,my.php.r本版本号,my.php。可以用vi打开my.php,会发现<<<<<<<、=======、>>>>>>>类似这样的分割,标记着自己的改动和他人的改动。

修改完成后,删除<<== >>这些记号和没用的自动生成的备注后,使用如下命令;svn resolve –accept working my.php,告诉SVN已经解决冲突,并且会自动删除上述生成的那些文件。然后再用SVN ci进行提交即可。

如果无法确定是否保留对方的修改,则需要叫上改动人员一起查看问题。

6、其他命令

1)svn diff 文件名,diff可以缩写为di,该命令用于比较当前路径下的文件与SVN服务器相对应路径下的文件的差异,可以具体到每一行,会显示差异的行的内容。如果不输入文件名,会比较所有的文件。

另外,可以用svn di –r 版本1:版本2 文件名,比较两个版本之间的差异,默认是比较本地版本与当前SVN服务器版本的差异。

该方法在commit之前,建议使用,如果有冲突也可以提前处理。

2)svn convert 文件名。

该命令可以将某个文件还原成SVN服务器的版本,该操作将使本地的修改丢失,该命令等同于rm 文件名 + svn up 文件名。即把文件删了再重新获取。

另外,svn convert –recursive * 可以递归还原所有文件。

3)svn mkdir 文件夹名。

该方法会在SVN临时路径创建一个文件夹,相当于mkdir 文件夹名 + svn add 文件夹名。

4)svn cat 文件名。

该方法不检出文件,仅查看服务器上该文件的内容。

5)svn status。status可以简写为st或者stat。

该命令用于查看当前路径下,本地SVN副本和SVN服务器上的差异,返回的结果是一个英文字母+文件名,即本地文件与SVN服务器不一致的文件名。

英文字母:M-修改,U-线上有更新,A-新增,D-删除,?-本地新增还未添加到SVN临时路径,C-冲突。

7、查看日志

svn log 文件名。该命令会查看文件的所有版本commit的日志信息:版本、作者、日期、comment。如果不加文件名,则为所有文件的版本信息。

三、分支合并与切版本

1、概述

在大型项目中,版本通常分为tags、trunks、branches三种。

tags表示快照,即当前线上生产系统的版本,通常不在此类型下进行开发,除非紧急上线。

trunks表示当前的主版本,branches是分支版本。通常合作者都在各自的branches上开发,并及时与trunks进行同步,每次开发前也从trunks进行更新。

因此,分支合并通常指trunks合并到tags,切分支通常指trunks复制一份branches。

2、命令

1)合并分支

svn merge 路径1 路径2  [合并后的路径]。默认合并于当前路径。

该方法会把两个文件合并。建议使用该命令之前,需要先进行svn up,并把冲突解决以后在指向,否则会合并失败。

另外,svn merge以后,仅合并到暂存的路径下,需要svn ci进行提交到SVN服务器才可以。

2)切分支

svn copy 主路径 复制后的路径 –m ‘comment’。copy可以简写为cp。

该命令将服务器上的文件复制一个工作副本到本地,在服务器并不保存这些文件,只有一个指向该文件的节点。

——written by linhxx

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

原文地址:https://www.cnblogs.com/linhxx/p/8412867.html

时间: 2024-08-05 23:33:36

Linux学习闲谈(三) ——SVN用法及切版本与合版本的相关文章

Linux学习闲谈(二) ——SVN版本控制拾遗

  Linux学习闲谈(二) --SVN版本控制拾遗 (转载请附上本文链接--linhxx) 一.概念 仓库(repository)是代码总的存放的地方,工作副本(working copy)的每个开发者用于开发的地方.版本控制方法如下图: 两个开发者一起检出,其中一个开发完提交,另一个后提交的,必须先update最新的仓库,否则无法提交.检出后,后者可以提交.该解决方案称为"复制-修改-合并". 但是,对于图片等二进制文件,用加锁-修改-解锁模型更好.因此还要根据实际情况. 二.版本控

Linux学习闲谈(一)——Shell基本操作与命令

Linux学习闲谈(一) --Shell基本操作与命令 (转载请附上本文链接--linhxx) 1.#!/bin/sh 放在程序开头,表示用/bin/sh方式来解析. 2.变量 1)变量赋值 varname='xxx',除了在变量赋值和在FOR循环语句头中,其他情况下BASH 中的变量使用必须在变量前加"$"符号,即采用 $varname使用变量.更为标准的变量引用方式是 ${STR} 这样的,$STR 自不过是对 ${STR} 的一种简化.在复杂情况下(即有可能产生歧义的地方)最好用

linux学习第三周总结

linux学习第三周总结 学习linux的第三周,也是惊喜最多的一周,让我看到学linux并不是很枯燥,相反非常有趣,可玩性很多,但越深入越觉得可学习的地方有很多,也有非常多的不足,所以革命尚未成功,同志更需努力 同样来简单终结一下本周的重点,内容比较多,说要简单提一下,不做详解 一.shell脚本编程基础 内容:1. 编程基础 2. 脚本基本格式3. 变量4.运算5.条件测试6.条件判断if 7.条件判断case 8.配置用户环境 shell脚本:包含一些命令或声明,并符合一定格式的文本文件

linux学习(三)

crontab: 对作业的控制一般有两种at与cron,at一般使用在那些只需要执行一次的任务中,而cron就是用于那些循环的作业.每一个用户都可以有自己的crontab文件,但在一个较大的系统中,系统管理员一般会禁止这些文件,而只在整个系统保留一个这样的文件.系统管理员是通过cron.deny和cron.allow这两个文件来禁止或允许用户拥有自己的crontab文件.crontab文件中每一个条目对应一个任务,每个条目有六个域分别是:分钟1-59,小时0-23,日1-31,月1-12,星期0

Linux学习笔记三:Linux的权限处理命令

1.改变文件或目录权限  chmod 语法:chmod [{ugo} {+-=} {rwx}] [文件或目录] 或 [mode] [文件或目录] 第一种语法中: 这里的u是所有者,g是指所属组,o是指其他人 +是指增加权限,-是指减少权限,=是指赋予权限 r是指读权限,w是指写权限.x只是执行权限 第二种语法中: 在这里,r的值是4,w的值是2,x的值是1. 这里写的mode,是指一组数字.如:421.这里的421,是指所有者所拥有权限的数字总和是4,所属组所拥有权限的总和是2,其他人所拥有权限

Linux学习笔记三

前四单元笔记 ################################虚拟机控制###################### [[email protected]]$ rht=vmctl start desktop    ###打开desktop失败,语法错误 bash: start: command not found... [[email protected]]$ rht-vmctl start desktop    ###开启desktop,成功 Starting desktop.

linux学习第三天 (Linux就该这么学)

今天是学习的第三天,讲了很多命令,又赶上双11,网络经常波动,我经常掉线,没有听到多少,回头再看一下录播.我也写一下讲的命令吧,也加深一下命令的印象.第三章老师讲完了. ifconfig命令:输出信息后主要看5项:一.网卡名称 ,二.IP地址,三.物理网卡MAC地址,四,RX 是接收数据流量  五,TX,发送数据流量. linux系统中"一切都是文件"即 一切接文件 uname命令:查看系统内核版本信息, uname -a 要查看详细信息可以用命令:cat /etc/redhat-re

Linux学习笔记&lt;三&gt;——常用的查看文本命令和文本处理命令

查看文本: 1.cat:连接并显示文本 tac:cat的倒置显示 -n:在每行行首添加行数显示 -E:每行显示换行符 -A:显示所有,包括文本和各种特殊符号 Linux的文本换行符为$,而Windows的文本换行符是$+Enter 2.可分屏显示的more和less more:向后翻,翻到最后就退出 less:向后翻,翻到最后不会自动退出 more和less显示窗口下操作: 向后翻一页:space键 向前翻一页:b键 退出显示窗口:q键 3.head:查看前n行 tail:查看后n行 -n 数字

Linux学习笔记(三):系统运行级与运行级的切换

1.Linux系统与其他的操作系统不同,它设有运行级别.该运行级指定操作系统所处的状态.Linux系统在任何时候都运行于某个运行级上,且在不同的运行级上运行的程序和服务都不同,所要完成的工作和所要达到的目的也都不同. 2.Linux(Red Hat 9.0)设置了7个不同的运行级,系统可以在这些运行级别之间进行切换以完成不同的工作. 3.接下来简单介绍7个系统运行级: (1).运行级0:关闭计算机. (2).运行级1:单用户模式. (3).运行级2:多用户模式(不带网络文件系统NFS支持功能).