►
From YouTube: Demo: Git object deduplication
Description
Documentation: https://docs.gitlab.com/ee/administration/repository_storage_types.html#hashed-object-pools
A
Hi,
this
is
Jacob
frost
man
from
the
Italy
team
and
kid
lab
I'm,
going
to
give
a
small
demonstration
about
kids,
objective
duplication,
get
objective.
Duplication
is
a
new
feature
that
will
be
on
by
default
in
Guitar,
12.1
and
what
it
solves.
It's
a
feature
that
solves
the
problem
that
Forks
of
projects
on
a
grid
lab
server,
use
a
lot
of
disk
space
on
the
gate,
lap
server.
A
So
with
git
objective
duplication,
we
can
drastically
reduce
the
amount
of
space
that
is
needed
for
a
clone.
So
here
we
have
a
repository
that
is
taking
up
11
megabytes
on
the
github
server
and
this
server.
This
is
a
nightly
built,
and
this
has
gate,
objective
duplication
already
enabled
so
I'm
going
to
fork
this
repository
and
see
what
happens.
A
Wow,
zero
bytes
there's
an
amazing
results,
if
only
it
were
true.
This
is
an
eventually
consistent
encounter
and
it's
currently
got
frozen
at
a
wrong
value
in
normal
use.
This
is
not
a
problem
because
users
will
be
using
this
repository
and
the
value
will
get
updated,
but
this
is
a
demo
server
and
nobody's
using
the
server,
so
it
will
just
sit.
There
are
zero
bytes,
so
I
have
to
create
some
user
activity
to
get
this
number
two
to
update
or
something
realistic.
A
A
A
A
A
A
No
ok
I'll
have
to
prove
it
to
you
the
hard
way.
So
we
have
two
repositories.
We
have
this
one,
the
original
one,
the
fork
parents
and
we
have
a
forked
repository
and
both
of
them
are
now
only
taking
up
160
kilobytes
of
disk
space,
which
is
impossible
because
there
is
11
megabytes
of
data
in
there.
I
just
showed
you
that
in
this
kid
clone
so
what's
going
on
well,
we'll
have
to
look
on
the
github
server
to
see
what's
happening
here
for
that
I'm
going
to
use
administrative
access.
A
A
A
A
There,
the
magic
worked.
We
now
have
only
20
kilobytes
of
objects
and
the
whole
repository
shrunk
down,
236
kilobytes.
So
what
what
happened
here?
Well,
the
secret
is
that
there
is
a
man
behind
the
curtain
order
for
this
magic
trick.
We
have
a
secret
assistant,
which
is
the
pool
repository
and
there's
a
vial
in
here.
That
is
pointing
to
the
pool
repository
and
if
we
go
to
that
repository,
see
if
I
can
copy
paste
it
right
and
there's
another
repository,
this
one
is
11
megabytes
and
it
has
an
11
megabytes
objects
directory.
A
So
the
the
magic
where
we
have
here
is
that
what
happens
when
you
for
a
repository
is
that
we
create
a
pool
repository
in
the
background,
and
this
pool
recalls
pool
repository
is
a
full
clone
of
the
original
repository
and
then
the
original
repository
throws
away
all
the
kid
objects
that
are
duplicated
between
it
and
the
pool
repository
and
the
same
thing
goes
for
the
forked
repository.
Let's
look
at
the
fork,
so
that
would
be
this
one
and.
A
There
are
only
40
kilobytes
worth
of
files
in
the
objects
directory
and
the
whole
repository
itself
is
160,
kilobytes
and
again
in
the
objects
and
for
alternates
directory.
We
find
a
reference
to
the
same
object
pool,
so
that
is
the
magic
trick.
We
take
the
good
objects
that
are
in
the
repository
that
is
getting
forked.
We
move
them
to
a
new
repository
and
then
we,
the
pool
which
is
the
full
repository
and
then
every
time
we
create
a
new
fork.
We
make
that
borrow
objects
from
the
pool
repository.