Ветвление используется в системе контроля версий программного обеспечения. Копии файлов проекта, называемые ветвями, позволяют командам работать над параллельными версиями проекта одновременно, сохраняя при этом неизмененную копию. Это исключает риск случайной перезаписи чужих изменений в файлах проекта.
Основной проект копируется при создании новой ветви, при этом изменения вносятся только в эту ветвь. Когда изменения будут завершены, ветвь объединяется с основным проектом. Можно работать над несколькими ветвями одновременно, и после слияния ветви автоматически удаляются. Объединенные ветви остаются доступными на вкладке для упрощенного отслеживания истории. Теги из существующей ветви копируются в новую ветвь.
Ограничения
-
Все роли, кроме переводчика и гостя, могут получить доступ к представлению .
-
Слияния нельзя отменить, а ветви нельзя восстановить после удаления.
-
Задания, созданные в конкретной ветви, не видны в основном проекте, и наоборот. Когда ветвь объединяется с основным проектом, все открытые в ней задания теряются.
-
Отчеты в представлении отражают только статус активной ветви. Слияние ветви с основным проектом обновляет отчеты основного проекта.
-
Представление содержит только действия в активной ветви. Действия в ветвях не видны в основном проекте, и наоборот. Действия в ветви теряются при ее слиянии с основным проектом.
-
GitHub Sync можно использовать только в основном проекте, а не в ветвях.
-
Комментарии, сделанные в ветви, не видны в основном проекте и наоборот.
-
, созданные в ветви, не видны в основном проекте и наоборот. Когда ветвь объединяется с основным проектом, любые открытые в ней заказы теряются.
-
Переводчиков нельзя ограничить конкретными ветвями, но им предоставляется разрешение на работу с определенными локалями. Переводчиков следует проинструктировать, как работать с ветвями.
Ветвление включается на вкладке в с возможностью защитить основную ветвь от изменений.
При включении меню ветви отображается на экране проекта, где можно выбрать рабочие ветви. Чтобы указать ветвь в CLI, используйте параметр
--branch:
--branch <branch_name>
Ветви перечислены на вкладке проекта, где представлена информация о создании и слиянии. Ветви также можно удалить или объединить, а также создавать задания для этой ветви на вкладке .
Чтобы вывести список всех ветвей для проекта через интерфейс приложений API или CLI, выполните:
$ phrase branches list --project_id <Идентификатор проекта> # например $ phrase branches list --project_id 1d8ae641902624df63ce6fbd64ff9549$ phrase branches list <Идентификатор проекта>
Чтобы удалить ветвь через интерфейс приложений API или CLI, выполните:
$ phrase branches delete --project_id <Идентификатор проекта> --name <branch_name> # например $ phrase branches delete --project_id 1d8ae641902624df63ce6fbd64ff9549 --name test-test$ phrase ветвь удалить <Идентификатор проекта> <branch_name>
Защитить основную ветвь
ограничивает правки в основном проекте, требуя, чтобы все изменения вносились в ветвь.
При включении:
-
Языковые стандарты, ключи и переводы нельзя добавлять, изменять или удалять напрямую в основном проекте. Это ограничение применяется к ресурсу языкового стандарта в целом, включая конфигурацию для каждого языкового стандарта, такую как назначенный профиль машинный перевод, а не только имя языкового стандарта или переводы.
Чтобы изменить настройку для конкретного языкового стандарта в защищенном основном проекте, временно отключите защиту ветви, внесите изменение, а затем снова Включить защиту.
-
Загрузка файлов и управление скриншотами отключены в основном проекте.
-
Перед импортом файлов необходимо выбрать ветвь.
-
Автоматизация не запускается для основного проекта.
Администратор, менеджер проекта, дизайнер и разработчик могут создавать новые ветви на вкладке , через интерфейс приложений API или в CLI. Ветви можно создавать из любой другой ветви, а не только из основной ветви. Поддерживается до 5 уровней ветви.
Чтобы создать ветвь через пользовательский интерфейс, выполните следующие действия:
-
На странице выберите вкладку .
-
Нажмите Создать ветвь.
Откроется окно .
-
Укажите имя для ветви.
-
Выберите из списка существующих ветвей.
-
Нажмите «Создать».
Новая ветвь будет добавлена в список.
Чтобы создать ветвь через интерфейс приложений API или CPI, выполните:
$ phrase branches Создать --project_id <project_id> --data <data>
Чтобы Создать ветвь при отправке переводов, выполните:
$ phrase push --branch <branch_name>
Синхронизация гарантирует, что рабочая ветвь остается согласованной с последними изменениями из ветвь, из которой она произошла. Таким образом, переводчики могут работать с обновленной версией контент также в долгосрочных проект.
Чтобы синхронизировать ветвь с ее базовой ветвь, выполните следующие действия:
-
На вкладка нажмите Синхронизировать с базовой ветвь рядом с нужной ветвь.
Отображается страница с информацией о любых конфликтах и изменить, которые необходимо синхронизировать с базовой ветвь.
-
Нажмите на любое из обнаруженных изменить, чтобы просмотреть его перед синхронизацией.
Отображается таблица с подробной информацией о выбранном изменить.
-
выбрать Синхронизировать и подтвердить, чтобы применить изменить.
Изменения добавляются в базовую ветвь и становятся видны в редактор переводов. Информация о последней синхронизации отображается в столбце на вкладка .
Синхронизацию ветвь также можно выполнить через интерфейс приложений API, запустив эту команду CLI:
$ phrase branches sync \\
--project_id <project_id> \
--name <branch_name> \\
--data '{\"strategy\":\"use_main\"}' \\
--access_token <token>
-
use_branchразрешает конфликты путем применения изменений из ветвь и, если не указано иное, используется по умолчанию. -
Использовать основнуюразрешает конфликты путем отклонения изменений из ветви и ссылается на базовую ветвь. При работе со стековыми ветвями базовая ветвь не обязательно является фактической основной ветвью проекта.
После завершения работы над переводом или версией в ветви любые изменения могут быть объединены с базовой ветвью. Как только все изменения будут объединены вверх по цепочке, ветвь верхнего уровня может быть объединена с основной ветвью.
После успешного объединения объединенная ветвь автоматически удаляется и появляется на вкладке для отслеживания истории.
Во время объединения к базовой ветви применяются только изменения следующих ресурсов:
-
Языковые стандарты
-
Ключи
-
Переводы
Изменения других ресурсов, таких как действия, задания и заказы, не применяются.
Ветви с активными дочерними элементами нельзя объединить, пока дочерние элементы не будут удалены или объединены первыми.
Конфликты
Конфликт возникает, когда ресурс (перевод, ключ или языковой стандарт) был изменен как в текущей ветви, так и в ее базовой ветви после создания или последней синхронизации ветви. Конфликты могут возникать на любом уровне стека ветвей, а не только при объединении с основной.
Чтобы объединить ветвь, выполните следующие действия:
-
На вкладке проекта нажмите Объединить с базовой ветвью рядом с нужной ветвью.
Откроется страница . Информацию о переводах, которые будут изменены во время объединения, можно получить, нажав на ячейки.
-
Если есть конфликты, выберите стратегию объединения:
-
Выберите , чтобы отклонить конфликтующие изменения и сохранить существующие переводы.
-
Выберите , чтобы заменить существующие переводы изменениями из ветви.
-
-
Нажмите Объединить и подтвердите, чтобы применить изменения.
Ветвь объединяется с базовой ветвью и удаляется автоматически. Чтобы просмотреть историю объединенной ветви, откройте вкладку на странице .
Чтобы объединить ветвь через интерфейс приложений API или CPI, выполните:
$ phrase branches merge \\
--project_id <project_id> \
--name <name> \\
--data '{\"strategy\":\"use_main\"}' \\
--access_token <token>
-
use_branchразрешает конфликты путем применения изменений из ветвь и, если не указано иное, используется по умолчанию. -
use_mainразрешает конфликты путем отклонения изменений из ветви.use_masterтакже поддерживается.
Действие merge также автоматически удаляет объединенную ветвь.
При использовании CLI укажите ветвь для отправки или получения с помощью параметра --branch.
$ phrase push --branch <branch_name> $ phrase pull --branch <branch_name>
Если указанная ветвь не существует в проекте, клиент создает ее.
Используйте --use-local-branch-name для отправки и получения с использованием имени активной ветви git:
$ phrase push --use-local-branch-name $ phrase pull --use-local-branch-name
Все конечные точки интерфейса приложений API, принимающие аргумент проекта, также поддерживают параметр --branch для выполнения действия над конкретной ветвью проекта:
$ phrase upload create <project_id> \\
--branch <branch_name>
--file /path/to/my/file.json \
--file-format json \\
--locale-id abcd1234cdef1234abcd1234cdef1234 \
--tags awesome-feature,needs-proofreading \\
--locale-mapping "{\"en\": \"2\"}" \
--format-options "{\"foo\": \"bar\"}"