6 секретов Bitbucket
Один из принципов дизайна в Atlassian — лаконичность. В ходе эволюции UX некоторые непопулярные действия, расчитанные на опытных пользователей, были спрятаны в выпадающих списках или за горячими клавишами. Там они ждут предприимчивого пользователя, который случайно наткнётся на них благодаря случайному нажатию клавиш или клику мышки (ну, или заглянет в руководство). Вот шесть моих любимых трюков Bitbucket Cloud, о которых вы, возможно, никогда не слышали:
Омнибар
Омнибар в Bitbucket — это строка быстрого доступа к действиям, похожая на ⇧⇧ в средах разработки JetBrains или ⌘+P в Sublime Text. Запустить омнибар можно на любой странице, нажав клавишу точки.
По умолчанию, он покажет набор действий, соответствующих текущему контексту:
Как только вы начнёте вводить символы, он будет искать по имени репозитории, принадлежащие вам или вашей команде:
А также заголовки задач и пулл реквестов — по всем вашим репозиторям:
И даже файлы в текущем репозитории по их названию:
Кстати, если помимо Bitbucket вы пользуетесь JIRA, попробуйте нажать клавишу точки, когда в следующий раз будете просматривать там какую-нибудь задачу.
Горячие клавиши
Клавиша . для вызова омнибара — всего лишь одна из горячих. С помощью ⇧+? на любой странице можно увидеть список контекстно-зависимых сочетаний клавиш. Вот некоторые из тех, которыми в команде Bitbucket пользуются каждый день:

- / — поместить курсор в строку поиска
- [ — свернуть/развернуть боковое меню
- ⌃+⏎ — опубликовать комментарий
Клавиши-модификаторы могут различаться в зависимости от браузера и операционной системы — перечисленные актуальны для Chrome на OS X, — так что воспользуйтесь списком сочетаний (⇧+?) в своём браузере, чтобы уточнить их.
Бинарные сниппеты
Даже если вы уже пользовались сниппетами в Bitbucket, чтобы делиться кодом, вы можете не знать о том, что с их же помощью можно делиться и другими типами файлов. Просто перетащите любой файл в область сниппета.
Это может быть изображение, видео и даже компилированный код! По размеру файл должен не превышать 10 Мб. Есть также удобная консольная команда для загрузки файлов:
Zip или tar любого коммита

Страница Downloads в репозитории позволяет скачать архив с его кодом в состоянии, в котором он был на момент определённого коммита. Архив может быть zip , tar.gz или tar.bz2 :
Используемые в ссылках этой страницы URL выглядят примерно так:
bitbucket.org/atlassian/atlassian-connect-express/get/v1.0.4.zip
На самом деле, можно заменить любым уникальным идентификатором коммита. Например, указав его короткий SHA-1 хеш: bitbucket.org/. /get/badc0de.zip
Более того, можно использовать ссылки на родительские коммиты — вот так можно сослаться на второго прародителя текущей ветки master : bitbucket.org/. /get/master^2~2.zip
Это может оказаться весьма удобным для нужд Continuous Integration и Continuous Delivery, когда необходимо скачать образ репозитория на момент определённого коммита. Git поддерживает кучу способов идентифицировать коммит, а кроме того, этот способ работает и с Mercuruial!
Настройка интерфейса
В июне мы запустили фреймворк Bitbucket Connect, позволяющий расширять пользовательский интерфейс Bitbucket. Возможно, вы уже пользовались какими-то из сторонних утилит, которые интегрировались с Bitbucket с помощью этого фреймворка. Однако с помощью Bitbucket Connect вы можете изменить ваш собственный Bitbucket.
К примеру, вот такой JSON является самостоятельным расширением для Bitbucket Connect:
< "key": "download-commit-as-zip", "name": "Download commit as ZIP", "description": "Adds a \"Download as ZIP\" link to the commits page on Bitbucket", "baseUrl": "https://bitbucket.org", "modules": < "webItems": [< "key": "download-link", "url": "https://bitbucket.org//get/.zip", "name": < "value": "Download as ZIP" >, "location": "org.bitbucket.commit.summary.actions", "params": < "auiIcon": "aui-iconfont-down" >>], "oauthConsumer": < "clientId": "WaLh6mhKdRUDpVcXAH" >>, "scopes": ["team"], "contexts": ["personal"] >

После установки в Bitbucket на страницах коммитов появится ссылка Download as ZIP, — она будет использовать вышеупомянутый ресурс /get/.zip :
Этот аддон я выложил в виде сниппета, и установить его себе можно с помощью этой ссылки.
Вы можете использовать этот способ для добавления ссылок в ваши репозитории, визуализации вашего кода или реализации совершенно новых возможностей на основе Bitbucket. У фреймворка есть документация и получасовой видео-урок.
Включение предрелизных функций

Если вы дочитали до сюда, то наверняка любите всё самое новое. Если это действительно так, зайдите в настройки Bitbucket и выберите Manage features в меню слева, чтобы включить предрелизные функции. К слову, прямо сейчас вас там ждёт улучшенный список пулл реквестов!
Время от времени заглядывайте в настройки снова, поскольку команда Bitbucket зачастую выкладывает тизер- и бета-версии задолго до официального релиза.
На сегодня всё
Спасибо за чтение! Если вы хотите поделиться своими трюками в Bitbucket или если у вас есть классная идея для расширения, оставьте комментарий здесь или пишите Тиму @kannonboy в Twitter.
Я с удовольствием отвечу на вопросы об этих и других возможностях Bitbucket. Надеюсь, какие-то из перечисленных трюков станут полезными для вас.
Автор оригинальной статьи — Тим Петтерсен, участвовал в разработке JIRA, FishEye/Crucible и Stash. С начала 2013 года он рассказывает о процессах разработки, git, непрерывной интеграции и поставке (continuous integration/deployment) и инструментах Atlassian для разработчиков, особенно о Bitbucket. Тим регулярно публикует заметки об этих и других вещах в Twitter под псевдонимом @kannonboy.
Знакомство с интерфейсом Bitbucket
Прежде чем начать, создайте аккаунт Bitbucket Cloud, чтобы самостоятельно ознакомиться с особенностями этого сервиса. В этом руководстве кратко рассказывается о компонентах Bitbucket, которыми вы будете часто пользоваться, поэтому не закрывайте эту вкладку, пока регистрируетесь. Возвращайтесь, как только закончите.
Хотите начать работу с Bitbucket Server? Перейдите по ссылке.
Давайте теперь познакомимся с пользовательским интерфейсом Bitbucket и поговорим о том, что нужно, чтобы начать работу.
Ваша работа
На дашбоарде Your work (Ваша работа) отображаются запросы pull и репозитории, имеющие к вам отношение.

- На дашбоарде Your work (Ваша работа) отображаются открытые запросы pull, проверяющим которых вы являетесь, открытые запросы pull, созданные вами, и список репозиториев, к которым вы имеете доступ.
Репозитории
В окне Repositories (Репозитории) отображается список всех репозиториев, к которым вам предоставлен доступ.

- По умолчанию список отсортирован по дате изменения, поэтому вверху будет располагаться репозиторий, который был изменен последним. Можно также выполнить поиск репозитория по имени или отфильтровать список по названию проекта или имени владельца репозитория.
- Для просмотра только тех репозиториев, которые вы отслеживаете, выберите фильтр Watching (Отслеживание).
Проекты
С помощью проектов можно группировать и структурировать репозитории. Так их будет проще найти. В окне Projects (Проекты) можно просмотреть существующие проекты и создать новые. Если нажать по проекту, откроется список со всеми репозиториями в нем.

Запросы pull
Проверка кода является важным этапом в жизненном цикле разработки программного обеспечения. Благодаря ей вы будете уверенно поставлять качественный код. В Bitbucket проверка кода осуществляется через запросы pull. В окне Pull requests (Запросы pull) вы можете быстро найти все, что требует внимания.

Выбрать, какие запросы pull будут отображаться в списке, можно с помощью кнопок быстрой фильтрации:
- Reviewing (Проверка) — запросы pull, для которых вы назначены проверяющим
- Watching (Отслеживание) — запросы pull, которые вы отслеживаете
- Mine (Мои) — запросы pull, которые создали вы
- Teams (Команды) — запросы pull, которые создала ваша команда
Неполадки
Когда вы добавляете репозиторий в Bitbucket Cloud, вы также получаете средство отслеживания задач. Оно позволяет отслеживать запросы на новые функции, сообщения об ошибках и прочие задачи вашего проекта.

Ваши настройки Bitbucket
В разделе настроек Bitbucket находятся важные настройки, с помощью которых вы можете управлять своим аккаунтом, например:
- Security settings (Настройки безопасности) — SSH-ключи и двухфакторная аутентификация
- Notifications settings (Настройки уведомлений)
- Apps and integration (Приложения и интеграции) — поиск и установка приложений из магазина Bitbucket, а также управление ими

Чтобы открыть настройки Bitbucket, нажмите на своем аватаре в левом нижнем углу и выберите Bitbucket settings (Настройки Bitbucket)
GIT и BitBucket: Командная разработка кода
Современная командная работа в среде программирования невозможна без системы управления версиями кода. Проект, над которым одновременно трудятся больше 5 разработчиков, без подобных программ был бы просто невозможен. На этой странице будет рассмотрен великолепный инструмент используемый разработчиками — GIT. Здесь будет рассказано о командах GIT, о том, как использовать с BitBucket. Интерфейс BitBacket изменился после написания статьи. Смотрите как работать с BitBucket в новой версии в уроке курса Linux/GIT.
Как управлять различными версиями кода
![]()
Чтобы понять степень необходимости использования систем позволяющих управлять различными версиями кода, необходимо рассмотреть процесс работы по созданию сайта. Допустим, у вас есть интересная идея. Вы решили заняться ее реализацией самостоятельно. Вами был взят за основу один из известных фреймворков. С его помощью вы стали воплощать свои мысли в жизнь. Создав первичный прототип сайта, вы показали его своим знакомым. Все признали проект многообещающим. И один из ваших друзей настолько проникся идеей, что решил финансировать вашу разработку. У вас появились деньги, и вы наняли программиста. Работа пошла вдвое быстрее. Теперь код пишет два человека. С этой целью через FTP клиент вносятся изменения в программный код сайта, расположенного на тестовом хостинге. Это может вас устраивать и продолжаться долго. Пока в вашей команде не появится третий участник. В случае необходимости работы над одним и тем же файлом, одному программисту придётся ждать, пока свою работу не закончит другой. Если не соблюдать очередность и работать над текстом одновременно, рано или поздно кто-то затрет изменения, уже внесённые в файл, но не сохранённые. Такая работа становится совсем неэффективной, когда в группе больше чем 3 человека.
Система управления версиями кода поможет исправить ситуацию

Используя подобный инструмент можно не переживать о потере изменений внесенных другими разработчиками. Кроме того вы всегда будете в курсе изменений внесенных членами вашей команды. Рассмотрим работу систем управления версиями кода на примере программы GIT. Возможности системы GIT. Скачайте саму программу по этой ссылке: https://git-scm.com/downloads Перед скачиванием необходимо выбрать версию, которая подходит под вашу операционную систему. Наиболее распространенной является Windows. На этом примере мы и рассмотрим процесс установки GIT. После загрузки программы, кликните мышкой по установочному файлу exe, произведите его запуск, далее нажмите next. Настройки лучше оставить по умолчанию. При правильном соблюдении последовательности действий, у вас будут установлены две программы: git Bash и еще Git GUI. Стартовые ярлыки программ находятся в папках установки.
Работа с git
Что такое репозитарий git и как его создать.

Репозиторий git выполняет функции хранилища кода. В нем находятся служебные файлы git. Для создания GIT репозитория, необходимо запустить программу git Bash, которую вы уже установили. После пуска программы, можно наблюдать такой результат: Найдите каталог проекта. Там и будет создаваться репозиторий GIT. Вот пример возможного пути к каталогу сайта: C:\xampp\htdocs\fructcode Для осуществления перехода между папками дается команда cd. Наберите в командной строке: cd /c/xampp/htdocs/fructcode попав в каталог проекта, запускаем git репозиторий. С этой целью введите команду: git init При правильном выполнении действий появится строка: Initialized empty Git repository in c:/xampp/htdocs/fructcode/.git/ Она и означает успешное создание репозитария GIT. В корневой папке каталога проекта, можно увидеть появление новой директории каталога git.
Добавление в репозиторий GIT файлов составляющих проект
После создания репозитария необходимо выполнение команды: git add * Так как мы просто знакомимся с программой, то и настройки GIT применять мы будем простейшие. В процессе разработки серьезного проекта происходит добавление в репозиторий исключительно необходимых для работы файлов. При использовании команды git add * происходит загрузка всех файлов проекта. Далее будут рассмотрены усложненные настройки этой программы.
Команда GIT COMMIT

Поместив файловые данные в репозиторий, переходим к созданию Commit. Этим словом обозначается документирование изменений, вносимых в репозиторий GIT. Вы можете увидеть такое сообщение: Fix bug No342 in header Это сообщение обозначает, что нужно задать имя пользователя и email пользователя GIT. Вначале задается глобальное имя пользователя, а также email пользователя GIT. Затем идет сам Commit. Команды, служащие в этих целях: git config —global user.email [email protected] – команда задающая значение email пользователя. git config —global user.name «your name» — команда задающая значение имени пользователя. Создадим первый commit. Здесь применяется команда: git commit -m «init project» При верном выполнении действий должны появиться следующие строки: Здесь коммит имеет название init project. Необходимо присваивать коммитам названия несущие смысловую нагрузку. Требуйте такого от всей вашей команды разработчиков. Названия со смыслом будут указывать на характер задачи, над которой работает программист.
Команда GIT PUSH
Итак, репозиторий вами подготовлен. На следующем этапе решается задача внесения изменений в виртуальный репозиторий BitBucket, созданный вами ранее. Изменения вносятся при помощи команды git push. Далее нужно войти в свой аккаунт BitBucket. Выберете ранее созданный репозиторий. Там вы найдете адрес репозитория устанавливаемого на удаленный сервер. Его можно увидеть вверху справа на панели управления программой.
Скопировав адрес, запустите команду: git remote add origin https://[email protected]/YOURUSER/YOURREP.git Получив запрос от репозитория bitbucket, далее нужно ввести пароль. Пройдя в личный кабинет BitBucket, в коммитах можно увидеть свой коммит:
Это окно содержит информацию об изменениях, вносимых в код. Здесь указано, кем он был изменен, а также комментарии к внесённым изменениям. Нажав на кнопку коммита можно просмотреть изменения кода, которые сделал пользователь.
Итог
В результате урока вы поняли принцип создания GIT репозитория, познакомились с рядом простых команд. Дальше вы можете познакомиться с командой git pull и научиться загружать изменения из репозитория на сайт, установленный на локальном сервере.
Научитесь профессионально работать с контролем версий кода GIT по цене чашки кофе.
Bitbucket для повышения качества кода. Четыре шага, чтобы начать работу
Прежде чем начать, вам понадобится аккаунт Bitbucket Cloud, чтобы повторять действия, описанные в этом обучающем руководстве. Из этого руководства вы узнаете о компонентах Bitbucket, которыми будете часто пользоваться, поэтому у вас также должна быть установлена система Git и вы должны быть знакомы с ее основными командами и принципами работы.
Теперь можно загрузить код в Bitbucket.
Шаг 1. Переместите свой код в Bitbucket
Репозитории (которые специалисты с любовью называют «репами») — это место, где код хранится в Bitbucket. Начать работу можно по-разному в зависимости от ваших потребностей.
- С чистого листа
- При помощи другого поставщика
Создание нового пустого репозитория
- Нажмите + на общей боковой панели, расположенной в левой части экрана, и выберите в разделе Create new (Создать) пункт Repository (Репозиторий).
- Присвойте репозиторию имя. Это важно! Имя репозитория включается в его URL-адрес.
- Выберите для параметра Include a README? (Добавить файл README?) значение Yes, with a template (Да, с помощью шаблона).
- Настройки остальных параметров можно не менять. Нажмите Create (Создать).

Импорт репозитория от другого поставщика Git
- Нажмите + на общей боковой панели, расположенной в левой части экрана, и выберите в разделе Import (Импорт) пункт Repository (Репозиторий).
- Укажите URL для доступа к репозиторию.
- Если для доступа к вашему репозиторию требуется авторизация, установите флажок Requires authorization (Требуется авторизация) и введите учетные данные для доступа.
- Присвойте репозиторию имя. Это важно! Имя репозитория включается в его URL-адрес.
- Настройки остальных параметров можно не менять. Нажмите Import repository (Импортировать репозиторий).

Шаг 2. Подготовьте локальную систему, чтобы сотрудничать с коллегами со всего мира
Теперь, когда у вас есть репозиторий в облаке, нужно подготовить локальную систему, с помощью которой вы будете писать или изменять код в Bitbucket. К этому моменту у вас должна быть установлена и настроена система Git. Если вы пропустили этот шаг, вернитесь и выполните необходимые действия. Напоминаем, что у нас есть для этого отдельное руководство!
Клонирование репозитория Bitbucket
Итак, вы создали (или импортировали) репозиторий. Прежде чем вы сможете принять участие в изменении кода в репозитории Bitbucket, вы должны клонировать этот репозиторий в свою локальную систему. Подробнее о клонировании в Git.
- Нажмите «+» на общей боковой панели, расположенной в левой части экрана, и выберите в разделе Get to work (Приступаем к работе) пункт Clone this repository (Клонировать этот репозиторий).
- Выберите в меню, расположенном в правом верхнем углу экрана, вариант HTTPS (если вы уже не настроили SSH-ключи).
- Скопируйте команду клонирования.

Из интерфейса командной строки
- Перейдите в каталог, в который вы хотите клонировать репозиторий. cd
- Вставьте команду, которую вы скопировали из Bitbucket (она будет выглядеть примерно так): git clone https://username@bitbucket.org/teamsinspace/documentation-test.git
На вашем локальном диске появится новый подкаталог с тем же именем, что и клонированный репозиторий. Если вы клонировали пустой репозиторий, этот локальный каталог пока может быть пуст.
Изменение файла в Bitbucket в режиме онлайн
Подождите, у меня нет файлов в Bitbucket.
Вы пропустили необязательный шаг и не добавили файл README в репозиторий Bitbucket? Не переживайте! Если репозиторий пуст, перейдите в него и нажмите Create a README (Создать файл README). Теперь вы можете клонировать репозиторий, в котором есть файлы.
Извлечение (pull) обновлений из Bitbucket
Из интерфейса командной строки
- Перейдите в каталог, в который вы хотите клонировать репозиторий. cd
- Вставьте команду, которую вы скопировали из Bitbucket (она будет выглядеть примерно так): git clone
Выполнив команду, вы загрузите все изменения, внесенные в эти файлы, в свою локальную систему.
Шаг 3. Выполняйте базовые операции с ветками с помощью Bitbucket
Благодаря ветвлению участники команды могут работать одновременно над разными участками кода, не изменяя исходную базу кода и не мешая работе других участников. Когда вы будете готовы выполнить слияние изменений, отправьте свою ветку в Bitbucket, чтобы ее можно было проверить посредством запроса pull.
Создавать ветки можно несколькими способами. Выберите тот, который лучше других отвечает потребностям вашей команды.
Создание ветки
- Из Bitbucket (самый простой способ)
- Из интерфейса командной строки
- Из Jira
- Находясь в репозитории, нажмите «+» на общей боковой панели и выберите в разделе Get to work (Приступаем к работе) пункт Create a branch (Создать ветку).
- В появившемся всплывающем окне выберите Type (Тип) (если вы используете модель ветвления), введите имя ветки в поле Branch name (Имя ветки) и нажмите Create (Создать).

Из интерфейса командной строки
- После создания ветки выберите ее и переключитесь на эту ветку в вашей локальной системе. Bitbucket автоматически отобразит необходимую команду, которая будет выглядеть примерно так: git fetch && git checkout
- Внесите изменения в локальной системе, затем добавьте изменения, сделайте коммит и отправьте изменения в ветку: git add . git commit -m «добавлено изменение в функциональную ветку» git push origin
- Перейдите на страницу Source (Исходный код) в своем репозитории. В раскрывающемся списке вы увидите главную ветку и ветку

Из интерфейса командной строки, находясь в каталоге локального репозитория
- Создайте ветку с помощью команды Git branch. git branch
- Просмотрите список веток в репозитории. Вы увидите главную ветку по умолчанию и новую ветку, которую вы создали. git branch
- Переключитесь на эту ветку. git checkout
- Отправьте новую ветку в Bitbucket. git push —set-upstream origin
Теперь перейдем в Bitbucket и посмотрим на нашу ветку.
- Перейдите в репозиторий.
- Нажмите Branches (Ветки).

Для этого у вас должен быть доступ к сервису Jira Software Cloud, который вы должны интегрировать с Bitbucket. Для этого нужны права администратора, но если вы хотите просто поэкспериментировать с интеграцией и посмотреть, как она работает, вы всегда можете оформить подписку на бесплатную пробную версию Jira Software Cloud.
Интеграцию этих двух продуктов можно выполнить сразу после настройки сайта Jira. Инструкции по интеграции приведены в статье Подключение Bitbucket Cloud к Jira Software Cloud.
Шаг 4. Проверьте изменения кода при помощи запроса pull
Когда изменения вашего кода переданы в Bitbucket, они должны быть проверены коллегой. Запросить проверку кода и в целом вести совместную работу в общей среде со своей командой проще и эффективнее всего посредством запросов pull.
Создание запроса pull
- В открытом репозитории нажмите «+» на общей боковой панели и выберите в разделе Get to work (Приступаем к работе) пункт Create a pull request (Создать запрос pull).
- Заполните остальные поля формы запроса pull:

- Source (Источник): репозиторий и ветка, в которой вы изменили код и теперь хотите выполнить слияние этих изменений.
- Destination (Назначение): репозиторий и ветка, в которую вы хотите слить изменения.
- Title and Description (Заголовок и описание): значения этих двух полей будут использоваться в уведомлениях, отправляемых по электронной почте. Заголовок также будет отображаться в списке запросов pull.
- Reviewers (Проверяющие): выберите проверяющих, которые будут оставлять полезные отзывы об изменениях и должны будут подтверждать изменения.
- Close branch (Закрыть ветку): установите этот флажок, если хотите, чтобы ветка автоматически закрылась после слияния запроса pull.
- Diff and Commits (Различия и коммиты): на этих вкладках можно просмотреть внесенные изменения (Diff) и включенные коммиты.
- Нажмите Create pull request (Создать запрос 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 (Слияние), чтобы выполнить слияние вашей ветки с основной. Изменения кода из исходной ветки будут полностью включены в целевую ветку.