Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > УП: Инструменты > Выгрузить только измененные файлы.


Автор: ksnk 17.12.2012, 13:37
Имеется сайт. Большой и в меру страшный. В перспективе требуется отрефакторить код, переверстать все и так далее и тому подобное. Работа длительная и разрушительная. Тем временем, в процессе рефакторинга, необходимо оперативно вносить правки в работающую в данный момент версию боевого сайта.

Таким образом, имеется тестовый сайт и боевой. Доступ к ним по ftp. Перекачка всего объема файлов занимает очень большое время. К счастью, изменения затрагивают сильно ограниченное количество файлов.

Системы контроля версий пока нет, сейчас пытаюсь понять какая система GIT или SVN окажется более удобной-подходящей.

Задачи, которые придется решить
-- получить список файлов, измененных по сравнению с версией на сайте (номер ревизии, импортированной на сайт известен) (svnlook changed -r ...), Отгрузить их по ftp на сервер, боевой или тестовый по имени ветки. Практически все задачи реализуются на базе PHING'а (phpstorm)

-- отъехать на версию сайта по состоянии на какую-то дату - сформировать список измененных файлов и получить их "предыдущее" содержимое.

Для SVN практически все шаги мне понятны и могут быть реализованы.

Как такие-же операции можно делать на GIT?

Есть ли у кого опыт решения подобной задачи? Не поделится ли он своим опытом?

Автор: bilbobagginz 18.12.2012, 22:30
обе системы справятся с задачей:
  • в обоих случаях я бы обозначал релизнутые версии тэгами а версии сайтов разделил бы по веткам
  • в обоих случаях я бы содержал рабочую копию на сайте, и делал бы локальный rsync из нее на сайт (тогда в любом случае обновления кода будут тянуть только изменения, а не все файлы)
  • в гит ты можешь делать оффлайновые коммиты, это будет основной разницей

ввиду того, что работаешь как видимо 1, основного преимущества гит (удобство и скорость слияний, распределенность) не почуствуется.
(хотя гит принципиально шустрей свн)

в гит есть несколько не критически важных фишек (напр. склейка нескольких местных коммитов в 1)

Кстати, кроме гит есть еще и меркьюриал (hg) я его больше люблю, посмотри, может он тебе понравится тоже.



Автор: ksnk 20.12.2012, 13:13
Попытки разобраться открыли мне глаза на то, что phpstorm уже и сам многое умеет. Например при коммите изменений он и сам умеет отгрузить поправленные файлы по ftp. Чую, что где-то есть засада, но пока не успел понять где  smile .  Предположительная засада в том, что если слишком часто в отладочных целях коммитить изменения, то номер ревизии уж очень быстро будет увеличиваться. Не то, чтобы это очень критично, но я привык использовать номер ревизии в качестве версии. Вероятно, буду переползать на GIT, там все организовано несколько по другому. Вторая предположительная засада в том, что ftp загрузка может завершится неудачей (сбой сети) и таким образом изменения окажутся неопубликованными. Как повторить неудавшийся аплод я пока не понял.

Установить на сервер систему контроля версий по непонятным мне причинам пока нельзя, так что rsync не так просто делать, как кажется. Вообще, с серверным SVN(GIT) было бы катастрофически меньше геморроя. export на сайт и нет проблем. Сейчас SVN развернут на сервере в локалке, полный экспорт на сервер займет пару часов, так что его даже и не делали ни разу. Сейчас в SVN лежит битрикс с трехгодичными наслоениями, сохранениями, вариантами и всякими ужасами - около 300мб в развернутом состоянии(26к файлов и 9к каталогов  smile ). Как-нибудь дойдут руки и до чистки исходников, но пока не до этого. 


Цитата(bilbobagginz @  18.12.2012,  22:30 Найти цитируемый пост)
(хотя гит принципиально шустрей свн)

Да, это важно, особено если часто пользоваться автоматом отгрузки по ftp при коммите. 

Автор: bilbobagginz 21.12.2012, 01:00
Цитата(ksnk @  20.12.2012,  12:13 Найти цитируемый пост)
export на сайт и нет проблем

экспорт, если мне склероз не изменяет - не передает "версийной" информации (кроме того, что запихаешь в файлы, напр. посредством keyword substitution).
Цитата(ksnk @  20.12.2012,  12:13 Найти цитируемый пост)
особено если часто пользоваться автоматом отгрузки по ftp при коммите. 

это как-то абсурдно при использовании git (имеющем компрессованный и оптимизированный протокол под скорость и эффективность), еще и подгружать файлы по ftp. если уже придешь к git, пользуйся штатным сервером, и работай через гит, без ftp (IMHO)

насчет версий, рекомендуется использовать тэги.

Автор: ksnk 24.12.2012, 16:27
bilbobagginz, На сервер (хостинг) пока нельзя поставить систему контроля версий. Есть вариант - через пару месяцев включить на хостинге SVN. Если приживется GIT, то вероятно, вариант будет не нужен. Причины такой политики и задержки мне непонятны, но они есть... Так что единственный пока вариант отгрузить файл на хостинг - ftp. 

В качестве рабочего варианта "перманентной переделки" пока используется постоянный ручной деплой измененных файлов с помощью phpstorm'а на тестовый сервер. На боевой сервер - автоматическая загрузка при комите боевой ветки исходников сайта.



Автор: bilbobagginz 24.12.2012, 22:45
Цитата(ksnk @  24.12.2012,  15:27 Найти цитируемый пост)
На сервер (хостинг) пока нельзя поставить систему контроля версий.

при сегодняшнем наличии огромного количества хостингов, я не понимаю такого рода проблему....

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)