SVN简介
svn功能实现
SVN 全名 Subversion,即版本控制系统,它是一个自由/开源的同时支持多种操作系统的版本控制系统。在 Subversion 管理下,文件和目录可以回到任意时刻的版本,以及比较任意两个时刻的版本变动。
我们称用来存放上传档案的地方就做 Repository。用中文来说,有点像是档案仓库的意思。不过,通常我们还是使用 Repository 这个名词。基本上,第一次我们需要有一个新增(add)档案的动作,将想要备份的档案放到 Repository 上面。日后,当您有任何修改时,都可以上传到 Repository 上面,上传已经存在且修改过的档案就叫做 commit,也就是提交修改给 SVN server 的意思。针对每次的 commit,SVN server 都会赋予他一个新的版本。同时,也会把每次上传的时间记录下来。日后,因为某些因素,如果您需要从 Repository 下载曾经提交的档案。您可以直接选择取得最新的版本,也可以取得任何一个之前的版本。如果忘记了版本,还是可以靠记忆尝试取得某个日期的版本。
svn优势
1.SVN Repository 可以是自己计算机上的一个目录,或者是随身碟(不建议这样用)。当然也可以是公司的服务器。
2.SVN 有很棒的版本控管机制。所有上传的版本都会帮您记录下来。日后您可以随时取得某一个时刻的版本。而且,也有版本分支及合并等好用的功能。
3.SVN 可以让不同的开发者存取同样的档案,并且利用 SVN Server 作为档案同步的机制。也就是说,您有档案更新时,无须将档案寄给您的开发成员。只需要告诉他新的版本已经在 SVN Server 上面,请他自己去 SVN Server 上面就可以取得最新版本。而且,SVN Server也可以做到当您上传新版本后,自动发信给相关的成员。
4.SVN 的存放档案方式是采用差异备份的方式。也就是说,他只会备份有不同的地方。所以很省硬盘空间。此外,他也可以针对所谓的非文字文件进行差异备份。
安装subversion软件
下载安装
[fanmaolin@Centeros ~]$ sudo yum install -y subversion
Loaded plugins: fastestmirror, refresh-packagekit, security
Setting up Install Process
Determining fastest mirrors
* base: mirrors.btte.net
* extras: mirror.bit.edu.cn
* updates: mirrors.163.com
base | 3.7 kB 00:00
extras | 3.4 kB 00:00
updates | 3.4 kB 00:00
Resolving Dependencies
--> Running transaction check
---> Package subversion.x86_64 0:1.6.11-14.el6 will be updated
--> Processing Dependency: subversion = 1.6.11-14.el6 for package: subversion-javahl-1.6.11-14.el6.x86_64
---> Package subversion.x86_64 0:1.6.11-15.el6_7 will be an update
--> Running transaction check
---> Package subversion-javahl.x86_64 0:1.6.11-14.el6 will be updated
---> Package subversion-javahl.x86_64 0:1.6.11-15.el6_7 will be an update
--> Finished Dependency Resolution
Dependencies Resolved
====================================================================================================================================
Package Arch Version Repository Size
====================================================================================================================================
Updating:
subversion x86_64 1.6.11-15.el6_7 base 2.3 M
Updating for dependencies:
subversion-javahl x86_64 1.6.11-15.el6_7 base 174 k
Transaction Summary
====================================================================================================================================
Upgrade 2 Package(s)
Total download size: 2.4 M
Downloading Packages:
(1/2): subversion-1.6.11-15.el6_7.x86_64.rpm | 2.3 MB 00:00
(2/2): subversion-javahl-1.6.11-15.el6_7.x86_64.rpm | 174 kB 00:00
------------------------------------------------------------------------------------------------------------------------------------
Total 2.3 MB/s | 2.4 MB 00:01
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Warning: RPMDB altered outside of yum.
Updating : subversion-1.6.11-15.el6_7.x86_64 1/4
Updating : subversion-javahl-1.6.11-15.el6_7.x86_64 2/4
Cleanup : subversion-javahl-1.6.11-14.el6.x86_64 3/4
Cleanup : subversion-1.6.11-14.el6.x86_64 4/4
Verifying : subversion-1.6.11-15.el6_7.x86_64 1/4
Verifying : subversion-javahl-1.6.11-15.el6_7.x86_64 2/4
Verifying : subversion-1.6.11-14.el6.x86_64 3/4
Verifying : subversion-javahl-1.6.11-14.el6.x86_64 4/4
Updated:
subversion.x86_64 0:1.6.11-15.el6_7
Dependency Updated:
subversion-javahl.x86_64 0:1.6.11-15.el6_7
Complete!
检查安装情况
[fanmaolin@Centeros ~]$ rpm -qa | grep ubversion
subversion-javahl-1.6.11-15.el6_7.x86_64
subversion-1.6.11-15.el6_7.x86_64
SVN的使用
在windows下一般用小乌龟软件(tortoisesvn)
Linux使用SVN
下载SVN服务器上的项目
svn checkout path (path是服务器的目录)
简写:svn co path
例如:
[fanmaolin@Centeros ~]$ svn co http://code.taobao.org/svn/tcode1/
A tcode1/trunk
Checked out revision 1.#版本1
[fanmaolin@Centeros ~]$ ls
Desktop Documents dropbear-0.53.1 fl2440 Pictures src Templates tftp x.c 桌面
dir Downloads dropbear-0.53.1.tar.bz2 Music Public tcode1 test Videos zuoye
创建文件夹并上传到SVN
[fanmaolin@Centeros ~]$ cd tcode1/
[fanmaolin@Centeros tcode1]$ mkdir fanmaolin
[fanmaolin@Centeros tcode1]$ svn add fanmaolin/
A fanmaolin
[fanmaolin@Centeros tcode1]$ svn ci -m "Add fanmaolin"#上传
Adding fanmaolin
Committed revision 2.#版本2
在taobaocodeSVN上可以看到
查看文件或者目录状态
1)svn status path(目录下的文件和子目录的状态,正常状态不显示)
【?:不在svn的控制中;M:内容被修改;C:发生冲突;A:预定加入到版本库;K:被锁定】
2)svn status -v path(显示文件和子目录状态)
第一列保持相同,第二列显示工作版本号,第三和第四列显示最后一次修改的版本号和修改人。
注:svn status、svn diff和 svn revert这三条命令在没有网络的情况下也可以执行的,原因是svn在本地的.svn中保留了本地版本的原始拷贝。
简写:svn st
[fanmaolin@Centeros tcode1]$ svn st fanmaolin
linux下删除SVN上的文件
svn delete path -m "delete test fle"
简写:svn (del, remove, rm)
[fanmaolin@Centeros tcode1]$ svn del fanmaolin
D fanmaolin
[fanmaolin@Centeros tcode1]$ svn ci -m "del fanamolin"
Deleting fanmaolin
Committed revision 3.
查看日志
svn log path
查看文件详细信息
Svn info path
例:
[fanmaolin@Centeros tcode1]$ svn info fanamolin
Path: fanamolin
URL: http://code.taobao.org/svn/tcode1/fanamolin
Repository Root: http://code.taobao.org/svn/tcode1
Repository UUID: 3cfaaf96-6c34-41a0-b36f-983397b6bf68
Revision: 4
Node Kind: directory
Schedule: normal
Last Changed Author: fanmaolin
Last Changed Rev: 4
Last Changed Date: 2017-08-04 14:49:38 +0800 (Fri, 04 Aug 2017)
创建纳入版本控制下的新目录
svn mkdir: 创建纳入版本控制下的新目录。
用法: 1、mkdir PATH…
2、mkdir URL…
创建版本控制的目录。
1、每一个以工作副本 PATH 指定的目录,都会创建在本地端,并且加入新增
调度,以待下一次的提交。
2、每个以URL指定的目录,都会透过立即提交于仓库中创建。
在这两个情况下,所有的中间目录都必须事先存在。
恢复本地修改
svn revert: 恢复原始未改变的工作副本文件 (恢复大部份的本地修改).revert:
用法: revert PATH…
注意: 本子命令不会存取网络,并且会解除冲突的状况.但是它不会恢复
被删除的目录
代码库URL变更
svn switch (sw): 更新工作副本至不同的URL.
用法: 1、switch URL [PATH]
2、switch –relocate FROM TO [PATH…]
1、更新你的工作副本,映射到一个新的URL,其行为跟“svn update”很像,也会将服务器上文件与本地文件合并.这是将工作副本对应到同一仓库中某个分支或者标记的方法.
2、改写工作副本的URL元数据,以反映单纯的URL上的改变.当仓库的根URL变动(比如方案名或是主机名称变动),但是工作副本仍旧对映到同一仓库的同一目录时使用,这个命令更新工作副本与仓库的对应关系.
解决冲突
svn resolved: 移除工作副本的目录或文件的“冲突”状态.
用法: resolved PATH…
注意: 本子命令不会依语法来解决冲突或是移除冲突标记;它只是移除冲突的相关文件,然后让 PATH 可以再次提交.
输出指定文件或URL的内容
svn cat 目标[@版本]…如果指定了版本,将从指定的版本开始查找.
svn cat -r PREV filename > filename (PREV 是上一版本,也可以写具体版本号,这样输出结果是可以提交的)
参考链接:
http://www.php-oa.com/2008/03/12/svnminglingzailinuxxiadeshiyong.html
http://blog.csdn.net/lyx_win/article/details/52184845
总结:
之前都是在windows下使用软件来实现在SVN保存上传、下载代码,需要的时候然后再传输到Linux,现在又新学了一招。