博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
svn1.6在centos6下的使用
阅读量:4706 次
发布时间:2019-06-10

本文共 2833 字,大约阅读时间需要 9 分钟。

版本

CentOS 6;svn 1.6.11

svn1.6版本的不足在于,每个目录递归存在.svn目录;从1.7开始就只有root节点目录存在.svn目录,和git一样了。
但是因为还在用CentOS6,又不想手动编译安装,先缓缓。

常用命令

初始代码下载到本地

svn co http://
.

新添加文件

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/authsvn co http://some_site.com/svn/ecshop .svn add . --force   svn revert --recursive tempsvn add --non-recursive tempsvn add --non-recursive temp/cachessvn add --non-recursive temp/compiledsvn add --non-recursive temp/staticsvn add --non-recursive temp/static_cachessvn add --non-recursive temp/authsvn 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 updatesvn co   =   svn checkoutsvn st   =   svn statussvn ps   =   svn propsetsvn ci   =   svn commit

命令范围

在某个子目录下,执行的命令一般是针对子目录下的目录和文件的。比如你的目录为:

foo    bar    test

如果你修改了bar和test两个目录下的内容,但处于bar目录,svn st得到的是bar目录下的状态信息,即:

cd barsvn st

其他问题

这里只考虑apache http服务器和svn的集成

post-commit脚本

your_repo_path/hooks/post-commit.tmpl复制一份为post-commit,加可执行权限,用户和组为apache:

chmod +x post-commitchown 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,cp936set termencoding=utf-8  set encoding=utf-8

然后再去看日志文件

Write lock stolen

这个问题发生在svn delete xxx时.解决办法是:

touch xxxsvn revert xxxrm xxx

转载于:https://www.cnblogs.com/zjutzz/p/4887288.html

你可能感兴趣的文章
雷林鹏分享:MySQL PHP 语法
查看>>
Java学习笔记(9)
查看>>
LVM逻辑卷管理
查看>>
zabbix 分布式zabbix_proxy
查看>>
spring 时间格式化注解@DateTimeFormat和 @JsonFormat
查看>>
C语言第二次实验报告
查看>>
Go语言学习笔记(七)
查看>>
Linux查找疑似被挂木马文件方法以及Nginx根据不同IP做不同反向代理
查看>>
phpstorm 2018.1.6 和谐版安装方法
查看>>
NFS应用场景及环境搭建
查看>>
让xamarin的Entry绑定时,支持Nullable类型
查看>>
kivy学习三:打包成window可执行文件
查看>>
兄弟连PHP培训教你提升效率的20个要点
查看>>
【快报】基于K2 BPM的新一代协同办公门户实践交流会
查看>>
关于MySQL的行转列的简单应用
查看>>
Queue 队列的用法
查看>>
CDM常用命令
查看>>
游戏开发中常用的设计模式
查看>>
Linux 中/etc/profile、~/.bash_profile 环境变量配置及执行过程
查看>>
JAVA:图形之利用FontMetrics类居中
查看>>