2010-01-08 1 views
0

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

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

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

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

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

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

ответ

0

Может быть PECL::svn extension (manual) будет делать?

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

PHP Version: PHP 4.0.0 or newer 


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

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

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

2

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

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

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

+0

Вы также можете рассмотреть возможность передачи опции -xml в svn и разбора результата с помощью SimpleXML. –

2

Найти svn командной строки или расширения СВН эквиваленты:

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

svn info <URL> 

Если каталог не существует, создайте его

svn mkdir <URL> 

Проверьте, существует ли файл в хранилище

svn info <URL> 

, если файл не существует, создайте новый файл в хранилище с моим содержанием

Это один сложнее без рабочей копии. Вы можете создать временный файл, а затем:

svn import /tmp/mytempfile <URL> 

Если файл не существует, замените его содержимое с содержимым моего указанного файла.

svn delete <URL> 

следует выше, вы не можете изменить файл без рабочей копии. Обратите внимание, что это вызывает очень субоптимальное использование Subversion. Он предназначен для хранения изменений, а не файлов. Я бы не рекомендовал delete/import для изменения нескольких строк текста.

Это должно использовать имя автора, что я обеспечиваю, не прошедшему проверку подлинности WebDAV автора (именно поэтому WebDAV подход не работает для меня)

Вы не можете обеспечить произвольный автора имя с помощью webdav, вы проверяете подлинность через HTTP (S) на удаленный сервер, и это имя используется как автор. Если вам нужно другое имя, вам нужно создать другого пользователя на сервере и предоставить этому пользователю доступ к репозиторию.

 Смежные вопросы

  • Нет связанных вопросов^_^