class: inverse center middle # Git::ReleaseRepo ### The epic journey of a group of repositories with a common goal --- # Two Friends .constrain[ ![Two Friends](Git-ReleaseRepo/1-the-modules.svg) ] --- class: middle .center[ # Initializing a Release Repository ] ``` $ mkdir Release $ cd Release $ git init $ git release init --version_prefix v ``` --- class: center middle # .code[git release init] Initializes and configures the release repository --- class: center middle # .code[--version_prefix <prefix>] Prepends a string to every version number. Lets you share submodules with other release repositories. --- # Form a Party .constrain[ ![Form a Party](Git-ReleaseRepo/2-the-release-repo.svg) ] --- class: middle .center[ # The first release ] ``` $ git release add Foo /path/to/Foo $ git release add Bar /path/to/Bar $ git release commit ``` --- class: center middle # .code[git release add] Add a brand-new module to the release --- class: center middle # .code[git release commit] Commit this release and give it a version number --- # Starting Their Journey .constrain[ ![Starting their Journey](Git-ReleaseRepo/4-first-release.svg) ] --- class: center middle # Branches A branch for each minor or major release v0.1, v0.2, v1.0 --- class: center middle # Tags A tag for each bugfix release v0.1.0, v0.1.1, v1.0.0 --- # Keeping a Journal .constrain[ ![Keeping a Journal](Git-ReleaseRepo/5-first-tag.svg) ] --- # Life Goes On .constrain[ ![Life Goes On](Git-ReleaseRepo/6-life-goes-on.svg) ] --- class: center middle # Commit to Modules Nothing is released until desired --- # Life Requires Bugfixes .constrain[ ![Life Requires Bugfixes](Git-ReleaseRepo/7-life-requires-bugfixes.svg) ] --- class: middle .center[ # Add a Bugfix ] ``` $ git release checkout --bugfix $ git release status Bar (can update) $ git release update Bar $ git release status Bar changed $ git release commit ``` --- # Squash The Bugs .constrain[ ![Squash The Bugs](Git-ReleaseRepo/8-bugfix-release.svg) ] --- # Life Goes On .constrain[ ![Life Goes On](Git-ReleaseRepo/9-life-goes-on.svg) ] --- class: middle .center[ # A regular release ] ``` $ git release checkout master $ git release status Bar (can update) Foo (can update) $ git release update -a $ git release status Bar changed Foo changed $ git release commit ``` --- # A New Beginning .constrain[ ![A New Beginning](Git-ReleaseRepo/10-new-release.svg) ] --- class: inverse middle center # Deploy a release --- class: middle .center[ # Deploy a release ] ``` $ git release deploy /path/to/Release --version_prefix v $ cd Release-v0.2 $ git release status On release v0.2.0 ``` --- class: middle .center[ # Update a deployed release ] ``` $ cd Release-v0.2 $ git release status On release v0.2.0 (can update to v0.2.1) $ git release pull ``` --- class: inverse middle center # Clone a Release Repo --- class: middle .center[ # Clone a Release Repo ] ``` $ git release clone /path/to/Release --version_prefix v $ cd Release ``` --- class: middle .center[ # Push changes to Origin ] ``` $ git release update ... $ git release commit $ git release push ``` --- class: middle center inverse # Cheat Sheets --- class: middle .center[ # Start a new release repo ] ``` $ git release init --version_prefix v ``` .center[ # Clone a release repo ] ``` $ git release clone ssh://user@host/release.git --version_prefix v ``` --- class: middle .center[ # Perform a regular release ] ``` $ git release checkout master # Check out the master branch $ git release add [module] [url] # Add a new module $ git release update [module] # Update an existing module $ git release update -a # Update all existing modules $ git release commit # Commit the release $ git release push # Push the release out ``` --- class: middle .center[ # Perform a bugfix release ] ``` $ git release checkout --bugfix # Check out the bugfix branch $ git release add [module] [url] # Add a new module $ git release update [module] # Update an existing module $ git release update -a # Update all existing modules $ git release commit # Commit the release $ git release push # Push the release out ``` --- class: middle center inverse # Questions? --- class: middle .center[ # It's over! ] * [Git::ReleaseRepo presentation slides:
http://preaction.github.io/Perl/Git-ReleaseRepo.html](http://preaction.github.io/Perl/Git-ReleaseRepo.html) * [Git::ReleaseRepo on metacpan](https://metacpan.org/module/Git::ReleaseRepo)