![]() |
0 Всего найдено: 10
resurection
Сообщение
20/03/2011 21:20
Копия темы
Mercurial, как сделать экспорт изменённых файлов? Когда была 125-ая ревизия, я залил проект на сервер (первый релиз проекта). Теперь наколбасил второй релиз (+30 ревизий) и надо обновить проект на серваке. Раньше в СВНе я сравнивал ревизии 125-155 и делал экспорт всех изменённых файлов в отдельную директорию, которую можно было залить на ФТП или закатать в архив и отправить заказчику. Но как это сделать в Меркуриале? Нашёл команду "hg diff --stat -r 125:155" она выводит список изменённых файлов (сравнивает две ревизии). Но как эти файлы сохранить в отдельную диру с сохранением структуры? Ну и вообще интересно, как Вы поддерживаете проект на удалённом сервере в актуальном состоянии? Знаю, что на сервере можно поднять локальную копию и обновляться через (d)CVS. Но у меня загвоздка с таким подходом. В папке с проектом под контролем находятся: макеты, бекапы, папка upload и несколько динамически изменяемых файлов всё это не должно синхронизироваться с сервером. Т.е. при апдейте на рабочий сервак надо как-то настраивать исключения. Нагуглил для этого capistrano, но его нет под винду :(
nazavrik
Сообщение
21/03/2011 06:52
Копия темы
Отправка изменений происходит с помощью команды push. Вот отличная серия статей на использование Mercuriala: Там несколько частей, подробно всё написано, как поддерживать и пр.
abbat
Сообщение
21/03/2011 07:42
Копия темы
Для того, чтобы получить только дельту изменений для отправки, используется hg bundle между двумя ревизиями. Так же, следует учитывать, что в hg ревизии с номерами (аналоги svn-овских) актуальны только в локальном репозитории и совершенно не должны совпадать с удаленным т.е. 125 ревизия локально и 125-я ревизия в удаленном репозитории совершенно не обязаны быть одними и теми же ревизиями. Дабы избежать путаницы, необходимо использовать имена ревизий в терминах hg это хэши.
resurection
Сообщение
21/03/2011 12:45
Копия темы
Ещё раз перечитал статью. Хотел написать коммент, что там не то. Но пока писал, пришла идея, как организовать репу на боевом сервере через бранчи и эта репа синхронизирует всё кроме некоторых папок (макетов, бекапов, конфигов и т.д...). Протестил заработало! :) И не надо никаких деплоев настраивать. Ещё одно подтверждение, что меркуриал это круто.
resurection
Сообщение
21/03/2011 13:40
Копия темы
hg bundle создаёт один файл со списком изменений. Что с ним делать я не знаю. На удалённом боевом серваке нет ни меркуриала, ни SSH доступа, есть только FTP. А иногда даже ФТП нет и тогда я отправляю заказчику архив с файлами, которые надо перезалить. Ещё раз попробую объяснить, что мне надо. Допустим, в 126-ой ревизии я изменил файлы /templates/header.tpl + footer.tpl. Затем в 127-ой ревизии я изменил /libs/my.class.php. И вот теперь мне надо экспортнуть изменённые файлы. Т.е. сделать что-то вроде "export -r 125:127 /tmp/update-127/". В результате должна получится папка "update-127" содержащая файлы: libs/my.class.php templates/header.tpl templates/footer.tpl Пока я нашёл только команду "hg diff --stat -r 125:127" она выводит список изменённых файлов. Но как их сохранить во временную папку "update-127" я не нашёл?
abbat
Сообщение
21/03/2011 15:58
Копия темы
Понятно. Штатных средств для этого нет, т.к. это не совсем соответствует идеологии hg он оперирует наборами изменений, а не файлами. Можно, наверное, взять из лога список файлов и скопировать их руками.
resurection
Сообщение
21/03/2011 16:12
Копия темы
Понятно, что думает он изменениями, однако команда "hg diff --stat -r 125:127" выдаёт то что нужно. Осталось только сохранить. И я не вижу здесь никакого идиалогического противоречия. Иначе, как отправить заказчику архив с изменёнными файлами? Или как проапдейтить проект на ftp без ssh? Выгружать руками конечно можно, если файлов 3. Но если их 50 придётся писать свой скрипт. А их реально 50 и больше. Это же целый релиз. А в ГИТе есть такая команда?
abbat
Сообщение
21/03/2011 17:14
Копия темы
> Иначе, как отправить заказчику архив с изменёнными файлами? hg bundle у заказчика так же должна быть копия репозитория в которую развернется данный bundle это принятый способ распространения изменений в hg, если нет прямой связи между репозиториями. > Или как проапдейтить проект на ftp без ssh? * Можно попробовать развернуть hg на самом хостинге (нужно, чтобы хостинг поддерживал cgi); * Можно попробовать использовать ftpfs через FUSE (геморно, но возможно); * Можно попробовать использовать расширение ftp самого hg * Использовать lftp, который синхронизирует локальный репозиторий с директорией на ftp; * Ну и, наконец, можно отказаться от такого хостинга, потому что все нормальные хостинги дают доступ по SSH. > А их реально 50 и больше. Это же целый релиз. Например, hg archive дает архив файлов на определенную ревизию его можно залить на сервер и сменить симлинк на актуальную версию. Некоторые хранят репозиторий непосредственно на сервере и делают hg up. > А в ГИТе есть такая команда? С уверенностью не могу сказать слишком мало его использовал, но, поскольку он изначально *nix ориентированный, то думаю, что нет. Ибо *nix без ssh это не *nix. P.S. К слову, согласно манам, svn так же не умеет делать подобного.
resurection
Сообщение
21/03/2011 21:29
Копия темы
Может быть не документировано, но в ТортойзСВН я такую возможность нашёл за 3 минуты методом тыка Иногда ssh доступ не дают по той же причине по которой и ftp security. Особенно у крупных корпораций или банковских сайтов. У них свои серваки и свои сисадмины-перестраховщики. Так что смена хостинга там не обсуждается. Есть ещё виндовые хостинги без ssh... Видимо, всё таки придётся писать свой скрипт для экспорта :(
abbat
Сообщение
21/03/2011 21:54
Копия темы
0
Реализация такой возможности в черепашке является надстройкой над svn blame в "оригинальном" svn такой возможности нет. > У них свои серваки и свои сисадмины-перестраховщики. Сисадмины-то уж точно в состоянии завести репозиторий и дать к нему доступ (или работать с bundle). Так что тут вообще проблем нет. > Есть ещё виндовые хостинги без ssh... Ну это уже баловство :) |
Выразить восторг, поругаться или предложить что-нибудь можно на форуме |
Для обсуждения этого сервиса так же есть темы на фрилансе по поиску , флудотопу ,и по удалённым сообщениям ,и по Актуальным/популярным темам , и по топу "кто кому больше наотвечал" |