Не пойму, зачем битбакет (гитхаб) при разработке на Битрикс?
Есть веб-сайт (условный прод) на цмске (Битрикс), папка + бд.
Я, обычно, делаю так:
1. Пишу гитигнор
2. Инициируют гит
3. Создаю первый комит
4. Копирую папку с сайтом и с .git внутри на тестовый сервер (бд тоже беру)
5. Пишу на тесте код, пушу на прод.
Если работаю не один, то разворачиваем на основе прода несколько тестовых сайтов и при этом все пушим на прод (улаживая конфликты, если есть).
Но встречал другой подход в организации совместной работы.
П 1. - 3. как у меня, а потом папку .git отправляют в предварительно созданный репозиторий на битбакете и ведут разработку через него.
На битбакете хранится только тот код, который находится под системой контроля версий. Нет того, что прописано в гитигноре, а этого может критически не хватать для развертывания и запуска сайта на тесте (конфиги, htaccess и тп).
Те git clone из битбакета не развернет проект целиком, а возьмёт только часть проекта, и нужно в любом случае полностью копировать папку с сайтом с прода на тест.
Собственно, вопрос - зачем при таком подходе лишнее звено в виде битбакета? В чем удобство?
При разработке на битриксе, так же как и на нормальных платформах, гит несет огромную пользу и удобство для разработчиков:
- узнать точный момент, когда стало еще хуже, чем было
- узнать, кто конкретно это устроил
- вернуться назад из этого состояния одной командой
- а по-хорошему, можно было бы заранее проверить, кто там что нагородил перед деплоем
И это мы еще даже до веток не дошли...
А как правильно деплоить приложение, и как при этом работать с конфидециальными файлами, которые не хранятся в репозитории, это уже отдельная тема для разговора.
zhdoon, у вас же с другими членами команды должен быть общий репозиторий. Он соответственно хранится на сервере, к которому есть доступ у разработчиков и скриптов для деплоя. Гитхаб и битбакет предоставляют вам такой сервис плюс различные фичи. Но вы можете и сами поднять себе свой собственный сервер.
Всякие логины/пароли конечно в репе не храняться. Например оно все у вас сложено в файлик secrets.yml, который внесен в .gitignore. При деплое его придется переносить на сервер отдельно. Но при этом вы можете хранить в репе его копию secrets.example. Данные в нем не настоящие, но другой разработчик будет видеть весь список необходимых переменных для запуска проекта.
А чтоб засунуть на сервер этот secret.yml и все остальное "(конфиги, htaccess и тп)", вы либо делаете это руками, если уверены, что вам повторять это никогда больше не понадобится. Либо настраиваете деплой через capistrano, ansible, chef и тп, да хоть bash скрипт напишите, чтоб распихать все файлы по нужным местам, установить все необходимое и сделать git pull. Этот скрипт в принципе отдельный проект. И его скорее всего вы сможете использовать в дальнейшем и для других приложений. Но лучше разделить настройку сервера и деплой на разные скрипты.
>> у вас же с другими членами команды должен быть общий репозиторий
Мне для этого не нужно ни gitlab, ни github, ни bitbucket. Устанавливаю yum install git, инициирую репозиторий, настраиваю доступ к нему всех разрабов и работаем.
Каких преимуществ я лишён при таком подходе? Ну да, не так наглядно и юзабильно, как на гит-хостинге, но по сути то то же самое?
zhdoon, "Несмотря на то, что технически вы можете отправлять и забирать изменения непосредственно из личных репозиториев, делать это не рекомендуется. Вы легко можете испортить то, над чем работают другие, если не будете аккуратны. К тому же, вам бы наверняка хотелось, чтобы остальные имели доступ к репозиторию даже если ваш компьютер выключен, поэтому наличие более надежного репозитория обычно весьма полезно. Предпочтительный метод взаимодействия с кем-либо ― это создание промежуточного репозитория, к которому вы все будете иметь доступ, и отправка и получение изменений через него."
Устанавливать ли свой git-сервер или использовать готовые сервисы это уже ваш выбор, который зависит от того нужны ли вам такие фичи: https://github.com/features https://bitbucket.org/product/features
4. Копирую папку с сайтом и с .git внутри на тестовый сервер (бд тоже беру)
уже страшно...гит клон еще не придумали?
Если работаю не один, то разворачиваем на основе прода несколько тестовых сайтов и при этом все пушим на прод (улаживая конфликты, если есть).
тестить сперва надо локально, пушить в ветки по "задачам", ревьювить и мержить с девом. Если что-то пошло не так откатиться. А то получается зоопарк тестовых сред и у кажого своя свистелка...
Далеко не все что в есть в битриксе, нужно в гите, ядро например вообще не нужно - нечего там делать. Для равных условий тестов используйте виртуальные машины конфиг которых храните в гите.
git clone заберет только то, что проиндексировано гитом, нет? Папку с кэшем, конфиги, в некоторых случаях и ядро (если оно в гитигноре) не заберет. Или я что-то не так понял?
тестить сперва надо локально, пушить в ветки по "задачам"
А на битриксе бывает такое, что над одной "задачей" работает сразу несколько разработчиков? Т.е. если нужно сделать раздел на каком-нибудь компоненте, то надо троих разрабов привлечь? В 99% случаев нет. Или вы под задачам имеете ввиду что то другое?
Для равных условий тестов используйте виртуальные машины конфиг которых храните в гите.
верно, зачем брать то что и так стандартно и неизменно. Править ядро - плохой тон.
Конфиги организовывайте так что бы были дев и прод и "дистрибутивный" из которого можно создать и тот и другой (он то и будет в гите) ...например через ENV =) битрикс же до сих пор не придумал агрегатор конфигов аля .local.php .global.php =), но это не должно мешать использовать гит правильно
верно, зачем брать то что и так стандартно и неизменно.
Если вы 9-й по счету подрядчик на проекте (существует к примеру 5 лет), то я бы за это не поручился. Кроме того, нетронутое ядро 3-месячной давности и ядро, скачанное у вендора прямо сейчас, совсем не одно и то же.