我想在SVN存储库(通过HTTP,如果重要)上执行SVN操作,而不需要工作副本。基本上,这是我想要做的事情:
检查目录是否存在远程。
检查存储库中是否存在文件
我一直在尝试使用autoversioning方法,但是这种方法要求我为WebDAV服务器设置身份验证,这在我的环境中并不理想。我可以使用FS操作(客户端是SVN 1.6,因此浅工作副本+命令行将工作)但这既缓慢又不优雅。
是否有一个库(必须可以从PHP 4.4中使用!)才能完成我所描述的内容?
答案 0 :(得分:2)
从我从PHP手中接受SVN的小经验:如果你有从PHP脚本到svn
可执行文件的命令行访问,那就这样吧。
它总是比协议的PHP实现更快,更可靠。
我尝试过的所有PHP SVN客户端都存在缺陷,错误或完全不稳定。 (不过我不知道PECL。)
答案 1 :(得分:2)
找到svn
命令行或svn扩展等价物:
检查目录是否存在远程。
svn info <URL>
如果目录不存在,请创建
svn mkdir <URL>
检查存储库中是否存在文件
svn info <URL>
如果文件不存在,请在存储库中使用我的内容
创建一个新文件
没有工作副本,这个更难。您可以创建一个临时文件,然后:
svn import /tmp/mytempfile <URL>
如果文件存在,请将其内容替换为我指定文件的内容。
svn delete <URL>
其次是上面的,你不能修改没有工作副本的文件。请注意,这会导致Subversion的使用非常不理想。它旨在存储更改,而不是文件。我不建议使用删除/导入来更改几行文本。
这必须使用我提供的作者姓名,而不是经过身份验证的WebDAV作者(这就是为什么WebDAV方法对我不起作用)
您无法使用webdav提供任意作者姓名,您可以通过HTTP(S)对远程服务器进行身份验证,并将该名称用作作者。如果您需要其他名称,则需要在服务器上创建另一个用户,并授予该用户对存储库的访问权限。
答案 2 :(得分:1)
您可以尝试此课程:http://www.phpclasses.org/browse/package/4270.html
它应该从PHP 3开始......
答案 3 :(得分:0)
也许PECL::svn extension(manual)会这样做?
对于上一个版本,要求是:
PHP Version: PHP 4.0.0 or newer
似乎有些功能可以做你想做的事情;例如:
svn_mkdir
:在工作副本或存储库中创建目录。 但不确定你想要的一切的功能,不过......