Могу ли я использовать PHP4 для взаимодействия с хранилищем SVN без рабочей копии? - PullRequest
0 голосов
/ 08 января 2010

Я хотел бы выполнять операции SVN с хранилищем SVN (через HTTP, если это имеет значение), не требуя рабочей копии. Вот что я хочу сделать:

  1. Проверьте, существует ли каталог удаленно.

    • Если каталог не существует, создайте его
  2. Проверить, существует ли файл в хранилище

    1. если файл не существует, создайте новый файл в хранилище с моим контентом
      • Для этого нужно использовать имя автора, которое я предоставляю, а не авторизованного автора WebDAV (именно поэтому подход WebDAV не работает для меня)
    2. Если файл существует, замените его содержимое содержимым моего указанного файла.

Я пытался использовать подход автоверсии, но этот метод требует от меня настройки аутентификации для сервера WebDAV, что в моих обстоятельствах далеко не идеально. Я мог бы использовать операции FS (клиент SVN 1.6, поэтому мелкие рабочие копии + командная строка будут работать ), но это и медленно, и не элегантно.

Существует ли библиотека (которая ДОЛЖНА использоваться из PHP 4.4!), Которая может делать то, что я описываю?

Ответы [ 4 ]

2 голосов
/ 08 января 2010

Найти командную строку 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 голосов
/ 08 января 2010

Из моего небольшого опыта работы с SVN из PHP: если у вас есть доступ к командной строке из вашего сценария PHP к исполняемому файлу svn, идите по этому пути.

Это всегда быстрее, чем реализация протокола PHP, и более надежно.

Все клиенты PHP SVN, которые я пробовал, имели недостатки, ошибки или вообще были шаткими. (Хотя я не знаю PECL.)

1 голос
/ 08 января 2010

Вы можете попробовать этот класс: http://www.phpclasses.org/browse/package/4270.html

Якобы работает начиная с PHP 3 ...

0 голосов
/ 08 января 2010

Может быть подойдет расширение PECL :: svn ( manual )?

Для последней версии требованием является:

PHP Version: PHP 4.0.0 or newer


И, похоже, есть функции, которые могут делать то, что вы хотите;например:

  • svn_mkdir: Создает каталог в рабочей копии или хранилище.

Но не уверен, что функции для всего вы хотите, хотя ...

...