Что такое bitbucket и для чего он нужен
Bitbucket
Bitbucket — это сервис для хостинга систем управления версиями кода (Version Control System, VCS). Через такую систему разработчики отслеживают изменения в коде. Официальное руководство по использованию Bitbucket— здесь.
Что такое VCS
VCS позволяет отслеживать историю изменений кода и файлов. В ней можно увидеть, кто и когда вносил изменения в код. Также VCS позволяет быстро вернуться к нужной версии кода продукта
Bitbucket. Облачный хостинг VSC и его возможности
Bitbucket становится все более популярным. У него, как и у его конкурентов, существует возможность вернуться к нужной версии кода и исправить ошибки.
Особенность Bitbucket по сравнению с его аналогом GitHub в том, что им могут бесплатно пользоваться до пяти разработчиков. При этом в бесплатную версию входит доступ к неограниченному количеству частных репозиториев — мест, где хранятся и поддерживаются данные.
Обновление подписки на сервис увеличивает количество минут сборки и объем хранилища больших файлов, включенных в пакет: 3$ (приблизительно 220 руб.) в месяц для стандартной учетной записи и 6$ (приблизительно 440 руб.) для премиум-версии. У сервиса GitHub есть корпоративная версия; ее аналог — премиум у Bitbucket — стоит 21$ в месяц (1550 руб.).
Другие особенности Bitbucket
Гибкость. Данные в Bitbucket можно импортировать из множества других сервисов: Git, CodePlex, Google Code, SourceForge и SVN.
Интеллектуальный семантический поиск. В Bitbucket зашит семантический поиск JQL. Он сканирует ваш синтаксис, чтобы найти определения, соответствующие вашему запросу, а не просто имена переменных. Это делает поиск более быстрым.
Wiki-функция. Каждый bitbucket repository (репозиторий) может иметь свою собственную вики. Эта функция включает всю необходимую информацию и заметки по работе с платформой. Кроме того, вы можете использовать вики для постоянного размещения документации по ПО.
Интеграция с Jira. Jira — ПО, которое позволяет планировать задачи, управлять проектами и отслеживать ошибки. Bitbucket легко интегрируется с ним: оба проекта принадлежат компании Atlassian. Если вы используете их вместе, можете установить фиксацию кода для автоматического обновления задач в Jira.
Как создать приватный репозиторий в Bitbucket
Репозиторий (repository)
Репозиторий — место, где находится и поддерживается виртуальное хранилище проекта.
Клонирование
Клонирование — копирование удаленного репозитория из Bitbucket Cloud в локальную систему.
Коммит (commit)
Коммит — добавление новых или измененных файлов в историю Git для репозитория.
Шпаргалка по консольным командам (типичная операция):
Branch (ветка)
Ветка — подвижный указатель на один из коммитов для реализации новых идей по проекту. С отдельной веткой вы можете делать что угодно — редактировать, коммитить или сливать ее с основной. Новые действия записываются в историю основной ветки, что приводит к возникновению вилки в истории проекта
Fork (вилка)
Копия репозитория. Раздвоение репозитория позволяет свободно экспериментировать с изменениями в коде.
Master (главная ветка)
Ветвь разработки по умолчанию. Каждый раз, когда вы создаете новый репозиторий git, создается ветка с именем master, которая становится активной ветвью.
Bitbucket Pipelines
Это интегрированная служба CI (Continuous Integration), встроенная в Bitbucket. CI — практика, при которой рабочие копии кода сливаются в основную ветвь разработки. В проектах, где над разными частями работают несколько программистов, слияние — заключительный этап.
Bitbucket Pipes
Bitbucket Pipes — это короткие фрагменты кода, которые можно добавить в конвейер для выполнения эффективных действий. Они упрощают создание автоматизированных рабочих процессов CI и позволяют быстро приступить к работе.
Project (проект)
Проект — это кластер для репозиториев. Он позволяет командам сосредоточиться на цели, продукте или процессе за счет организации репозиториев в проекты. В проекте хранятся все данные и файлы. Он может быть как видимым, так и скрытым от общего просмотра.
Pull requests
Это веб-интерфейс для обсуждения предлагаемых изменений перед их интеграцией в официальный проект. Функция упрощает совместную работу разработчиков.
Проверка кода — важный этап в жизненном цикле разработки программного обеспечения. Благодаря ей вы будете поставлять качественный код. В Bitbucket проверка осуществляется через запросы pull в окне Pull requests — так вы можете быстро найти все, что требует внимания.
Неполадки
Когда вы добавляете репозиторий в Bitbucket Cloud, вы также получаете средство отслеживания задач. Оно позволяет увидеть запросы на новые функции, сообщения об ошибках и прочие задачи вашего проекта.
Краткий обзор Bitbucket
Bitbucket Cloud — это инструмент для хостинга кода и совместной работы на основе Git, предназначенный для команд. Лучшие в своем классе интеграции Jira и Trello для Bitbucket создают для всей команды разработчиков единое пространство, в котором ее участники вместе работают над проектом. Ваша команда может совместно работать над кодом, начиная с появления идеи до выпуска в облако, контролировать качество кода с помощью автоматического тестирования и уверенно развертывать его.
Краткий обзор Bitbucket
Оптимальная интеграция с Jira и Trello
Наведите порядок там, где ранее царил хаос, и держите всю компанию, от разработчиков до дизайнеров, в курсе дел. Просматривайте ветки, статус сборки, коммиты и прочие статусы прямо из задач Jira или карточек Trello.
Совместная работа над кодом: от рождения идеи до переноса в облако
Меняйте статус задач Jira в зависимости от статуса запросов pull, составляйте контрольные списки слияния с назначенными проверяющими и следите за прохождением тестирования для сборок.
Настройте автоматическую сборку и тестирование с помощью встроенных конвейеров непрерывной поставки
Выполняйте сборку, тестирование и развертывание кода с использованием встроенного решения непрерывной интеграции и непрерывной поставки (CI/CD), Bitbucket Pipelines. Используйте все преимущества конфигурации как кода и быстрых циклов обратной связи.
Уверенность при развертывании
Отслеживайте, предварительно просматривайте и уверенно продвигайте свои развертывания.
Обеспечьте безопасность кода
Сохраняйте спокойствие, зная, что ваш код защищен в облаке, и настройте проверки, чтобы предотвращать проблемы.
Варианты размещения Bitbucket
Cloud
Сервис Bitbucket Cloud размещается на серверах Atlassian, доступ к нему осуществляется через URL. В составе Bitbucket Cloud имеется эксклюзивный встроенный инструмент CI/CD — Pipelines, который позволяет выполнять сборку, тестирование и развертывание прямо из Bitbucket.
Server
Bitbucket Server размещается локально, в вашей среде. Bitbucket Server тесно интегрируется с Bamboo, нашим эффективным инструментом CI/CD, который позволяет полностью автоматизировать ваш процесс. Предоставляется бессрочная лицензия.
Data Center
Для корпоративных клиентов мы предлагаем сервис Bitbucket Data Center. Для пользователей он выглядит как один экземпляр Bitbucket Server, но он размещается на нескольких серверах в кластере вашей среды. Поэтому этот сервис обладает значительными преимуществами перед Bitbucket Server:
Cloud
Server
Data center
Git repository hosting
Jira Software integration
3rd party integrations
Git Large File Storage (LFS)
Enforced merge checks
Required two-step verification
Основные понятия
Ниже перечислены важные понятия и термины, которые стоит знать, чтобы эффективно работать с Bitbucket. Некоторые из этих понятий заимствованы из Git, другие применяются исключительно в связи с Bitbucket.
Ветка
Ветка представляет собой отдельное направление разработки. Ветки выступают в качестве абстрактного представления для процесса редактирования/индексации/коммита. Можно рассматривать их как способ запросить новый рабочий каталог, раздел проиндексированных файлов и историю проекта. Новые коммиты записываются в историю текущей ветки, что приводит к образованию развилки в истории проекта.
Форк (ответвление)
Чтобы не использовать один репозиторий на сервере в качестве «центральной» базы кода, можно воспользоваться ответвлениями (форками), чтобы у каждого разработчика был репозиторий на сервере. Таким образом, у каждого автора будет не один, а два репозитория Git: один закрытый локальный и один открытый на сервере.
Указатель на текущий снимок в Git. По сути дела команда git checkout просто обновляет указатель HEAD, чтобы он ссылался на указанную ветку или коммит. Когда HEAD указывает на ветку, Git молчит, но при попытке переключиться на коммит система переходит в состояние detached HEAD (открепленный указатель HEAD).
Master (главная ветка)
Ветка разработки по умолчанию. Каждый раз, когда вы создаете репозиторий Git, создается ветка master; она же становится активной веткой.
Pipelines
Bitbucket Pipelines — это комплексный сервис CI/CD, встроенный в Bitbucket. С его помощью вы можете выполнять автоматическую сборку, тестирование и даже развертывание кода, используя файл конфигурации из вашего репозитория.
Pipes
Bitbucket Pipes — это короткие фрагменты кода, которые можно помещать в конвейер Pipeline для выполнения сложных и эффективных операций. Фрагменты Pipes облегчают построение эффективных автоматизированных рабочих процессов CI/CD и позволяют быстро наладить работу.
Проект
Проект является вместилищем репозиториев. Благодаря проектам, в которые организуются репозитории, командам проще сосредоточиться на достижении цели, работе над продуктом или процессе. Проекты могут быть видимы для всех или только для определенных людей.
Пул-реквест
Запросы pull облегчают совместную работу разработчиков в Bitbucket. Они обеспечивают удобный веб-интерфейс для обсуждения предлагаемых изменений до их включения в официальный проект.
Рабочий каталог
Каталог, содержащий файлы, над которыми вы работаете. В нем обычно находится содержимое ветки коммита, на который указывает HEAD, и все локальные изменения, которые были совершены, но еще не подтверждены с помощью коммита.
Хотите еще лучше разбираться в терминологии Git?
Изучите наше обучающее руководство по Git, в котором содержится вся необходимая информация о командах Git.
Краткий обзор Bitbucket
Bitbucket Cloud — это инструмент для хостинга кода и совместной работы на основе Git, предназначенный для команд. Лучшие в своем классе интеграции Jira и Trello для Bitbucket создают для всей команды разработчиков единое пространство, в котором ее участники вместе работают над проектом. Ваша команда может совместно работать над кодом, начиная с появления идеи до выпуска в облако, контролировать качество кода с помощью автоматического тестирования и уверенно развертывать его.
Краткий обзор Bitbucket
Оптимальная интеграция с Jira и Trello
Наведите порядок там, где ранее царил хаос, и держите всю компанию, от разработчиков до дизайнеров, в курсе дел. Просматривайте ветки, статус сборки, коммиты и прочие статусы прямо из задач Jira или карточек Trello.
Совместная работа над кодом: от рождения идеи до переноса в облако
Меняйте статус задач Jira в зависимости от статуса запросов pull, составляйте контрольные списки слияния с назначенными проверяющими и следите за прохождением тестирования для сборок.
Настройте автоматическую сборку и тестирование с помощью встроенных конвейеров непрерывной поставки
Выполняйте сборку, тестирование и развертывание кода с использованием встроенного решения непрерывной интеграции и непрерывной поставки (CI/CD), Bitbucket Pipelines. Используйте все преимущества конфигурации как кода и быстрых циклов обратной связи.
Уверенность при развертывании
Отслеживайте, предварительно просматривайте и уверенно продвигайте свои развертывания.
Обеспечьте безопасность кода
Сохраняйте спокойствие, зная, что ваш код защищен в облаке, и настройте проверки, чтобы предотвращать проблемы.
Варианты размещения Bitbucket
Cloud
Сервис Bitbucket Cloud размещается на серверах Atlassian, доступ к нему осуществляется через URL. В составе Bitbucket Cloud имеется эксклюзивный встроенный инструмент CI/CD — Pipelines, который позволяет выполнять сборку, тестирование и развертывание прямо из Bitbucket.
Server
Bitbucket Server размещается локально, в вашей среде. Bitbucket Server тесно интегрируется с Bamboo, нашим эффективным инструментом CI/CD, который позволяет полностью автоматизировать ваш процесс. Предоставляется бессрочная лицензия.
Data Center
Для корпоративных клиентов мы предлагаем сервис Bitbucket Data Center. Для пользователей он выглядит как один экземпляр Bitbucket Server, но он размещается на нескольких серверах в кластере вашей среды. Поэтому этот сервис обладает значительными преимуществами перед Bitbucket Server:
Cloud
Server
Data Center
Размещение репозиториев Git
Права доступа к веткам
Интеграция с Jira Software
Интеграция с решениями сторонних разработчиков
Git Large File Storage (LFS)
Принудительные проверки слияния
Встроенные возможности CI/CD
Обязательная двухфакторная аутентификация
Интеграция с Marketplace
Интеграция с Marketplace
Белый список IP-адресов
Интеграция с Marketplace
Интеграция с Marketplace
Основные понятия
Ниже перечислены важные понятия и термины, которые стоит знать, чтобы эффективно работать с Bitbucket. Некоторые из этих понятий заимствованы из Git, другие применяются исключительно в связи с Bitbucket.
Ветка
Ветка представляет собой отдельное направление разработки. Ветки выступают в качестве абстрактного представления для процесса редактирования/индексации/коммита. Можно рассматривать их как способ запросить новый рабочий каталог, раздел проиндексированных файлов и историю проекта. Новые коммиты записываются в историю текущей ветки, что приводит к образованию развилки в истории проекта.
Форк (ответвление)
Чтобы не использовать один репозиторий на сервере в качестве «центральной» базы кода, можно воспользоваться ответвлениями (форками), чтобы у каждого разработчика был репозиторий на сервере. Таким образом, у каждого автора будет не один, а два репозитория Git: один закрытый локальный и один открытый на сервере.
Указатель на текущий снимок в Git. По сути дела команда git checkout просто обновляет указатель HEAD, чтобы он ссылался на указанную ветку или коммит. Когда HEAD указывает на ветку, Git молчит, но при попытке переключиться на коммит система переходит в состояние detached HEAD (открепленный указатель HEAD).
Главная
Ветка разработки по умолчанию. При каждом создании репозитория Git создается ветка main; она же становится активной веткой.
Pipelines
Bitbucket Pipelines — это комплексный сервис CI/CD, встроенный в Bitbucket. С его помощью вы можете выполнять автоматическую сборку, тестирование и даже развертывание кода, используя файл конфигурации из вашего репозитория.
Pipes
Bitbucket Pipes — это короткие фрагменты кода, которые можно помещать в конвейер Pipeline для выполнения сложных и эффективных операций. Фрагменты Pipes облегчают построение эффективных автоматизированных рабочих процессов CI/CD и позволяют быстро наладить работу.
Проект
Проект является вместилищем репозиториев. Благодаря проектам, в которые организуются репозитории, командам проще сосредоточиться на достижении цели, работе над продуктом или процессе. Проекты могут быть видимы для всех или только для определенных людей.
Пул-реквест
Запросы pull облегчают совместную работу разработчиков в Bitbucket. Они обеспечивают удобный веб-интерфейс для обсуждения предлагаемых изменений до их включения в официальный проект.
Рабочий каталог
Каталог, содержащий файлы, над которыми вы работаете. В нем обычно находится содержимое ветки коммита, на который указывает HEAD, и все локальные изменения, которые были совершены, но еще не подтверждены с помощью коммита.
Почему мы для code review выбрали Bitbucket, а не GitHub
В нашей небольшой компании (6 backend + 4 frontend разработчика) для code review (далее CR) мы использовали Gerrit. Gerrit используется, например, для разработки Android. Это инструмент, дающий очень много свободы в настройке процесса CR, но мы от него отказались. Почему? Он прекрасен для суровых backend парней, который легко делают interactive rebase, merge, resolve conflict, amend commit и т.д. Люди из frontend команды по ночам плачут в подушку от тягот рабочего процесса в Gerrit.
В попытке организовывать наш рабочий процесс так, чтобы все были счастливы, мы выбирали одно из популярных решений, которое бы подходило всем. Другими словами, решение не должно содержать критических недостатков для всех разработчиков.
Мы пришли к Bitbucket. Под катом ответы на вопросы почему Bitbucket и почему не GitHub.
1. Unlimited private repos
Тарифные планы GitHub основываются на количестве приватных репозитериев. Тарифные планы Bitbucket — на количестве разработчиков в команде. Т.е. GitHub больше подходит для больших команд с малым количеством проектов, а Bitbucket — малым и средним командам с большим количеством проектов. Мы как раз являемся вторым вариантом и платим 10$ в месяц вместо 100$ в случае использования GitHub.
2. Side-by-side diff
После Gerrit side-by-side diff является необходимым условием, Bitbucket им обладает:
Здесь есть несколько некритичных недостатков, таких как невозможность комментирования кода в модальном окне side-by-side diff (issue).
3. Запрет push-а в master ветку (issue)
4. В ногу со временем
На днях Bitbucket выкатили новый резиновый интерфейс. Конечно, есть недочеты, но хорошая тенденция очевидна.
5. Приятные мелочи
Bitbucket для повышения качества кода. Четыре шага, чтобы начать работу
Теперь можно загрузить код в Bitbucket.
Шаг 1. Переместите свой код в Bitbucket
Репозитории (которые специалисты с любовью называют «репами») — это место, где код хранится в Bitbucket. Начать работу можно по-разному в зависимости от ваших потребностей.
Создание нового пустого репозитория
Импорт репозитория от другого поставщика Git
Укажите URL для доступа к репозиторию.
Если для доступа к вашему репозиторию требуется авторизация, установите флажок Requires authorization (Требуется авторизация) и введите учетные данные для доступа.
Присвойте репозиторию имя. Это важно! Имя репозитория включается в его URL-адрес.
Настройки остальных параметров можно не менять. Нажмите Import repository (Импортировать репозиторий).
Шаг 2. Подготовьте локальную систему, чтобы сотрудничать с коллегами со всего мира
Клонирование репозитория Bitbucket
Из интерфейса командной строки
На вашем локальном диске появится новый подкаталог с тем же именем, что и клонированный репозиторий. Если вы клонировали пустой репозиторий, этот локальный каталог пока может быть пуст.
Изменение файла в Bitbucket в режиме онлайн
Подождите, у меня нет файлов в Bitbucket.
Вы пропустили необязательный шаг и не добавили файл README в репозиторий Bitbucket? Не переживайте! Если репозиторий пуст, перейдите в него и нажмите Create a README (Создать файл README). Теперь вы можете клонировать репозиторий, в котором есть файлы.
Извлечение (pull) обновлений из Bitbucket
Из интерфейса командной строки
Выполнив команду, вы загрузите все изменения, внесенные в эти файлы, в свою локальную систему.
Шаг 3. Выполняйте базовые операции с ветками с помощью Bitbucket
Благодаря ветвлению участники команды могут работать одновременно над разными участками кода, не изменяя исходную базу кода и не мешая работе других участников. Когда вы будете готовы выполнить слияние изменений, отправьте свою ветку в Bitbucket, чтобы ее можно было проверить посредством запроса pull.
Создавать ветки можно несколькими способами. Выберите тот, который лучше других отвечает потребностям вашей команды.
Создание ветки
Из интерфейса командной строки
Из интерфейса командной строки, находясь в каталоге локального репозитория
Переключитесь на эту ветку. git checkout
Теперь перейдем в Bitbucket и посмотрим на нашу ветку.
Перейдите в репозиторий.
Нажмите Branches (Ветки).
Для этого у вас должен быть доступ к сервису Jira Software Cloud, который вы должны интегрировать с Bitbucket. Для этого нужны права администратора, но если вы хотите просто поэкспериментировать с интеграцией и посмотреть, как она работает, вы всегда можете оформить подписку на бесплатную пробную версию Jira Software Cloud.
Интеграцию этих двух продуктов можно выполнить сразу после настройки сайта Jira. Инструкции по интеграции приведены в статье Подключение Bitbucket Cloud к Jira Software Cloud.
Шаг 4. Проверьте изменения кода при помощи запроса pull
Когда изменения вашего кода переданы в Bitbucket, они должны быть проверены коллегой. Запросить проверку кода и в целом вести совместную работу в общей среде со своей командой проще и эффективнее всего посредством запросов pull.
Создание запроса pull
Этот запрос pull появится в списках запросов pull на боковой панели навигации вашего репозитория.
Проверка запроса pull
Если вас выбрали в качестве проверяющего, вы получите уведомление о том, что запрос pull ожидает вашей проверки. Кроме того, открытые запросы pull можно просмотреть на вкладке Pull requests (Запросы pull) на дашбоарде. Проверку кода в целях обеспечения качества можно выполнить разными способами — выбор за вами. Ниже описано несколько способов того, как можно поддерживать эффективную связь с коллегами, чтобы все понимали, что именно было изменено, и были согласны с изменением, подготовленным к слиянию.
Просмотр различий
Если просмотреть запрос pull, вы увидите различия (изменения) во всех файлах, измененных в запросе pull. Добавленные строки выделяются зеленым цветом, удаленные — красным. Также можно нажать на вкладке Commits (Коммиты) в верхней части запроса pull, чтобы просмотреть, какие коммиты включены. Это удобно при проверке больших запросов pull.
Отзывы и вопросы в комментариях
В Bitbucket можно оставлять комментарии ко всему запросу pull, отдельному файлу или отдельному участку кода в файле. Благодаря этому можно легко поместить отзыв в контекст или конкретизировать его. Комментарии можно сопровождать изображениями, ссылками, форматированным текстом. Каждый комментарий имеет собственный URL-адрес, чтобы им можно было быстро поделиться.
Подтверждение или отклонение запроса pull
Выполнив проверку изменений кода, вы должны сообщить автору запроса pull, готов ли запрос к слиянию. Нажмите кнопку Approve (Подтвердить), чтобы автор запроса получил уведомление о том, что вы считаете слияние изменений возможным. Если вы нажмете кнопку Decline (Отклонить), автор запроса получит противоположное по смыслу уведомление. Отклоненный запрос pull нельзя будет открыть снова. Чтобы выполнить слияние ветки, нужно будет открыть новый запрос pull.
Учтите, что отклонение запроса pull может плохо сказаться на моральном духе автора, поэтому к нему следует прибегать, только если изменения совсем не годятся или данная работа уже не требуется. Сохраняйте доброжелательность, проверяя чужую работу, и всегда стремитесь в первую очередь понять и уже потом — быть понятым.
Слияние запроса pull
После того как код прошел проверку и был подтвержден в рамках запроса pull, нажмите кнопку Merge (Слияние), чтобы выполнить слияние вашей ветки с основной. Изменения кода из исходной ветки будут полностью включены в целевую ветку.