我可以使用PHP4与没有工作副本的SVN存储库进行交互吗?

时间:2010-01-08 16:39:27

标签: php svn php4

我想在SVN存储库(通过HTTP,如果重要)上执行SVN操作,而不需要工作副本。基本上,这是我想要做的事情:

  1. 检查目录是否存在远程。

    • 如果目录不存在,请创建
  2. 检查存储库中是否存在文件

    1. 如果文件不存在,请使用我的内容在存储库中创建一个新文件
      • 这必须使用我提供的作者姓名,而不是经过身份验证的WebDAV作者(这就是为什么WebDAV方法对我不起作用)
    2. 如果文件存在,请将其内容替换为我指定文件的内容。
  3. 我一直在尝试使用autoversioning方法,但是这种方法要求我为WebDAV服务器设置身份验证,这在我的环境中并不理想。我可以使用FS操作(客户端是SVN 1.6,因此浅工作副本+命令行工作)但这既缓慢又不优雅。

    是否有一个库(必须可以从PHP 4.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 extensionmanual)会这样做?

对于上一个版本,要求是:

PHP Version: PHP 4.0.0 or newer


似乎有些功能可以做你想做的事情;例如:

  • svn_mkdir:在工作副本或存储库中创建目录。

但不确定你想要的一切的功能,不过......