将提交注释复制到Windows剪贴板

时间:2013-05-16 07:41:51

标签: perl svn tortoisesvn commit clearcase

我最近看到了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环境中看到或尝试过类似的东西吗?

2 个答案:

答案 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”的钩子,并将其指向上面的脚本。