svn1.6在centos6下的使用
版本
CentOS 6;svn 1.6.11
svn1.6版本的不足在于,每个目录递归存在.svn目录;从1.7开始就只有root节点目录存在.svn目录,和git一样了。
但是因为还在用CentOS6,又不想手动编译安装,先缓缓。
常用命令
初始代码下载到本地
svn co http://<your_svn_repo> .
新添加文件
svn add new_file
新添加目录,递归添加
svn add new_folder --force
删除文件
可以用delete、remove或者rm关键字
svn delete old_file
删除目录
这和和删除文件一样的,只不过删除文件是立即“删除”,删掉就看不到了;删除目录和目录下的文件,则需要commit后才能看到效果,所以推荐用一行命令搞定:
svn delete folder -m "delete redundant folder"
重命名
svn move src_file dst_file
解决冲突
svn resolved conflict_file #表示“我解决了冲突”
忽略文件(夹)
svn propedit svn:ignore dir
其中dir表示指定的目录。输入完这条命令会进入编辑器的编辑界面编写ignore的规则,可以使用通配符*。
例如ecshop等cms有缓存目录,应当将缓存目录纳入svn管理,但缓存目录下的缓存文件应当忽略。因此可以先将整个项目add进来,然后将缓存目录revert,再指定仅add缓存目录一层:
#假设缓存目录为temp/caches temp/compiled/ temp/static temp/static_caches temp/auth
svn co http://some_site.com/svn/ecshop .
svn add . --force
svn revert --recursive temp
svn add --non-recursive temp
svn add --non-recursive temp/caches
svn add --non-recursive temp/compiled
svn add --non-recursive temp/static
svn add --non-recursive temp/static_caches
svn add --non-recursive temp/auth
svn propedit svn:ignore temp #输入*
svn propedit svn:ignore temp/auth #输入*
svn propedit svn:ignore temp/caches #输入*
svn propedit svn:ignore temp/compiled #输入*
svn propedit svn:ignore temp/static #输入*
svn propedit svn:ignore temp/static_caches #输入*
回到某版本
# 将当前本地repo下代码,回滚到200版本
svn up -r 200 .
查看日志
svn log
查看文件详细信息
svn info some_file.php
命令缩写
svn up = svn update
svn co = svn checkout
svn st = svn status
svn ps = svn propset
svn ci = svn commit
命令范围
在某个子目录下,执行的命令一般是针对子目录下的目录和文件的。比如你的目录为:
foo
bar
test
如果你修改了bar和test两个目录下的内容,但处于bar目录,svn st得到的是bar目录下的状态信息,即:
cd bar
svn st
其他问题
这里只考虑apache http服务器和svn的集成
post-commit脚本
your_repo_path/hooks/post-commit.tmpl复制一份为post-commit,加可执行权限,用户和组为apache:
chmod +x post-commit
chown apache:apache post-commit
由于post-commit脚本是apache用户执行的,如果线上代码被root执行过svn update,就会使.svn目录的用户权限和用户组权限变掉,导致post-commit无法正确执行(可以通过post-commit脚本中打印日志查看),因此对于用ftp上传到线上、用户手动上传资源的情况,暂时编写了一个脚本,用于从线上commit并把权限改回来:
util_commit:
#!/bin/bash
svn cleanup
svn commit
chown -R apache:apache .
我的post-commit脚本也可以作为参考:
REPOS="$1"
REV="$2"
export LANG=zh_CN.UTF-8
SVN_PATH=/usr/bin/svn
WEB_PATH=/var/www/html/xxx.yyy.com
TEMP_PATH=/var/www/html/xxx.yyy.com/temp
CURDATE=`date`
LOG_PATH=/tmp/svn_some_update.log
echo " "
echo "---code deployed at $CURDATE---" >> $LOG_PATH 2>&1
echo `whoami`,$REPOS,$REV >> $LOG_PATH
/usr/bin/svn update --username username --password password $WEB_PATH --no-auth-cache >> $LOG_PATH 2>&1
echo "---code deployed end---"
记得把上面username和password替换掉
svn post commit产生的日志乱码
在vim中配置:
set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936
set termencoding=utf-8
set encoding=utf-8
然后再去看日志文件
Write lock stolen
这个问题发生在svn delete xxx时.解决办法是:
touch xxx
svn revert xxx
rm xxx
svn1.6在centos6下的使用的更多相关文章
- centos6下安装dedecms
几经波折,终于安装成功!!! 一.centos6下安装WDCP 1.连接linux 在百度直接搜索下载xshell,通过ssh连接 2.安装wdcp 下载安装wget http://dl.wdlinu ...
- VPS CentOS-6 下 LNMP HTTP服务器的搭建
VPS CentOS-6 下 LNMP HTTP服务器的搭建 前言 恢复更新后的第一篇博文, 前段时间由于各种理由, 把博客更新给宕掉了, 个人独立博客的开发也搁浅了, 现在随着工作的逐步稳定, 决心 ...
- CentOS6下Haproxy的安装配置
Haproxy 是一个开源的负载均衡和反向代理软件,其提供了高可用的网络服务.其一般是应用于web服务,但同时也能为SMTP和终端服务等提供可靠的支持. 1.下载安装haproxy wget ftp: ...
- (转载)CentOS6下 源代码方式安装openERP7.0
CentOS6下 源代码方式安装openERP7.0 安装背景 :CPU32 bit,CentOS 6.4版本,openERP7.0,linux shell为bash,PostgreSQL9.2 1. ...
- CentOS6下编译安装Python2.7.6方法
关于在CentOS6下编译安装Python2.7.6的方法非常的多了,小编以前也介绍过相关的文章了,下面一聚教程小编再来为各位介绍一下吧,希望文章能帮助到各位. CentOS下面Python在升级 ...
- Mysql系列三:Centos6下安装Mysql和Mysql主从复制的搭建
一.Centos6下安装Mysql 检测下系统有没有自带的mysql:yum list installed | grep mysql, 如果已经有的话执行命令yum -y remove mysql-l ...
- Centos6下Python3的编译安装
本文转载自 Centos6下Python3的编译安装 系统环境:CentOS 6.8-Minimal 安装Python依赖包: 1 [root@Python src]# yum install zli ...
- CentOS6下docker的安装和使用
CentOS6下docker的安装和使用 Docker是一个开源的应用容器引擎,可以轻松的为任何应用创建一个轻量级的.可移植的.自给自足的容器.利用Linux的LXC.AUFS.Go语言.cgroup ...
- CentOS6 下编译安装 MySQL 5.6.26
CentOS6下通过yum安装的MySQL是5.1版的,比较老,所以就想通过源代码安装高版本的5.6.26. 一:卸载旧版本 使用下面的命令检查是否安装有MySQL Server rpm -qa | ...
随机推荐
- 《连载 | 物联网框架ServerSuperIO教程》- 9. 协议过滤器,解决一包多发、粘包、冗余数据
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...
- 如果把带有html的标记的字符串从服务端传到页面上,需要对其进行编码。Ajax.JavaScriptStringEncode()
controller: StringBuilder s = new StringBuilder(); string a = "<script>alert('我StringBuil ...
- node.js xtemplate的使用实例
工程下安装XTemplate并使用它的方法实例说明: 1.安装xtpl npm install xtpl xtemplate --save 2.在views目录添加test.xtpl文件,其内容为 t ...
- O365(世纪互联)SharePoint 之使用列表库发布新闻
前言 上一篇文章,我们简单介绍了如何个性化O365的SharePoint站点,本文我们演示一下如何使用SharePoint自带的列表应用程序,定制一个公司新闻的栏目. 其间,用到的主要工具是Share ...
- 使用WebRTC搭建前端视频聊天室——入门篇
http://segmentfault.com/a/1190000000436544 什么是WebRTC? 众所周知,浏览器本身不支持相互之间直接建立信道进行通信,都是通过服务器进行中转.比如现在有两 ...
- Titanium.App.Properties 对象
Titanium.App.Properties是用来管理键值对数据的一个很方便的对象.在保存数据的时候,在Ti.App.Properties.setString相对应的Key的值中设置你要保存的值即可 ...
- floyd算法学习笔记
算法思路 路径矩阵 通过一个图的权值矩阵求出它的每两点间的最短路径矩阵.从图的带权邻接矩阵A=[a(i,j)] n×n开始,递归地进行n次更新,即由矩阵D(0)=A,按一个公式,构造出矩阵D(1):又 ...
- $(window).height(),在火狐下面获取的高度并不是可视区域的高度
很简单,我发现是没有写<!DOCTYPE html>造成的,加上去就可以了
- JSTREE 实现AJAX重载入时刷新所有节点树
$().ready(function() { var tree = $('#tree'); tree.jstree({ 'core': { data: null } }); $("#xr ...
- MVC中在RAZOR 模板里突然了现了 CANNOT RESOLVE SYMBOL ‘VIEWBAG’ 的错误提示
然后在Razor中出现了@ViewBag的不可用,@Url不可用,@Html 这些变量都不能用了. 异常提示: 编译器错误消息: CS0426: 类型“XX.Model.System”中不存在类型名称 ...