修改SVN提交log

采用SVN进行代码管理,在平时开发中常遇到代码提之后,查看提交日志,发现提交的comment跟实际功能不够贴切,想要优化。或者代码提交之后发现没有写comment,想要补充。

TortoiseGit 默认必须填写comment,TortoiseSVN没有限制,难免出现点击提交按钮时没有填写comment。

使用TortoiseSVN修改comment,大致遇到

ask the administrator to create a pre-revprop-change hook

这样的提示。

怎样 create a pre-revprop-change hook ?

在 Linux 系统下:

  1. 进入 svn 仓库的 hooks 目录
  2. 拷贝 pre-revprop-change.tmpl 为 pre-revprop-change
  3. 给 pre-revprop-change 增加执行权限

完成设置,重新使用 TortoiseSVN 修改comment即可。

SVN无法显示Log

使用TortoiseSVN无法查看文件提交日志,在服务器执行 svn log wp-login.php 看到的信息是

svn: Item is not readable

此时修改 svnserve.conf 文件,将 anon-access = read 修改为 anon-access = none

# 修改前
anon-access = read
# 修改后
anon-access = none

再次执行 svn log wp-login.php 可以看到文件提交日志。

Linux安装SVN

使用 SVN 进行网站的发布工具。

在 Linux 上安装 SVN 步骤:

安装 SVN

# yum install subversion

创建 SVN 仓库

# cd /opt
# mkdir svn
# svnadmin create /opt/svn/web

通过上述命令在服务器 /opt/svn 目录下创建了一个仓库 web。接下来需要修改仓库的配置文件。

配置 SVN 仓库

# cd /opt/svn/web
# ls
conf db format hooks locks README.txt
# ls
authz passwd svnserve.conf

conf 目录下存放 SVN 仓库相关配置文件。

1、修改 authz 文件
authz 是 SVN 认证文件,vim 打开

[groups]
admin = svn_admin
[/]
@admin = rw

在 [groups] 下增加 admin,在文件末尾增加 [/],换行增加 @admin=rw。@ 紧跟着用户组,等号右侧是读写权限。

2、修改 passwd 文件

passwd 是 SVN 账号密码文件,vim 打开

[users]
svn_admin = svn_password

在 [users] 下增加 svn_admin,等号右侧是该账号的密码

3、修改 svnserve.conf 文件

svnserve.conf 是该 SVN 仓库运行配置,vim 打开

[general]
anon-access = read
auth-access = write
authz-db = /opt/svn/web/conf/authz
password-db = /opt/svn/web/conf/passwd

在 [general] 下增加访问控制和 authz-db、password-db 文件路径。

启动 SVN 仓库

# svnserve -d -r /opt/svn/web/

启动 SVN 仓库之后,SVN server 即创建完成。

检查仓库运行

# netstat -anp | grep svn
tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN 15019/svnserve

检查端口可以发现 SVN serve 已经运行在端口 3690。

通过 telnet 127.0.0.1 3690 连接该端口可以收到类似这样的信息 ( success ( 2 2 ( ) ( edit-pipeline svndiff1 absent-entries commit-revprops depth log-revprops partial-replay ) ) )。

通过 curl http://127.0.0.1:3690 可以收到类似这样的信息 ( success ( 2 2 ( ) ( edit-pipeline svndiff1 absent-entries commit-revprops depth log-revprops partial-replay ) ) ) 。

checkout 仓库

通过 SVN TortoiseSVN 客户端 checkout 仓库 svn://127.0.0.1 验证账户并登录就可以正常使用 SVN 了。进一步可以了解如何使用 https 访问 SVN 服务。

后续在 Linux 上部署 SVN 更新脚本即可实现 SVN 管理站点发布上线。

开机启动 SVN 服务

一般来说,Linux 服务器重启情况比较少。但为了方便,可以 SVN 服务添加到开机启动项中。

在文件 /etc/rc.local 中增加一行 /usr/bin/svnserve -d -r /opt/svn/web/

不使用 /etc/init.d/svnserver 启动 SVN 服务是因为该命令默认启动时没有携带 -r 参数,即默认没有指定仓库路径。