我最近看到了ClearCase的一个漂亮的黑客攻击,其中版本号作为提交的一部分添加到Windows剪贴板中。黑客看起来像这样:
@rem = ' PERL for Windows NT - ccperl must be in search path
@echo off
ccperl %0 %1 %2 %3 %4 %5 %6 %7 %8 %9
goto endofperl
@rem ';
#$CLEARCASE_COMMENT = $ENV{CLEARCASE_COMMENT};
#$CLEARCASE_FILE1 = $ENV{CLEARCASE_PN};
#$CLEARCASE_FILE2 = $ENV{CLEARCASE_XPN};
#print "DEBUG: $CLEARCASE_FILE2\n";
#$message = "Element: $CLEARCASE_FILE2";
use Win32::Clipboard;
Win32::Clipboard::Set($ENV{CLEARCASE_XPN});
#$CLIP = Win32::Clipboard();
#$CLIP->Set($ENV{CLEARCASE_XPN});
__END__
:endofperl
现在,我们已经从CC移动(或开始移动)到Subversion,我的一个用户非常热衷于在Subversion中使用相同的功能(我猜TortoiseSVN)。
有人在svn环境中看到或尝试过类似的东西吗?
答案 0 :(得分:2)
是的,Tortoise SVN支持client-side hooks。
看起来您要创建一个post-commit
挂钩来运行...\path\to\perl ...\path\to\script.pl
提交后挂钩在@ARGV
:
$ARGV[0]: PATH
$ARGV[1]: DEPTH
$ARGV[2]: MESSAGEFILE
$ARGV[3]: REVISION
$ARGV[4]: ERROR
$ARGV[5]: CWD
这些是在链接文档中定义的。
所以脚本将是
use strict;
use warnings;
use Win32::Clipboard qw( );
my $clip = Win32::Clipboard();
$clip->Set($ARGV[3]);
未测试。
答案 1 :(得分:0)
我最终编写了一个仅使用标准Windows工具的客户端钩子。生成的bat文件“tortoisesvn-post-commit.bat”就像这样结束了
@echo off
rem TortoiseSVN Client Side post-commit hook script
rem script <Path> <Depth> <MessageFile> <Revision> <Error>
setlocal
set tsvnPath=%1
set tsvnDepth=%2
set tsvnMsgFile=%3
set tsvnRevision=%4
set tsvnError=%5
set tsvnCwd=%6
rem send the revision to the clipboard
echo %tsvnRevision% | clip
endlocal
从TortoiseSVN设置呼叫以使用它是一项轻松的任务。转到设置,然后“Hook Scripts”,并添加一个类型为“post-commit-hook”的钩子,并将其指向上面的脚本。