SVN commit命令行,路径在php中的变量内
我需要创建一个与SVN命令行一起工作的web应用程序。因此,我想将exec命令与svn commit一起使用,并且一个变量包含工作副本的路径。我尝试了这个代码,但没有成功。承诺没有发生SVN commit命令行,路径在php中的变量内,php,svn,cmd,tortoisesvn,commit,Php,Svn,Cmd,Tortoisesvn,Commit,我需要创建一个与SVN命令行一起工作的web应用程序。因此,我想将exec命令与svn commit一起使用,并且一个变量包含工作副本的路径。我尝试了这个代码,但没有成功。承诺没有发生 <?php $lpath="c:\a\svn\projectwc"; $msg="first commit"; exec("svn commit -m $msg $lpath"); ?> 是的,我已经在里面添加了所有的文件。我尝试用路径值替换lpath,结果成功了。 请帮助…您的字符串扩展到 s
<?php
$lpath="c:\a\svn\projectwc";
$msg="first commit";
exec("svn commit -m $msg $lpath");
?>
是的,我已经在里面添加了所有的文件。我尝试用路径值替换lpath,结果成功了。
请帮助…您的字符串扩展到
svn commit -m first commit c:\a\svn\projectwc
而你需要这样做
svn commit -m "first commit" c:\a\svn\projectwc
由于日志消息不止一个单词,因此需要加引号
我认为你应该重新思考你在这里想要实现的目标。从安全角度来看,基于用户输入构造字符串并将其传递给exec
是一个非常糟糕的主意
您还标记了post-Ortoise svn-如果从命令行调用TSVN,它会弹出GUI,这显然不适合服务器端
然后你还需要考虑其他因素,比如:
- 发生错误时如何记录错误消息
- Web服务器是否有足够的权限访问工作副本以执行这些操作
- 在您的环境中调用“svn”是否可能
无论你想做什么,很可能有一些自由软件已经做到了。svn有一个webdav接口和一个用多种语言实现的API-这比使用
exec
定义“未工作”要安全得多。没有显示错误,但没有发生提交。如果我直接指定路径,提交可以工作,但在使用变量时不能。这个接口,在PHP中有一个SVN的pecl扩展,但问题是处理请求并将其安装到系统中需要大约2到3天的时间(我在一家软件公司做这件事,所以他们有防火墙等等)。但要在这之前完成它,我会使用命令行SVN。这是一个学校项目,所以我不必担心安全性代码>。检查它是否正常:echo$cmd代码>另请参见我在您的提交消息周围添加了引号。