Вопрос

В настоящее время я работаю с партнером над PHP-проектом.

Мы оба редактируем непосредственно на локальном сервере (все файлы хранятся на сервере, на котором также работает стек WAMP).Я ищу SVN-клиент, который будет отслеживать и сохранять все изменения в папке htdocs и обновлять удаленный репозиторий SVN через Интернет.

Было бы отличным бонусом, если бы я мог управлять SVN-клиентом через веб-интерфейс.

Например, скажем, я сохраняю file1.php на сервер.Это обновило бы file1.php на веб-сайте svn.Если бы я внезапно обнаружил, что мои последние изменения в файле неисправны, я мог бы перейти на сервер (или использовать какой-нибудь веб-интерфейс со своего компьютера) и заменить file1.php с более старой редакцией.

Я не хочу просто устанавливать SVN-сервер на наш локальный компьютер, потому что я всегда хотел бы иметь удаленно сохраненную копию с последними изменениями.

Есть какие-нибудь рекомендации?

Это было полезно?

Решение

Я не знаю ни одного программного обеспечения для этого.Вероятно, было бы нетрудно написать сценарий для этого, используя стандартный svn-клиент командной строки.То есть.имейте пакетный скрипт / оболочку, который регулярно запускается и проверяет все, что изменилось.

Тем не менее, я бы очень сильно не советую этого делать!

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

Явная проверка вручную гарантирует, что вы проверяете только то, что работает (как правило), и позволяет вам давать ценные комментарии при проверке.

Затем сервер может быть обновлен заведомо исправной версией из репозитория системы управления версиями.

Звучит так, как будто вы работаете над производственной системой.Я бы настоятельно советовал рассмотреть возможность использования среды (ов) разработки и описанного выше подхода.

Другие советы

Если я правильно понимаю, вы намерены использовать SVN в качестве версионной автоматической системы резервного копирования.Если это так, то проще всего было бы использовать средство мониторинга файлов, а затем вызвать клиент командной строки svn для измененных файлов, чтобы зафиксировать их в SVN.

Я еще не пробовал этого, но SVN-Монитор может быть полезно.Для работы с ним вам понадобится клиент ToirtoiseSVN, упомянутый выше.

Я не нашел ни одного (у меня тоже была такая же проблема).

Мы делаем это в 2 шага.

Когда мне нужно разработать часть программного обеспечения - я разветвляю магистраль и модифицирую ее, когда другие делают то же самое для выполнения своих задач.Затем мы объединяем ветви и тестируем их.После тестирования магистраль обновляется этим объединенным патчем.

И, наконец, cronjob (или вручную) запускает скрипт, который переводит ресурс в режим обслуживания, удаляет htdocs и экспортирует туда новую магистраль, а затем chown / chmod все по мере необходимости.

Этот скрипт мы можем запустить в любое время из админ-панели, установив необходимую ревизию, если нам нужно быстро отменить глючные изменения...

Возможно, вы захотите рассмотреть решение для управления распределенным исходным кодом (Bazaar, Git, Mercurial) для предлагаемого вами сценария, в котором у вас есть два коммиттера, работающих с двумя кодовыми базами.Затем вы могли бы создавать локальные коммиты и при необходимости вносить изменения в два пункта назначения.

Но переходя к вашей непосредственной проблеме, вам может понадобиться какая-то утилита, которая отслеживает изменения файлов на обоих концах, а затем вызывает команду svn client соответствующим образом, как только она обнаруживает изменения

Я не верю, что это возможно или так просто.

Когда вы размещаете папку под SVN на клиенте, создается определенная структура папок для отслеживания того, какие файлы заблокированы, изменены и так далее.Попытка обновить папку SVN сервера без предварительного извлечения файлов или редактирования файлов без их извлечения (как вы хотите сделать) - ПЛОХАЯ идея.

Запланированное задание, которое собирает вашу папку htdocs в zip-файл, модифицирует ее через filename и затем загружает в какое-либо удаленное хранилище, может быть более простым и быстрым способом управления этим.

Я не знаю, может быть, svn крюк после фиксации может быть, это принесет какую-то пользу, учитывая правильный сценарий?Вы могли бы автоматически развернуть изменения из текущей версии (т.е.редакция, только что созданная перед вызовом перехвата) в производственную систему.Я думаю, это именно то, о чем вы просите?

Я должен сказать, что я согласен с некоторыми другими приведенными здесь замечаниями о нецелесообразности того, что вы предлагаете.Я бы порекомендовал решение, в котором вы вручную запускаете процесс развертывания, а затем исходный код извлекается из репозитория.

Прошу прощения, если я неправильно понял.

Редактировать: перечитав вопрос, я думаю, что вы ищете автоматические фиксации в репозитории, а не автоматические развертывания из него.Поскольку это так, решение по запланированному сценарию, предложенное другими, также является лучшим подходом, который я могу придумать.+1 тем, кто это предложил.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top