TortoiseSVN Hook Scripts勾子应用
WScript.exe "D:\Program Files\TortoiseSVN\Hook\log_message_from_LogMsg.js"
Log自动追加
log_message_from_LogMsg.js
// ??提交?子(Start Commit Hook)脚本。
// 将当前目?中的“readme.txt”文件内容填入“提交??框”的日志信息中。
var args = WScript.Arguments; // ?子脚本被?用?,由TSVN?入的参数
var list = args(0); // 提交列表??文件路径
var message = args(1); // 日志消息??文件路径
var cwd = args(2); // 脚本?行的当前工作目?路径
// 使用FSO在当前工作目?中?找是否存在“readme.txt”文件
var fso = new ActiveXObject('Scripting.FileSystemObject');
var readme = 'D://Program Files//TortoiseSVN//Hook//LogMsg.txt';
if (fso.FileExists(readme)) {
// 使用当前系?默?的??方式(ANSI)?取文本文件
var ts = fso.OpenTextFile(readme, 1, false);
var text = ts.ReadAll();
ts.Close();
// 使用ADO Stream?象重新?出utf-8??的文件,覆盖日志消息文件
// TSVN将从消息文件中以utf-8???出消息,并填入提交??框
var stream = new ActiveXObject('Adodb.Stream');
stream.Mode = 3; // read/write
stream.Open();
stream.Type = 2; // text
stream.Charset = 'utf-8';
stream.WriteText(text);
stream.SaveToFile(message, 2); // overwrite
stream.Close();
}LogMsg.txt
修正:
Log 检查大小
log_check.js
var objArgs,num;
objArgs = WScript.Arguments;
num = objArgs.length;
var fileLog = objArgs(2);
var fso = new ActiveXObject('Scripting.FileSystemObject');
if (fso.FileExists(fileLog))
{
var ts = fso.OpenTextFile(fileLog, 1, false);
if (ts.AtEndOfLine)
{
WScript.Echo("Please Input Log Char >= 8!");
WScript.Quit(1);
}
else
{
var text = ts.ReadAll();
if(text.length < 8)
{
WScript.Echo("Please Input Log Char >= 8!");
WScript.Quit(1);
}
}
}
VSVN构子
@echo off
::
:: Stops commits that have empty log messages.
::@echo off
set svnlook="C:/Program Files/VisualSVN Server/bin/svnlook.exe"
setlocalrem Subversion sends through the path to the repository and transaction id
set REPOS=%1
set TXN=%2rem check for an empty log message
%svnlook% log %REPOS% -t %TXN% | findstr . > nul
if %errorlevel% gtr 0 (goto err) else exit 0:err
echo 你提交必须追加Log 谢谢! 1>&2
exit 1