SVN:入门级安装和源码安装、Hooks设置
来源:互联网 发布:网络快车的新政策 编辑:程序博客网 时间:2024/05/18 21:09
新:
1. mkdir /data/svn
2. svnadmin create data
3. svnserve -d -r /home/huangz/data/svn/data --listen-port 8999
4.在本机:svn co file:///home/huangz/data/svn/data,远程 svn co svn://192.168.1.191:8999 data
1.在Ubuntu系统中下载和安装SVN。
(开源的项目,其官网为http://subversion.apache.org/packages.html)
在Ubuntu中可以直接使用以下命令进行安装:
$ apt-get install subversion$ apt-get install libapache2-svn
2. 我的工作目录在/home/hz/下,故在创建SVN项目仓库时:(注意该用户需要有对目录的操作权限)
$mkdir /data/ 创建目录
$mkdir /data/svn 创建svn根目录
$svnadmin create/data/svn/drug //创建项目仓库drug
$svn import -m "导入SVN" /project file:///home/hz/data/svn/drug 将当前目录的project文件夹导入SVN项目库中。
即完成初步的创建工作。
3. 开启SVN服务
svnserve --help
svnserve -d -r /home/hz/data/svn/drug / --listen-port 8999 //开启服务,端口号为8999
至此,如果该机器的IP为10.65.9.200,在window下可以安装小乌龟(我装的版本是TortoiseSVN-1.7.3.22386-win32-svn-1.7.2)进行check out。地址应写成svn://10.65.9.200:8999。则可以自动将drug目录下的内容下载。
其他辅助命令
1068 ping -c 1 jx-dt-dev01.jx //ping,查看网络是否通
1069 netstat -a|grep 8999 //查看网络状态
1071 cd drug
1072 ll
1073 cd conf //用户组和权限的配置文件
1074 ll
1075 cat passwd //查看用户组及权限
1076 cat authz //查看用户组及权限
ping -c 1 hz.jx
svnserve -d -r /home/hz/repos --listen-port 5918
ps ux
kill -9 18809
补充说明:
1.来到E:\svn\sise_repository\conf目录,修改svnserve.conf:
# auth-access = write
# password-db = passwd
改为:
auth-access = write //通过验证的用户才能有读写的权限
password-db = passwd //验证用户所使用的文件passwd
2.然后修改同目录的passwd文件,去掉下面三行的注释:
# [users]
# harry = harryssecret
# sally = sallyssecret
最后变成:
[users]
harry = 123456 //以名值的方式存储用户名和密码 “用户名=密码”
sally = 654321
3.一样的,修改同目录下的authz文件来设置访问权限
在[groups]下创建用户组例如这里是
[groups]
Admin=admin
Developer=developer1,developer2
以上便创建了两个用户组,分别是admin和developer和其相应的组的成员。
设置访问路径(记得需要设置)
[/]
*=r
@admin=rw
如上所示,所有的用户对整个svn目录下的文件都可以读取,admin组有读写的权限(“*”代表所有的用户,r代表读 w代表写)
可设置具体的版本库的访问权限如下:
[版本库A:/]
@developer=rw
如上设置,表示所有developer组的成员对于“版本库A”下边的所有文件都有读写的权限
我的配置:As shown below each section defines authorizations for the path and
(optional) repository specified by the section name.
# [/foo/bar]
# harry = rw
# &joe = r
# * =
[/test] #则 checkout 时应svn://10.65.9.200:8999/test 如果[/] 则 checkout 时应svn://10.65.9.200:8999
* =
udw = rw
hz = r
# [repository:/baz/fuz]
# @harry_and_sally = rw
# * = r
[repos:/]
udw = rw
hz = r
* =
源码安装方法
下载与安装
1)从http://subversion.apache.org/source-code.html下载源码,我下的版本subversion-1.7.2.tar.gz。
tar xzvf subversion-1.7.2.tar.gz
cd subversion-1.7.2
./configure --prefix=/home/work/local/svn
将出错,报错:缺依赖项apr。
2)百度一下,可以下载到apr、我下的版本apr-1.4.5.tar.gz。解压和安装:
tar xzvf apr-1.4.5.tar.gz
cd apr-1.4.5
./configure --prefix=/home/huangzhen01/local
./configure --prefix=/home/huangzhen01/local/apr
make
make install
回到 subversion-1.7.2目录:
cd ..
cd subversion-1.7.2
./configure --prefix=/home/huangzhen01/local/svn --with-apr=/home/huangzhen01/local/apr/
将出错,报错:缺依赖项apr-util。
3)百度一下,下载apr-util。我下的版本apr-util-1.4.1.tar-gz。解压和安装:
1002 tar xzvf apr-util-1.4.1.tar.gz
1003 cd apr-util-1.4.1
1004 ll
1005 ./configure --prefix=/home/huangzhen01/local/aprutil --with-apr=/home/huangzhen01/local/apr
1006 make
1007 make install
1008 cd ..
1009 cd subversion-1.7.2
1010 ./configure --prefix=/home/huangzhen01/local/svn --with-apr=/home/huangzhen01/local/apr/ --with-apr-
util=/home/huangzhen01/local/aprutil/
将出错,报错:缺依赖项sqlite。
4)百度一下,下载sqlite源码。我下的版本sqlite-autoconf-3070900.tar.gz。解压和安装: tar xzvf sqlite-autoconf-3070900.tar.gz
1014 cd sqlite-autoconf-3070900
1015 ll
1016 ./configure --prefix=/home/huangzhen01/local/sqlite
1017 make
1021 make install
1022 cd ..
1023 cd subversion-1.7.2
1024 ./configure --prefix=/home/huangzhen01/local/svn --with-apr=/home/huangzhen01/local/apr/ --with-apr-util=/home/huangzhen01/local/aprutil/ --with-sqlite=/home/huangzhen01/local/sqlite/
1025 make
1026 make install
安装完毕。
SVN的Hooks功能--强制添加注释和允许修改注释
很多SVN版本库在提交代码的时候要求添加注释信息,而且还有最短长度的限制。这是如何实现的?这个话题就涉及到了svn的Hooks功能的使用。
本文欢迎自由转载,但请标明出处和本文链接,并保持本文的完整性。
CU: Godbach(http://blog.chinaunix.net/u/33048/showart_1908522.html)
Apr 23, 2009
所谓hooks,可以类似理解Linux内核Netfilter框架的hook点和hook函数的概念。当用户在维护代码的过程中,其执行的相关动作正好触发了相关hook点,就会去执行对应hook点的脚本。
SVN版本库目录下有hooks目录,里面有很多.tmpl的文件。这些文件用以定义某些动作触发的hook脚本。默认状态下,这些脚本的后缀都是.tmpl,是没有起作用的。相当于Netfilter的各个hook点没有注册hook函数。所以,当用户执行相关维护代码动作的时候,也不会触发hook脚本。因此,在默认状态下,用户提交代码的时候,不用添加注释信息也会被版本看所接受。而且,用户想修改自己的注释时,会得到服务器拒绝的相关提示信息(本人搭建的svn server是这样的默认情形)。
那么如何设置hook脚本以保证强制用户添加注释,以及允许用户修改注释呢?
1. 强制添加注释信息( 经过以下约6个步骤 )
用户提交代码的动作,对应的是pre-commit。因此,可以修改pre-commit.tmpl文件。
文件名修改为pre-commit, Windows下可以修改为pre-commit.bat。这样可以让系统知道该文件时可执行文件。
将文件中以下几行内容注释掉, 前面添加'#'
$SVNLOOK log -t "$TXN" "$REPOS" |
grep "[a-zA-Z0-9]" > /dev/null || exit 1
commit-access-control.pl "$REPOS" "$TXN" commit-access-control.cfg || exit 1
并在此位置添加如下几行:
LOGMSG=`$SVNLOOK log -t "$TXN" "$REPOS" | grep "[a-zA-Z0-9]" | wc -c`
if [ "$LOGMSG" -lt 5 ]; #要求注释不能少于5个字符(数字和字母),您可自定义
then
echo -e "nLog message cann't be empty! you must input more than 5 chars as comment!." 1>&2
exit 1
fi
保存,退出。
给pre-commit添加可执行权限:
chmod +x pre-commit
经过该设置,用户提交代码时注释信息小于5个字符将会得到警告,并且代码不会被提交到版本看
2. 允许用户修改注释信息
用户修改注释信息的动作,对应的是pre-revpos-change. 将hooks/下pre-revpos-change.tmpl
更名为pre-revpos-change。通常该文件包含的功能就是允许用户修改注释信息,因此只要将该文件加上可执行权限即可:
#chmod +x pre-revpos-change
默认文件内容如下,如果不是下面这些内容的话,可以对照修改即可:
REPOS="$1"
REV="$2"
USER="$3"
PROPNAME="$4"
ACTION="$5"
if [ "$ACTION" = "M" -a "$PROPNAME" = "svn:log" ];
then
exit 0;
fi
echo "Changing revision properties other than svn:log is prohibited" >&2
exit 1
这样,就可以允许用户修改注释信息了。
以上对SVN的配置,参考了如下连接的内容,在此表示感谢:
http://hi.baidu.com/cnydpl/blog/item/9d6ac931d300fa1eeac4af63.html
下面是SVN版本库在Win下建立的,允许用户修改注释信息的脚本:
@ECHO OFF
set repos=%1
set rev=%2
set user=%3
set propname=%4
set action=%5
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Only allow changes to svn:log. The author, date and other revision
:: properties cannot be changed
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
if /I not '%propname%'=='svn:log' goto ERROR_PROPNAME
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Only allow modifications to svn:log (no addition/overwrite or deletion)
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
if /I not '%action%'=='M' goto ERROR_ACTION
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Make sure that the new svn:log message contains some text.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
set bIsEmpty=true
for /f "tokens=*" %%g in ('find /V ""') do (
set bIsEmpty=false
)
if '%bIsEmpty%'=='true' goto ERROR_EMPTY
goto :eof
:ERROR_EMPTY
echo Empty svn:log properties are not allowed. >&2
goto ERROR_EXIT
:ERROR_PROPNAME
echo Only changes to svn:log revision properties are allowed. >&2
goto ERROR_EXIT
:ERROR_ACTION
echo Only modifications to svn:log revision properties are allowed. >&2
goto ERROR_EXIT
:ERROR_EXIT
exit /b 1
在Win下pre-revpos-change文件名应改为pre-revpos-change.bat,这样Win知道是可执行文件。
Win下的修改方式参考了如下链接:
http://svn.haxx.se/users/archive-2006-03/0107.shtml
- SVN:入门级安装和源码安装、Hooks设置
- svn源码同步hooks
- svn安装和自启动设置
- SVN源码安装
- svn源码安装
- 源码安装svn
- SVN设置Hooks自动群发更新邮件
- SVN安装设置
- svn hooks
- Hadoop和HBase安装设置入门篇
- 源码安装svn serf_v1.2.1
- SVN 安装配置快速入门
- svn apache 安装 权限设置
- linux svn简单安装设置
- svn服务器端的安装和配置,并设置开机启动
- [Linux]svn服务的安装和启动设置
- 如何安装部署设置SVN服务器(windows和linux)
- Linux]svn服务的安装和启动设置
- Linux之并发多线程服务器-2
- HTTP GET与POST区别
- Swing 取色器
- jquery获取table下的td的select标签选中的值
- FFMPEG 1.0 在 Galaxy Tab 8.1 下运行失败的原因
- SVN:入门级安装和源码安装、Hooks设置
- 阅读源代码系列
- JSP九种内置对象及其作用
- How to run workflow using PL/SQL
- android之Notification通知
- php解析请求url并返回json数据
- something useful
- 阅读源代码系列
- java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream