SVN提交命令行与php中变量内的路径
Posted
技术标签:
【中文标题】SVN提交命令行与php中变量内的路径【英文标题】:SVN commit command line with path inside a variable in php 【发布时间】:2017-12-22 08:30:58 【问题描述】:我需要创建一个使用 SVN 命令行的网络应用程序。所以我想使用一个带有 svn commit 的 exec 命令,一个变量包含工作副本的路径。我试过这段代码但没有用。提交没有发生。
<?php
$lpath="c:\a\svn\projectwc";
$msg="first commit";
exec("svn commit -m $msg $lpath");
?>
是的,我已经在里面添加了所有文件。我尝试用路径值替换 lpath 并且它有效。 请帮忙...
【问题讨论】:
定义“没用”。 未显示错误但未发生提交。 【参考方案1】:你的字符串扩展为
svn commit -m first commit c:\a\svn\projectwc
而你需要这样做
svn commit -m "first commit" c:\a\svn\projectwc
由于日志消息不止一个单词,因此需要用引号引起来。
我认为您应该重新考虑您要在这里实现的目标。根据用户输入构造字符串并将它们传递给exec
从安全角度来看是一个非常糟糕的主意。
您还标记了帖子 tortoise-svn - 如果您从命令行调用 TSVN,它会弹出绝对不适合服务器端的 GUI。
那么您还有其他考虑因素,例如:
出现问题时如何记录错误消息 Web 服务器是否有足够的权限访问工作副本来执行这些操作 是否可以在您的环境中调用“svn”。无论您尝试做什么,很可能已经有一些免费软件可以做到这一点。 svn 有一个 webdav 接口和一个以多种语言实现的 API - 这将比使用 exec
【讨论】:
如果我直接指定路径,则提交有效,但在我使用变量时无效。还有那个界面,PHP中有一个SVN的pecl扩展,但问题是处理请求并将其安装到系统中大约需要2或3天。(我在一家软件公司做,所以他们有防火墙和所有那些东西)。但要在此之前完成它,我使用命令行 SVN。而且它是一个学校项目,所以我不会担心安全问题。 将命令分配给变量,例如$cmd = "svn commit -m \"$msg\" $lpath";
。检查它看起来是否正常:echo $cmd;
另请参阅我在此处为您的提交消息添加了引号。以上是关于SVN提交命令行与php中变量内的路径的主要内容,如果未能解决你的问题,请参考以下文章
确定 PHP 脚本的命令行与 http 执行的规范方法是啥?
如何将 Windows 路径转换为文件:URL,在批处理文件中,适合 SVN 命令行使用