以下的操作都是默认你的服务器安装有svn的大前提下进行的。

一、创建版本库
我的版本库存放路径为: /var/svn ; 下面我们来创建一个名为 svntet 的版本库   

注释: svnadmin create svntet  就是svn的创建版本库命令;执行之后我们会发现 /var/svn 下会出现 svntet 的文件夹


二、修改新建的版本库的配置文件
进入 /var/svn/svntet  ;我们会发现有3个配置文件

我们先修改下 passwd ,添加 svntet 版本库的用户名和密码

修改 authz ,添加  svntet 版本库的用户的权限

注释:现在给 svntet 版本库的用户名为admin的用户添加他对该版本的读写权限


修改 svnserve.conf 


三、导入代码文件到 svntet 版本库
我的代码文件存放在 /var/www/html/qinkaizhu/svntest ; 
svn代码版本库的路径 /var/svn/svntet (也就是刚刚我们创建的版本库的位置);
执行导入命令: svn import /var/www/html/qinkaizhu/svntest file:///var/svn/svntet -m "i"

四、从版本库导出代码
导出代码到当前目录下; 执行导出命令: svn checkout svn://192.168.1.5/svntet 

这时候,已经从 svntet 版本库取了最新版本的代码


 
五、从工作的代码拷贝提交到版本库
如何我们没有修改如何代码,那么提交是没有意义的。下面我们先来修改下1.php;
cd svntet 
vim 1.php
     

保存修改后,在 svntet 目录下执行提交命令:svn commit -m  "cxcxcxc"
注释:-m “msg”  其中msg:为本次提交版本的一些描述(例如修改了什么之类的)

六、从版本库更新工作的代码拷贝
假如有n个人在进行同一项工作,大家都是公用同一版本库,那么可能你现在的版本库就不是最新的了。所以,我们需要从版本库里更新下工作的代码拷贝。
执行代码:
cd svntet 
svn update
七、在工作的代码拷贝新建文件或者文件夹,然后提交到版本库
1、先新建 3.php  4.php 
2、执行加入版本控制命令:svn add 3.php 4.php

小插曲 【start】
在这里注意了,经常我们在开发的时候,可能会加人很多的新文件,难道我们要一个一个地加吗?当然,你也可以实现的。。但是,如果我们加的文件特别多,而且目录结构也特别复杂。怎么办?
svn status — 打印工作拷贝文件和目录的状态。
我们可以借助svn status 或者 svn st快速找到新添加并没有纳入版本控制的文件。

第一列代表状态改变的文件的状态:

'?'   项目不在版本控制之下;
'M'  项目已经修改了;
'!'    项目已经丢失;
'~'   项目作为一种对象(文件、目录或链接)纳入版本控制,但是已经被另一种对象替代。
更多的状态信息,可以在这里看见:传送门
我们利用grep筛选出不在版本控制之下的文件或者文件夹
svn st | grep ?
svn st | grep ? | awk '{print $2}'

我们可以利用awk逐一获取到他们的信息,现在我们就只需要他们的路径就好了,然后有svn将他们加入版本控制

前面是和大家一起慢慢来,顺便回顾下shell的一些命令使用。
其实就工作备份的最外层执行下面的代码就可以将没有加入版本控制的文件或者文件名加入版本控制
svn status | grep ? | awk '{print $2}' | xargs svn add
然后,下次执行提交的时候,就会将新加文件提交加入到版本库了。。。
小插曲 【end】

3、再执行提交到版本库的命令:svn commit -m "addnewfile"
注释:执行加入版本控制命令:svn add 3.php 4.php 后,版本库的并没有更新版本。直到下一次执行 commit 才会提交更新

 八、删除工作拷贝和版本库的文件
情况一:先在工作的拷贝删除,在下次执行commit命令时候,自动从版本库里删除
1、先执行删除命令:svn del 1.php 2.php
2、再执行提交命令:svn commit -m "delfile"
情况二:直接从版本库里删除,然后在工作拷贝下更新(update)
执行删除命令:svn del -m "del 4.php" file:///var/svn/svntet/4.php

以上是我经常用到的一下svn在linux的命令操作。大家在操作的时候应该注意命令操作时候所在的当前目录。
例如 svn update ;svn commite,不然会导致一些错误。

在工作拷贝中在每个目录下都会存在.svn文件;在项目完成要上线的时候,我们怎么样快速都将所有的.svn文件都删除呢。。我们可以写个shell脚本来进行删除。
find -type d -name ".svn" | xargs rm -rf

其他常用的命令:
更新到某个版本 
svn update -r m path 
例如: 
svn update如果后面没有目录,默认将当前目录以及子目录下的所有文件都更新到最新版本。 
svn update -r 200 test.php(将版本库中的文件test.php还原到版本200) 
svn update test.php(更新,于版本库同步。如果在提交的时候提示过期的话,是因为冲突,需要先update,修改文件,然后清除svn resolved,最后再提交commit) 
简写:svn up 

加锁/解锁 
svn lock -m “LockMessage“ [--force] PATH 
例如:svn lock -m “lock test file“ test.php 
svn unlock PATH 

查看日志 
svn log path 
例如:svn log test.php 显示这个文件的所有修改记录,及其版本号的变化 

比较差异 
svn diff path(将修改的文件与基础版本比较) 
例如:svn diff test.php 
svn diff -r m:n path(对版本m和版本n比较差异) 
例如:svn diff -r 200:201 test.php 
简写:svn di 

将两个版本之间的差异合并到当前文件 
svn merge -r m:n path 
例如:svn merge -r 200:205 test.php(将版本200与205之间的差异合并到当前文件,但是一般都会产生冲突,需要处理一下) 

版本库下的文件和目录列表 
svn list path 
显示path目录下的所有属于版本库的文件和目录 
简写:svn ls 

创建纳入版本控制下的新目录 
svn mkdir: 创建纳入版本控制下的新目录。 
用法: 
1、mkdir PATH… 
2、mkdir URL… 
创建版本控制的目录。 
1、每一个以工作副本 PATH 指定的目录,都会创建在本地端,并且加入新增 
调度,以待下一次的提交。 
2、每个以URL指定的目录,都会透过立即提交于仓库中创建。 
在这两个情况下,所有的中间目录都必须事先存在。 

svn(subversion)代码版本管理在linux下的一些常见使用命令的更多相关文章

  1. linux下常用的日志分析命令

    linux下常用的日志分析命令   本文介绍下,在linux中常用的一些分析日志的命令行或脚本,有需要的朋友参考下.     形如下面这样的access.log日志内容: 211.123.23.133 ...

  2. Linux下的文件夹创建命令使用实践

    [文章摘要] 本文以实际的C源程序为样例,介绍了Linux下的文件夹创建命令(mkdir)的用法.为相关开发工作的开展提供了故意的參考. [关键词] C语言  Linux  文件夹创建  makefi ...

  3. Linux下几种文件传输命令

    Linux下几种文件传输命令 sz rz sftp scp 最近在部署系统时接触了一些文件传输命令,分别做一下简单记录: 1.sftp Secure Ftp 是一个基于SSH安全协议的文件传输管理工具 ...

  4. Linux下几种文件传输命令 sz rz sftp scp

    Linux下几种文件传输命令 sz rz sftp scp 最近在部署系统时接触了一些文件传输命令,分别做一下简单记录: 1.sftp Secure Ftp 是一个基于SSH安全协议的文件传输管理工具 ...

  5. [原创] Linux下几种文件传输命令 sz rz sftp scp介绍

    Linux下几种文件传输命令 sz rz sftp scp介绍 1.sftp Secure Ftp 是一个基于SSH安全协议的文件传输管理工具.由于它是基于SSH的,会在传输过程中对用户的密码.数据等 ...

  6. linux下维护服务器之常用命令

    linux下维护服务器之常用命令! 第1套如下: 正则表达式: 1.如何不要文件中的空白行和注释语句: [root@localhost ~]# grep -v '^$' 文件名 |grep -v '^ ...

  7. Ubuntu Linux下设置IP的配置命令

    Ubuntu Linux下设置IP的配置命令 今天装了Ubuntu,但是发现不能上网,开始排查问题: 1.首先确定网络连接是否正确,所用的网线是否可以正常工作 2.查看网卡是否能正常工作,检测的方法如 ...

  8. Linux下提权常用小命令

    有些新手朋友在拿到一个webshell后如果看到服务器是Linux或Unix操作系统的就直接放弃提权,认为Linux或Unix下的提权很难,不是大家能做的,其实Linux下的提权并没有很多人想象的那么 ...

  9. Linux下的压缩和解压缩命令gzip/gunzip

    作者:邓聪聪 Linux下的压缩和解压缩命令——gzip/gunzip yum -y install zip gzip (--安装压缩工具) gzip命令 gzip命令用来压缩文件.gzip是个使用广 ...

随机推荐

  1. webpack模块化管理和打包工具

    Webpack简介 webpack是当下最热门的前端资源模块化管理和打包工具.它可以将许多松散的模块按照依赖和规则打包成符合生产环境部署的前端资源.还可以将按需加载的模块进行代码分隔,等到实际 需要的 ...

  2. Java集合详解二

    前一篇我们已经讲过了Collectin是存放单值的最大接口, 可以看到Map接口和其主要之类的关系图如下: 快速访问 HashMap    HashTable  TreeMap  Map输出 那Map ...

  3. [CODEVS 1288]埃及分数

    Description 在古埃及,人们使用单位分数的和(形如1/a的, a是自然数)表示一切有理数. 如:2/3=1/2+1/6,但不允许2/3=1/3+1/3,因为加数中有相同的. 对于一个分数a/ ...

  4. bzoj 3631: [JLOI2014]松鼠的新家

    Description 松鼠的新家是一棵树,前几天刚刚装修了新家,新家有n个房间,并且有n-1根树枝连接,每个房间都可以相互到达,且俩个房间之间的路线都是唯一的.天哪,他居然真的住在"树&q ...

  5. python类库numpy中常见函数的用法

    1. numpy.reshape  重塑 reshape是一种函数,函数可以重新调整矩阵的行数.列数.维数. B = reshape(A,m,n) 返回一个m*n的矩阵B, B中元素是按列从A中得到的 ...

  6. javascript 手势(swipeLeft,swipeRight)滑动中使用css3动画卡顿,开启硬件加速

    今天,在做一个移动端项目,遇到了css3动画卡顿的现象. 例图: 在手势滑动中(swipeLeft,swipeRight)遇到了动画卡顿的现象,最后使用了css3动画-webkit-transform ...

  7. 阿里2019实习内推,五轮技术面+一轮HR面,Java岗面经

    在牛客网上获取到很多知识和信息,现在反馈一波,希望能对广大找实习的同学有所帮助. 个人情况:EE方向渣硕,二月末内推了阿里集团某部门Java岗,约三周完成了所有面试. 面经如下: 一面 (简历评估): ...

  8. Linux学习之CentOS(十八)-----恢复Ext3下被删除的文件与 使用grep恢复被删文件内容(转)

    前言 下面是这个教程将教你如何在Ext3的文件系统中恢复被rm掉的文件. 删除文件 假设我们有一个文件名叫 'test.txt' $ls -il test.txt 15 -rw-rw-r– 2 roo ...

  9. SQL语句删除字段,改变字段长度

    1.改变字段长度 ALTER TABLE T_MSG_SEND_R_ACC MODIFY reply_content VARCHAR(512); 2.删除字段ALTER TABLE MSG_TX_BA ...

  10. 微信小程序--试水

    应公司需求,接手小程序,在此之前我是一点也没有接触过,对此,拿过小程序文档和官方案例就一顿恶补,在此期间也看过一些小程序建立模型的视频,终于对小程序知晓一二,拿过项目开始研究.好了废话不多说,总结一下 ...