SlideShare a Scribd company logo
1 of 202
Download to read offline
photo: https://cdn.pixabay.com/photo/2014/10/01/17/59/
my-little-pony-468916960720.jpg
logs are magic!
john sj anderson | @genehack | openwest 2017 | salt lake city
1 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
photo: https://cdn.pixabay.com/photo/2014/10/01/17/59/
my-little-pony-468916960720.jpg
why git workflows
& commit structure
should matter to you
john sj anderson | @genehack | openwest 2017 | salt lake city
2 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
hi, i’m john.
a/k/a @genehack
3 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
In my day job, IΚΌm the VP of Technology for Infinity, a small
IT consultancy.
vp, technology
infinity
interactive
4 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
I wanted to give this talk because I love revision control. IΚΌve kept my home directory under
revision control for over a decade, I maintain a Perl git wrapper module, and I wrote this thing
called GitGot to automate batch ops across multiple Git repos (but thatΚΌs a different talk)
i ❀
revision
control5 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
I liked CVS...
cvs6 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
I liked SVN a bit more...
svn7 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
Hell, I even liked RCS
rcs8 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
Actually, thatΚΌs a lie -- I donΚΌt think
anybody liked RCS.
Anybody here remember RCS?
Anybody still using RCS?
rcs9 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
And now we have git
git10 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
I love git. Git makes me happy
i ❀ git
11 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
How many people have used git at least once?
How many people feel comfortable in git?
How many people would call themselves git
β€œexperts”?
quick
poll!
12 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
So, if youΚΌre not at least a little familiar with git, this talk is probably not going to that
interesting -- most of the stuff IΚΌm going to talk about does apply to all revision control
systems, but my examples and recommendations are all git-based
what this
talk isn’t13 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
IΚΌm also not going to be claiming to dispense any universal
truths in this talk...
no
universal
truths14 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
IΚΌm not even going to try to convince you that anything IΚΌm telling you is a β€œbest practice”.
Pretty much anything I advocate in here, IΚΌm sure people will be able to come up with an
example where IΚΌd say, β€œyeah, for that, donΚΌt do it”
not even
β€œbest
practices”15 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
So what is this talk about then?
what this
talk is16 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
Opinionated commentary on some aspects of using
revision control systems...
some
opinions
17 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
...based on things IΚΌve seen over the past mumble years making
extensive use of revision control on personal, open source, and
commercial software projects
photo modified from http://i2.kym-cdn.com/photos/images/original/
001/044/247/297.png
backed up with
experience
18 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
Some of this stuff may be more important for larger projects
with multi-person teams ...
maybe more
important for
larger projects
19 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
...but itΚΌs also important if youΚΌve just started a project that youΚΌre thinking might grow into
something bigger. Having a solid project history from the get-go can make it a lot easier
for contributors to come on board and start pitching in
but also good for projects
that aspire to be
bigger20 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
maybe more
relevant for
coding projects
21 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
but also
applicable for
doc or config repos
22 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
Eventually weΚΌre going to talk about how to make better use
of the history in your repos ...
making better
use of history
23 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
...but first, weΚΌre going to talk about ways to make better
history
making
better
history24 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
For all these things, there are a few common elements
prerequisites
25 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
For maximum value, youΚΌre going to want to apply them
consistently
consistency
26 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
Make them into habits
habits
27 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
TheyΚΌre pretty much all the type of thing that if you do them
all the time...
do it all
the time28 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
...you eventually will just do them without thinking too much
about it
then you
don’t have
to think
about it29 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
or even better, if youΚΌre the right kind of twisted...
even
better30 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
...youΚΌll automate things. for example, i periodically run some scripts to find repos in a
β€œdirty” state, or that have local commits that havenΚΌt been pushed to a remote, and then
clean them up
automate
it31 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
so, moving on to how to make better history
how to make
better
history32 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
if youΚΌre going to talk about git, you almost have to talk about workflows. potentially one
of the more contentious aspects of starting a new project is deciding what your workflow
is going to be
workflows
33 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
workflows can range from the very simple -- just a single branch in
a local-only repo, just adding commits onto the HEAD of that branch
photo credit: modified by https://www.flickr.com/photos/appleboy/
5488984566/in/photostream/
no remote
no branches
master only
34 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
or you can have that basic setup, but with a remote that you push things to every so
often. this is basically the simplest possible branching workflow -- when you have
local commits you havenΚΌt pushed to the remote yet, thatΚΌs (if you squint, a bit) a
branch
photo credit: modified from https://www.flickr.com/photos/appleboy/5488387469/in/
photostream/
local master
no branches
& periodic pushes
35 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
all the way up to fairly complicated workflows like git
flow, where you have multiple branches in flight at any
given point.
anybody using git flow, or anything equivalent?
photo credit: https://www.flickr.com/photos/appleboy/
5488984404/in/photostream/
git flow
36 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
some
notable
antipatterns37 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
squashed
branches
38 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
fast
forward
merges39 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
this is basically doing extra work to mimic what a fast
forward merge probably would have done
rebase
before
merge40 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
all
destroy
history41 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
all
destroy
history
needlessly
42 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
a linear
commit
history
is a lie43 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
a linear
commit
history
is a lie
(probably)
44 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
instead
45 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
some good
patterns46 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
branch
47 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
branch
for
errythang48 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
(specifics
will vary)49 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
have a
release
branch50 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
release may be master
release may be another branch
51 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
(again,
specifics
will vary)
52 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
merging to
the release
branch is
a release53 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
(ideally,
automatically)
54 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
make all
merges
non-FF55 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
an aside
56 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
~/.gitconfig
57 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
git config --global merge.ff false
git config --global pull.ff only
58 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
[merge]
ff = false
[pull]
ff = only
59 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
maximal
historical
information60 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
keep it
clean61 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
another aside
62 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
~/.gitconfig
aliases
63 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
[alias]
br = branch
ci = commit -v
co = checkout
st = status
64 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
aliases have
many
uses…65 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
66 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
back to keeping it clean…
67 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
clean up
remote branches
68 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
git push origin :<branch>
69 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
added in 1.7, early 2010
git push origin --delete <branch>
70 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
nuke = push origin --delete
71 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
clean up
orphaned
remote-tracking
branches72 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
git remote prune origin
73 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
prune = remote prune origin
74 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
find
unmerged
branches75 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
git branch --no-merged master
76 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
git branch --no-merged --remote master
77 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
unmerged = branch --no-merged
unmerged-remote = branch --no-merged --remote
78 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
keep it
clean79 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
one final
note on
branches80 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
branch
names81 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
a branch
equals
a ticket82 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
the ticket id
should be in
the branch name
83 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
along with
something
for the
humans84 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
put the number
at the end of
the branch name
85 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
good:
fix-login-864
86 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
meh:
fix-864
87 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
bad:
864-crap
88 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
!!!:
foobar
89 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
just.
don’t.
90 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
when merging
include the
branch name91 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
default message
works nicely
92 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
Merge branch <name>
93 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
you need to include the branch name here so that once the branch
has been deleted, you'll still be able to tell what the branch name was
maximal
historical
information94 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
to review
95 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
don’t squash
96 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
don’t fast forward
97 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
don’t rebase before merge
98 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
don’t destroy your history
99 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
use branches
100 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
use a release branch
101 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
use no-ff to make merge commits
102 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
keep your repo clean
103 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
let’s get
more
granular
104 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
structuring
individual
commits105 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
a commit
equals
one β€œchange”106 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
important:
at each commit
the software
must work107 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
who has heard of git bisect?
who has used git bisect?
<explain git bisect>
git bisect
108 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
when in doubt…
smaller >> bigger
109 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
whitespace
& formatting
110 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
always
go in
distinct commits111 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
remember!
112 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
revision
is also a
thing113 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
what you
eventually
push114 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
!=115 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
your
commits
while
working
116 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
develop a habit of using checkpoint commits instead of the
stash
savepoints
117 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
every
working
micro
step
118 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
single β€œchange”
10-15 commits
119 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
who has heard of the --patch option?
who uses this?
git add --patch
120 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
git add -p
121 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
git commit --amend
122 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
editor
support123 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
magit
fugitive
github.atom.io124 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
magit
125 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
don’t push
first drafts
126 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
tell a
story
127 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
interactive
rebasegit rebase -i
128 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
sometimes
may be useful to
preserve dead ends
129 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
photo credit https://pbs.twimg.com/media/
CPlr0tQWcAAZPjf.jpg
...as a
warning
for others
130 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
commit
messages131 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
ticket
numbers
in the subject
132 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
(at the end)
133 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
less than 80 chars
git's idea of a commit message was modeled on an email message
the first line of the commit is the subject of the message. just like
you can occasionally get away with sending an email message
with only the subject line filled in, and a completely blank body,
you occasionally have a git commit that doesn't need much more
than that. a whitespace cleanup commit is a good example
keep the
subject
short134 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
most commits, however, deserve at least a paragraph of body text in the commit message. depending on exactly what work
you di, what decisions you made, etc., influences how much you might want to put in there. good things to include may be
benchmarkign work you did to decide what algorithm to use, other alternative approaches you considered -- basically
anything that's going to help somebdody doing code review, or somebody staring at the commit in six months going WTAF
commit
message
bodies135 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
you can customize
the template for
the commit message
136 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
if you get to this point, youΚΌre also going to want to script
the repo setup process
git config --local commit.template ./.template
# edit .template to add whatever you want...
137 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
subjects only
commit
message
examples138 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
that's 46 characters, by the way
good:
make login form use POST instead of GET [#864]
139 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
meh:
fixed form [#864]
140 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
bad:
846 fix
141 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
!!!:
foo
142 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
( Β°β–‘Β°
143 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
this
is why
daddy drinks
144 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
to review
145 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
1 commit == 1 change
146 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
photo credit https://imgs.xkcd.com/comics/git_commit.png
and https://xkcd.com/1296/
commit
messages
matter!
147 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
when in doubt make it
smaller
148 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
(make the commit smaller
NOTthe commit message)
149 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
segregate
formatting
changes150 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
use
checkpoint
commits
as savepoints
151 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
don’t push
first drafts
152 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
revise to
tell a
story153 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
or at least make yourself look
smart154 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
using
history
better155 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
jfri156 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
<tell jesse story about reading history & talk inspiration>
just
friggin’
read
it157 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
~/.gitconfig
(again)
158 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
color
support159 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
[color]
branch = auto
diff = auto
grep = auto
interactive = auto
showbranch = auto
status = auto
ui = auto
160 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
[color "status"]
added = green bold
changed = red bold
untracked = cyan bold
161 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
git diff
162 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
git diff -w
163 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
git diff --word-diff
164 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
git diff --word-diff=color
165 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
blame
166 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
git blame
167 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
-w ignores whitespace
-M tracks lines moved within a file
git blame -w -M
168 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
who has run git blame and found out the thing that bugged
them, they committed?
[alias]
praise = blame
169 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
i will
buy
this tee shirt
hashtag justsayin’
170 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
editorintegration171 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
M-x git-blame-for-line
172 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
git blame -L <line>,<line> <file>
git log -L <line>,<line>:<file>
173 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
git blame -L 1,1 index.html
174 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
git blame -L 10,50 index.html
175 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
git blame -L 20,+10 index.html
176 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
git log -L 1,1:index.html
177 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
git log -L 10,50:index.html
178 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
git log -L 20,+10:index.html
179 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
git log -S <string>
180 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
git lg
181 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
log --graph --abbrev-commit --date=relative --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset'
182 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
183 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
--graph
184 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
--abbrev-commit
185 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
--date=relative
186 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
SHA in red,
branch name (if any) in yellow,
commit subject,
date,
author
--pretty=format:
'%Cred%h%Creset
-%C(yellow)%d%Creset
%s
%Cgreen(%cr)
%C(bold blue)<%an>%Creset'
187 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
188 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
takeaways!
189 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
history
is
important190 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
it’s probably
worth more
of your time191 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
both
creating it
and
using it
192 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
don’t just stop
when the
software
works193 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
software
development
is hard194 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
be kind
to others195 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
be kind
to your
future
self196 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
thank you!
197 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
198 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
GIMME YR TALKS
Oct 6-7
CFP OPEN NOW!
seagl.org
199 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
please give me
feedbackhttps://joind.in/talk/0f066
200 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
questions?
FEEDBACK β†’ https://joind.in/talk/0f066
201 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack
202 β€” Logs Are MAGIC β€” OpenWest 2017 β€” @genehack

More Related Content

Similar to Logs Are Magic: Why Git Workflows and Commit Structure Should Matter To You

An Introduction to Git (even for non-developers)
An Introduction to Git (even for non-developers)An Introduction to Git (even for non-developers)
An Introduction to Git (even for non-developers)John Anderson
Β 
What is quality code? From cruft to craft
What is quality code? From cruft to craftWhat is quality code? From cruft to craft
What is quality code? From cruft to craftNick DeNardis
Β 
Graph Stream Processing : spinning fast, large scale, complex analytics
Graph Stream Processing : spinning fast, large scale, complex analyticsGraph Stream Processing : spinning fast, large scale, complex analytics
Graph Stream Processing : spinning fast, large scale, complex analyticsParis Carbone
Β 
A static site generator should be your next language learning project
A static site generator should be your next language learning projectA static site generator should be your next language learning project
A static site generator should be your next language learning projectJohn Anderson
Β 
Introduction to Git (even for non-developers)
Introduction to Git (even for non-developers)Introduction to Git (even for non-developers)
Introduction to Git (even for non-developers)John Anderson
Β 
Container Days NYC Keynote
Container Days NYC KeynoteContainer Days NYC Keynote
Container Days NYC KeynoteBoyd Hemphill
Β 
JSON Web Tokens Will Improve Your Life
JSON Web Tokens Will Improve Your LifeJSON Web Tokens Will Improve Your Life
JSON Web Tokens Will Improve Your LifeJohn Anderson
Β 
From Developer to Data Scientist - Gaines Kergosien
From Developer to Data Scientist - Gaines KergosienFrom Developer to Data Scientist - Gaines Kergosien
From Developer to Data Scientist - Gaines KergosienITCamp
Β 
Jose Luis Fernandez-Marquez (UNIGE) - CCL tracker
Jose Luis Fernandez-Marquez (UNIGE) - CCL trackerJose Luis Fernandez-Marquez (UNIGE) - CCL tracker
Jose Luis Fernandez-Marquez (UNIGE) - CCL trackerCitizenCyberlab
Β 
A static site generator should be your next language learning project
A static site generator should be your next language learning projectA static site generator should be your next language learning project
A static site generator should be your next language learning projectJohn Anderson
Β 
De git Γ  la blockchain
De git Γ  la blockchainDe git Γ  la blockchain
De git Γ  la blockchainsabativi
Β 
Monitoring Modern Architectures with Data Science
Monitoring Modern Architectures with Data ScienceMonitoring Modern Architectures with Data Science
Monitoring Modern Architectures with Data ScienceC4Media
Β 
You got chocolate in my peanut butter! .NET on Mac & Linux
You got chocolate in my peanut butter! .NET on Mac & LinuxYou got chocolate in my peanut butter! .NET on Mac & Linux
You got chocolate in my peanut butter! .NET on Mac & LinuxJohn Anderson
Β 
Graph-Tool in Practice
Graph-Tool in PracticeGraph-Tool in Practice
Graph-Tool in PracticeMosky Liu
Β 
Scaffolding a legacy app with BDD scenario (Agile in the City Bristol 2017)
Scaffolding a legacy app with BDD scenario (Agile in the City Bristol 2017)Scaffolding a legacy app with BDD scenario (Agile in the City Bristol 2017)
Scaffolding a legacy app with BDD scenario (Agile in the City Bristol 2017)GΓ‘spΓ‘r Nagy
Β 
Supercharging project health check
Supercharging project health checkSupercharging project health check
Supercharging project health checkDavid Horvath
Β 
JSON Web Tokens Will Improve Your Life
JSON Web Tokens Will Improve Your LifeJSON Web Tokens Will Improve Your Life
JSON Web Tokens Will Improve Your LifeJohn Anderson
Β 
Scala facile jug summer camp 2017
Scala facile   jug summer camp 2017Scala facile   jug summer camp 2017
Scala facile jug summer camp 2017Philippe Charrière
Β 
Achieving Technical Excellence in Your Software Teams - from Devternity
Achieving Technical Excellence in Your Software Teams - from Devternity Achieving Technical Excellence in Your Software Teams - from Devternity
Achieving Technical Excellence in Your Software Teams - from Devternity Peter Gfader
Β 
Qcon beijing 2010
Qcon beijing 2010Qcon beijing 2010
Qcon beijing 2010Vonbo
Β 

Similar to Logs Are Magic: Why Git Workflows and Commit Structure Should Matter To You (20)

An Introduction to Git (even for non-developers)
An Introduction to Git (even for non-developers)An Introduction to Git (even for non-developers)
An Introduction to Git (even for non-developers)
Β 
What is quality code? From cruft to craft
What is quality code? From cruft to craftWhat is quality code? From cruft to craft
What is quality code? From cruft to craft
Β 
Graph Stream Processing : spinning fast, large scale, complex analytics
Graph Stream Processing : spinning fast, large scale, complex analyticsGraph Stream Processing : spinning fast, large scale, complex analytics
Graph Stream Processing : spinning fast, large scale, complex analytics
Β 
A static site generator should be your next language learning project
A static site generator should be your next language learning projectA static site generator should be your next language learning project
A static site generator should be your next language learning project
Β 
Introduction to Git (even for non-developers)
Introduction to Git (even for non-developers)Introduction to Git (even for non-developers)
Introduction to Git (even for non-developers)
Β 
Container Days NYC Keynote
Container Days NYC KeynoteContainer Days NYC Keynote
Container Days NYC Keynote
Β 
JSON Web Tokens Will Improve Your Life
JSON Web Tokens Will Improve Your LifeJSON Web Tokens Will Improve Your Life
JSON Web Tokens Will Improve Your Life
Β 
From Developer to Data Scientist - Gaines Kergosien
From Developer to Data Scientist - Gaines KergosienFrom Developer to Data Scientist - Gaines Kergosien
From Developer to Data Scientist - Gaines Kergosien
Β 
Jose Luis Fernandez-Marquez (UNIGE) - CCL tracker
Jose Luis Fernandez-Marquez (UNIGE) - CCL trackerJose Luis Fernandez-Marquez (UNIGE) - CCL tracker
Jose Luis Fernandez-Marquez (UNIGE) - CCL tracker
Β 
A static site generator should be your next language learning project
A static site generator should be your next language learning projectA static site generator should be your next language learning project
A static site generator should be your next language learning project
Β 
De git Γ  la blockchain
De git Γ  la blockchainDe git Γ  la blockchain
De git Γ  la blockchain
Β 
Monitoring Modern Architectures with Data Science
Monitoring Modern Architectures with Data ScienceMonitoring Modern Architectures with Data Science
Monitoring Modern Architectures with Data Science
Β 
You got chocolate in my peanut butter! .NET on Mac & Linux
You got chocolate in my peanut butter! .NET on Mac & LinuxYou got chocolate in my peanut butter! .NET on Mac & Linux
You got chocolate in my peanut butter! .NET on Mac & Linux
Β 
Graph-Tool in Practice
Graph-Tool in PracticeGraph-Tool in Practice
Graph-Tool in Practice
Β 
Scaffolding a legacy app with BDD scenario (Agile in the City Bristol 2017)
Scaffolding a legacy app with BDD scenario (Agile in the City Bristol 2017)Scaffolding a legacy app with BDD scenario (Agile in the City Bristol 2017)
Scaffolding a legacy app with BDD scenario (Agile in the City Bristol 2017)
Β 
Supercharging project health check
Supercharging project health checkSupercharging project health check
Supercharging project health check
Β 
JSON Web Tokens Will Improve Your Life
JSON Web Tokens Will Improve Your LifeJSON Web Tokens Will Improve Your Life
JSON Web Tokens Will Improve Your Life
Β 
Scala facile jug summer camp 2017
Scala facile   jug summer camp 2017Scala facile   jug summer camp 2017
Scala facile jug summer camp 2017
Β 
Achieving Technical Excellence in Your Software Teams - from Devternity
Achieving Technical Excellence in Your Software Teams - from Devternity Achieving Technical Excellence in Your Software Teams - from Devternity
Achieving Technical Excellence in Your Software Teams - from Devternity
Β 
Qcon beijing 2010
Qcon beijing 2010Qcon beijing 2010
Qcon beijing 2010
Β 

More from John Anderson

Do you want to be right or do you want to WIN?
Do you want to be right or do you want to WIN?Do you want to be right or do you want to WIN?
Do you want to be right or do you want to WIN?John Anderson
Β 
A static site generator should be your next language learning project
A static site generator should be your next language learning projectA static site generator should be your next language learning project
A static site generator should be your next language learning projectJohn Anderson
Β 
Old Dogs & New Tricks: What's New with Perl5 This Century
Old Dogs & New Tricks: What's New with Perl5 This CenturyOld Dogs & New Tricks: What's New with Perl5 This Century
Old Dogs & New Tricks: What's New with Perl5 This CenturyJohn Anderson
Β 
Introduction to Git for Non-Developers
Introduction to Git for Non-DevelopersIntroduction to Git for Non-Developers
Introduction to Git for Non-DevelopersJohn Anderson
Β 
A Modest Introduction To Swift
A Modest Introduction To SwiftA Modest Introduction To Swift
A Modest Introduction To SwiftJohn Anderson
Β 
JSON Web Tokens Will Improve Your Life
JSON Web Tokens Will Improve Your LifeJSON Web Tokens Will Improve Your Life
JSON Web Tokens Will Improve Your LifeJohn Anderson
Β 
Old Dogs & New Tricks: What's New With Perl5 This Century
Old Dogs & New Tricks: What's New With Perl5 This CenturyOld Dogs & New Tricks: What's New With Perl5 This Century
Old Dogs & New Tricks: What's New With Perl5 This CenturyJohn Anderson
Β 
A Modest Introduction to Swift
A Modest Introduction to SwiftA Modest Introduction to Swift
A Modest Introduction to SwiftJohn Anderson
Β 
Friends Don't Let Friends Browse Unencrypted: Running a VPN for friends and f...
Friends Don't Let Friends Browse Unencrypted: Running a VPN for friends and f...Friends Don't Let Friends Browse Unencrypted: Running a VPN for friends and f...
Friends Don't Let Friends Browse Unencrypted: Running a VPN for friends and f...John Anderson
Β 
A Modest Introduction To Swift
A Modest Introduction To SwiftA Modest Introduction To Swift
A Modest Introduction To SwiftJohn Anderson
Β 
JSON Web Tokens Will Improve Your Life
JSON Web Tokens Will Improve Your LifeJSON Web Tokens Will Improve Your Life
JSON Web Tokens Will Improve Your LifeJohn Anderson
Β 
Automate Yo'self -- SeaGL
Automate Yo'self -- SeaGL Automate Yo'self -- SeaGL
Automate Yo'self -- SeaGL John Anderson
Β 
JWT! JWT! Let it all out!
JWT! JWT! Let it all out!JWT! JWT! Let it all out!
JWT! JWT! Let it all out!John Anderson
Β 
A Modest Introduction to Swift
A Modest Introduction to SwiftA Modest Introduction to Swift
A Modest Introduction to SwiftJohn Anderson
Β 
Modern Perl for the Unfrozen Paleolithic Perl Programmer
Modern Perl for the Unfrozen Paleolithic Perl ProgrammerModern Perl for the Unfrozen Paleolithic Perl Programmer
Modern Perl for the Unfrozen Paleolithic Perl ProgrammerJohn Anderson
Β 

More from John Anderson (16)

#speakerlife
#speakerlife#speakerlife
#speakerlife
Β 
Do you want to be right or do you want to WIN?
Do you want to be right or do you want to WIN?Do you want to be right or do you want to WIN?
Do you want to be right or do you want to WIN?
Β 
A static site generator should be your next language learning project
A static site generator should be your next language learning projectA static site generator should be your next language learning project
A static site generator should be your next language learning project
Β 
Old Dogs & New Tricks: What's New with Perl5 This Century
Old Dogs & New Tricks: What's New with Perl5 This CenturyOld Dogs & New Tricks: What's New with Perl5 This Century
Old Dogs & New Tricks: What's New with Perl5 This Century
Β 
Introduction to Git for Non-Developers
Introduction to Git for Non-DevelopersIntroduction to Git for Non-Developers
Introduction to Git for Non-Developers
Β 
A Modest Introduction To Swift
A Modest Introduction To SwiftA Modest Introduction To Swift
A Modest Introduction To Swift
Β 
JSON Web Tokens Will Improve Your Life
JSON Web Tokens Will Improve Your LifeJSON Web Tokens Will Improve Your Life
JSON Web Tokens Will Improve Your Life
Β 
Old Dogs & New Tricks: What's New With Perl5 This Century
Old Dogs & New Tricks: What's New With Perl5 This CenturyOld Dogs & New Tricks: What's New With Perl5 This Century
Old Dogs & New Tricks: What's New With Perl5 This Century
Β 
A Modest Introduction to Swift
A Modest Introduction to SwiftA Modest Introduction to Swift
A Modest Introduction to Swift
Β 
Friends Don't Let Friends Browse Unencrypted: Running a VPN for friends and f...
Friends Don't Let Friends Browse Unencrypted: Running a VPN for friends and f...Friends Don't Let Friends Browse Unencrypted: Running a VPN for friends and f...
Friends Don't Let Friends Browse Unencrypted: Running a VPN for friends and f...
Β 
A Modest Introduction To Swift
A Modest Introduction To SwiftA Modest Introduction To Swift
A Modest Introduction To Swift
Β 
JSON Web Tokens Will Improve Your Life
JSON Web Tokens Will Improve Your LifeJSON Web Tokens Will Improve Your Life
JSON Web Tokens Will Improve Your Life
Β 
Automate Yo'self -- SeaGL
Automate Yo'self -- SeaGL Automate Yo'self -- SeaGL
Automate Yo'self -- SeaGL
Β 
JWT! JWT! Let it all out!
JWT! JWT! Let it all out!JWT! JWT! Let it all out!
JWT! JWT! Let it all out!
Β 
A Modest Introduction to Swift
A Modest Introduction to SwiftA Modest Introduction to Swift
A Modest Introduction to Swift
Β 
Modern Perl for the Unfrozen Paleolithic Perl Programmer
Modern Perl for the Unfrozen Paleolithic Perl ProgrammerModern Perl for the Unfrozen Paleolithic Perl Programmer
Modern Perl for the Unfrozen Paleolithic Perl Programmer
Β 

Recently uploaded

Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmSujith Sukumaran
Β 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
Β 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtimeandrehoraa
Β 
Russian Call Girls in Karol Bagh Aasnvi ➑️ 8264348440 πŸ’‹πŸ“ž Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➑️ 8264348440 πŸ’‹πŸ“ž Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➑️ 8264348440 πŸ’‹πŸ“ž Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➑️ 8264348440 πŸ’‹πŸ“ž Independent Escort S...soniya singh
Β 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
Β 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesŁukasz ChruΕ›ciel
Β 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
Β 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Matt Ray
Β 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
Β 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....kzayra69
Β 
How to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdfHow to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdfLivetecs LLC
Β 
Dealing with Cultural Dispersion β€” Stefano Lambiase β€” ICSE-SEIS 2024
Dealing with Cultural Dispersion β€” Stefano Lambiase β€” ICSE-SEIS 2024Dealing with Cultural Dispersion β€” Stefano Lambiase β€” ICSE-SEIS 2024
Dealing with Cultural Dispersion β€” Stefano Lambiase β€” ICSE-SEIS 2024StefanoLambiase
Β 
Buds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in NoidaBuds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in Noidabntitsolutionsrishis
Β 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
Β 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
Β 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
Β 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
Β 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
Β 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
Β 

Recently uploaded (20)

Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalm
Β 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
Β 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtime
Β 
Hot Sexy call girls in Patel NagarπŸ” 9953056974 πŸ” escort Service
Hot Sexy call girls in Patel NagarπŸ” 9953056974 πŸ” escort ServiceHot Sexy call girls in Patel NagarπŸ” 9953056974 πŸ” escort Service
Hot Sexy call girls in Patel NagarπŸ” 9953056974 πŸ” escort Service
Β 
Russian Call Girls in Karol Bagh Aasnvi ➑️ 8264348440 πŸ’‹πŸ“ž Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➑️ 8264348440 πŸ’‹πŸ“ž Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➑️ 8264348440 πŸ’‹πŸ“ž Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➑️ 8264348440 πŸ’‹πŸ“ž Independent Escort S...
Β 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
Β 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New Features
Β 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
Β 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Β 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
Β 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....
Β 
How to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdfHow to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdf
Β 
Dealing with Cultural Dispersion β€” Stefano Lambiase β€” ICSE-SEIS 2024
Dealing with Cultural Dispersion β€” Stefano Lambiase β€” ICSE-SEIS 2024Dealing with Cultural Dispersion β€” Stefano Lambiase β€” ICSE-SEIS 2024
Dealing with Cultural Dispersion β€” Stefano Lambiase β€” ICSE-SEIS 2024
Β 
Buds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in NoidaBuds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in Noida
Β 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
Β 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
Β 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Β 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
Β 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
Β 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
Β 

Logs Are Magic: Why Git Workflows and Commit Structure Should Matter To You