Skip to content

Commit

Permalink
GitHub Flow migration
Browse files Browse the repository at this point in the history
: Historical Background

Back on July 22 2017, this style guide for Git was created that also
included the compliance with Git Flow [1]. Generally this branching
model is really dynamic and can help a larger team to keep the overview
of different story implementations while being able to build and deploy
version backports. Using `develop` as the main branch also helps to
make sure the `master` branch always contains stable versions.

Anyway, the model also comes with disadvantages like the overhead of
keeping both `develop` and `master` in sync when tagging a new release
version. The main target groups for this model are larger teams that
work on projects with legacy support.

I've adapted Git Flow because I liked the idea of having one branch that
reflects the actual development state, but after using it for over 6
years I don't see any advantages in it anymore compared to other great
models like GitHub Flow [2]. I've checked the original Git Flow blog
post of Vincent Driessen again and was amazed that he recently
(March 5, 2020) added an update at the top of the post that exactly
matches my opinion regarding the fact that Git Flow is not suitable
these days, comes with too much overhead and that he now recommends to
use GitHub Flow instead:

> Note of reflection (March 5, 2020)
>
> This model was conceived in 2010, now more than 10 years ago, and not
> very long after Git itself came into being. In those 10 years,
> git-flow (the branching model laid out in this article) has become
> hugely popular in many a software team to the point where people have
> started treating it like a standard of sorts — but unfortunately also
> as a dogma or panacea.
>
> During those 10 years, Git itself has taken the world by a storm,
> and the most popular type of software that is being developed with Git
> is shifting more towards web apps — at least in my filter bubble. Web
> apps are typically continuously delivered, not rolled back, and you
> don't have to support multiple versions of the software running in the
> wild.
>
> This is not the class of software that I had in mind when I wrote the
> blog post 10 years ago. If your team is doing continuous delivery of
> software, I would suggest to adopt a much simpler workflow (like
> GitHub flow) instead of trying to shoehorn git-flow into your team.
>
> If, however, you are building software that is explicitly versioned,
> or if you need to support multiple versions of your software in the
> wild, then git-flow may still be as good of a fit to your team as it
> has been to people in the last 10 years. In that case, please read on.
>
> To conclude, always remember that panaceas don't exist. Consider your
> own context. Don't be hating. Decide for yourself.

This update perfectly reflects the way I thought about the Git Flow
model quite a while now.
Therefore I've finally decided to switch to GitHub Flow and retire the
good old `develop` in favor of `master` as the one and only
single-source-of-truth™️.

: Migration Tasks

Since all Arctic Ice Studio projects adhere to this guide each
repository must gradually adapt to this change one after the other.
Large projects like Nord [3] with all of it's port projects [4] will
require a lot more time and effort to migrate regarding the goal and
tooling compatibility of the actual project.
Smaller projects like my igloo [5] dotfile repository, snowsaw [6] as
well as this style guide repository itself are way easier and can be
done within the next few weeks.

[1]: https://nvie.com/posts/a-successful-git-branching-model
[2]: https://guides.github.com/introduction/flow
[3]: https://www.nordtheme.com
[4]: https://www.nordtheme.com/ports
[5]: https://github.com/arcticicestudio/igloo
[6]: https://github.com/arcticicestudio/snowsaw

GH-9
  • Loading branch information
arcticicestudio committed Apr 6, 2020
1 parent 3de2eeb commit 05e3fae
Show file tree
Hide file tree
Showing 6 changed files with 23,529 additions and 2,432 deletions.
71 changes: 31 additions & 40 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,52 +1,43 @@
<p align="center"><img src="https://rawgit.com/arcticicestudio/styleguide-git/develop/src/assets/styleguide-git-banner-typography.svg"/></p>
<div align="center"><img src="https://raw.githubusercontent.com/arcticicestudio/styleguide-git/develop/assets/banner-repository.svg?sanitize=true"/></div>

---
<p align="center">Changelog for the official <em>Arctic Ice Studio</em> <a href="https://git-scm.com" target="_blank">Git</a> Style Guide.</p>

# 0.2.0
<details>
<summary>Version Details</summary>
<p>
Release Date: *2017-07-24*
<a href="https://github.com/arcticicestudio/styleguide-git/milestone/2">Milestone</a>
<a href="https://github.com/arcticicestudio/styleguide-git/projects/3">Project Board</a>
</p>
</details>

![Release Date: 2017-07-24](https://img.shields.io/badge/Release_Date-2017--07--24-88C0D0.svg?style=flat-square) [![Project Board](https://img.shields.io/badge/Project_Board-0.2.0-88C0D0.svg?style=flat-square)](https://github.com/arcticicestudio/styleguide-git/projects/3) [![Milestone](https://img.shields.io/badge/Milestone-0.2.0-88C0D0.svg?style=flat-square)](https://github.com/arcticicestudio/styleguide-git/milestone/2)

## Features
### Style Guide
❯ Added [branch naming][src-branch-naming] conventions and guidelines for [core][src-branch-naming-core]- and [story branches][src-branch-naming-story] following the [gitflow][gitflow] branching model. (#3 in PR #6)

❯ Added conventions and guidelines for [tags][src-tags] following the [Arctic Versioning Specification][arcver]. (#4 in PR #5)
### Documentation

**Branch naming conventions and guidelines**#3#6 (⊶ d1493353)
↠ Added [branch naming][src-docs-branch-naming] conventions and guidelines for [core][src-docs-branch-naming-core]- and [story branches][src-docs-branch-naming-story] following the [Git Flow][git_flow] branching model.

**Tag naming conventions and guidelines**#4#5 (⊶ 89924cb9)
↠ Added conventions and guidelines for [tags][src-docs-tags] following the [Arctic Versioning Specification][arcver].

# 0.1.0
<details>
<summary>Version Details</summary>
<p>
Release Date: *2017-07-22*
<a href="https://github.com/arcticicestudio/styleguide-git/milestone/1">Milestone</a>
<a href="https://github.com/arcticicestudio/styleguide-git/projects/2">Project Board</a>
</p>
</details>

![Release Date: 2017-07-22](https://img.shields.io/badge/Release_Date-2017--07--22-88C0D0.svg?style=flat-square) [![Project Board](https://img.shields.io/badge/Project_Board-0.1.0-88C0D0.svg?style=flat-square)](https://github.com/arcticicestudio/styleguide-git/projects/2) [![Milestone](https://img.shields.io/badge/Milestone-0.1.0-88C0D0.svg?style=flat-square)](https://github.com/arcticicestudio/styleguide-git/milestone/1)

## Features
### Style Guide
❯ Added the initial style guide [introduction][src-introdcution], information about the [structural split of changes][src-structural-split], [bad practices][src-structural-split-bad-practices] and the main chapter about [commit messages][src-commit-messages] with the [summary][src-commit-messages-summary], [body][src-commit-messages-body] and [footer][src-commit-messages-footer] elements and their [structure][src-commit-messages-structure]. (#1 in PR #2)

### Documentation

**Initial style guide and project documentation**#1#2 (⊶ 7c746dae)
↠ Added the initial style guide [introduction][src-docs-introdcution], information about the [structural split of changes][src-docs-structural-split], [bad practices][src-docs-structural-split-bad-practices] and the main chapter about [commit messages][src-docs-commit-messages] with the [summary][src-docs-commit-messages-summary], [body][src-docs-commit-messages-body] and [footer][src-docs-commit-messages-footer] elements and their [structure][src-docs-commit-messages-structure].

[arcver]: https://github.com/arcticicestudio/arcver
[checkstyle-github]: https://github.com/checkstyle/checkstyle
[checkstyle-jetbrains-plugin]: https://plugins.jetbrains.com/plugin/1065-checkstyle-idea
[checkstyle-version]: https://github.com/checkstyle/checkstyle/releases/tag/checkstyle-8.0
[gitflow]: http://nvie.com/posts/a-successful-git-branching-model/
[scrot-ide-setup-intellij-checkstyle-activate]: https://raw.githubusercontent.com/arcticicestudio/styleguide-java/develop/src/assets/scrot-ide-setup-intellij-checkstyle-activate.png
[src-branch-naming]: https://github.com/arcticicestudio/styleguide-git#branch-naming
[src-branch-naming-core]: https://github.com/arcticicestudio/styleguide-git#core-branches
[src-branch-naming-story]: https://github.com/arcticicestudio/styleguide-git#story-branches
[src-commit-messages]: https://github.com/arcticicestudio/styleguide-git#commit-messages
[src-commit-messages-body]: https://github.com/arcticicestudio/styleguide-git#message-body
[src-commit-messages-footer]: https://github.com/arcticicestudio/styleguide-git#message-footer
[src-commit-messages-structure]: https://github.com/arcticicestudio/styleguide-git#elements-and-their-structure
[src-commit-messages-summary]: https://github.com/arcticicestudio/styleguide-git#message-summary
[src-introdcution]: https://github.com/arcticicestudio/styleguide-git#introduction
[src-structural-split]: https://github.com/arcticicestudio/styleguide-git#structural-split-of-changes
[src-structural-split-bad-practices]: https://github.com/arcticicestudio/styleguide-git#bad-practices
[src-tags]: https://github.com/arcticicestudio/styleguide-git#tags
[git_flow]: http://nvie.com/posts/a-successful-git-branching-model/
[src-docs-branch-naming-core]: https://github.com/arcticicestudio/styleguide-git#core-branches
[src-docs-branch-naming-story]: https://github.com/arcticicestudio/styleguide-git#story-branches
[src-docs-branch-naming]: https://github.com/arcticicestudio/styleguide-git#branch-naming
[src-docs-commit-messages-body]: https://github.com/arcticicestudio/styleguide-git#message-body
[src-docs-commit-messages-footer]: https://github.com/arcticicestudio/styleguide-git#message-footer
[src-docs-commit-messages-structure]: https://github.com/arcticicestudio/styleguide-git#elements-and-their-structure
[src-docs-commit-messages-summary]: https://github.com/arcticicestudio/styleguide-git#message-summary
[src-docs-commit-messages]: https://github.com/arcticicestudio/styleguide-git#commit-messages
[src-docs-introdcution]: https://github.com/arcticicestudio/styleguide-git#introduction
[src-docs-structural-split-bad-practices]: https://github.com/arcticicestudio/styleguide-git#bad-practices
[src-docs-structural-split]: https://github.com/arcticicestudio/styleguide-git#structural-split-of-changes
[src-docs-tags]: https://github.com/arcticicestudio/styleguide-git#tags

0 comments on commit 05e3fae

Please sign in to comment.