Управление локальными файловыми структурами SVN с помощью PHP - PullRequest
1 голос
/ 18 февраля 2009

У меня есть инструмент разработчика, который модифицирует локальную файловую систему с помощью php. Эти проекты часто извлекаются из SVN. Проблема, которую я хотел бы избежать, - это перемещение / удаление / переименование директорий с управлением версиями - и поломка, возникающая с извлеченным SVN при локальных изменениях.

Существует ли простой способ применения команд SVN (перемещение, добавление, удаление, переименование и т. Д.), Когда я также выполняю соответствующие операции с файловой системой?

Или проще просто удалить файлы .svn, если они найдены в целях перемещения / переименования?

Чтобы уточнить это:

Проверенный SVN, который имеет структуру:

somedir /
--foo /
--cheese /

Пользователь 1 изменяет структуру этой файловой системы (с помощью инструмента dev), переименовывая каталог 'foo' (который находится под управлением версией) в «измененный», когда он собирается зафиксировать свои изменения, svn выдаст ошибку из-за изменения в имени не делается с помощью команд SVN.

Это может быть запущено на различных серверах разработки (обычно на настольных компьютерах, работающих под управлением Apache на Win или Mac)

Не хочу игнорировать или отключаться от SVN.

Ответы [ 3 ]

1 голос
/ 18 февраля 2009

В вашем PHP-файле вы можете использовать команды svn через exec()

<?php
$Output = '';
$ExitCode = 0;
exec('svn mv "'.$Current.'" "'.$New.'"', $Output, $ExitCode);

$Output является выводом команды, и $ExitCode будет 0, если команда была успешной.

Имейте в виду, однако, что по соображениям безопасности команда exec() может быть отключена в некоторых системах. Если у вас есть контроль над файлом php.ini, вы можете включить или отключить его.

1 голос
/ 18 февраля 2009

Программно вам может быть лучше просто удалить папки .svn. Вероятно, это всего лишь одна или две строки кода.

Еще одна попытка, почему вы не экспортируете модуль? таким образом вы не получите папки .svn.

Также обратите внимание, что вы можете написать все команды svn и запустить их.

0 голосов
/ 18 февраля 2009

Если я правильно понял, у вас есть один управляемый версией каталог (ведомый) внутри другого (ведущий). Почему бы просто не добавить подчиненный каталог в основной список игнорируемых svn?

svn propset svn:ignore slave .
svn ci . -m 'Added ignore dir'

С этого момента запуск svn up / add / delete в главном каталоге не будет портить ведомый svn, в то время как последний остается полностью функциональным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...