Copie comentarios de compromiso en el portapapeles de Windows

Hace poco vi un ingenioso hack para ClearCase donde el número de versión se agregó al portapapeles de Windows como parte de una confirmación. El truco se ve así:

@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 

Ahora, nos hemos movido (o hemos empezado a mover) de CC a Subversion y uno de mis usuarios está bastante interesado en tener la misma funcionalidad en Subversion (y supongo que TortoiseSVN).

¿Alguien ha visto o probado algo como esto en un entorno svn?

Sí, Tortoise SVN es compatible con los ganchos del lado del cliente .

Parece que crearía un enganche post-commit para ejecutar ...\path\to\perl ...\path\to\script.pl

Los ganchos post-commit reciben lo siguiente en @ARGV :

 $ARGV[0]: PATH $ARGV[1]: DEPTH $ARGV[2]: MESSAGEFILE $ARGV[3]: REVISION $ARGV[4]: ERROR $ARGV[5]: CWD 

Estos se definen en el documento vinculado.

Entonces el guion sería

 use strict; use warnings; use Win32::Clipboard qw( ); my $clip = Win32::Clipboard(); $clip->Set($ARGV[3]); 

No probado.

Terminé escribiendo un gancho del lado del cliente que solo usaba herramientas estándar de Windows. El file bat resultante, "tortoisesvn-post-commit.bat", terminó así

 @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 

Entonces fue una tarea fácil configurar una llamada de TortoiseSVN para usar esto. Vaya a la configuration, luego "Hook Scripts" y agregue un enlace con el tipo "post-commit-hook" y apúntelo al script anterior.