Professional Guides: Workflow Strategies

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
♪ (intro music) ♪ Managing change can be challenging, especially for software development. It's an elaborate process, where lots of people are using many complex tools, in parallel, to build <i>one thing</i>. Workflow is about controlling the sequence of events that transform a piece of work to ensure every person* can use the best tool at the right time. At its core, workflow <i>is</i> change management. There is no universal solution for every team's needs, but a good workflow positions all of the tools, processes, and people, for optimum happiness and productivity. Rather than presenting a prescriptive set of features or family of products with a predetermined flow, Github gives you the flexibility to define the best workflow for <i>you</i>. It puts <i>your</i> code at the <i>center</i> of your development process and provides sensible tools for managing changes to your software and getting it where it needs <i>to go</i>. Let's take a look at some of the ways Github lets <i>you</i> define <i>your</i> workflow. Branching is a core part of managing parallel software development. Git, the version control system Github is built for-- lets you create, destroy, and combine branches with minimal effort. So, branches can exist for as long, or as short, as you need. One of the most straightforward branching workflows is the Github Flow. In this workflow, your project has a singular master branch, where <i>all</i> released work lives. <i>And</i> you can create temporary feature branches where new development takes place. When changes are ready for review, you open a pull request to review and discuss them. We'll talk more about pull requests in just a second. When changes are approved, you can deploy your code from your feature branch to production, if you need to. Then, you just merge the feature branch into the master branch, and delete it. Let's talk a bit more about pull requests. On Github, pull requests let you show others the changes you've made on one branch, so they can review and discuss them before merging them into another branch. You can also integrate with other systems and have Github report additional information about things like build results, test coverage, and deployment status. Team members can use this information to discuss the code and submit reviews that approve it, or request changes that need to be addressed before merging. Whether you approve the changes, or ultimately decide not to merge, the pull request remains intact on Github for future reference, as a unified record of the decision-making process, around that set of changes. Github's flexibility supports workflows with more complex branching needs, too. One example of a more robust branching strategy is the Git Flow. Git Flow relies on long-lived branches for simultaneously developing new features while supporting current releases. In the Git Flow, you have two primary branches: <i>master</i> and <i>develop</i>. The <i>master</i> branch will always reflect the most current production-ready state of the software, while the <i>develop</i> branch reflects the latest development for the next release. You also have supporting branches that each have specific purposes. <i>Feature</i> branches work like <i>feature</i> branches in the Github Flow. <i>Release</i> branches help you prepare the work on <i>develop</i>, that will be included in the next release version. And <i>hotfix</i> branches let you make <i>critical changes</i> to the <i>master</i> branch, without impeding work on <i>develop</i> or the next release. Let's walk through a typical workflow with the Git Flow. Developers create <i>feature</i> branches off of the <i>develop</i> branch and merge them back into<i> develop</i> when features are ready. When it is time to create a new production release, you'll make a decision about which new features will be included in it. At that point in the <i>develop</i> branch, you start a <i>release</i> branch. This allows work to continue on <i>develop</i> without disrupting the preparations for releasing the new features to production. You <i>may</i> find that there are a few bugs to fix before releasing. It's okay to add that work to the release branch, but it's best to avoid adding new big features to an existing <i>release</i> branch. Instead, save them for a future release. When the release is ready, you merge the <i>release</i> branch into <i>master</i> and tag it with a version number. Github recognizes tags in your project and lets you easily create releases from them. Now, all of the work that you merged into <i>develop</i>, prior to the <i>release</i> branch, is available in production as part of the newest release. You can safely merge any bug fixes from the <i>release</i> branch back into <i>develop</i>. And then, delete the <i>release</i> branch. Suppose a critical bug arises in production. You can create a <i>hotfix</i> branch off of <i>master</i> to address the bug immediately, while planned work continues on <i>develop</i>. When the bug is fixed, you can merge the <i>hotfix</i> branch into <i>master</i>, tag the work, and create a new release. You'll <i>also</i> want to merge the <i>hotfix</i> branch back into <i>develop</i>, or to the next release branch, if one currently exists. Let's review that one more time. In software development branching kind of forms the skeleton of your workflow. It could be minimal and straightforward, highly-complex, or everything in-between. Regardless of your approach, Github remains flexible for you. Modular workflow features like pull requests and integrations with your preferred external systems help you power a workflow, where everyone can use the best tools exactly when they need it. For help crafting a plan that puts Github at the center of your development workflow visit <i>github.com/business</i> to learn more. ♪ (outro music) ♪
Info
Channel: GitHub Training & Guides
Views: 124,345
Rating: 4.913846 out of 5
Keywords: git, github, github training, github foundations, collaboration, git basics, VCS, programming, version control, open source, software development, mercurial, bazaar, perforce, subversion, CVS, octocat, git flow, git workflow, github workflow, branching strategies
Id: aJnFGMclhU8
Channel Id: undefined
Length: 6min 53sec (413 seconds)
Published: Thu Apr 06 2017
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.