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
时间: 2024-10-26 09:59:39

svn1.6在centos6下的使用的相关文章

Centos6下iptables配置Xtables-Addons和GeoIP屏蔽某个国家ip

 下面来为各位介绍一个Centos6下iptables配置Xtables-Addons和GeoIP屏蔽某个国家ip例子,希望文章对各位有帮助.     今天服务器上流量猛增,ip都来自于中国,而且是非正常访问的ip,导致php-fpm耗CPU 100%,网站打开非常慢,本来已经使用iptables限制连接数,但由于同一ip的连接数达不到,所以没办法进行限制,只能采用屏蔽某个地区ip的方法了,Xtables-Addons就是这样的模块,只需要编译此模块,而不必编译系统内核,就可以和iptables

centos6下安装dedecms

 几经波折,终于安装成功!!!   一.centos6下安装WDCP 1.连接linux 在百度直接搜索下载xshell,通过ssh连接 2.安装wdcp 下载安装wget http://dl.wdlinux.cn:5180/lanmp_v2.2.1.tar.gztar zxvf lanmp_v2.2.1.tar.gz安装全部sh install.sh可选安装lnamp,lamp,lnmp三个中任一个 选择1,安装apache 选择1,安装php5.2  只安装wdcp服务器/虚拟主机管理系统面

Centos6 下Oracle 11g R2 安装

1准备 CentOS-6.5-x86_64-bin-DVD1 linux_11gR2_database_1of2 linux_11gR2_database_2of2 VMware Workstation 10.0.2 SSH Secure Shell Client instantclient_11_2 plsqldev10052安装虚拟机及CentOS (1)安装VMware Workstation (2)安装CentOS,主机命名为:oracledb (3)磁盘需要大于30G(经验值) (4)

CentOS6下 Docker的镜像管理的例子

镜像是Docker的灵魂 Docker的镜像是Docker容器运行的基础.学习Docker很重要的一点是镜像的使用. 使用默认docker命令下载的镜像是外部制作好的,而我希望从头做一个镜像,并自己管理. 本文在CentOS 6下使用Docker制作镜像,对这个过程做详细的记录. 理解镜像和容器 镜像(image)和容器(container)是什么关系? 镜像是静态的,容器是动态的 容器是镜像运行起来后的体现 镜像常用命令 查看镜像 docker images 将镜像保存为tar包 docker

VPS CentOS-6 下 LNMP HTTP web服务器的搭建步骤_Linux

笔者于昨天新入手了一个 VPS, 来作为个人博客wid实验室(widlabs.com)开发的实验环境.所以在这篇博文中, 将介绍 CentOS 6 下 LNMP HTTP 环境的搭建, 从使用 ssh 登录VPS讲起, 一直到将域名解析到服务器IP上这一完整的网站搭建流程. 新入手的VPS基本配置如下: 虚拟化技术: OpenVZ操作系统: CentOS-6 x86_64 BaseCPU: Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz内存: 2GB硬盘: 5

在CentOS6下制作CentOS5的镜像教程

安装镜像制作工具febootstrap yum -y install febootstrap 使用febootstrap 制作CentOS5镜像目录 febootstrap -i bash \ -i wget -i yum -i iputils -i iproute -i man -i vim-minimal \ -i openssh-server -i openssh-clients -i cronie-anacron -i crontabs \ centos5 centos5-image h

centos6下基于session绑定nat模型的lvs集群教程

实验环境:四台虚拟机,安装的操作系统是CentOS6.5,各自的功能及IP地址如下: Director:     eth0 192.168.2.1(作为VIP使用),eth1:10.0.0.1(作为DIP使用) RS1:     eth0:10.0.0.2 RS2:     eth0:10.0.0.3 数据库服务器:安装的mariadb     eth0:10.0.0.4 拓扑图:  实验步骤: 一.准备数据库服务器,安装mariadb,创建一个用于远程连接数据库的用户,创建一个数据库,用于两台

CentOS6下MySQL5.1升级至5.5版本全过程解析

Linux CentOS6环境下MySQL5.1升级至MySQL5.5版本详细步骤如下: 第一.备份数据库和网站文件 在折腾之前我们还是要备份数据库和网页文件到本地,以免出现问题影响当前的环境以及其他网站的运行. 第二.停止MYSQL运行以及卸载老版本     service mysqld stop #暂停MYSQL     yum remove mysql mysql-*  #卸载老版本MYSQL 通过上面的命令,我们先停止当前MYSQL的运行,然后再卸载老的MYSQL5.1版本数据库. 第三

CentOS6下安装mysql后,重置root密码方法

CentOS6CentOS 本人在CentOS6.4上安装万mysql后,无法通过root进入,因为安装的时候,并没有设置root密码,似乎有个初始随机密码,但是不记得了,太麻烦,直接重置root密码. 使用rpm包安装完mysql后,按照一下步骤重置root密码: 启动mysql: #/etc/init.d/mysql start 启动成功后查看mysql进程信息,获取mysqld_safe的安装目录(非常关键): #ps -ef | grep -i mysql root 3466 1 0 0