Slide 1

Slide 1 text

Git - Flow Ran Tavory Totango Tuesday, June 10, 14

Slide 2

Slide 2 text

Text http://pcottle.github.io/learnGitBranching/?demo Tuesday, June 10, 14

Slide 3

Slide 3 text

Branching Tuesday, June 10, 14

Slide 4

Slide 4 text

Branching Tuesday, June 10, 14

Slide 5

Slide 5 text

Branching - Merging (fast forward) Tuesday, June 10, 14

Slide 6

Slide 6 text

Branching - Deleting Tuesday, June 10, 14

Slide 7

Slide 7 text

Branching cont Tuesday, June 10, 14

Slide 8

Slide 8 text

Branching - Merging (3 way merge) Tuesday, June 10, 14

Slide 9

Slide 9 text

Branching - Management Tuesday, June 10, 14

Slide 10

Slide 10 text

Branching - Remote Tuesday, June 10, 14

Slide 11

Slide 11 text

Branching - Remote Tuesday, June 10, 14

Slide 12

Slide 12 text

Branching - Remote Tuesday, June 10, 14

Slide 13

Slide 13 text

Branching - Remote git pull == git fetch && git merge Tuesday, June 10, 14

Slide 14

Slide 14 text

Branching - Pushing Requires tracking Tuesday, June 10, 14

Slide 15

Slide 15 text

Deleting Remote Branches Tuesday, June 10, 14

Slide 16

Slide 16 text

Pull Requests Tuesday, June 10, 14

Slide 17

Slide 17 text

Creating a Pull Request 1 2 3 4 Tuesday, June 10, 14

Slide 18

Slide 18 text

Reviewing a Pull Request Tuesday, June 10, 14

Slide 19

Slide 19 text

Merging Pull Request Online Tuesday, June 10, 14

Slide 20

Slide 20 text

Merging Pull Requests Offline •Resolve Conflicts •Test •Improve Tuesday, June 10, 14

Slide 21

Slide 21 text

Deleting Branch After PR Merge Tuesday, June 10, 14

Slide 22

Slide 22 text

The Flow Tuesday, June 10, 14

Slide 23

Slide 23 text

1. Create a Branch git co -b bug-157 Branch Naming: bug-xxx feature-yyy wip-zzz Tuesday, June 10, 14

Slide 24

Slide 24 text

2. Add Commits Commit messages are super important!!! Tuesday, June 10, 14

Slide 25

Slide 25 text

3. Open a Pull Request Make sure you assign a reviewer! Tuesday, June 10, 14

Slide 26

Slide 26 text

4. Discuss AKA Code Review Continue to commit and push. This will be reflected Tuesday, June 10, 14

Slide 27

Slide 27 text

5. Merge Merge means: It’s good for production. master is always deployable Tuesday, June 10, 14

Slide 28

Slide 28 text

Pull Request Demo Tuesday, June 10, 14

Slide 29

Slide 29 text

Code Review Tuesday, June 10, 14

Slide 30

Slide 30 text

Code Review Tuesday, June 10, 14

Slide 31

Slide 31 text

Code Review Golden Rules • Assign author • Determine ownership • Not managers. Peers. • Review ASAP. Same day. • Highest priority, after prod • Refer to Coding Guidelines (Java, Javascript, Python) • 200 - 400 LOC Max. 400 LOC = 1 hour • Verify that defects are actually fixed! Tuesday, June 10, 14

Slide 32

Slide 32 text

Code Review What to look for • Reusability • Is the code in the right location in the codebase? • Style guidelines • רבישה קוח • Coupling and Cohesion • Are the loops bounded? • Is the number of I/O operations minimized? • Is the code metered? • Is the code tested? • Each public method must have a few unit tests. • ... and there’s more... Tuesday, June 10, 14

Slide 33

Slide 33 text

Extra Tuesday, June 10, 14

Slide 34

Slide 34 text

Conflicts Tuesday, June 10, 14

Slide 35

Slide 35 text

Conflicts Edit Collision # Edit file and then $ git add $ git commit Tuesday, June 10, 14

Slide 36

Slide 36 text

Conflicts Removed File Tuesday, June 10, 14

Slide 37

Slide 37 text

Conflicts Removed File - Keep Tuesday, June 10, 14

Slide 38

Slide 38 text

Conflicts Removed File - Remove Tuesday, June 10, 14

Slide 39

Slide 39 text

Conflicts Git Mergtool • Not covered here... • http://git-scm.com/docs/git-mergetool Tuesday, June 10, 14

Slide 40

Slide 40 text

Conflicts While Rebasing Tuesday, June 10, 14

Slide 41

Slide 41 text

Refs https://help.github.com/articles/resolving-a-merge- conflict-from-the-command-line http://pcottle.github.io/learnGitBranching/ http://jeffkreeftmeijer.com/2010/the-magical-and-not- harmful-rebase/ https://help.github.com/articles/using-pull-requests https://help.github.com/articles/creating-a-pull-request http://en.wikipedia.org/wiki/ Coupling_(computer_programming) Tuesday, June 10, 14