2013-04-04 66 views
3

的情况时出错我正在使用VisualSVN Server来管理源文件夹。它安装在Windows XP机器上,可以访问网络磁盘。post-commit挂钩,svn:E020024:解决

名为W:这个网盘,我的文件夹上进行结帐这样:

svn update W:\Project 

的问题是:

svn checkout https://server:443/svn/Project W:\Project --username=user --password=pass 

我现在就可以使用这个命令来更新这个文件夹:

我想添加一个运行此命令的post-commit钩子:

svn update W:\Project 

但是当我承诺,会出现这样的错误:

At revision: 123 
post-commit hook failed (exit code 1) with output: 
svn: E020024: Error resolving case of 'W:\Project' 

任何想法?我不知道这是否是一种好的做法,我的目标是将该项目的副本保存在svn服务器外的另一个磁盘上并进行备份。

+0

您是否试图使用post-commit hook来提交您想要'svn update'的同一个工作副本?什么是完整的钩子代码? – bahrep 2013-04-04 10:04:52

+0

我刚刚编辑帖子 – 2013-04-04 10:08:45

+1

您可能想使用[Continuous Integration](http://en.wikipedia.org/wiki/Continuous_integration#Software)服务器来进行研究。运行[TeamCity](http://www.jetbrains.com/teamcity/),[Jenkins](http://jenkins-ci.org/)或[Hudson](http://hudson-ci.org)(例如)会让你做到这一点(和更多),而不必将钩子添加到SVN。 – AlG 2013-04-04 11:40:17

回答

4

W:驱动器可能未映射到运行脚本的环境中。所有挂接脚本都在没有设置环境变量的情况下运行。您需要明确指定文件共享的服务器名称,或者在脚本中映射网络驱动器。

+0

未映射的驱动器号不是因为空的环境。这是因为服务不会映射驱动器,因为这是在交互式用户登录中完成的。 – alroc 2013-04-04 12:47:27

+0

映射的驱动器映射在每个用户的基础上,不能通过内置帐户访问,如“网络服务”。 – bahrep 2013-04-04 12:49:44

0

您是否在使用post-commit hook脚本时使用了相同的工作副本?

您不能svn update您正在使用post-commit钩子工作的相同工作副本。它必须是单独的工作副本。您可以考虑使用svn export命令而不是svn update

+0

对于在post commit hook中无法完成的更新,你是对的。但我已经尝试使用导出,并且我有完全相同的消息。看起来像网络文件夹不可访问...我编辑我的问题 – 2013-04-04 12:29:05

1

好吧,所以实际上可以对提交后操作进行更新。问题是我尝试将我的存储库保存在网络文件夹中。 VisualSVN服务的默认帐户是NTAUTHORITY\NetworkService,无法访问我的磁盘。所以我改变了用户到一个网络帐户,现在它工作正常。

+1

默认帐户是“网络服务”! – bahrep 2013-04-05 10:23:04