基于上次的linux安装svn环境学习。
1,学习的有linux下客户端svn的学习(我这里虚拟机搭建了3个linux 然后设置了ssh免密登录,并分别设置了他们的固定ip)
svn co(checkout)|update(更新) svn://装有svn服务端的ip/test/ /svndata(下载路径)/ --username=test --password=test
2,我们一般项目的3个目录trunk(主干)用于上线 branch(支条)分支用于平常开发 tag 标签
3,学习svn的hooks(钩子)linux下的设置
hooks里面就是一些shell脚本在你提交或者提交。。动作所触发的事件(我是这么理解的)
hooks目录在app/svndata/test/下面cd进入 “ll”就会看到里面很多模板(对于不会shell脚本的可以百度)
我是这么学习的(基本语法看了遍能看懂还不会写(*^▽^*))。
这里有我学习的2个案例一个是pre-commit 提交前必须输入信息、另外一个post-commit提交后自动同步到另外一台 机子环境里,
1,pre-commit
#!/bin/sh (头部信息必须填写的)
REPOS="$1"(参数)
TXN="$2"(参数)
SVNLOOK=/usr/bin/svnlook
# check that logmessage contains at least 10 alphanumeric characters
# 后面的意思大概就是你在提交时 -lt 10不能小于10个字符否则失败
LOGMSG=`$SVNLOOK log -t "$TXN" "$REPOS" | tr -d ' ' | wc -c`
if [ "$LOGMSG" -lt 10 ];
then
echo -e "\nEmpty log message not allowed. Commit aborted!" 1>&2
exit 1
fi
2,post-commit文件的内容
#!/bin/sh
REPOS="$1" # 仓库的路径
REV="$2" # 新提交的版本号
LOGFILE=/var/log/svn.log # 钩子脚本的日志
# 脚本的标准输出和标准错误输出都打印到日志文件里
exec 1>>"$LOGFILE"
exec 2>&1
SVNLOOK=/usr/bin/svnlook
TIME=$(date "+%Y-%m-%d %H:%M:%S")
AUTHOR=$($SVNLOOK author -r $REV "$REPOS") #提交作者
CHANGEDDIRS=$($SVNLOOK dirs-changed $REPOS) #修改的目录集合
MESSAGE=$($SVNLOOK log -r $REV "$REPOS") #提交时的备注信息,不建议用中文
# SVN客户端配置,需要自行修改**********************************
CLIENT1=192.168.0.113 #服务器地址
CLIENTSVNROOT=/test/data/www #WEB服务器的代码根目录
SVNUSER="test"
SVNPASSWD="test"
echo "**************************************************************"
echo "提交版本:$REV 作者:$AUTHOR"
echo "提交备注:$MESSAGE"
echo "修改目录:$(echo $CHANGEDDIRS | tr '\n' ' ')"
# 无密码ssh连接到客户端服务器,执行svn up
/usr/bin/ssh root@$CLIENT1 "export LANG=en_US.UTF-8; svn up --non-interactive --
username $SVNUSER --password $SVNPASSWD '$CLIENTSVNROOT'"
以上是修改完后如果是在win下编写的还需要格式化
(dos2unix post-commit |pre-commit)
chmod 755 post-commit | pre-commit 设置下权限
说明上面我是做了集群在虚拟机(vbox)创建了3个(这里用了2个)你如果没有做用一个测试也可以(多个需要ssh 免密设置)
好了以上就是自己今天的学习,说明以上我是找的视频加度娘(给自己加油看看能坚持一个月不)