Linux之svn强制有注释才能提交

在hooks目录下添加一个脚本就ok
#!/usr/bin/env python
#-*- encoding: utf-8 -*-
#########################################################################
# File Name: pre-commit.py
# Author: LookBack
# Email: admin#dwhd.org
# Version:
# Created Time: 2015年09月28日 星期一 18时53分18秒
#########################################################################
#SVN提交前检查钩子
#功能:
# 1、强制填写提交注释,内容10字节以上
# 2、强制注释格式为:xxx:xxx
# 3、提交文件检查,过滤不允许提交的文件
#########################################################################

import sys
import os
import re

def main(argv):
 (repos, txn) = argv
 badlist = (".*config\.php$", ".*/php/cache", ".*test", "config\.js$","^.*\.db$")
 message = "".join(os.popen("/usr/bin/svnlook log '%s' -t '%s'" % (repos, txn)).readlines()).strip()
 if len(message) < 10:
  sys.stderr.write("请输入本次提交的修改内容,10字节以上.\n");
  sys.exit(1)
 if message.find(':') < 1:
  sys.stderr.write("请按规范填写注释,格式为:功能名: 修改说明.\n");
  sys.exit(1)

 changelist = os.popen("/usr/bin/svnlook changed '%s' -t '%s'" % (repos, txn)).readlines()
 for line in changelist:
  for pattern in badlist:
   if re.search(pattern, line):
    sys.stderr.write("请不要把 %s 加入版本库.\n" % line[1:].strip());
    sys.exit(1)
 sys.exit(0)

if __name__ == "__main__":
 main(sys.argv[1:])
根据系统自带的pre-commit.teml中的内容弄清楚这段脚本的含义:
The pre-commit hook is invoked before a Subversion txn is
# committed. Subversion runs this hook by invoking a program
# (script, executable, binary, etc.) named 'pre-commit' (for which
# this file is a template), with the following ordered arguments:
#
# [1] REPOS-PATH (the path to this repository)
# [2] TXN-NAME (the name of the txn about to be committed)
#
# [STDIN] LOCK-TOKENS ** the lock tokens are passed via STDIN.
#
# If STDIN contains the line "LOCK-TOKENS:\n" (the "\n" denotes a
# single newline), the lines following it are the lock tokens for
# this commit. The end of the list is marked by a line containing
# only a newline character.

时间: 2024-10-27 21:27:14

Linux之svn强制有注释才能提交的相关文章

SHELL实现svn必须添加注释后提交

最近在公司的项目中,因为很多人都参与开发,于是我们毫不犹豫的使用了svn来管理我们的项目,我们也特别强调,在提交代码的时候必须要添加注释,如果不添加注释,代码版本多了,根本搞不清,哪个版本改了什么东西?所以如果加一些注释的话,我们看起来,也方便很多.但是在真正的实际中,很多人都没有添加相关的注释,这里面的原因很多,因此决定通过脚本来控制这一过程,也就是实现必须要通过添加描述信息才能顺利的提交你的代码!.所以在提交的时候,我会强制要求写注释.如果对svn的安装配置不怎么了解,请参考:linux s

Linux停SVN提交时强制写日志

Linux下SVN提交时强制写日志 SVN默认可以不写注释提交,有时候可能忘记写注释,有的人也没有写注释的习惯,导致翻看history的时候都不知道做了哪些更改,可以依照以下步骤修改SVN配置,强制提交SVN前写注释   步骤: 1.进入svn/code/hooks目录,在svn版本库的hooks文件夹下面,复制模版pre-commit.tmplcp pre-commit.tmpl pre-commitchmod +x pre-commit 2.编辑pre-commit文件:将:$SVNLOOK

如何设置SVN提交时强制添加注释

windows版本: 1.新建一个名为pre-commit.bat的文件并将该文件放在创建的库文件的hooks文件夹中 2.pre-commit.bat文件的内容如下: @echo off set SVN_BINDIR="C:\ProgramFiles\Subversion" set SVNLOOK="E:\freescm\freescm\SVN\bin\svnlook.exe" setlocal set REPOS=%1 set TXN=%2 rem check

Linux中svn提交文件后自动同步更新到网站目录

 下面来为各位介绍Linux中svn提交文件后自动同步更新到网站目录希望文章对各位有帮助.     有时,对于多文件需要上传到服务器的时候将会很麻烦,但是如果使用svn的钩子脚本就容易实现本地提交svn后,自动同步代码文件到远程服务器的网站目录下,而不必手动上传了. 首先,在网站目录下checkout代码,例如我的目录是/data/www/test svn co https://127.0.0.1/test/trunk/ /data/www/test/ 注意,这是因为有时我会在服务器上直接修改代

linux下svn提交忽略某些文件、目录(ignore属性

 svn也是一个目录同步了我们可以用它来做版本控制了,下面一起来看看关于linux下svn提交忽略某些文件.目录(ignore属性),希望例子对各位有帮助.     在项目中,有些文件是不需要将本地的提交到svn仓库,例如config.php文件,特别是定义了绝对路径的,或者是缓存目录.图片目录等,所以为了方便,在每次提交svn的时候,都需要忽略这些文件.目录,避免不慎提交引起团队中其他成员需要修改其本地的版本. linux下用svn propedit svn:ignore命令可以编辑忽略文件.

linux下svn常用指令

一下内容转载于:http://blog.chinaunix.net/space.php?uid=22976768&do=blog&id=1640924.这个总结的很好~ windows下的TortoiseSVN是资源管理器的一个插件,以覆盖图标表示文件状态,几乎所以命令都有图形界面支持,比较好用,这里就不多说.主要说说linux下svn的使用,因为linux下大部分的操作都是通过命令行来进行,所以必须得掌握linux下svn的常用指令.当然linux下也有模仿TortoiseSVN的lin

linux下svn命令使用大全

1.将文件checkout到本地目录 svn checkout path(path是服务器 上的目录)例如:svn checkout svn://192.168.1.1/pro/domain简写:svn co 2.往版本库中添加新的文件 svn add file例如:svn add test.php(添加test.php)svn add *.php(添加当前目录下所有的php文件) 3.将改动的文件提交到版本库 svn commit -m "LogMessage" [-N] [--no

Linux下SVN服务器同时支持Apache的http和svnserve独立服务器两种模式且使用相同的访问权限账号_Linux

说明: 服务器操作系统:CentOS 6.x 服务器IP:192.168.21.134 实现目的: 1.在服务器上安装配置SVN服务: 2.配置SVN服务同时支持Apache的http和svnserve独立服务器两种模式访问: 3.Apache的http和svnserve独立服务器两种模式使用相同的访问权限账号. 具体操作: 一.关闭SELINUX vi /etc/selinux/config #SELINUX=enforcing #注释掉 #SELINUXTYPE=targeted #注释掉

linux下SVN安装与部署/读取/密码/用户详解

第一步:快速上手 Linux 安装svn  代码如下 复制代码 安装:apt-get install subversion(apt-get安装) 安装 : yum install subversion(yum安装) 测试是否成功  代码如下 复制代码 svnserve –version svnserve,版本 1.6.6 (r40053) 编译于 Dec 12 2009,05:04:54 下列版本库后端(FS) 模块可用: * fs_base : 模块只能操作BDB版本库. * fs_fs :