在ColdFusion应用程序中运行SVN更新



我正在尝试在我的ColdFusion应用程序中触发svn更新。我有以下代码,

<cfset variables.svnexe = "c:Progra~1CollabnetSubver~1svn.exe">
<cfset variables.svnarg = " up ">
<cfset variables.svnarg = variables.svnarg & "c:inetpubwwwrootmybranch ">
<cfset variables.svnarg = variables.svnarg & "--username myusername --password myPassword">
<cfexecute variable="temp" name="#variables.svnexe#" arguments="#variables.svnarg#"  timeout="1000">    
</cfexecute>

我遇到的问题是,当我在命令行中运行等效命令时(即

c:Progra~1CollabnetSubver~1svn.exe up c:inetpubwwwrootmybranch --username myusername --password myPassword

),它运行得非常好。所谓"它有效",我的意思是在命令行中运行命令后,我可以在文件夹中看到更新。然而,当我运行ColdFusion应用程序时,它不会给我任何错误,但它也没有做它应该做的事情。

我已经尝试将svn命令放在一个批处理文件中,并在ColdFusion中运行它。同样的事情也发生了,当我在命令行中运行时,它是有效的,但在ColdFusion应用程序中不起作用。

我的问题是,原因可能是什么?我该如何解决这个问题?

提前感谢,蒙特

首先,确保并捕获cfexecute调用的输出。您没有得到ColdFusion错误,但这并不意味着您没有得到命令行错误(CF很乐意忽略)。

第二,我想知道你是否尝试过从脚本中删除8个字符的别名(而不是"progra~1",使用"程序文件(86)")。这需要一点争论,因为你必须把它们放在引号里(通常)。

最后,正如其他人所说,这可能是权限问题。

我写了一个.bat文件,这就是我的行start "" TortoiseProc.exe /command:update /path:"C:inetpubwwwrootmyfolder"

我知道这段代码在作为.bat文件单独运行时是有效的。只有当您希望运行多个更新并使它们同时运行时,start ""才有用。

我会尝试运行这个命令,如果失败,我想这是权限问题。

可能值得一看SVNkit(http://svnkit.com/index.html)因为ColdFusion运行在Java之上。您可以将它放入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

最新更新