►
From YouTube: 2020 07 22 GSoC Git Plugin Performance Project
Description
Git plugin performance improvement project for Google Summer of Code. Topics included the structure of the repository size estimator extension point
A
A
So
mark
I
was
trying
to
run
the
benchmarks
on
multiple
platforms
to
so
I
saw
one
of
your
project,
which
is
a
multi-configuration
project
where
you
use
a
matrix
to
label
to
run
the
whatever
build
in
multiple
agents.
A
So
I
was,
I
was
thinking
of
doing
the
same
thing,
but
so
I
have
three
branches,
three
benchmarks.
I
want
to
run
so
it's
a
multi-branch
project,
I'm
not
sure.
If,
if
in
a
multi-branch
project,
I
can
add
that
configuration
matrix
so
is
there
a
combination?
Is
there
a
project
type
of
a
project
which
I
can
use
which
mixes
both
of
them
or
would
I
have
to
use
a
configuration,
multi-configuration
project
with
a
simple
pipeline
and
add
my
branches
and
then
write
some
shell
steps
to
run
the
benchmark
java
command
to
run
the
benchmarks?
B
So
the
the
I
think
what
you
would
want
to
do
is
use
a
declarative
declare
use
a
pipeline
and
we
probably
want
to
put
it
in
as
a
as
a
declarative
pipeline
and,
let's
use
the
matrix
operator
to
do
it.
So
that
way
you
don't
have
to
you,
don't
have
to
wrestle
with
the
old
school
thing
that
I'm
using.
I
have
those
multi-config
projects,
because
I
want
to
be
sure
that
I
don't
break
compatibility
they're,
actually
not
the
best
way
to
do
it
now.
The
best
way
to
do
it
now
is
declarative
pipeline
with
matrix.
A
And
I'll
do
that:
okay,
okay!
So
the
second
thing
I
think
which
we
should
discuss
is
the
estimator
class
I've.
I've
raised
a
pr
for
that.
Fran
and
omkar
have
reviewed
it
they've,
given
an
initial
review
to
it.
So
so
would
you
guys
like
me
to
discuss
the
design
of
the
class
or
is
it
something
you
would
for?
You
would
first
want
to
review
the
pr
and
discover
it
yourself,
or
would
it
help
you
guys
if
I
discuss
what
I've
done
and
what
I've
thought
about
it?
The
experience
for
the
class.
B
Oh
I'd
like
to
hear
the
a
brief
design
design
description
for
me,
your
insights
or
your
comments
can
be
quite
helpful
for
me
as
I
try
to
understand
it.
A
Okay,
so
so
I
tried
this
uml
diagram
hang
on
intellij,
I'm
not
sure.
If
this
is
going
to
be
very
helpful,
but
so
the
class,
the
repo
estimator
class
size,
estimator
class,
is
it
x.
It
can
work
in
two
ways.
The
first
is
so
it
has
two
constructors.
The
first
requires
a
git
scm
source
object
which
will
be
used
to
analyze.
If
it
has
a
cache
dot
get
directory
or
not.
If
it
does,
it
would
calculate
the
size.
If
it
doesn't,
it
would
switch
it
would.
A
It
would
try
to
find
an
extension
which
has
which
has
implemented
the
extension
point.
We've
provided
the
second
constructor
I've
added
is
so
the
first
constructor
limits
us
to
multi
branch
projects.
That
is,
that
is
the
only
place
where
we
use
a
cache
dot
get
directory.
A
We
can
find
a
cache
directory,
so
the
second
constructor
would
just
ask
for
a
repo
for
the
repository
url
and
would
try
to
find
the
in
the
x
the
implementation
of
the
extension
point
we
have
created
and
if
it
does
exist,
we
would
provide
the
recommendation
on
what
git
implementation
the
plugin
should
use
for
that
project.
So
the
input
can
be
two
things:
it
can
be,
the
git
sem
source
object
or
repo
url.
A
The
output
will
always
be
a
string
which
would
either
be,
which
would
either
be
get
jet
or
I've
chosen.
None.
If
I
don't
want
to
recommend
anything
and
want
to
use
the
default.
A
Default
git
tool
resolved
by
the
plugin,
how
that
is
working,
I'm
going
to
explain
it
more
detail,
but
this
is
the
basic
input
and
output
of
the
class
expectations.
A
So
so
I
think
I
should
directly
show
the
code
a
little
bit
and
then
one
of
the
major
problems
right
now
we
have
which
fran
has
pointed
out
clearly,
and
that
is
something
I
need
to
work
upon.
A
After
this
discussion,
so
so
the
first
constructor
it
asks
for
the
gate
sem
source,
so
once
it,
but
it's
initialized
the
class
it
will
so
how
it
calculates
the
size
is.
Is
that
it
I'll
show
you
the
method?
The
method
would
try.
So
we
are
not
locking
the
cache
we're
just
getting
the
entry,
then
we're.
Then
we
check
if
the
cache
directory,
if
it
exists.
A
If
we
check
that,
if
it,
if
it
has
a
dot,
get
directory
or
not,
if
it
does,
we
would
calculate
the
size
by
size
of
directory
api
and
store
it
in
a
class
member
and
and
if
it,
if
this
doesn't
happen,
if
we
don't
have
a
cache,
the
second
option
we
have
is
to
use
an
api.
A
A
The
extension
point
right
now
is
so
when
I
was
looking
at
the
documentation
of
how
to
create
an
extension
point,
I
saw
two
ways
of
making
it.
One
is
through
the
singleton
pattern
and
the
second
is
the
descriptor
describable
pattern.
A
So,
to
be
very
honest,
I
am
not
100
sure
on
how
the
descriptor
describable
pattern
is
working
single
intel
pattern.
I
could
understand
what
it
was,
how
I
could
design.
I
could
how
I
could
design
the
extension
point
through
it
and
I'm
not
sure
if
the
decision
of
using
it
was
and
not
using
that
pattern
is
wrong
here.
But
what
this
this
extension
point
is
expecting
is
is
that
I
provide
you,
the
url
of
the
repository.
A
I
assume
that
the
implementer
has
the
credentials
for
the
user,
and
how
did
I
reach
to
this
assumption
or
to
this
analysis,
is
that
I
looked
at
the
get
github
plugin
brand
source
plugin,
and
I
was
looking
at
how
I
could
initialize
a
client,
a
github
client.
How
are
they,
how
have
they
how
they
have
wrapped
the
github
apis
java
apis?
So
I
was
looking
that
they
either
they
need
the
user
id
password
or
they
can
use
a
token.
A
So
initially
I
was
thinking
of
passing
the
credentials
from
here
as
well,
but
then
I
realized
that
the
client
there
would
they
would
have
the
user
credentials
for
the
particular
if
they,
if
the,
if
the,
if
the
project
is
using
that
plugin,
they
would
also
have
the
credentials.
So
for
me,
I
think
the
only
information
I
need
to
send
to
them
is
the
repository
url
and
they
would
just
need
to.
A
They
would
just
need
to
send
a
get
request
on
the
repository
url
to
get
the
size
through
a
json
response
from
the
api.
So
this
is
the
only
method.
The
second
method
is
is
where
I
have
right
the
issues
right
now.
So,
as
I
was
looking
at
extension
points,
what
I
could
see
was
extension
points
in
any
plug-in
are
made
to
extend
the
plug-ins
functionality
to
other
plug-ins
as
well.
A
So
we
basically
like
I
so
my
reference
point
was
the
listener
extension
point
we
have
in
in
the
git
plugin
within
the
git.
If,
if,
if
I
want
to
be
precise,
it's
within
git
status,
we
have,
we
have
an
extension
point.
An
extension
point
called
listener,
so
I
kind
of
modeled
the
extension
point
in
a
similar
way,
and
I
can
see
that
this
pla,
this
extension
point,
is
meant
to
provide
the
capability
of
listening
to
some
updates
now.
My
extension
point
is
very
is
different.
Is
actually
opposite
to
this
thing.
A
A
A
Now.
The
issue
with
this
is
that
this
is
a
list
I
was
while
I
was
designing
it's
it's
actually
a
very
it's
a
huge
mistake.
A
While
I
was
designing
the
extension
point,
I
I
I
was
only
thinking
about
the
github
brand
source
plugin
and
I
never
I
actually
it's
a
very
the
mistake
is
that
I
didn't
think
about
other
plugins
which
might
also
implement
it,
and
we
we
would
have
a
list
of
implementations
and
I
don't
have
any
method
right
now
to
distinguish
which
implementation
I
want
to
use
so
fran
was
suggesting
suggested
he
in
the
pr
that
there
we
might
want
to
find
a
way
where
we
can
use
the
url
to
find
out
what
kind
of
extension
class
we
would
want
to
use.
A
So
so
what
I
understood
from
his
comment-
and
he
he
may
clear
me
right
now,
fran
you
can
clear
me
right
clean
here.
I
was
what
I,
as
what
I
got
to
know
was
that
if
I
have
a
github
url
I
would
I
would
extract.
Maybe
the
word
get
up
from
it
and
look
for
the
class.
If,
through
the
list,
I
would
look
for
the
class.
Actually,
as
I'm
discussing
this,
I
this
might
not
be
possible.
A
So
the
the
part
where
I'm
confused
right
now
is
how
do
I,
how
do
I
clearly
get
to
know
which
plugin
classes
are
implementing
this
api?
B
C
C
That
api
is
gonna,
be
a
totally
dependent
on
the
key
system
that
you
have
behind
you.
It's
not
the
same
api
for
github,
that
for
kid
lab
and
for
bit
bucket
or
whatever
else
so
a
what
I
would
like
you
to
think
about
is
the
way
that
you
say:
okay,
who's,
going
to
provide
that
api
and
the
way
to
a
to
calculate
a
site
using
the
api.
C
C
C
We
can
always
read
from
them
in
our
case,
because
we
are
going
to
to
say:
okay,
give
me
the
full
list
of
reported
the
repository
size,
api
classes
and
we
need
mechanisms
to
decide
of
the
full
list,
because
if,
in
our
genki
system
we
have
the
github
plugin,
the
gitlab
bit
packet
and
so
on,
and
all
of
them
are
just
sending
and
giving
and
providing
us
the
mechanisms
to
to
discover
the
the
size
of
the
repository
using
the
api
that
list.
It
will
contain
all
those
extensions.
C
So
what
do?
What
you
have
doing
here
is
just
to
creating
a
point,
something
where
the
rest
of
the,
where
the
providers-
and
we
can
also
they
can
have
just
an
generic
way
to
calculate
that.
I
don't
know
if
it's
possible
or
not-
maybe
it's
just
doing
a
clone
in
a
temporary
file
just
as
a
default
implementation.
C
But
what
I
mean
is
that
you
know
what
is
the
the
url
where
you
want
to
connect-
and
I
said
the
url,
because
it's
probably
the
easiest
field
that
we
have
just
to
the
to
determine
to
determine
which
is
our
kit
system?
D
One
other
thing,
I'd
say
too,
is
that
you
also
have
to
remember
that
people
can
locally
install
like
a
git
lab
or
github
enterprise,
so
you'll
have
arbitrary
urls
as
well,
so
those
plugins
may
need
to
provide
what
are
registered
urls,
potentially
or
somehow.
You
need
to
understand
like
for
this
repo
which
plug-in
is
configured
to
to
handle
this,
which
I'm
not
sure,
if
that
second
thing
is
possible,
but
perhaps
the
other
plug-in
is
going
to
need
to
tell
you
what
urls
are
configured
for
that
plugin.
B
Would
could
we
delegate
the
responsibility
to
decide
if
a
particular
url
can
be
handled
or
not
to
the
extension
implementer
and
make
part
of
the
contract
be
that
if
they
can't
implement
it,
they
return
a
negative
one
or
they
return
a
nonsense
value
like
zero
right?
Then
then,
you
don't
have
the
responsibility
to
decide
show
like.
Shall
I
call
you
you
rather
tell
them.
I
promise
I'm
going
to
call
you
a
lot.
You
need
to
exit
quickly
if
you
can't
handle
this
thing
and
you
need
to
accept
that
you
may
get.
B
You
will
receive
things
that
you
cannot
handle.
So
I
solemnly
promise
to
send
the
github
url
to
the
bitbucken
bitbucket
endpoint,
to
the
bitbucket
extension
and
to
the
giddy
extension
and
to
the
gitlab
extension
they're
all
going
to
get
it
and
they
must
all
return
a
negative
one.
If
they
don't
intend
to
process
it
could
would
that
work
so
that
you
don't
have
to
put
any
logic
at
this
layer
to
to
decide,
should
should
the
callers
handle
this
should
I
call
them.
B
A
So
if
we
implement
so
if
we
add
that
method
in
our
contract,
that
means
that
I
would
only
get
from
the
list,
I
would
only
get
the
valid
implementation
and
nothing
else,
so
I
would
normally
have
english
so
would
still
would
I
have
to
keep
a
check
to
to
see
if
any
other
implementation
has
not?
No,
so
that
wouldn't
happen
right.
So,
if
so,
my
so
that,
even
if
we
have
that
contract
and
they
return
a
minus
one,
let's
say
what
issue
we
might
have.
A
A
If
I
call
the,
if
I
could
call
the
get
extension
list
function
api,
it
would
give
me
the
list
okay,
but
I
would
have
since
I
have
a
method
which,
which
might
be
a
boolean
or
might
be.
Let's
say
it
returns
a
boolean
false
if
the
url
is
not
if
the
url
is
github,
but
it's
it's
been
implemented
by
buildbucket,
which
it
says
I
cannot
implement
this.
So,
let's
just
return
false
or
minus
one:
zero,
whatever
we're
returning
for
the
size,
so
I
would
just
keep
it.
A
I
would
just
before
calling
for
the
size
for
the
method
which
is
trying
to
find
out
the
size.
I
can
just
keep
a
check.
Okay,
if
it's,
if
this,
if,
if
the
let's
say
whatever
the
contract,
the
method
is,
if
it's
false
or
if
it's
minus
one,
I
would
not
call
for
the
size
for
that
particular
instance.
B
That
that
feels
more
complicated
than
what
all
I
was
envisioning
was
you
call
every
implementation,
ask
their
get
size
of
repository
with
the
repo
url.
If
they
return
you
a
minus
one,
you
know
to
ignore
them
and
and
they're
responsible
to
decide
in
their
get
size
of
repository,
url
or
git
size
of
repository
method.
B
B
A
Yeah,
that's
that's.
I
think
that
that
can
that's
easier
for
employee
to
implement
for
us.
B
A
Yes,
okay,
okay,
so
I'll
highlight
that
to
our
contract
and
I'll
update
that
okay,
okay,
so
that's
how
we're
going
to
do
it!
The
last
thing
I
think
for
this
class
is
once
so:
how
do
we
decide
what
implementation
we
have
to
use?
I
just
have
a
simple
constant
which
right
now
I
have
so.
I
assume
that
every
size
I'm
going
to
get
is
in
kbs.
A
B
A
A
Yeah
and
the
second
is
the
the
apis,
github
or
git
lab,
so
I've
tested
it
with
github.
They
also
provided
in
kb.
A
That
is,
I
yeah,
so
it's
5
mb
right
now
the
switch
is
5
mb
right
now
to
be
more
precise
on
what
the
switch
might
be.
I
might,
I
might
run
a
lot
of
tests
for
this
particular
reason
to
to
get
closer
to
the
point
where
the
nature
of
j
gates
performance
changes.
That
point
which
we
found
out
in
phase
one
through
the
results.
So
right
now
I've
taken
it
as
5
mb.
So
what
happens
is
if
it's
greater
than
5mb,
we
recommend
git
and
if
it's
not,
we
recommend
jiggit.
A
Another
thing
which
was
which
I
considered
was
that
even
if
I
recommend
gate,
I
don't
know
if
get
is
installed
in
the
system
or
not
in
the
particular
node
I'm
running
to
so
I
used,
I
borrowed
the
resolve.
Git
tool
implement
the
logic
which
is
in
get
util.
So
what
I
do
is
once
I
decide
from
my
side
what
implementation
I
should
use.
A
I
run
it
through
the
get
util
dot
resolve
and
I've
done
it
here
determine
get
to
so
so
it
basically
uses
that
resolve
git
tool
method
and
if
it
has
gate,
it'll
recommend
gate.
If
it
doesn't
it
would
so
if
it
doesn't,
it
would
go
for
the
default
installation.
A
So
one
question
I
had
here
was
while
I
wrote
a
unit
test
for
this
particular
for
for
just
the
cash.
So
if
I
have
a
cash,
would
I
get
the
right
tool
or
not?
So
while
I
was
doing
that
the
so
the
the
recommendation
from
my
class
should
have
been
j
gate
and
my
the
before
resolving
the
git
tool
before
checking.
If
the
system
has
it
or
not,
it
was
jet,
but
once
I
I
I
passed
it
through
this
method.
A
It
returned
git
tool
to
me,
so
I
I
actually
was
not
get
get
to
me.
Sorry,
and
I
was
not
sure
why
is
it
doing
that
so
as
I
I
was
trying
to
debug
it
it,
it
looks
for
the
descriptor
implementation
for
the
particular
tool
which
which
we
are
trying
to
as
the
parameter
we
have
passed
here.
So
it
could
not
find
jget
and
hence
it
went
for
the
default
installation
is.
Why
would
that
happen?
A
I'm
not
sure,
because
jk
is
something
which
springs
is
always
installed
in
our
would
be
installed
because
it
comes
within
the
plugin.
So
that's
something,
maybe
once
you
look
at
the
pr,
and
so
I
was
running
the
test
and
I
was
getting
that
so
I
was
not
sure
why
that
was
happening.
So
I
thought
I
should
tell
you.
D
A
Justin,
I
am
actually
not
sure
about
it.
I,
as
far
as
I
know,
it
checks
the
the
agent
the
node
wherever
it
is,
it
checks
if
the
gate
installation
is
present
or
not.
D
D
A
Okay,
I
will
look
into
that.
The
reason
why
I
did
not
was
that
I
assumed
that,
since
this
is
being
already
used
with
the
existing
functionality,
it
is
used
to
resolve
ticket
implementation.
I
assume
that
this
would
look
out
for
every
case,
so
I
did
not
bend
deep
into
how
this
is
resolving
or
how
it's
actually
finding
the
executable
I'll
look
into
it.
B
Yeah,
I'm
not
sure,
maybe
these
guys,
don't
I'm
sorry,
I
I
think
rishabh,
your
your
assumption
is
a
good
assumption
and
if,
if
this
method
is
flawed,
I
think
we
handle
that
separately
you're
you.
I
think
you
made
a
very
good
assumption
to
think
that
if
this
method
is
not
doing
the
right
thing,
we
should
solve
that
as
a
separate,
separate
solution.
B
That's
fair
yeah,
because
because
this
thing
has
the
node,
it
has
a
string
name
for
the
proposed
get
tool.
It
has
the
environment
variables.
So
it's
got
all
the
things
it
could.
It
could
potentially
use
to
answer
the
questions.
Justin
justin
noted,
if
it
fails
to
do
that,
that
seems
like
a
bug
that
we
need
to
solve
separately.
D
A
Yeah,
so
so
I
think
this
is
what
is
happening
with
the
class
and
the
biggest
problem
right
now.
We,
what
we
discuss
is
the
biggest
problem,
and
that
is
something
I'm
going
to
handle
right
now,
apart
from
this,
so
my
next
concern
with
the
class
was
that
how
do
I
actually
so
I
wanted
to
test
it
in
a
real
case.
A
I
wanted
to
build
a
real
case
scenario
with
this
class
and
to
do
that,
so
I
know
that
I
can
rely
on
the
cash,
not
100
delay
on
it,
but
I
know
that
the
cash
so
I've
written
unit
tests
for
for
cases
where,
if
I,
if
I
don't
have
a
cache
repository
or
if
I
have
a
cache
repository
how
the
class
would
work,
I
don't
have
cases
that
I've
actually
never
tested
the
class
with
the
extension,
so
so
with
respect
to
testing
the
extension
function
and
the
second
heuristic
before
so
I
I've
seen
that
we
have
an
annotation
called
test
execution
test
extension,
which
actually
allows
us
to
implement
an
extension
just
for
the
test.
A
So
the
concern
the
concern
with
that
approach
is,
I
have
is
that
I
would
have
to
so.
If
I'm
working
the
way
get
brand
source
plugin
would
want
to
work,
they
would
so
they
create
a
github
client.
So
I
would
have
to
add
a
lot
of
depend.
The
dependencies
they
are
using
the
library
is
there.
I
would
have
to
shift
all
of
that
for
the
test
only
or
I
could
just
use
a
an
http
client
which
would
just
perform
a
get
request
with
credentials
or
without
credentials.
That
would
not
have
a
github
client.
A
It
would
just
be
an
http
client
performing
a
get
request
on
the
particular
repository
url.
That
is
how
I
could
test
it
within
git
plugin.
A
I
was
actually
thinking
to
try
to
go
to
get
brand
source
plugin
and
implement
it
just
for
my
local
system
and
then
try
to
work
that
out,
install
the
plugin,
create
a
project
and
then
see
if
my
my
system
is
able
to
my
implementation
is
able
to
use
the
extension,
the
implementation
provided
by
the
extension
and
get
the
size
so
which
so
for
so
my
the
purpose
of
the
whole
thing
is
that
for
the
demo
I
I
was
thinking
that
I,
if
I
could
do
this,
I
could
show
the
this
class
working
for
a
cat
for
a
cash
repository,
how
we
are
going
to
estimate
the
size
and
maybe
when
we
go
to
get
scm
for
a
single
pipeline
when
we're
just
checking
out
the
project
there.
A
A
So
so,
to
do
that,
I
need
to
either
I
need
to
go
to
get
trans
source
plugin
and
create
an
implementation.
So
should
I
work
on
that
and
actually
see
if
this
implementation
would
work
or
not
extension,
points?
Sorry.
B
So
I
I
I
like
very
much
the
idea
of
of
doing
a
concrete
implementation
in
another
plug-in.
I
think
that's
a
that's
a
very
healthy
thing
to
do.
However,
you
did
describe
that
the
extension
point
test
inside
may
help
you
diagnose
more
quickly
than
using
a
second
plug-in
back
to
your.
So
so,
yes,
I
think
it's
great
to
use
the
separate
plug-in
as
a
as
a
that's
that's
where
the
real
implementation
has
to
be
anyway.
B
So
that
makes
makes
a
lot
of
sense,
but
in
your
suggestion
on
how
to
test
inside
this
plug-in,
the
test
doesn't
have
to
actually
make
a
call
to
anything
right.
The
extension
point
you
implement
in
the
test
could
just
do
something
like
given
a
particular
url,
always
return
this
size
or
given
this
other
url,
because
it's
inside
your
test,
you
can,
you
can
do
all
sorts
of
things
that
avoid
any
calls
to
the
outside.
B
A
I
was
just
saying
that
fran
suggested
that
I
I
can
mock
the
http
response.
Whatever
response,
I
need
from
the
api-
and
I
can
test
it
like
that,
so
I
so
yeah
that
will
be
the
quickest
way
I'm
going
to
do
that.
First
to
after
I
improve
update
the
contract,
the
implementation
and
the
extension
pointer
and
for
the
demo,
I'm
I'm
thinking
that
I
can.
I
can
make
a
quick
implementation
there.
I
I
actually.
A
I
started
a
discussion
thread
on
the
jenkins
dev
group
to
to
just
know
from
where
I
can
start
where
what
would
the
best
place
to
implement
the
extension
point
I'm
providing,
because
that
would
be
a
that'll
be
easier
for
me
to
figure
out
where
I
could
do
that.
So,
if
I,
if
I
get
the
response
there,
then
it's
good.
If
I
don't
then
should
I
is
this:
is
it
okay?
If
I
contact
the
the
repository
maintainers,
I
I
saw
that
I'm
actually
not
sure
of
the
name,
I've.
B
Yes,
liam
liam
newman,
you
can
certainly
you
can
certainly
ask
liam
questions.
He's
very,
very
willing.
He'll
he'll
respond
as
time
allows.
A
Yes,
so
so
I
think
this
is
it
for
the
class.
I
actually
have
a
lot
more
things
to
share,
but
I
think
the
time
has
ended
either
we
could
do
it
on
friday
on
friday
I
would
have
so.
I
have
the
some
new
benchmark
results.
Omkar
was
very
helpful
with
creating
different
repositories
with
different
kind
of
parameters
we
needed
and
we
have
some
results
from
those
analysis.
A
I
also
wanted
a
result
from
different
platforms.
I
was
looking
at
your
instance
and
I
was
thinking
to
run
that,
but
I
could
not.
I
could
not
do
it,
so
I
I
don't
have
that
right
now.
So,
if
you
guys
are
comfortable,
we
could
share.
There
is
a.
I
could
share
the
results
right
now.
Whatever
I
have.
E
Of
one
thing
like
did
you
check,
but
it
was
failing
on
windows,
european.
A
If
you
could
see
when
you
raised
the
concern
the
next
commit,
I
I
committed
so
it
was
failing,
because
I
was
I
was
expecting
something
wrong
from
the
assertion.
Okay,
I
was
not.
The
windows
returns,
get
dot,
exe
exe
and
I
was
expecting
git,
so
I
changed
that.
That
is
why
it
was
happening.
I'm
sorry,
I
did
not
directly
answer
your
question
there.
I'm
sorry.
A
B
Let
me
double
check
my
calendar
good
question.
I
think
I
think
I
may
actually
have
other
things
that
are
colliding
on
my
calendar.
A
It
is
okay
with
me.
I
I
actually
think
the
results
we
I
have.
They
don't
not
sure
if
we
could
use
them
right
now
to
get
something
actionable,
but
nevertheless
we
need
to
discuss
them.
So
we
can
discuss
them
on
friday.
B
A
Okay
and
the
last
thing
with
fran
and
travis,
so
we
were
discussing
that
we
we
could
so
we
could
whatever
the
implementation.
We
have
discussed
the
update
on
the
extension.
So
fran,
would
you
like
me
to
do
it
first
and
then
you
would
review
it.
Would
you
so
I
I
inferred,
I'm
not
sure.
If
I
inferred
correctly,
what
you
were
saying
in
the
get
getter
channel
was
that
we
could
do
it
together.
C
But
I
mean
what
I
mean
is
that,
for
example,
tomorrow
morning,
because
I'm
in
central
european
times
we
can
overlap
several
hours,
so
anything
that
you
can
try.
We
can
be
re,
reviewing
almost
live,
because
I
can
jump
into
the
into
github
and
see
okay.
This
is
what
I
mean.
I
was
thinking
more
about
this
other
thing.
C
E
C
Look
at
that
and
if
you
have
any
question
regarding
the
that
approach,
let
us
know
in
guitar
and,
as
I
say
tomorrow
morning
is
we
can
overlap
more
time,
so
we
can
just
doing
almost
life.
A
Sure
sure
fran
that'll
be
great
I'll
be
available
throughout
the
morning,
and
so
we
could
do
that.
Yeah
and
I'll
try
to
do
whatever
we've
discussed
today
through
the
night
and
you
find
so
that
would
be
better
for
us.