Синхронизировать FTP с SVN


0

Фон: есть сайт, который мне нужно отредактировать. Единственный способ получить доступ к файлам - это FTP. Но так как я не единственный человек, который будет редактировать его (также я хотел бы иметь возможность откатить и множество других причин), нам нужна система контроля версий.

Ранее (на нашем собственном сервере, где у нас есть root) мы использовали SVN с перехватом post-commit, который обновлял файлы в каталоге сайта (сайт раньше был на том же сервере Linux).

Можно ли сделать пост-фиксацию, которая загружает обновленные файлы через FTP на удаленный сервер? Есть ли способ обнаружить «только что обновленные» файлы? Может, готовое решение?


1
Почему вы отказались от старого рабочего процесса (от SVN до САЙТА через FTP)?
Ленивый барсук

У меня нет доступа к целевому серверу, кроме FTP. Старый рабочий процесс был «SVN напрямую на САЙТ», но это было на нашем собственном сервере (добавили это в OP-post).
Дмитрий

а что ?? Вы можете и должны работать одинаково, даже в REPO и SITE - разные хосты - вам просто нужно ftpвместо cp. Я не вижу никакой исследовательской работы
Lazy Badger

Ответы:


0

Можно ли сделать пост-фиксацию, которая загружает обновленные файлы через FTP на удаленный сервер?

Да возможно

Есть ли способ обнаружить «только что обновленные» файлы?

Как минимум два (AFAICR):

  • svn log -v -q -r HEAD REPO-URL (из любого места)
  • svnlook changed REPO_PATH (для хоста REPO, где REPO_PATH - локальный путь на FS)

Ну, как я вижу, вы должны решить две последовательные подзадачи в ловушке после фиксации (если вы решаете правильную задачу : обновить сайт из репо, а не обратное извращение ^ обновить репо измененными файлами из некоторого независимого местоположения)

  • построить дерево файлов, затронутых ревизией
  • загрузить это дерево, используя чистый FTP, на удаленный хост

Решения для задачи 1

Любой из первых трех скриптов, упомянутых мной здесь (в дикой сети могут существовать и другие реализации)

Решение для задачи 2

Использование части клиента NcFTP ( NcFTPPut ) для загрузки дерева в простой однострочной команде


Ты прав! Спасибо за ответ, я постараюсь сделать это, а затем напишу о результате.
Дмитрий
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.