Так исходя из моей страсти как разработчик с открытым исходным кодом, в частности, для Apache Maven Project Отказ Я работаю Джира на основе Что помогает нам и себе организовать нашу работу, и, конечно, следовать зарегистрированным вопросам, запрос на функцию и т. Д.
Так что обычно я начинаю свою работу на основе конкретной проблемы в Джире и проходите через следующий процесс:
Процесс
- Создайте проблему для себя (если уже существующий переход на шаг 2)
- Создайте ветку в соответствующем проекте, основанном на выпуске
- Назначить проблему себе
- Мигрировать проблему в состояние
В ХОДЕ ВЫПОЛНЕНИЯ
- Сделайте некоторые работы на ветке и совершаем
- Толкнуть ветвь к удаленному и пусть Дженкинс проверьте филиал Повторите с шагом 5, пока я не закончу свою работу.
- Rebase против мастера, если это необходимо
- Объедините созданную ветку в Master и удалите удаленный и локальный ветвь.
- Закройте соответствующую проблему JIRA со ссылкой на коммит в комментарии.
Давайте посмотрим на пример реальной жизни. Примерная проблема — Mclean-87 который был разработан и совершил подходящее сообщение, которое должно выглядеть следующее:
[JIRA-ISSUE] - Summary Text Optional description
Так что реальная жизнь Commit выглядит так, как этот :
commit c6eed44352c9ab623836a9329b7645dbb61413bc (HEAD -> master, origin/master, m/master) Author: Karl Heinz MarbaiseDate: Sat Jul 21 18:00:20 2018 +0200 [MCLEAN-87] - Upgrade maven-plugins parent to version 32
Если вы посмотрите на список шагов процесса, это огромное количество шагов. К сожалению, многие шаги являются ручными шагами, которые занимают много времени и подвержены ошибкам.
Так что около четырех или пять месяцев назад я начал автоматизировать/упростить некоторые шаги вышеуказанного процесса.
Автоматизация шага 1.
В процессе этапа 6, в то время как я работал над веткой, я должен снова подтолкнуть текущее состояние филиала снова и снова до удаленного и позволить Jenkins проверить, все, что все пойдет хорошо. Кроме того, может быть, что мне нужно передать эту ветку от мастера, который должен сопровождаться Git push --force филиал
Но а -Force
это Очень опасно что означает, что я должен использовать Git push --force-с арендой веткой
вместо. У меня уже есть завершенность Bash для Git Working, который заставляет много печатать, но я хотел бы сделать его более комфортно.
Поэтому я начал писать сценарий Bash, который содержит следующие шаги:
- Проверьте, есть ли мы на ветке, просто чтобы быть уверенным.
- Получить имя ветви
Git Push Origin --Force-Slay
Так что это значит в конце концов я просто Позвоните в скрипте :
$ gitpushwithlease.sh
Первый шаг автоматизации достигнута, что означает немного улучшения, но недостаточно.
Автоматизация шага 2.
Поэтому через некоторое время, работая с этим, я подумал о процессе шага 8, который действительно нажимает и подвержен ошибкам. Позвольте мне суммировать шаги:
- Проверьте, есть ли мы на ветке
- Получите название ветви
- Оформление мастера
- объединить ветку только в том случае, если быстрый перемотанный возможен, потерпеть неудачу в противном случае
- Нажмите изменения в удаленный мастер
- Удалить удаленную ветвь
- Удалить локальную ветвь
Результатом был мой gitmergeandclean.sh Сценарий, который я использую как следующее:
$ gitmergeandclean.sh
Вывод выглядит так:
~/ws-git-maven/plugins/maven-clean-plugin (MCLEAN-87)$ gitmergeandclean.sh Switched to branch 'master' Your branch is up to date with 'origin/master'. Updating 19b981e..c6eed44 Fast-forward pom.xml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) Total 0 (delta 0), reused 0 (delta 0) remote: Sending notification emails to: ['"commits@maven.apache.org"'] remote: To git@github:apache/maven-clean-plugin.git remote: 19b981e..c6eed44 c6eed44352c9ab623836a9329b7645dbb61413bc -> master remote: Syncing refs/heads/master... To https://gitbox.apache.org/repos/asf/maven-clean-plugin.git 19b981e..c6eed44 master -> master remote: Sending notification emails to: ['"commits@maven.apache.org" '] remote: To git@github:apache/maven-clean-plugin.git remote: - [deleted] MCLEAN-87 remote: Syncing refs/heads/MCLEAN-87 (FORCED)... To https://gitbox.apache.org/repos/asf/maven-clean-plugin.git - [deleted] MCLEAN-87 Deleted branch MCLEAN-87 (was c6eed44).
Второй шаг автоматизации достигнут, что означает больше улучшения, но недостаточно.
Автоматизация шага 3.
Если я работаю на ветке, я часто делаю несколько коммитов, пока я не думаю, что я закончу. Результатом является ветвь, которая содержит 5, 6 или более коммит, которые должны быть раздавлены в единый коммит с хорошим сообщением и ссылкой на проблему, на которой я работаю.
Это можно сделать вручную и интерактивный через следующие шаги:
- Подсчитайте количество коммитов, которые вы хотели бы сквош
- Git Rebase -i Head ~ NumberofCommit
- Проходя через редактор и замените
Выберите
сS
для сквоша. - Безопасно и переписать сообщение Commit.
(Я предполагаю, что я что-то пропустил). Так что это было действительно громоздким. Поэтому я решил найти сценарный путь, чтобы справиться с этим. После некоторых экспериментов я нашел решение, что приводит к моему gitrebasebranch.sh script
$ gitrebasebranch.sh
А в редакторе я только переработал сообщение о коммите. Вот и все. После этого я могу сделать:
$ gitpushwithlease.sh
Третий шаг автоматизации выполнил, что означает больше улучшения, но недостаточно.
История будет продолжена в моем следующем посте.
Оригинал: «https://dev.to/khmarbaise/automate-it—be-lazy—part-i-2m0m»