🎧 New: AI-Generated Podcasts Turn your study notes into engaging audio conversations. Learn more

Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...

Document Details

AmazingKhaki

Uploaded by AmazingKhaki

Tags

git version control software development

Full Transcript

Chapter 5 Git Workflows FULL STACK WEB DEVELOPER FWD 133 : WEB DEVELOPER TOOLS Based on slides accompanying the book Jump Start Git, Second Edition 2020 by Shaumik Daityari 2 Introduction  So far, we’ve covered the basics of Git and how to use them as part of a team.  But teams differ in the...

Chapter 5 Git Workflows FULL STACK WEB DEVELOPER FWD 133 : WEB DEVELOPER TOOLS Based on slides accompanying the book Jump Start Git, Second Edition 2020 by Shaumik Daityari 2 Introduction  So far, we’ve covered the basics of Git and how to use them as part of a team.  But teams differ in the way they utilize Git in their projects.  A Git workflow is a set of guidelines that a team should follow to manage a project.  A workflow generally provides guidelines on the following items:  the architecture of the project.  how contributions are made to the project.  how the work of others is merged into the project. 3 Introduction  Git’s flexibility allows you to set up diverse guidelines for your project.  This can potentially lead to a large number of workflows.  How do you ensure that team members follow these guidelines?  It may be a good idea to follow a specific, well-defined workflow. 4 Introduction  Workflows represent broad guidelines for using Git in your project, and that developers often make minor changes to these guidelines for their convenience.  When you’re assessing a workflow, make sure you ask the following questions:   How difficult is it for a new team member to get started?  How much effort goes into reverting the status of the repository after an unwanted change?  Does the workflow scale up well to your team size growth projections? As each workflow is described, the discussion will be structured around these items. 5 Git Workflows  The Centralized Workflow  The Feature-branch Workflow  The Gitflow Workflow  The Forking Workflow 6 The Centralized Workflow 7 Features  While Git is a distributed version control system, it’s still possible to implement a centralized workflow, inspired by centralized version control systems like Subversion.  A centralized workflow is the simplest of Git workflows, in which just a single branch (typically the master branch) is used for all operations.  It’s called a “centralized” workflow because a single copy of the repository is treated as the main copy, into which every developer syncs their changes.  The centralized workflow is also called the “trunk” workflow, as subversion’s master branch is called trunk.  For this workflow to work seamlessly, you need to give every team member access to your master branch.  The central repository can be on a local server at a location every developer can access, or it can be hosted on a central platform like GitHub or Bitbucket. 8 New Team Member Orientation  If you’re a new team member, you start by cloning the central repository.  All you need to do is make changes to your master branch and push it to the central repository.  If someone has updated the master since you last updated your local branch, you’re prompted to merge the changes first and then push them. 9 Pros and Cons  The biggest advantage of this workflow is its simplicity.  The centralized workflow doesn’t use the branching feature of Git.  Beginners often find the branching feature of Git to be the most difficult to understand, so the simplicity of this workflow works best for beginners.  Developers who are familiar with Subversion and new to Git also find this workflow very intuitive.  It’s also ideal for smaller teams that require minimal code review before a merge.  If you’re managing a personal project, the centralized workflow is an intuitive choice as well. 10 Pros and Cons  On the other hand, the centralized workflow gets tedious with an increase in team size.  Managing changes in code is a challenge if you have multiple people working on the same branch at the same time.  Finally, giving all team members access to the master branch may not be a good idea in a large team.  A single error, if introduced in the codebase, can corrupt the whole repository.  No one can really make changes to the codebase until it’s fixed.  Therefore, a more robust workflow is needed as your team grows in size. Who Should Use the Centralized Workflow 11  The simplicity of the centralized workflow makes it perfect for two types of users.  If you’re new to Git and your team is exploring the use of version control in your projects, you should start with the centralized workflow.  Secondly, if you use Git to manage a personal project, the centralized workflow is ideal.  For instance, if you’re a student who manages academic assignments, or an author managing your texts, the centralized workflow fits into your needs perfectly. The Feature-branch Workflow Features  Because the centralized workflow doesn’t utilize the branching features of Git, the next logical step up from that is to introduce branches for specific changes in your codebase.  This results in what’s known as the “featurebranch” workflow.  The feature-branch workflow follows the concept of feature development in separate branches, without affecting the master branch.  You can either merge or rebase the feature branch into the master, as shown above. 12 13 New Team Member Orientation  You must maintain a repository at a central location in the feature-branch workflow, with read access to the master branch to all developers.  A new developer must first clone the master branch and create a new local branch for every feature they start.  While the definition of a feature differs from project to project, it’s a good idea to logically separate each “feature” before starting development on it.  When a feature is ready, a developer should request the core developers to pull changes from this feature branch to the master of the core.  This initiates the code review, which concludes with the merge of the feature into the master. 14 New Team Member Orientation  The separation of feature development from the codebase allows for a detailed code review process before merging into the main codebase.  This allows the core developers to comment on proposed changes in a review and to request further action before merging them into the main codebase.  Code reviews are interactive and easy if you’re using a cloudbased solution to host your central repository, allowing featurerich discussions before merging the code into the main repository. 15 Pros and Cons  Interestingly, a consequence of this workflow is that a developer must never directly commit to the local master branch.  When their feature is accepted into the core repository, they should pull changes from the core master to the local master to keep it up to date.  The departure from the centralized workflow makes it easy for developers to work on multiple features, while keeping the core codebase operational.  At the same time, any critical bug fixes are directly committed to the master branch, and pulled into the feature branches being worked on. 16 Pros and Cons  As the core developers have a final say before a merge into the main codebase, you can selectively give write access to your master branch, thus making the process secure.  An open-source project must follow at least a feature-branch workflow to ensure code reviews happen before code merges from contributors.  Finally, this workflow gives you more control over your code, and therefore solves the issues of scaling up. Who Should Use the Feature-branch Workflow  17 The feature-branch workflow provides a key benefit over centralized workflows: the ability to logically manage multiple changes and multiple contributors.  If you initially followed the centralized workflow because your team was small, you may need to switch to the feature-branch workflow as your team grows.  The target of every team project following the centralized workflow should be to eventually migrate to the feature-branch workflow. 18 Gitflow Workflow A successful Git branching model » nvie.com 19 Features  While the feature-branch workflow works well for any project, adding specific roles for different types of branches can further tighten up your development cycle.  The Gitflow workflow was initially tested and popularized by Vincent Driessen at nvie.com.  The core Git concepts involved in the Gitflow workflow remain the same as the feature-branch workflow. 20 Features  As mentioned, the Gitflow workflow works as an extension of the feature-branch workflow.  A primary issue with the feature-branch workflow is the loose definition of the term “feature”: it could potentially be interpreted differently depending on the developer, culture, or project.  Further, there was no well-defined provision for other tasks such as regular maintenance and bug fixes.  The Gitflow workflow essentially solves this by defining many types of branches and their functions. 21 Features  There are two core branches in the Gitflow workflow— the master and develop branches.  The develop branch serves as the latest development version of the software, while the master branch contains only the last stable release.  If you want to work on a new feature, you create a feature branch from the develop branch.  Once you’ve finished working on your feature, you request a merge to the develop branch.  As a developer, you’re essentially never directly involved with the master branch, treating the develop branch as a pseudo master. 22 Features  In addition to a feature branch, the Gitflow workflow also defines a release branch.  All the planned changes, based on your roadmap for what should feature in the next release cycle, go into the release branch.  A release branch is created from the develop branch.  When all the changes for a release are done, it’s merged with the master with a relevant tag attached to it.  Only the core developers get to work on the release branch by choosing which merges should go into it. 23 Features  Finally, the next type of branch in the Gitflow workflow is the hotfix branch.  Any critical bug that’s identified needs to be fixed immediately, so a hotfix branch is created from the master branch to solve the bug.  Once it’s solved, the hotfix branch is merged with the master and develop branches to ensure the changes are reflected in both of these. 24 New Team Member Orientation  Because of the concepts involved, the Gitflow workflow is certainly more complex than the feature- branch workflow.  Even so, getting started is arguably not very difficult.  A developer working on just a single feature only needs to be concerned with the develop branch and a corresponding feature branch.  Once the developer’s role in the project grows, they may be introduced to new tasks and given further responsibilities. 25 Pros and Cons  The Gitflow workflow shares the same advantages as the feature-branch workflow, with the added clarity of handling various scenarios in the software development cycle.  Even if you’re encouraged to adopt this workflow from the start, you may consider moving to it from the feature-branch workflow once your project has matured a bit. 26 Who Should Use the Gitflow Workflow  The Gitflow workflow allows a team to manage a number of scenarios effectively.  As the Gitflow workflow is an extension of the feature-branch workflow, the transition is easy to handle.  Imagine that you have a project with a good mix of new and experienced developers.  The end product also has a significant number of users, who may be using multiple versions of it.  Such a project demands the use of the Gitflow workflow to effectively handle any situation that may come up.  Popular open-source projects often use the Gitflow workflow. 27 Forking Workflow 28 Features  The forking workflow is an implementation of the feature-branch workflow—in the cloud.  It introduces an extra layer between the central repository of the organization and the local repository of a developer— known as a “fork”.  A fork is a developer’s personal copy of the central repository within the cloud.  When you use a cloud-based Git solution, a developer clones their own fork from the cloud.  Any changes they make on the local repository are pushed to this fork.  To merge the code into the main repository, the developer creates a pull request from the fork to the main repository.  This pull request initiates a code review, which the administrators of the repository assess before merging into the main repository. 29 Features 30 New Team Member Orientation  A new member first creates a fork of the main repository on the cloud, and then clones this fork to a local machine.  Changes are made to a new feature branch and pushed to the developer’s fork on the cloud.  Next, the developer creates a pull request from a feature branch of the fork to a corresponding branch in the main repository.  This initiates a review and conversation with the core developers to get the changes merged into the codebase.  The origin remote of the local repository typically points to the fork, and the upstream remote points to the central repository. 31 Pros and Cons  Code management and review through pull requests is much easier when it’s done on the cloud with the help of the web GUI of cloud hosts.  Multiple developers can also get involved in the review process through a pull request.  At the same time, it may be overwhelming for a new member to work around Git’s features and related cloud concepts towards the beginning of their project tenure. 32 Who Should Use the Forking Workflow  Anyone using the cloud for their Git repositories should implement the forking workflow!  This workflow serves as an additional layer to any other workflow.  Thus, it allows you to incorporate features of other workflows without any issues.  If your project is open source, you shouldn’t have any issue with hosting the code on the cloud.  However, if you don’t want the code of your project to be publicly available, you can use private repositories on the cloud. 33 Who Should Use the Forking Workflow  Further, if your code is highly sensitive and you can’t afford to have it on a public cloud, you can try the enterprise solutions of GitHub or Bitbucket, which allow you to host your code on your own servers. 34 What Have You Learned?  In this chapter, we covered:  what workflows are  the centralized workflow  the feature-branch workflow  the Gitflow workflow  the forking workflow

Use Quizgecko on...
Browser
Browser