3

我最近看到了 ClearCase 的一个漂亮的 hack,其中版本号作为提交的一部分被添加到 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 环境中看到或尝试过这样的事情吗?

4

2 回答 2

2

是的,Tortoise SVN 确实支持客户端钩子

看起来你会创建一个post-commit钩子来运行...\path\to\perl ...\path\to\script.pl

post-commit 挂钩接收以下内容@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]);

未经测试。

于 2013-05-16T07:49:42.237 回答
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 建立一个调用来使用它是一项简单的任务。转到设置,然后“钩子脚本”,并添加一个类型为“post-commit-hook”的钩子并将其指向上面的脚本。

于 2013-06-13T14:06:11.313 回答