►
From YouTube: Great Artists Steal: Adding Git Support to Microsoft Visual Studio, Edward Thomson - Git Merge 2015
Description
In 2011, Microsoft was building "Team Foundation Version Control", a centralized version control system for enterprises. Two years later, we were building Git support into Visual Studio and Team Foundation Server. Learn how Microsoft chose a great tool for its Distributed Version Control System by using Git (instead of copying it poorly) and learn about the mistakes we made (and the ones we avoided) along the way.
A
Without
further
ado
I'm
going
to
introduce
somebody
who
we've
been
working
with
for
a
while
no
net
for
a
couple
of
years,
he's
been
instrumental
in
writing
and
helping
out
with
the
live
get
to
project
and
integrating
that
individual
studio
and
team
foundation
server
and
Microsoft
senior
engineer
at
Microsoft.
Please
welcome
ed
Thompson.
B
Thanks
Scott
thanks,
everybody
I
hope,
you're
excited
to
be
here
at
get
merge.
I
know,
I
am
celebrating
the
10th
birthday
of
get
I'd
like
to
think
that
10
years
ago,
when
Linus
put
his
first
committed
to
get,
he
thought
that
we
would
all
be
sitting
here
and
you
would
all
be
listening
to
a
guy
from
Microsoft.
Tell
you
about
get
but
I'm,
actually
not
going
to
tell
you
about
get
I
trust
it
most
of
the
people
here
know
enough
about
get
that.
You
don't
want
that
guy
from
Microsoft
telling
you
really
how
it
works.
B
So,
instead
I'm
going
to
tell
you
a
little
story
about
how
we
put
get
into
Visual,
Studio
and
team
foundation
server.
Certainly
the
highlight
of
my
career
at
Microsoft,
probably
the
hardest
thing:
we've
ever
done,
both
technically
and
politically,
legally,
really
in
every
way,
and
so
I
I
hope
you
enjoy
it.
B
B
You
may
know
that
better
as
the
team
foundation,
server
team,
quick
show
of
hands
how
many
people
use
team
foundation,
server,
no
of
team
foundation
server
keep
your
hands
up.
If
you
really
like
team
foundation,
server
yeah,
that's
kind
of
the
typical
reaction
team
foundation.
Server
is
something
that
Microsoft
is
super
happy
about,
and
no
joke
super
happy
about.
You
know
it's
one
of
the
best
selling
application
lifecycle
management
platforms.
We
call
it
alm
application.
B
Lifecycle
management
means,
like
it's,
got
integrated,
bug,
tracking
and
version
control,
continuous
integration
build
and
test
all
the
stuff
that
you
want
in
an
enterprise.
You
know
microsoft's
been
selling
it
since
2003
by
2012.
You
know
we
were.
We
were
beating
clear
case,
which
is
basically
what
we
set
out
to
do.
We
were
beating
rational
jazz,
which
is
also
kind
of
what
we
set
out
to
do
this
industry.
Analyst
gardner
puts
out
this.
B
They
call
it
the
Magic
Quadrant
report,
I,
don't
know
what
exactly
what
the
quadrants
are,
but
being
at
the
top
and
being
at
the
far
right
is
the
best
and
that's
where
we
were
so
we
were
pumped
about
this.
The
problem
was
people
using
our
version
control
systems,
weren't,
always
so
pumped
I'm
2012.
We
had
sort
of
two
modes
to
TFS.
The
first
one
was,
in
version
control
parlance
a
check
out
edit
check-in
system.
You
had
to
explicitly
check
out
a
file,
it
was
read
only
until
you
did
not
everybody
really
liked.
B
This
people
thought
we
were
bozos.
The
reason
you
do
this,
you
know
just
just
quick
rationale.
The
reason
you
do
this
is
so
that
you
can
support
the
windows
code
base,
which
is
gigabytes
and
gigabytes
and
gigabytes.
I
won't
go
into
whether
it
should
be
gigabytes,
but
it
is
gigabytes
and
we
need
to
support
that
and
so
scanning
the
filesystem
looking
for
changes
is
incredibly
expensive.
That's
why
we
built
a
system
to
you
know
to
make
you
check
out
the
files
explicitly.
B
The
problem
is
people
working
on
a
normal
sized
codebase
don't
want
this.
This
is
friction
for
them.
You
got
to
be
on
the
server
you
got
to
be
connected
to
it
to
a
network.
You
can't
be
on
a
plane
working
at
least
not
easily.
So
in
2012
we
kind
of
fixed
this
problem.
We
put
in
a
new
mode
to
TFS
to
work
like
again
in
version
control,
parlance
and
edit
merge
commit
system
files,
weren't
read-only
anymore.
B
B
We
were
for
the
most
part
happy
with
it
at
Microsoft
using
it
internally
again
we
have
giant
code
bases
and
for
the
most
part
they
don't
scale
well,
two
things
like
get
to
a
distributed
version
control
system,
except
that,
when
you
know
in
2012
I,
was
on
a
little
team
at
Microsoft.
I
was
on
the
cross
platform.
Team
I
was
building
the
UNIX
tools
to
talk
to
team
foundation
server
and
we
were
like
a
really
distributed.
Team
I
was
in
Chicago.
One
of
my
buddies
on
the
team
was
in
Raleigh
North
Carolina.
B
One
of
my
other
buddies
was
in
Northern
Ireland
and
one
day
we're
on
the
phone
talking
and
we're
like.
You
know
what
slow
is
talking
to
our
our
version:
control
server
in
redmond,
because
of
course,
at
Microsoft
everything's
in
redmond
and
my
buddy
Martin
jokes:
hey,
wouldn't
it
be
great
if
we
were
using
a
distributed
version
control
system
and
we
laughed
and
laughed
I'm
nobody's
laughing.
Nobody
understands
how
hilarious
it
is
that
somebody
on
the
TFS
team
would
suggest
that
we
use
a
distributed
version
control
system
and
not
used
TFS.
B
We
thought
it
was
the
most
ludicrous
thing
we'd
ever
heard,
but
at
the
same
time
it's
stuck.
We
started
thinking
about
this
more
and
more.
Why
aren't
we
using
a
distributed
version
control
system?
And
again
we
run
into
that?
We
eat
our
own
dog
food
at
Microsoft.
We
couldn't
use
a
distributed
version
control
system
unless
we
wrote
a
distributed
version
control
system.
So
that's
what
we
started
thinking.
Why
aren't
we
writing
a
distributed
version
control
system?
This
seemed
like
a
really
great
idea
and
again
I
was
on
the
the
cross-platform
team
at
the
time.
B
So
I
wouldn't
talk
to
the
the
TFS
version,
control
team
and
I'm,
like
hey
guys.
Why
aren't
we
writing
a
distributed
version?
Control
system
and
one
of
the
guys
looks
I
mean
he's
like
well.
We've
got
some
great
ideas
about
that
and
I'm
like
good.
So
one
thing
you
got
to
know
about
team
foundation.
Server
is
it's
just
it's
basically,
one
big
sequel,
stored
procedure
or
maybe
many
sequel,
stored
procedures,
all
of
team
foundation
server
is
and
sequel
server.
B
It's
all
stored
procedures,
it's
all
very
complex
and
I,
don't
understand
a
word
of
it,
but
the
version
control
team
does,
and
so
he
looked
at
me
and
he's
like
I've
got
some
great
ideas.
We
can
put
sequel
compact
edition
on
everybody's
client.
We
can
figure
out
a
way
to
replicate
to
the
sequel
server
when
they,
when
they
want
to
push
and
so
I
kind
of
slowly
backed
out
of
the
room
and
I
decided
that
maybe
this
wasn't
such
a
good
idea.
B
After
all-
and
in
fact
maybe
we
should
go
back
to
using
a
distributed
version,
control
system
and
not
writing
a
distributed
version
control
system.
So
so
that's
what
we
decided
we
were
going
to
do.
We
were
going
to
you
know,
figure
out
how
to
use
a
distributed
version
control
system
and
what
that
meant
for
a
team
foundation
server
and,
of
course,
we
thought
we
were
going
to
use
mercurial
because
you
know
five
years
ago,
the
best
thinking
on
the
internet.
B
If
you
googled
like
distributed
version
control
system
windows,
everybody
thought
mercurial
was
the
best
thing,
so
we
thought
we
were
going
to
use
mercurial,
but
we
we
thought
we
should
also
do
a
little
bit
of
homework
before
we
just
don't
write
in
so
we
looked
at
get
and
pretty
much
said
now,
that's
probably
not
going
to
work
for
us.
We
couldn't
ship
a
whole
copy
of
a
unix-like
operating.
You
know,
environment,
like
emphasis
get
you
know,
all
of
a
sudden.
We've
got
concerns
about
the
legality
of
doing
that.
B
We've
got
concerns
about
whether
that's
a
good
thing
for
our
customers.
What,
if
that's
what
they
want?
You
know
we
won't.
We
kind
of
want
to.
We
don't
shell
out
a
lot
in
visual
studio,
doing
that
for
editor,
integration
would
be
kind
of
weird,
and
then
we
looked
at
this
other
tool
called
rasa
tea
from
a
little
company
called
source
gear
that
does
version
control
systems
in
central
Illinois.
B
We
were
a
little
biased
towards
veracity
because
most
of
us
on
the
cross
flat
team
used
to
work
there.
So
so
we
were
kind
of
like
well,
maybe
we
should
think
about
veracity.
Maybe
we
should
think
about
mercurial.
Let's
do
a
little
bit
more
research,
and
the
first
thing
we
really
did
was
to
look
at
the
popularity
of
distributed
version,
control
systems
and
again
this
was
several
years
ago,
and
this
is
totally
these
numbers
are
completely
made
up.
So
please
don't.
B
B
B
It
didn't
support
get
at
the
time
we're
like
ooh
turns
out
this
company
named
github
was
becoming
a
little
bit
popular,
maybe
you've
heard
of
them,
and
it
kind
of
made
a
lot
of
sense
to
start
following
it
and
we're
glad
that
we
did
because
the
popularity
trend
continued
to
go
up
and
that's
not
to
say
that
there's
anything
wrong
with
or
bad
about,
mercurial.
There's,
no
reason
that
you
know
that
gets
popularity
shouldn't
assess,
you
know
necessitate
that
we
use
it,
but
that
is
kind
of
that
is
what
we
decided
to
do.
B
At
that
point,
we
had
to
figure
out
how
to
make
this
happen,
and
once
you
start
doing
researching
to
get
one
of
the
first
things
you
notice
is
it's
got
this
really
cool
like
file
system,
object,
storage
mechanism.
That
is
just
beautiful.
It's
it's
it's
a
thing
of
beauty.
Once
you
crank
open
your
get
repository
and
understand
how
it
works.
B
Why
don't
we
build
this
kind
of
trance
parents
get
bridge,
proxying
layer
so
that
all
of
your
data
could
still
live
in
team
foundation,
server
in
TFS
version
control
so
that
people
could
interoperate
between
TFS
and
get
you
know
if
you
wanted
to
use,
get
you
could
and
if
I
wanted
to
use
TFS
I
could
on
the
same
project.
We
thought
this
was
a
really
brilliant
idea.
We
went
and
built
it.
We
called
it
the
gate
bridge.
It
was
this
component
to
TFS.
B
B
B
The
good
part
is,
we
were
able
to
the
you
know,
reuse,
some
of
the
components
that
we
wrote
for
it,
but
no,
we
we
immediately
threw
it
away
after
we
had
built
it
because
we
couldn't
even
stand
to
use
it
and
we
knew
how
it
worked,
and
instead
we
decided
we
actually
had
to
really
truly
support
get.
So
that's
what
we
did.
We
would
get
support
into
Visual
Studio
Visual
Studio
can,
you
know,
can
pull
it?
Can
it
can
push?
You
know
it
talks
to
a
local
get
repository
on
disk.
B
It's
a
real
gift
repository,
it's
not
some
fake
thing
Microsoft.
Yet
we
put
get
supporting
the
team
foundation
server.
We
didn't,
you
know,
try
to
map
it
onto
TFS
in
some
weird
way.
We
actually
host
real
git
repositories.
Of
course
there
in
sequel
server,
because
that's
what
we
do
like
I
said
but
never
mind
that,
and
once
we
decided
we
were
going
to
do
this.
We
had
to
convince
a
lot
of
people
that
this
was
a
good
idea.
B
The
first
people
we
had
to
convince
was
our
management,
and
it
turns
out
my
boss
at
the
time,
had
previously
managed
the
TFS
version,
control
team
and
his
boss
previously
managed
the
version
control
team
in
his
loss
previously
managed
the
version
control
team.
So
you
can
imagine
going
into
a
meeting
and
saying
hi
I
want
to
throw
all
of
your
version.
Control
way
and
start
using
get
instead
went
over
very,
very
well.
In
fact,
my
glasses
lost.
The
first
thing
he
said
to
me
was
hey.
B
I've
got
a
great
idea:
why
don't
we
make
get
a
little
portion
of
TFS
and
they
can
interoperate
yeah,
so
that
was
actually
a
tough
sell
for
us.
It
was
not
an
impossible
sell,
but
it
was
a
tough
sell,
especially
because
the
first
thing
that
the
first
thing
that
are
my
management
ever
hears
from
customers
is:
how
do
I
do
fine
grain
permissions?
How
do
I
control,
who
can
access
this
part
of
TFS?
How
can
I
make
sure
that
I
have
an
audit
trail
of
who
changed
what
how
do
I?
B
So
it
really
didn't
take
very
long
to
convince
them
that
we
couldn't
do
that,
that
we
had
to
interoperate
that
the
power
of
get
was
that
it's
good
and
then
I
can
use
the
git
command
line
and
visual
studio
or
stash,
or
you
know,
push
my
repositories
into
github
and
that
we're
all
speaking
the
same
protocols
that
we're
all
talking
to
the
same
repositories
that
there
isn't
a
Microsoft
get.
If
we
want
to
change,
get
we
need
to
change,
get
we
need
to
get
on
the
get
mailing
list
we
need
to
send
patches.
B
We
need
to
work
with
the
the
alternative
implementations
of
get
like
live,
get
to
and
j
get
so
that
everybody
is
doing
the
same
thing.
So
so,
thankfully
we
we
got
the
okay
to
just
ship,
yeah,
okay,
and
that's
what
we
do
you
know,
instead
of
instead
of
everything
going
up
into
TF
SVC.
Now
everything
just
goes
into
a
sure
for
Visual
Studio,
online
and
team
foundation,
server
in
a
sequel
server
in
your
data
center
and
visual
studio
talks
to
both
TFS
and
to
get
repositories.
B
So
we're
very,
very
happy
that
that's
the
way
it
worked,
but
management
was
kind
of
the
you
know
my
management,
my
direct
management,
the
people
in
charge
of
TFS
were
sort
of
the
easy
part
because
of
course,
at
Microsoft,
the
next,
the
next
group
of
people
you
have
to
talk
to
where
the
lawyers,
and
especially
when
you
walk
into
a
room,
saying
I
want
to
start
using
this
technology
that
a
guy
named
linus
torvalds
wrote.
Maybe
you've
heard
of
him.
B
A
B
Tools
for
developers,
so
I
sat
down
with
the
dev
dev
lawyer,
and
we
we
told
them
what
we
wanted
to
do.
We
want
to
start
shipping
get
and
we
we
laid
out.
The
GPL
we
laid
out
lib
get
to,
which
is
the
the
implementation
that
we
actually
talked
to
live
get
to
is
under
a
slightly
different
license.
It's
the
GPL,
but
it
has
a
linking
exception.
So
you
can
include
it
in
a
commercial
program.
You
can
include
it
in
a
closed
source
proprietary
program,
but
you
do
have
to.
B
B
This
is
a
lot
of
information,
but
I
actually
think
this
is
really
great,
because
I'm
tired
of
using
github
to
store
my
my
work
and
I'd
really
rather
use
visual
studio,
no
kidding
the
devotee
of
lawyer
has
a
bachelor's
from
MIT.
So
wasn't
a
tough
sell
for
them.
Actually,
obviously,
there
were
problems
there
were.
We
have
to
figure
out
how
we
can
comply
with
the
licenses
that
we
need
to
comply
with
and
do
so
responsibly
how
to
be
good
citizens,
but
our
lawyers
were
simply
amazing.
B
That's
probably
the
only
time
in
my
life
I'll
utter
that
statement
soon,
as
I
buy
a
house
or
get
married.
All
bets
are
off,
but
the
dub
did.
Lawyers
at
Microsoft
are
super
amazing,
and
after
that,
of
course,
we
had
to
go
to
senior
management
and
my
senior
management
I
mean
Steve
Ballmer
and
again
we
had
a
conversation.
B
I
wasn't
in
the
room,
but
we
had
a
conversation
with
steve
ballmer
and
we
told
him
what
we
wanted
to
do
and
I
don't
really
know
how
he
reacted,
but
I
think
he
was
a
little
skeptical,
but
we
told
him
that
we
really
thought
this
was
the
right
idea.
But,
more
importantly,
this
is
really
what
developers
want
it
and
again
I
wasn't
there,
but
I
would
I
would
really
like
to
think
that.
B
That
he
got
up
and
started
screaming
about
developers,
because
we
give
a
lot
of
people
get
Steve
Ballmer
grief
about
a
lot
of
things,
but
Steve
Ballmer.
This
isn't
a
joke.
He
actually
means
this.
He
really
cares
about
how
developers
on
the
Microsoft
platform
are
able
to
build
software.
I
you
serious
about
this.
He
this
is
something
he's
passionate
about,
and
so
when
we
convinced
him
that
we
weren't
a
bunch
of
idiots
that
we
were
going
to
try
to
do
the
right
thing
here.
Yeah
he
signed
off
so
visual
studio.
2012
was
the
first.
B
We
made
a
sort
of
v6
a
download
available
to
an
extension
package
for
2012,
and
then
we
put
it
in
2013,
so
visual
studio
2013
was
the
first
version
with
get
support.
Team
foundation.
Server
2013
was
the
first
verse
and
where
you
were
able
to
push
a
git
repository
into
it
and
people
are
happy
people
were,
you
know,
really
happy
about
using
TFS
and,
of
course,
we
kept
team
foundation
version
control
around,
because
we
have
customers
like
defense
contractors
and
the
government
who
really
do
care
about
where
their
data
is
going
and
who's.
B
B
The
version
control
team
is
really
great,
it's
much
bigger
than
it
used
to
be,
and
it's
not
all
people
who
know
sequel,
stored
procedure,
sequel,
stored
procedures,
a
couple
of
them
are
here:
we've
got
some
good
hackers
working
on
Libya
to
and
Libya
too
sharp
and
the
the
actual
get
you
know.
Sort
of
integration
team
explorer
in
visual
studio
and
the
the
all
the
stuff
to
manage
get
repositories
in
in
team
foundation,
server
and
Visual
Studio
online,
but
of
course,
I
mean
it's
not
I.
Would
it's
not
just
microsoft?
B
Either
you
know
putting
this
code
in
again.
We
use
a
library
called
lib.
Get
to
lib
get
to
is
another
implementation
of
get
it
sassy
library,
it's
meant
to
be
linked
into
our
programs.
We
use
lib
get
to
sharp,
which
is
AC
sharp,
but
net
wrapper
around
lib
get
to
because
we,
you
know
we
like
writing
in
c-sharp
at
Microsoft.
B
B
We
I'll
of
working
with
these
guys,
some
of
the
smartest
people
I've
ever
worked
with
it's
it's
awe-inspiring.
A
lot
of
them
happen
to
be
github
errs,
not
all
of
them,
but
there
happen
to
be
a
number
of
github
errs
using
and
writing
lib
get
to,
and
they
were
also
super
great.
When
we
said
we
want
to
put
get
support
into
team
foundation,
server
and
Visual
Studio
online.
We
kind
of
expected
github
to
say
well
you're
on
your
own,
but
no
and
in
fact
they
have
been
so
nice.
B
You
know
as
soon
as
we
started
talking
about
this,
we
actually
just
got
together
with
the
the
rest
of
the
lipka
two
contributors
at
their
offices
and
talked
about
talked
about
this
stuff.
So
big
thanks
to
github
for
all
their
help
here,
but
I
can't
not
thank
the
get
community
get
itself.
First
of
all
it
of
all.
You
know
we-
wouldn't
we
wouldn't
be
talking
about
this
without
the
amazing
work
that
that
they've
done,
you
know
junio,
especially
for
for
managing
it
and
making
it
what
it
is.
B
The
other
thing
to
think
about
the
gate
community
is
that
there's
a
lot
of
get
code
and
live
get
to
a
lot
of
the
authors
of
get
have
been
kind
enough
to
allow
Libya
to
to
to
reuse
the
code
with
a
linking
exception.
Obviously
we
can't
just
pull
the
code
out
because
there's
they're
under
different
licenses,
but
a
lot
of
authors
have
been
have
been
kind
enough
to
relicense
their
work
and,
of
course,
get
for
windows.
Get
from
windows
is
a
great
project,
severely
underfunded.
B
So
something
to
consider
that,
thank
you
so
and
and
of
course,
without
get-
we
all
wouldn't
be
here
today,
so
we've
been
so
happy
at
Microsoft
to
be
a
part
of
this
community,
a
small
part
I
wish
I
wish.
We
were
a
bigger
part
and
I
hope
that
we
will
continue
to
invest
here
to
spend
more
time
working
on
first
of
all,
good
implementations,
but
also
you
know,
get
itself
get
core
and
and
making
it
better
on
windows.