teach-me session: git workflows · pdf fileteach-me session: git work ows maria l. pacheco...

12

Click here to load reader

Upload: dangkhanh

Post on 10-Feb-2018

212 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Teach-me session: Git Workflows · PDF fileTeach-me session: Git Work ows Maria L. Pacheco Purdue Natural Language Processing Group pachecog@purdue.edu September 1, 2016 Maria L. Pacheco

Teach-me session: Git Workflows

Maria L. Pacheco

Purdue Natural Language Processing Group

[email protected]

September 1, 2016

Maria L. Pacheco (PurdueNLP) Gitflow September 1, 2016 1 / 12

Page 2: Teach-me session: Git Workflows · PDF fileTeach-me session: Git Work ows Maria L. Pacheco Purdue Natural Language Processing Group pachecog@purdue.edu September 1, 2016 Maria L. Pacheco

Content and images adapted from Atlassian Git Tutorials

Maria L. Pacheco (PurdueNLP) Gitflow September 1, 2016 2 / 12

Page 3: Teach-me session: Git Workflows · PDF fileTeach-me session: Git Work ows Maria L. Pacheco Purdue Natural Language Processing Group pachecog@purdue.edu September 1, 2016 Maria L. Pacheco

Overview

1 Centralized Workflow

2 Feature-Branch Workflow

3 Gitflow Workflow

4 My proposal for PurdueNLP

Maria L. Pacheco (PurdueNLP) Gitflow September 1, 2016 3 / 12

Page 4: Teach-me session: Git Workflows · PDF fileTeach-me session: Git Work ows Maria L. Pacheco Purdue Natural Language Processing Group pachecog@purdue.edu September 1, 2016 Maria L. Pacheco

Centralized Workflow

Cosmo, Kristen and I-Ta clone the central repository: master

They all work on different features in their local repository

Once his feature is ready, Cosmo pushes it to the remote repository

Maria L. Pacheco (PurdueNLP) Gitflow September 1, 2016 4 / 12

Page 5: Teach-me session: Git Workflows · PDF fileTeach-me session: Git Work ows Maria L. Pacheco Purdue Natural Language Processing Group pachecog@purdue.edu September 1, 2016 Maria L. Pacheco

Conflicts in Centralized Workflow

When Kristen is finished with her feature, she can’t directly push herchanges to the remote repository

Kristen needs to pull Cosmo’s changes to her local repository first

Git will try to automatically merge the changes

If they worked on related code, a conflict might occur. Kristen willneed to fix the conflict manually before pushing to the remoterepository.

Maria L. Pacheco (PurdueNLP) Gitflow September 1, 2016 5 / 12

Page 6: Teach-me session: Git Workflows · PDF fileTeach-me session: Git Work ows Maria L. Pacheco Purdue Natural Language Processing Group pachecog@purdue.edu September 1, 2016 Maria L. Pacheco

Advantages/Disadvantages of the Centralized Workflow

Very simple workflow, similar to SVN style.

As the project grows, it becomes hard to initiate discussions based onmeaningful features and changes

We can’t keep a stable version if we push work in-progress to master

Conflicts grow with the number of developers involved

What are the alternatives?

Maria L. Pacheco (PurdueNLP) Gitflow September 1, 2016 6 / 12

Page 7: Teach-me session: Git Workflows · PDF fileTeach-me session: Git Work ows Maria L. Pacheco Purdue Natural Language Processing Group pachecog@purdue.edu September 1, 2016 Maria L. Pacheco

Feature-Branch Workflow

Di has to work in a new feature for our project, so she clones andpulls the remote repository

She takes out a branch from her local repository to work on herfeature

After working all Monday she is done with an important part of herfeature.

Pranjal is collaborating with Di and needs to take a look, so Dipushes her work to a remote branch accessible to him.

Maria L. Pacheco (PurdueNLP) Gitflow September 1, 2016 7 / 12

Page 8: Teach-me session: Git Workflows · PDF fileTeach-me session: Git Work ows Maria L. Pacheco Purdue Natural Language Processing Group pachecog@purdue.edu September 1, 2016 Maria L. Pacheco

Merging in Feature-Branch Workflow

Di is done with her feature, she first needs to make sure the remotebranch has her latest changes by pushing her local changes.

She now is ready to merge her feature into master

Chang is in charge of maintaining the master branch, so she will file apull-request to do this merge and he will take a look at it.

They communicate back and forth to do some changes. Onceeverything is ready, either of them performs the merge.

In the mean time, Mahak was doing the exact same thing in her ownfeature branch

Maria L. Pacheco (PurdueNLP) Gitflow September 1, 2016 8 / 12

Page 9: Teach-me session: Git Workflows · PDF fileTeach-me session: Git Work ows Maria L. Pacheco Purdue Natural Language Processing Group pachecog@purdue.edu September 1, 2016 Maria L. Pacheco

Advantages/Disadvantages of the Feature-BranchWorkflow

Everybody can work independently by isolating the work in differentbranches

It is trivial to share work when necessary

Integration work still has to be tested directly on master

Can we find something better?

Maria L. Pacheco (PurdueNLP) Gitflow September 1, 2016 9 / 12

Page 10: Teach-me session: Git Workflows · PDF fileTeach-me session: Git Work ows Maria L. Pacheco Purdue Natural Language Processing Group pachecog@purdue.edu September 1, 2016 Maria L. Pacheco

Gitflow Workflow

Very similar to Feature-Branch workflow but it changes the branchstructure

master records the history of the project, develop serves as anintegration branch for features

Maria L. Pacheco (PurdueNLP) Gitflow September 1, 2016 10 / 12

Page 11: Teach-me session: Git Workflows · PDF fileTeach-me session: Git Work ows Maria L. Pacheco Purdue Natural Language Processing Group pachecog@purdue.edu September 1, 2016 Maria L. Pacheco

Gitflow Releases and Hotfixes

Once a version is ready for release, a release branch is created.

No new features should be added here. Only bug fixes,documentation generation, and other release-oriented tasks

Hotfixes are quick patches over bugs found in a release. These arethe only branches (other than develop) that should be taken directlyfrom master

Maria L. Pacheco (PurdueNLP) Gitflow September 1, 2016 11 / 12

Page 12: Teach-me session: Git Workflows · PDF fileTeach-me session: Git Work ows Maria L. Pacheco Purdue Natural Language Processing Group pachecog@purdue.edu September 1, 2016 Maria L. Pacheco

My proposal for PurdueNLP

A simplified version of Gitflow for PurdueNLP projects

Using the master-develop branch structure

Taking feature branches from develop

We don’t need to use pull-requests unless we are working on asoftware release

In case of a software release, we adopt the full Gitflow model andpull-requests.

Open sourcing for other groups to extend our project? ForkingWorkflow (Discussion for another day...)

What do you guys think?

Maria L. Pacheco (PurdueNLP) Gitflow September 1, 2016 12 / 12