2011-07-15 59 views
2

当我在我的VisualSVN存储库上使用post-commit挂钩时,TortoiseSVN在“发送内容”上挂起(冻结)。以下是挂钩:使用post-commit挂钩时TortoiseSVN挂起

cd C:\Sysinternals\ 

PsExec \\\OtherComputer TortoiseProc /command:update /path:"C:\MyPath\" /closeonend:4 

内容已发送,但需要进行本地更新或标记为过时。有任何想法吗?

+0

您可以使用命令行客户端成功提交吗? –

+0

使用/命令:提交只是提出了提交图形用户界面。有另一种方法吗?但是,不,使用/命令:提交结果的行为相同。 感谢您的格式帮助,顺便说一下。 – Chris

+0

我的意思是[命令行客户端](http://svnbook.red-bean.com/nightly/en/svn.ref.svn.c.commit.html)。如果您尚未拥有它,请在http://www.sliksvn.com/en/download下载。 –

回答

1

这看起来像一个本地钩子。我不认为你可以像这样使用PsExec。我想你打开另一台电脑上的PsExec会话,它就在那里。它没有办法查看脚本中的下一行。即TortoiseProc没有被送入PsExec。
我想你需要在另一台机器上安装SVN客户端(命令行客户端)。然后做一个bat文件(updateme.bat),将其放置在该机器上,那么你可以做这样的事情(在一行上):

c:\sysinternals\PsExec \\OtherComputer c:\updateme.bat 
2

的钩子脚本已完成第一,使提交成功。所以客户必须等待。如果你的钩子脚本花费太长时间或者根本没有完成,那么提交就会挂起。 您可以尝试在单独的进程中的钩子脚本中启动长时间运行的命令,以便钩子脚本本身立即完成。

但是:如果OtherComputer是您尝试从中提交的计算机,并且脚本尝试更新完全相同的工作副本,那么这也无济于事:更新必须等到提交完成,但提交等待运行更新的钩子脚本完成 - 你有一个死锁。