1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/panda26-gitlab

Клонировать/Скачать
changelog.md 15 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 26.05.2025 02:09 64486eb

История изменений

Этот гайд содержит инструкции о том, когда и как следует создавать запись в истории изменений, а также информацию и историю о нашем процессе ведения истории изменений.

Обзор

Каждая запись, или вход, в нашем файле CHANGELOG.md генерируется из одного файла данных в папке changelogs/unreleased/ (или соответствующей EE). Файл ожидается быть файлом YAML в следующем формате:

---
title: "Прохождение через изменения[логи]"
merge_request: 1972
author: Ozzy Osbourne

Значение merge_request является ссылкой на запрос слияния, который добавляет эту запись, а ключ author используется для предоставления атрибуции для участников сообщества. Оба значения являются необязательными.

Участники сообщества и члены основной команды поощряются добавлять свои имена в поле author. Члены команды GitLab не должны этого делать.

Что заслуживает записи в истории изменений?- Любое изменение, которое влияет на пользователя должно иметь запись в истории изменений. Пример: "GitLab теперь использует системные шрифты для всех текстов."

  • Исправление регрессии, введенной и затем исправленной в том же выпуске (то есть, исправление ошибки, введенной во время ежемесячного выпуска кандидата) не должно иметь запись в истории изменений.
  • Любое изменение, которое влияет на разработчика (например, рефакторинг, устранение технического долга, изменения в тестовом наборе) не должно иметь запись в истории изменений. Пример: "Уменьшение количества созданных записей в базе данных во время моделирования цикла аналитики."
  • Любое вклад от участника сообщества, независимо от того, насколько малым он является, может иметь запись в истории изменений, независимо от этих руководств, если участник хочет иметь такую запись. Пример: "Исправлено опечатание на странице результатов поиска. (Джейн Смит)"## Писание хороших записей в истории изменений

Хорошая запись в истории изменений должна быть описательной и краткой. Она должна объяснять изменение для читателя, который имеет нулевой контекст об этом изменении. Если вы испытываете трудности с тем, чтобы сделать запись одновременно краткой и описательной, лучше склоняться к описательности.

  • Плохо: Перейти к проекту в порядке.
  • Хорошо: Показать проекты, помеченные пользователем, в верхней части выпадающего списка "Перейти к проекту".

Первый пример не предоставляет контекста о том, где было внесено изменение, почему или как это изменение полезно для пользователя.

  • Плохо: Копировать [некоторый текст] в буфер обмена.
  • Хорошо: Обновить подсказку "Копировать в буфер обмена", чтобы указать, что копируется.

Вновь, первый пример слишком расплывчат и не предоставляет контекста.

  • Плохо: Исправляет и улучшает проблемы CSS и HTML в мини-графике потока и выпадающем списке сборок.
  • Хорошо: Исправляет подсказки и состояния наведения курсора в мини-графике потока и выпадающем списке сборок.

Первый пример слишком сосредоточен на деталях реализации. Пользователь не интересуется тем, что мы изменили в CSS и HTML, он интересуется конечным результатом этих изменений.- Плохо: Удаляет nil из массива объектов коммитов, возвращаемых из find_commits_by_message_with_elastic.

  • Хорошо: Исправляет ошибки 500, вызванные ссылками на утилизированные коммиты в результатах ElasticSearch.Первый пример сосредоточен на как мы исправили что-то, а не на что исправлено. Переработанный вариант ясно описывает конечную выгоду для пользователя (меньше ошибок 500) и когда (поиск коммитов с помощью ElasticSearch).

Используйте свое лучшее суждение и попытайтесь поставить себя на место человека, читающего сгенерированный changelog. Добавляет ли этот ввод ценность? Предоставляет ли он контекст о где и почему была сделана эта правка?

Как сгенерировать ввод changelog

Доступен скрипт bin/changelog для автоматической генерации файла ввода changelog.

Его самое простое использование — предоставление значения для title:

$ bin/changelog 'Привет DZ, я добавил функцию в GitLab!'

Имя файла ввода основано на имени текущей ветки Git. Если вы запустите команду выше на ветке feature/hey-dz, она сгенерирует файл changelogs/unreleased/feature-hey-dz.yml.

Команда выведет путь к сгенерированному файлу и его содержимое:

create changelogs/unreleased/my-feature.yml
---
title: Привет DZ, я добавил функцию в GitLab!
merge_request:
author:

Если вы работаете в репозитории GitLab EE, ввод будет добавлен в changelogs/unreleased-ee/ вместо этого.#### Аргументы| Аргумент | Сокращение | Цель | | ----------------- | --------- | --------------------------------------------- | | [--amend] | | Изменить предыдущий коммит | | [--force] | -f | Перезаписать существующий ввод | | [--merge-request] | -m | Установить идентификатор запроса слияния | | [--dry-run] | -n | Не записывать ничего, только вывод | | [--git-username] | -u | Использовать конфигурацию Git user.name как автора | | [--help] | -h | Вывести сообщение помощи |[--amend]: #-amend [--force]: #-force-or-f [--merge-request]: #-merge-request-or-m [--dry-run]: #-dry-run-or-n [--git-username]: #-git-username-or-u [--help]: #-help##### --amend

Вы можете передать аргумент --amend для автоматической стадии сгенерированного файла и внесения изменений в предыдущий коммит.

Если вы используете --amend и не предоставляете заголовок, он автоматически будет использовать "тему" предыдущего коммита, что является первой строкой сообщения о коммите:

$ git show --oneline
ab88683 Добавлено отличное новое функциональное поле в GitLab

$ bin/changelog --amend
create changelogs/unreleased/feature-hey-dz.yml
---
title: Добавлено отличное новое функциональное поле в GitLab
merge_request:
author:
--force или -f

Используйте аргумент --force или -f для перезаписи существующего внесенного изменения, если оно уже существует.

$ bin/changelog 'Привет DZ, я добавил функциональное поле в GitLab!' 
ошибка: changelogs/unreleased/feature-hey-dz.yml уже существует! Используйте `--force` для перезаписи.

$ bin/changelog 'Привет DZ, я добавил функциональное поле в GitLab!' --force
create changelogs/unreleased/feature-hey-dz.yml
---
title: Привет DZ, я добавил функциональное поле в GitLab!
merge_request: 1983
author:
--merge-request или -m

Используйте аргумент --merge-request или -m для предоставления значения merge_request:

$ bin/changelog 'Привет DZ, я добавил функциональное поле в GitLab!' -m 1983
create changelogs/unreleased/feature-hey-dz.yml
---
title: Привет DZ, я добавил функциональное поле в GitLab!
merge_request: 1983
author:
--dry-run или -n

Используйте аргумент --dry-run или -n для предотвращения фактической записи или коммита:```text $ bin/changelog --amend --dry-run create changelogs/unreleased/feature-hey-dz.yml

title: Добавлено отличное новое функциональное поле в GitLab merge_request: author:

$ ls changelogs/unreleased/


##### `--git-username` или `-u`

Используйте аргумент **`--git-username`** или **`-u`** для автоматического заполнения значения `author` с вашим настроенным значением Git `user.name`:

```text
$ git config user.name
Jane Doe

$ bin/changelog -u 'Привет DZ, я добавил функциональное поле в GitLab!'
create changelogs/unreleased/feature-hey-dz.yml
---
title: Привет DZ, я добавил функциональное поле в GitLab!
merge_request:
author: Jane Doe

История и причины

Наш файл CHANGELOG ранее обновлялся вручную каждым вкладчиком, который считал, что его изменения заслуживают внесения в список. Когда два запроса на слияние добавляли свои собственные записи в одно и то же место в списке, это создавало конфликт слияния сразу после того, как другой запрос на слияние был включен. Когда у нас было десятки запросов на слияние, боровшихся за одно и то же место в списке изменений, это быстро стало основным источником конфликтов слияния и задержек в разработке. Это привело нас к [скучному решению] "добавьте вашу запись в случайное место в списке". На самом деле это работало довольно хорошо по мере продвижения каждого месячного цикла выпуска, но в начале нового цикла, когда добавлялся новый раздел версий и было меньше мест для "случайного" добавления записи, конфликты снова становились проблемой, пока количество записей не становилось достаточным. ```Кроме всего прочего, это создало совершенно другую проблему для [менеджеров выпуска], когда они выбирали отдельные коммиты для добавления в стабильную ветку для выпуска патча. Если коммит включал запись в CHANGELOG, он включал бы полный `CHANGELOG` для последней версии в `master`, поэтому менеджеру выпуска приходилось вручную удалять более поздние записи. Они часто должны были это делать несколько раз на каждый патч-выпуск. Это усугублялось, когда нам приходилось выпускать несколько патчей одновременно из-за проблемы безопасности.

Мы нуждались в автоматизации всего этого ручного труда. Поэтому мы начали мозговой штурм. После многочисленных обсуждений мы остановились на текущем решении одного файла на запись, а затем компилировали записи в общий файл CHANGELOG.md во время [процесса выпуска].


Вернуться к документации по разработке

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/panda26-gitlab.git
git@api.gitlife.ru:oschina-mirror/panda26-gitlab.git
oschina-mirror
panda26-gitlab
panda26-gitlab
master