Копировать коммит комментарии в буфер обмена Windows
Недавно я увидел изящный хак для 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 ответа
В итоге я написал хук на стороне клиента, который использовал только стандартные инструменты 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" и укажите это на приведенный выше скрипт.
Да, 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]);
Непроверенные.