Как сделать контроль версий через ftp? - PullRequest
2 голосов
/ 02 ноября 2009

У меня есть веб-разработчик. клиент использует общий хост, который не разрешает доступ к оболочке, и, следовательно, нет доступа к SVN, Git и т. д. Я пытался убедить его перейти на один из многих дешевых вариантов, которые позволяют это, но он не будет Это. Если я использую контроль версий на своем промежуточном сервере, есть ли какие-либо инструменты, которые позволят мне повторить изменения в рабочей среде через ftp? Локально у меня есть Mac и Windows, промежуточный сервер Linux, так что работает на любой из этих платформ ....

Ответы [ 7 ]

3 голосов
/ 02 ноября 2009

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

LFTP полезен для такого рода вещей. Он доступен для большинства дистрибутивов Linux и включает функцию «зеркала»:

Зеркально отразить указанный исходный каталог на локальный целевой каталог. Если цель каталог заканчивается косой чертой, исходное базовое имя добавляется к цель имя каталога Источником и / или целью могут быть URL-адреса, указывающие на каталоги.

1 голос
/ 02 ноября 2009

Хорошая вещь для синхронизации репозитория SVN и FTP-копирования - svn2web . Могу ли я предложить создать отдельную ветку для рабочей копии и выполнить слияние с этой веткой для загрузки на рабочий сервер.

1 голос
/ 02 ноября 2009

Вам нужно какое-то программное обеспечение для зеркал ftp. Не проверял, но быстрый поиск дал мне это приложение Java . Вы можете запустить это в своем обновленном проверенном хранилище.

0 голосов
/ 13 сентября 2018

Rsync сделает это через FTP-соединение. Возможно, он уже установлен, если вы работаете в Unix-подобной системе.

0 голосов
/ 21 ноября 2012

Этот вопрос (и ответ) действительно помог мне только сейчас, когда я реализовал управление версиями через gitolite на отдельном сервере и lftp.

Вот что я сделал:

  1. Настройка gitolite на моем промежуточном сервере Ubuntu
    1. создано базовое репо (т.е. foo.git) на промежуточном сервере
    2. клонировал foo.git в рабочий каталог на промежуточном сервере
    3. клонировал foo.git в рабочий каталог на локальной машине разработки
  2. Разработано локально
  3. Отправленные изменения в foo.git репо на промежуточном сервере
  4. На промежуточном сервере вошли в рабочий каталог и извлекли изменения с foo.git
  5. lftp -ed на общий хост (как вы упомянули выше)
  6. Однажды на общем хосте запустил: mirror -R --only-newer --delete --parallel=10 /source/directory/ /target/directory

Замечания по параметрам команды mirror:

  • -R - это толкает source/directory к target/directory. (mirror тянет от цели к источнику без этого, подумайте r everse)
  • —only-newer - без этой опции, даже если вы изменили только один файл, команда mirror отправит все файлы в исходном каталоге в целевой каталог. с помощью этой опции только измененные (более новые) файлы передаются по проводам.
  • —delete - удаляет файлы, которые больше не находятся в исходном каталоге, но все еще находятся в целевом каталоге. один из моих шагов связан с удалением просроченных активов. без этой опции те же файлы остались бы на моем общем хосте после выполнения команды mirror.
  • —parallel=10 - передает 10 файлов одновременно (вместо 1 по умолчанию). это сделало процесс намного быстрее

Хотя это то, что сработало для меня, я уверен, что есть способы улучшить это. Я был благодарен за этот вопрос и подумал, что поделюсь своим опытом.

0 голосов
/ 02 ноября 2009

Возможно, вам нужно написать командный файл, который может

  1. Экспорт репозитория SVN
  2. Загрузить экспортированные файлы на сервер Linux через FTP
0 голосов
/ 02 ноября 2009

За исключением поиска / реализации некоторой файловой системы CoW на основе FUSE, которая поддерживает неизменяемые версии ... Я бы просто нашел другой (более удобный для разработчиков) хост. Насколько я знаю, ни один FTP-сервер не поддерживает это изначально, и я не могу придумать ни одного изящного способа поставить его на место с помощью взлома скриптов.

Я могу ошибаться.

...