Perlbrew development and the git flow

作者:   發佈於:  

The prerlbrew source repository on github sets the default branch to "develop", while there is still a "master" branch like usual git repositories. Each serves their own purpose.

The "master" branch is a stable branch, and gets updated only on release. Whenever people checkout the master branch, they get the source code of the latest release of perlbrew. It also contain the stable version of perlbrew standalone executable, and the perlbrew installer program.

The "develop" branch, is where random commits go. Well not really randomly, but it is where I personally commit new features, and accepting pull requests. Anyone who wish to try the nightly version of perlbrew can download the develop perlbrew executable from https://github.com/gugod/App-perlbrew/raw/develop/perlbrew

They are named so because I personally adapt the git flow convention when working on perlbrew. When working on a feature that is likely taking quite some time to finish, a local feature branch is created, and not necessarily pushed to the github. This way, when there are pending pull requests, they do not have to wait too long, since they can be merged into develop branch first.

Pull requests always merged into the "develop" branch. If you are willing to contribute, make sure sending me pull requests against the develop branch but not the master branch. This should the default on github UI now, but it is still mentioned so everyone can know I intentionally set "develop" branch to be the default.

At this moment contributors all have their own fork of perlbrew repository, and I have not grant any commit bit at all. The truth is, I never need to. Github forks are naturally branches that can be easily managed with git commands, and I do not need to talk to anybody through the workflow at all. People simply work on their own fork with whatever branching model they feel like to, and I always accept new changes to my develop branch.

I feel like it is an ideal situation that no arguments about branching convention or naming are needed. People just commit something, and let me worry about the merge and release latter on.

Does it slow down the development pace due to the need of pull requests ? Well, maybe, but perlbrew is an open source project with no strict development and release cycles. When things are slowing down, it usually means that people are just busy working something else. Besides, every pul requests come with a message from the developers describing what's changed. If they simply commit changes without talking to me afterward, I then have to figure it out on my own to decide if it's good to release. Sometimes that is just tedious.

Anyway, there will be a talk about perlbrew in the upcoming YAPC::Asia, I will be introducing this project again (it was presented in the last YAPC::Asia too), mostly about the updates since last year, and that are a few very important ones. If you want to make something awesome that I can talk about, make sure to send me the pull request !

peace out, gugod

ps. This article is also posted on the perlbrew website for future reference at http://www.perlbrew.pl/Perlbrew-development-and-the-git-flow.html