Slide 1

Slide 1 text

ask your code scott chacon GitButler

Slide 2

Slide 2 text

GitButler version control

Slide 3

Slide 3 text

GitButler

Slide 4

Slide 4 text

GitButler

Slide 5

Slide 5 text

GitButler

Slide 6

Slide 6 text

GitButler

Slide 7

Slide 7 text

GitButler product design for version control

Slide 8

Slide 8 text

first principles GitButler

Slide 9

Slide 9 text

WHY? GitButler

Slide 10

Slide 10 text

aunt minnie is in the hospital GitButler

Slide 11

Slide 11 text

When you explain a why, you have to be in some framework that you allow something to be true. GitButler

Slide 12

Slide 12 text

aunt minnie is in the hospital GitButler

Slide 13

Slide 13 text

WHY? GitButler

Slide 14

Slide 14 text

aunt minnie is in the hospital GitButler she fell and broke her hip

Slide 15

Slide 15 text

WHY? GitButler

Slide 16

Slide 16 text

aunt minnie is in the hospital GitButler she fell and broke her hip she slipped on some ice

Slide 17

Slide 17 text

WHY? GitButler

Slide 18

Slide 18 text

aunt minnie is in the hospital GitButler she fell and broke her hip she slipped on some ice ice is slippery

Slide 19

Slide 19 text

WHY? GitButler

Slide 20

Slide 20 text

first principles GitButler

Slide 21

Slide 21 text

first principles GitButler for version control

Slide 22

Slide 22 text

we all use git GitButler

Slide 23

Slide 23 text

WHY? GitButler

Slide 24

Slide 24 text

we all use git GitButler we need version control

Slide 25

Slide 25 text

WHY? GitButler

Slide 26

Slide 26 text

we all use git GitButler we need version control to collaborate and save our work

Slide 27

Slide 27 text

WHY? GitButler

Slide 28

Slide 28 text

we all use git GitButler we need version control to collaborate and save our work our computer doesn’t save the history of our files or let other people access them

Slide 29

Slide 29 text

WHY? GitButler

Slide 30

Slide 30 text

GitButler history saving, file access

Slide 31

Slide 31 text

GitButler history saving, file access google docs

Slide 32

Slide 32 text

GitButler what does version control do?

Slide 33

Slide 33 text

GitButler what does version control do? backing up commit experimenting branch, checkout collaborating and reviewing diff, merge moving bits push, pull archaeology log, blame, bisect

Slide 34

Slide 34 text

GitButler what does version control do? backing up commit experimenting branch, checkout collaborating and reviewing diff, merge moving bits push, pull archaeology log, blame, bisect archaeology log, blame, bisect

Slide 35

Slide 35 text

GitButler what does version control do? archaeology log, blame, bisect

Slide 36

Slide 36 text

GitButler what question does this answer?

Slide 37

Slide 37 text

the common questions GitButler

Slide 38

Slide 38 text

GitButler the common questions What are the last few dozen commits that have been made to this codebase?

Slide 39

Slide 39 text

GitButler the common questions What are the last few dozen commits that have been made to this codebase? git log

Slide 40

Slide 40 text

git log —-oneline —-graph

Slide 41

Slide 41 text

GitButler the common questions Who is the last person who touched this line of code?

Slide 42

Slide 42 text

git blame -L 15,26 path/to/file

Slide 43

Slide 43 text

git blame -L 15,26 path/to/file git log -L 15,26:path/to/file

Slide 44

Slide 44 text

git blame -L 15,26 path/to/file git log -L 15,26:path/to/file

Slide 45

Slide 45 text

git blame -L 15,26 path/to/file git log -L 15,26:path/to/file

Slide 46

Slide 46 text

git blame -L 15,26 path/to/file git log -L :File:path/to/file

Slide 47

Slide 47 text

git blame -L 15,26 path/to/file

Slide 48

Slide 48 text

GitButler the common questions Who is the last person who touched this line of code? What are the last few dozen commits that have been made to this codebase?

Slide 49

Slide 49 text

the uncommon questions GitButler

Slide 50

Slide 50 text

GitButler the uncommon questions What commits are on this branch that are not yet merged into this other branch?

Slide 51

Slide 51 text

No content

Slide 52

Slide 52 text

git log main..self-hosted

Slide 53

Slide 53 text

git log main..self-hosted

Slide 54

Slide 54 text

git log main ^self-hosted

Slide 55

Slide 55 text

git log main ^self-hosted

Slide 56

Slide 56 text

GitButler the uncommon questions What commits introduced a change that included a speci fi c string?

Slide 57

Slide 57 text

git log -S files_watcher -p

Slide 58

Slide 58 text

GitButler the uncommon questions What fi le was this function moved from?

Slide 59

Slide 59 text

git blame -L 15,26 path/to/file

Slide 60

Slide 60 text

git blame -w -C -C -C —L 15,26 path/to/file

Slide 61

Slide 61 text

git blame -w -C -C -C —L 15,26 path/to/file

Slide 62

Slide 62 text

git blame -w -C -C -C —L 15,26 path/to/file

Slide 63

Slide 63 text

git blame -w -C -C -C —L 15,26 path/to/file

Slide 64

Slide 64 text

GitButler the uncommon questions What files are most closely related to this file?

Slide 65

Slide 65 text

What files are most closely related to this file?

Slide 66

Slide 66 text

What files are most closely related to this file? get all the commits that touch this fi le

Slide 67

Slide 67 text

What files are most closely related to this file? get all the fi les each commit touches get all the commits that touch this fi le

Slide 68

Slide 68 text

What files are most closely related to this file? print out the top fi ve fi les in common

Slide 69

Slide 69 text

No content

Slide 70

Slide 70 text

the impossible questions GitButler

Slide 71

Slide 71 text

GitButler the impossible questions What Pull Requests contributed to this file? What code in other repositories are related to this code? What were the conversations (in chat or GitHub) my team had around this code before it was merged? What did the author/s reference when writing this? What specifications was this based on? What errors were or are commonly created by this code or code related to it that I should be aware of before changing?

Slide 72

Slide 72 text

ask your code? GitButler what do you want to

Slide 73

Slide 73 text

thanks! @chacon GitButler speakerdeck.com/schacon github.com/schacon these slides code examples