我试图在我的ColdFusion应用程序中触发svn更新。我有以下代码,
<cfset variables.svnexe = "c:\Progra~1\Collabnet\Subver~1\svn.exe">
<cfset variables.svnarg = " up ">
<cfset variables.svnarg = variables.svnarg & "c:\inetpub\wwwroot\mybranch\ ">
<cfset variables.svnarg = variables.svnarg & "--username myusername --password myPassword">
<cfexecute variable="temp" name="#variables.svnexe#" arguments="#variables.svnarg#" timeout="1000">
</cfexecute>
我遇到的问题是当我在命令行中运行等效命令时(即
)c:\Progra~1\Collabnet\Subver~1\svn.exe up c:\inetpub\wwwroot\mybranch\ --username myusername --password myPassword
),它完全有效。通过“它工作”,我的意思是我可以在命令行中运行命令后看到我的文件夹中的更新。但是,当我运行ColdFusion应用程序时,它并没有给我任何错误,但它没有做它应该做的事情。
我尝试将svn命令放在批处理文件中并在ColdFusion中运行它。同样的事情发生了,它在我在命令行中运行时有效,但在ColdFusion应用程序中却没有。
我的问题是,可能是什么原因?我该如何解决这个问题?
提前致谢, 蒙
答案 0 :(得分:1)
首先,确保并捕获cfexecute调用的输出。你没有得到ColdFusion错误 - 但这并不意味着你没有得到命令行错误(CF很乐意忽略)。
第二 - 我想知道你是否尝试从脚本中删除8个字符的别名(而不是“progra~1”使用“程序文件(86)”)。这需要一点点争论,因为你必须把它们放在引号中(通常)。
最后 - 正如其他人所说,它可能是一个权限问题。
答案 1 :(得分:0)
我写了一个.bat文件,这就是我的行的样子
start "" TortoiseProc.exe /command:update /path:"C:\inetpub\wwwroot\myfolder\"
我知道这个代码在单独作为.bat文件运行时有效。只有当您想要运行多个更新并让它们全部并发运行时,start ""
才有用。
我会尝试运行此命令,如果失败,我猜这是一个权限问题。
答案 2 :(得分:0)
因为ColdFusion在Java之上运行,所以值得一看SFNkit(http://svnkit.com/index.html)。您可以将其放入CF libs文件夹或使用JavaLoader。然后创建Java对象并将其用于SVN目录。
这是一篇博文,展示了一些示例代码: http://deploy.alagad.com/blog/post.cfm/svnkit-coldfusion-and-you--very-cool-java-cf-stuff
此外,还有用于存储库更新的示例Java代码,该代码应该可以使用一些CreateObject(“java”,“...”)函数进行重写。 http://wiki.svnkit.com/Updating_From_A_Repository