Fork me on GitHub

svn钩子强制提交注释和限制指定类型文件提交

在服务器通过设置svn服务端钩子可以强制开发人员提交注释和限制指定类型的文件提交。

工具/原料

  • svn软件

  • 批处理文件


##方法/步骤

1.新建一个记事本文件,输入下面文字:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
@echo

rem SVN强制写注释的hooks脚本(Windows)

rem 文件名是: pre-commit.bat,放到repository/hooks目录下

setlocal

set SVN_BINDIR="C:\Program Files (x86)\SlikSvn\bin"

set REPOS=%1

set TXN=%2


rem 检查是否提交日志

%SVN_BINDIR%\svnlook log -t "%TXN%" "%REPOS%" | findstr "......" > nul

if %errorlevel% gtr 0 goto nolog


rem 过滤文件类型

%SVN_BINDIR%\svnlook changed -t "%TXN%" "%REPOS%" | findstr "\.obj$"

if %errorlevel% EQU 0 (goto SuffixError1)

%SVN_BINDIR%\svnlook changed -t "%TXN%" "%REPOS%" | findstr "\.pdb$"

if %errorlevel% EQU 0 (goto SuffixError2)

%SVN_BINDIR%\svnlook changed -t "%TXN%" "%REPOS%" | findstr "\.idb$"

if %errorlevel% EQU 0 (goto SuffixError3)

%SVN_BINDIR%\svnlook changed -t "%TXN%" "%REPOS%" | findstr "\.pch$"

if %errorlevel% EQU 0 (goto SuffixError4)

%SVN_BINDIR%\svnlook changed -t "%TXN%" "%REPOS%" | findstr "\.res$"

if %errorlevel% EQU 0 (goto SuffixError5)

%SVN_BINDIR%\svnlook changed -t "%TXN%" "%REPOS%" | findstr "\.exp$"

if %errorlevel% EQU 0 (goto SuffixError6)

%SVN_BINDIR%\svnlook changed -t "%TXN%" "%REPOS%" | findstr "\.ilk$"

if %errorlevel% EQU 0 (goto SuffixError7)

%SVN_BINDIR%\svnlook changed -t "%TXN%" "%REPOS%" | findstr "\.dep$"

if %errorlevel% EQU 0 (goto SuffixError8)

%SVN_BINDIR%\svnlook changed -t "%TXN%" "%REPOS%" | findstr "\.suo$"

if %errorlevel% EQU 0 (goto SuffixError10)

%SVN_BINDIR%\svnlook changed -t "%TXN%" "%REPOS%" | findstr "\.ncb$"

if %errorlevel% EQU 0 (goto SuffixError11)

%SVN_BINDIR%\svnlook changed -t "%TXN%" "%REPOS%" | findstr "\.aps$"

if %errorlevel% EQU 0 (goto SuffixError12)

%SVN_BINDIR%\svnlook changed -t "%TXN%" "%REPOS%" | findstr "\.log$"

if %errorlevel% EQU 0 (goto SuffixError13)

%SVN_BINDIR%\svnlook changed -t "%TXN%" "%REPOS%" | findstr "\.user$"

if %errorlevel% EQU 0 (goto SuffixError14)


exit 0


:nolog

echo 日志(Message)是跟踪文档的重要信息,必须输入,不得输入无意义字符,长度不得小于6个字符。 1>&2

exit 100


:SuffixError1

echo obj文件禁止提交,请检查: "%TXN%" 1>&2

exit 1


:SuffixError2

echo pdb文件禁止提交,请检查: "%TXN%" 1>&2

exit 2


:SuffixError3

echo idb文件禁止提交,请检查! 1>&2

exit 3


:SuffixError4

echo pch文件禁止提交,请检查! 1>&2

exit 4


:SuffixError5

echo res文件禁止提交,请检查! 1>&2

exit 5


:SuffixError6

echo exp文件禁止提交,请检查! 1>&2

exit 6


:SuffixError7

echo ilk文件禁止提交,请检查! 1>&2

exit 7


:SuffixError8

echo dep文件禁止提交,请检查! 1>&2

exit 8


:SuffixError10

echo suo文件禁止提交,请检查! 1>&2

exit 10


:SuffixError11

echo ncb文件禁止提交,请检查! 1>&2

exit 11


:SuffixError12

echo aps文件禁止提交,请检查! 1>&2

exit 12


:SuffixError13

echo log文件禁止提交,请检查! 1>&2

exit 13


:SuffixError14

echo user文件禁止提交,请检查! 1>&2

exit 14

2.将这个文件重命名为pre-commit.bat

3.将pre-commit.bat复制到服务器上svn仓库的hook目录下,比如我的是D:\Repository\VisDraw\hooks下面。

-------------本文结束感谢您的阅读-------------