#git #bitbucket
Здравствуйте! День назад освоил азы Bitbucket, поставил SourceTree. Суть вопроса: правильно ли я понимаю алгоритм разработки через Bitbucket? Несколько человек пишут код(php,js,mysql,html). Коммитят это. Push-ают. Код отправляется на сервер Bitbucket; Далее вся комманда Pull-ами синхронизирует код у себя на машинах; Код то на FTP должен лежать. Как это делать на FTP? Или я не понимаю матчасть?)) Мысль приходит мне что нужно запускать код на клиентах. ТО есть каждый член комманды запускает код через что хочет. Хоть денвер хоть опенсервер хоть ручками поставленный Apache+MySQL+PHP. Поясните падовану плиз, о седовласые мастера!
Ответы
Ответ 1
Несколько человек пишут код(php,js,mysql,html). Коммитят это. Push-ают. Код отправляется на сервер Bitbucket; Почти так. Как правило, в организации командного рабочего процесса есть несколько дополнительных правил. Под каждую отдельную задачу создаётся отдельная ветка разработки. Разработчик по ходу работы никогда не должен пушить коммиты в ветку master. Он пушит их в свою ветку разработки. Когда задача доведена до некоторого итога, создаётся запрос на слияние (merge request, pull request). Либо в какой-то иной форме (хоть устно) обозначается готовность ветки к слиянию. Подробнее: Зачем нужен pull request, если есть push? Предложенная ветка проходит код-ревью, тестирование и какие угодно другие проверки. В каждом конкретном случае должен быть один ответственный человек, принимающий решение о слиянии. Это может быть тимлид, тестировщик, ещё кто-то - как договоритесь. Далее вся комманда Pull-ами синхронизирует код у себя на машинах; Тоже почти так. Команда git pull фактически включает в себя две: git fetch + git merge. С первой обычно не бывает проблем, вторая может застопориться на конфликтах. Я обычно обновляю master, а потом делаю rebase текущей ветки на него git fetch # посмотрим, что к нам пришло git log --oneline --graph --decorate --all # обновим master git checkout master git merge origin/master # или просто git pull # переставим текущую ветку на новый master. # при наличии конфликтов лучше разрешить их сейчас, чем потом при слиянии в master git checkout myfeature git rebase master Код то на FTP должен лежать. Как это делать на FTP? Или я не понимаю матчасть?)) Не путайте хранение кода и развертывание приложения. Хранится код внутри гита, в его собственной базе данных. На сервере вроде Bitbucket вообще нет тех файлов, которые лежат у вас в рабочей папке, потому что это bare-репозиторий и там есть только собственное хранилище. Как вы будете развертывать приложение - совершенно отдельный вопрос. Если это интерпретируемый код вроде php или js - удобно использовать rsync. Есть более популярный, но гораздо менее надёжный способ развертывания через репозиторий на production-сервере и git-hook. Если доступен только FTP, придётся через FTP. Подробнее: Настройка и развертывание проекта c помощью Git Мысль приходит мне что нужно запускать код на клиентах. ТО есть каждый член комманды запускает код через что хочет. Хоть денвер хоть опенсервер хоть ручками поставленный Apache+MySQL+PHP. Стремитесь к тому, чтобы у вас было абсолютно идентичное окружение на всех этапах процесса: разработка, тестирование, staging (если есть), production. Одинаковая ОС Одинаковые версии всех зависимостей Одинаковый способ развертывания, включая конфигурирование Одинаковый способ запуска приложения Всё вышеописанное должно быть описано хотя бы в некотором документе, а в идеале - в коде. Так вы страхуете свою команду: от (части) багов, которые просачиваются на прод; от феномена "works on my machine"; от серверов-произведений искусства, которые были настроены год назад человеком, который потом уволился, а теперь никто не может сделать то же самое, поэтому в случае поломки заменить их будет нечемОтвет 2
да да bitbucket - это git-хостинг, код и вся история разработки располагается на их серверах. Причем Git-устроен таким образом, что копия кода и история лежит у каждого из разработчиков и репозиторий всегда можно восстановить, даже если он утерян на сервере.Ответ 3
Когда начинают новый проект, создают в github или Bitbucket репозитории, без разницы, после чего там создается сам проект и каждый себе копирует проект(на локальную машину) каждый делает свою часть работы и заливает обратно на репозиторий, когда проект протестирован и готов его заливают на сервер хостинга, нужна правка, правят опять же в своем репозитории, после тестирования, заливают на сервер.Ответ 4
По поводу FTP на пальцах: если, например, разработка ведётся в SublimeText, то можно установить плагин, который измененный разработчиком код будет заливать на FTP. Таким образом, во время разработки на FTP будет актуальная версия кода. Но когда другой разработчик захочет тоже внести свои изменения, ему надо будет выкачать актуальные файлы с FTP, чтобы не затереть чужие изменения, и только потом вносить свои. А в репозитории Bitbucket после Push`a будет храниться вся история разработки независимо от данных на FTP. Потому перед каждым началом новой работы надо выкачать с Bitbucket актуальную версию, внести свои изменения и залить обратно на Bitbucket. А чтобы эти изменения были на сайте, надо их залить на FTP.Ответ 5
На Bitbucket команда держит актуальную версию исходного кода с историей изменений и использует его как точку синхронизации своих изменений, а к веб-серверу, на котором все это дело крутится в интернете, вышесказанное никак не относится. В момент "поставки" код из bitbucket собирается и складывается на production серверОтвет 6
а как происходит обновление базы данных? например какой-то из членов команды, добавил новые страницы, какие-то файлы (вроде картинок или скриптов). что-то записалось в бд. И как обновление mysql будет происходить?
Комментариев нет:
Отправить комментарий