►
From YouTube: Web IDE Maintainer Onboarding - Aug 2023 2/4
Description
In this session we start pairing on a Web IDE issue:
- https://gitlab.com/gitlab-org/gitlab-web-ide/-/issues/82
- https://gitlab.com/gitlab-org/gitlab-web-ide/-/merge_requests/228
A
B
A
For
hopping
on
the
maintainer
onboarding
for
the
web
ID
project
last
time,
we
talked
about
crash
course
to
all
the
different
moving
parts
of
the
project,
but
now
we're
going
to
actually
pair
up
on
issues
which
is
probably
the
best
way
to
become
more
familiar
with
what
reviewing
Mrs
and
the
different
components
inside
the
project
itself.
A
So
I
have
an
issue
for
us
to
pick
up
before
I.
Do
that?
Are
there
any
questions
or
something
before
we
just
start
pairing
on
a
specific
problem?.
C
Just
one
question
you
mentioned
there:
there
was
like
this
component
I
I
can't
remember
the
name
now,
but
it's
like
one
of
the
components
you
wanted
to.
You
know
like
very
quickly
go
over,
so
will
we
have
the
chance
to
do
this
thing.
A
I
think
we're
gonna
actually
run
into
it,
so
nice,
but
let's
just
let
it
naturally
come
out.
As
we
pair
and
stuff
hey,
shakar
I
knew
you
were
coming.
I
was
like
hey.
D
A
D
I
had
to
go
yeah
fedstone
from
downstairs,
so.
A
Oh,
it
is
no
problem
at
all
all
right.
Okay,
let
me
share
my
screen
and
I'll
introduce
the
issue
that
will
pair
on
and
then
I'll
also
Drive,
and
we
can.
We
can
go
from
there.
A
A
The
situation
is
if
I
am
viewing
the
project
here
and
I'm,
not
on
a
branch
but
I'm
actually
on
a
commit,
let's
say
I'm
like
here
yeah
so
and
then
maybe
if
I
view
the
file
at
a
specific,
commit
and
then
I
go
to
open
a
web
ID.
This
will
blow
up.
A
Oh,
why
are
you
complaining
I
can't
open
projects?
Oh
it's
already
freaking
out
come
on.
What
do
you
do?
A
Wow,
that's
weird,
but
either
way
I'll
say
if
maybe,
if,
instead
of
being
in
the
blob
I'm
here
in
just
the
tree
at
the
top
here
and
I,
go
to
edit
the
in
the
web,
ID
all
right
boom
yeah,
it
blows
up
because
we're
looking
for
a
branch,
because
we
have
a
branch
picker
and
we
expect
to
commit
to
a
branch,
all
sorts
of
things
like
that.
So
we
kind
of
blow
up
if
the
user
manages
to
find
themselves
opening
the
web
ID
with
a
ref.
That
is
not
a
branch.
A
So,
what's
the
desired
Behavior
would
be
I
think
the
first
the
would
either
we
can
improve
the
error
message,
but
I
think
we
can
do
more
than
that.
I
think
there's
nothing
preventing
us
from
bloating
everything
up
other
than
right.
Now
we
are
just
looking
for
branch
names,
but
maybe
if
something
isn't
a
branch
and
is
still
like
a
ref,
we
can
somehow
flag
it
that
we
are
in
a
in
a
ref.
That's
not
a
branch
yet.
A
Does
that
kind
of
make
sense
kind
of
what
we're
hoping
to
achieve
accomplish
make
it
make?
This
seem
seamless
how.
D
A
Is
yep
yep?
That's
a
really
great
question,
so
let
me
open
up.
Let
me
open
up
the
web
ID
project
so
talking
about
so
clearly.
The
ref
is
a
URL
parameter
here
that
gets
consumed
by
the
IDE
controller
in
the
rails
project,
but
the
way
it
gets
passed
into
the
web
ID
project,
all
of
that
communication
of
from
rails
into
this
project.
A
A
C
A
Yeah
yep
yeah,
so
we
get
this
in
this
config
and
this
gets
initially
handed
off
into
our
entry
point.
And
then
the
config
gets
serialized
into
the
iframe
that
we
make
and
then
that
thing
that
bootstraps
vs
code
can
take
the
config
and
do
certain
things
with
it.
D
And
then
how
does
that?
Finally,
the
so
so
this
then
passes
it
onto
the
iframe
URL
or
or
does
it
do
like
a
post
message
to
pass
it?
How
does
it
like
it's.
A
A
good
question
so
I
think
right
now
we
are
yeah,
we're
just
we're
just
hard
coding
into
the
iframe
itself
and
then
we
parse
it
out.
A
D
So
it
just
goes
into
the
iframe,
so
the
iframe
on
load
has
access
to
that
config,
okay
and
then
in
within
the
web,
IDE
loads
up
in
the
iframe,
and
then
it
reads
that
config
presumably
and
then
it
needs
to
pass
like
the
ref
or
whatever
to
the
git
provider
right.
So
it
needs
to
go.
Tell
the
git
provider
hey
here's,
the
ref,
that
you
need
to
like
check
out
yeah
and
yeah.
A
Yep,
so
let's
look
at:
let's
look
at
the
so
the
package
that
bootstrap
is
such
a
bad
verb
for
this,
but
it's
the
one
that's
committed
into
the
project,
the
one
that
bootstraps
vs
code
and
everything
that
picks
up
the
config
and
kicks
things
off.
Let's
see
how
it
uses
utils.
A
I
know
I
know
just
as
long
I'm
just
glad
it's
not
called
the
vs
code,
bootstrap
manager,
manager.
A
So
the
the
entry
points
to
the
iframe,
which
is
this-
we
probably
should
call
this
Frame
or
something
like
this-
is
this-
is
the
entry
point
of
that
whole
iframe,
that
that
gets
the
config
from
the
Dom
and
then
it
starts
up.
We
have
two
flavors
of
the
web
ID
that
will
start
up.
One
flavor
is
the
full
web
ID,
the
other
is
remote
development
thing
and
Chicago.
You
might
be
able
to
provide
insight
into
this,
but
something
tells
me
we
can
actually
get
rid
of
the
remote
development
stuff.
A
Talk
we
gotta
talk
to
Eric
about
it,
but
like
so
history
is
that
there
were
two
ways
the
web
ID
could
start
up.
One
was
a
fully
connected.
Vs
code
was
connected
to
some
sort
of
vs
code
server
that
the
user
entered
some
parameters
to
and
that's
any
time
you
see
remote
versus
client.
Only
that
split
that
differentiating
thing
is,
but
now
that
we
actually
have
a
more
robust
remote
development
offering
I,
don't
think
we
actually
need
this,
but
anyways.
A
That's
why
we
have
names
like
remote
and
client
only
existing
in
the
code
base,
but
for
all
intents
and
purposes
we're
really
only
interested
in
client
only
and
that
takes
the
Glorious
config
and
the
way
it
uses.
This
is
when
we
set
up
some
of
the
vs
code,
workbench
options,
but
then
it
also
uses
it
for.
A
What
does
it
also
use
it
for?
Yes?
Yes,
yes,
yes
uses
it
for
this
thing
where
we
create
commands.
So
this
is
that
really
this
is
that
weird
package
I
was
wanting
to
dive
into
create
commands
comes
from
these
vs
code,
mediator
commands
so
right
now
we
are
inside
of
iframe
context
and
for
all
of
this
to
work
seamlessly,
we
needed
a
way
for
when
I'm
inside
an
extension.
I
want
to
seamlessly
be
able
to
assume
authentication
from
the
session
context,
even
though
extensions
run
in
this
sandbox
environment.
A
So
the
way
I
stumbled
upon
an
edge
to
solving
this
problem
was
vs
code
allows
me
to
create
a
set
of
commands
when
I
start
out
vs
code
that
can
be
hit
from
any
sandboxed
extension.
A
Since
we're
not
connected
to
the
extension
Marketplace
and
our
main
priority
was
we
want
a
seamless
authentication
experience
using
commands
that
run
in
this
iframe
context.
Naturally,
inheriting
the
cookie
session
and
stuff
like
that,
seemed
like
a
good
first
iteration
to
creating
a
seamless
environment,
so
these
mediator
commands
are
different
than
normal
commands
that
an
extension
would
declare
these
mediator.
A
So
some
more
history
around
all
this
is
it's
a
kind
of
viewed
mediator,
commands
as
a
necessary
evil
and
hadn't
thought
a
whole
lot
about
it.
I
had
try
to
create
only
when
we
needed
a
very
specific
command,
that's
when
we
would
have
it,
and
so
we
have.
You
know
things
like
start
and
that
is
kind
of
the
entry
point
for
starting
up
pulling
the
context
that
we
need
and
all
sorts
of
stuff,
and
we
can
see
where
this
thing
gets
called.
A
But
since
then
now
especially
now
that
we're
integrating
the
workflow
gitlab
workflow
extension,
the
our
main
desktop
vs
code
extension
to
being
web
ID
aware,
we
don't
want
to
have
mediator,
commands
that
do
a
lot,
and
so,
instead,
we've
introduced
this.
This
batch
from
API
that
takes
in
a
request,
object
and
knows
how
to
execute
and
return
it,
and
this
is
kind
of
in
retrospect
what
I
wish
the
mediator
commands
only
did,
but
for
some
security
reasons
we
were
thinking
of
not
doing
it
this
way,
but
yeah.
A
That's
all
I'm
going
to
say
about
from
that.
Does
anyone
have
any
questions
about
mediator
commands
as
we're
talking
about
this.
B
A
Ever
used
for
the
web
ID,
this
is
a
good
question
yeah.
This
is
only
ever
used
internally,
so
let
me
see
if
I
can
find
yeah
so
here
inside
this,
the
vs
code
extension
web
ID
package
inside
of
here.
This
is
where
we're
actually
calling
the
start
mediator
command
so
start
is
coming
from
I
wrapped.
All
these
mediator
command
calls
into
nice
little
piped
versions
of
that
executed,
the
generic
execute
command
function.
A
So
it's
only
this
package
that
really
consumes
it,
with
the
exception
of
the
mediator,
commands
that
the
workflow
extension
needs,
and
so
that's
where
the
interop
package
comes
in
of
that's
our
file
of
a
shared
interface
that
we've
agreed
upon
for
this
web
ID
project
and
the
vs
code
extension
project,
but
for
just
the
web
ID.
This
is
the
internal
web
ID.
That
extension,
that's
the
engine
of
everything
that
creates
the
file
system
and
the
source
control
and
kicks
everything
off,
so
it
references.
A
This
start
mediator,
command,
passing
into
start
a
possible
ref
that
we're
starting
with,
and
so
that's
kind
of
where
we
need
to
start
is
in
this
start
mediator
command
and
we
can
jump
into
there
and
see
all
the
things
that
it's
doing
we
can
see
from
here.
We
get
this
thing,
which
is
a
start
response
that
includes
a
whole
bunch
of
goodies
like
the
large
list
of
files.
What
branch
we're
on,
if
we're
on
a
merge
requests?
A
D
So
the
start
command
so
that
that's
the
media
recommend
that
actually,
what
bootstraps,
the
or
figures
out,
what
the
user's
token
is
and
stuff
like
that
to
actually
make
calls
or
what
is
it?
That's.
A
A
great
question
so
start
is
a
bad
name
for
it.
This
is
not
a
like
in
retrospect.
All
of
this,
probably
we
would
have
done
it
differently
and
we
are
going
to
refactor
and
do
it
differently,
but
start
is-
and
maybe
this
is
also
just
inherited
from
the
old
web
ID.
But
it's
like.
A
All
of
those
initial
API
calls,
so
it's
like
when
all
when
the
only
information
I
have
is
this
all
of
the
initial
API
calls
to
get
the
files
to
get
the
user
contacts
to
get
the
merge
request
contacts.
All
of
that
that's
what
starts
is
all
of
the
like
initial
API
calls
yeah.
So
let's,
let's
jump
into
that,
but
before
I
do
that,
let
me
go
ahead
and
start
I'm.
A
Sometimes
that's
very
observant,
so
yeah
so
I
think
one
of
the
things
that
has
changed.
You
know
that
has
evolved
while
we're
doing
this
is
it
is
a
it
is
getting
awaited,
but
I
guess
for
some
reason.
A
D
A
C
A
I
think
I'm,
like
this
whole
project
too,
the
like
ex
there's
a
lot
to
be
improved
with
this
extensions
web
ID
project
one
is
like
so
you
can
see.
We
have
clear
domains
that
we're
interested
in
like
our
source,
Control
Management.
So
these
are
all
the
modules
related
to
that.
Then,
like
hooking
things
specifically
into
vs
code
like
we
have
some
vs
code
specific
stuff,
but
one
of
the
things
that's
not
great
with
this
project
is
initializing
stuff.
A
So
whenever
a
thing
changes
like
we've
just
made
a
new
commit
and
we're
gonna
refetch
stuff,
we
just
destroy
everything
and
then
rebuild
it
with
this
initialize
function
and
so
like
we
kind
of
need
a
better
concept
of
like
and
systems
that
we
just
initialize
and
they
can
manage
themselves
here
and
so
I
have
some
maintainability
issues
to
refactor
this
whole
package,
so
that
this
this
is
the
the
smelliest
part
of
it
of
like
how
we
just
initialize
everything
and
we're
not
able
to
so
there's
clearly
going
to
be
a
little
a
little
complicated
to
follow,
but
the
main
intent
is
we
get
the
stuff
we
need.
A
We
create
all
the
stuff.
We
need
and
register
it
with
vs
code
and
then
we're
ready.
So
that's
kind
of
the
whole
intent
here,
but
as
you'd
expect,
it
gets
a
little
can
become
a
lot,
thankfully
we're
in
typescript
land,
and
so
that
prevents
us
from
shooting
ourselves
in
the
flood
too
much
yeah
cool.
Well,
let's
hop
into
the
start
command,
so
I'm
going
to
go
to
where
we
create
the
commands.
So
this
is
where
we're
registering
the
the
Handler
with
the
start
command
ID.
A
A
We're
also
reject
injecting
into
it
our
gitlab
client,
which
I
think
we
talked
a
little
bit
about
last
time
since
this
is
crossed
out.
This
is
probably
our
deprecated
client.
That's
using
this.
We
won't
worry
about
that
at
the
moment,
but
you
see
this
is
the
main
intent
is.
We
are
fetching
all
the
stuff
we
need.
This
is
all
about
fetching
and
then
return.
One
glorious
non-cohesive
object
to
the
extension
context
to
then
register
everything.
A
A
A
Okay,
let's
see
what
resolve
Branch
name
is
doing
if
we
have
a
ref
at
all,
that's
it.
Otherwise,
if
we're
in
merge
requests
we're
going
to
just
pull
it
from
the
merge
request.
D
A
Yeah
so
I
guess
somehow
we
need
to
be
able
to
tell
what
it
is.
D
D
A
I
think
that's
a
good
idea.
We
have.
A
Yeah
I
think
that's
a
good
idea,
but
I'm
not
entirely
sure.
Where
is
the
best
place
to
do
our
logic
like.
A
Like
I
feel
like
this
is
need
to
return
more
than
a
string
because
oh
yeah
yeah,
you
know
what
I'm
saying
like
any
like
there's
times
when
we
know
no,
you
need
to
assume
this
is
a
branch
and
then
there's
times
where
okay
now
I
need
to
actually
check.
Is
this
a
branch
or
not?
A
Maybe
so
there's?
Actually
the
branch
that
we
return
from
here
is
a
lot.
A
Has
a
lot
more
of
a
I
was
the
word
I'm
thinking.
The
branch
that
we
actually
returned
from
here
has
a
lot
more
properties
to
it
so
like
when
I
create
an
empty
Branch.
I
have
all
this
information
along
with
it
and
that's
kind
of
what
I'm
almost
thinking
is
with
this
type.
I
almost
need
to
create
a
type.
That's
like
we're,
not
actually
a
branch
yet
or
something
like
we're.
A
pseudo
branch.
D
Yeah,
it's
not
a
blunt!
It's
just
yeah
at
this
point,
Giant.
C
A
D
But
that
won't
work
like
you,
you
actually
like
if
it's
an
empty
repo
and
that's
a
ref,
you
don't
want
to
create
another
branch
of
that
right.
That's
what
you're
doing
right
now
and
you're
like
create
brunch
and
then
you're,
giving
the
rough
name
or
something
well.
A
So
this
is
this:
I
am
if
it's
an
empty
repo.
A
This
is
a
good
question.
If
it's
an
empty
repo,
we
I'm
returning
the
name
of
the
default
branch,
but
I
think
there's
probably
a
place
where
I
check
for
the
like
commit
ID.
D
Well,
actually,
if,
if
it's
an
empty
repo,
you
won't
have
a
commit
draft
like
it's,
not
a
problem
that
you
have
to
solve
anyway,
like
you
won't
even
have
a
ref
right.
So
it's
not
even
like
you,
don't
even
go
into
that
that,
if
condition
afterwards
yeah
I
won't
even
come
here,
because,
yes,.
A
Yeah
yeah
yeah
yeah.
Yes,
if
we're
an
empty
repo,
yeah
we're
super
empty
and
we
handle
we
handle
like.
Oh,
the
branch
is
empty.
You
need
to
do
a
thing,
and
so
that's
like
comes
up
when
we
commit
the
thing.
Let's
look
at
that
Behavior
real
fast
when
I'm
here
and
I
go
to
commit
and
the
command
is
doing
the
commit.
So
here
is
where
the
user
will
get
prompted
of
like
oh,
do
they
need
to
do
a
branch
selection.
A
That
has
a
different
that
has
a
different
Edge
to
how
the
problem
gets
solved.
Let's
hop
in,
let's
maybe
go
first
to
what
we
actually
returned
for
the
start
command
response,
so
this
start
command
response.
Thinking
of
the
intent
here
is
get
all
the
things
we
initially
need.
A
And
return
it
to
the
extension,
and
so
we
get
things
like
a
list
of
files.
Information
on
the
project
user
permissions
merge,
request,
contacts
Fork
info,
then
gitlab
branch
is
kind
of
okay,
let's
figure
out.
What's
actually
do
we
want
to
return
here,
because
sometimes
this
isn't
actually
a
branch,
so
gitlab
branch
is
actually
coming
from
this
API
client
and
right
now
this
type
is
just.
This
is
the
API
response
type
of
we
get
a
branch,
you
know
what
I
mean
so,
what's
kind
of
like
the
desired
return
here.
A
C
A
That's
I
think
that's
brilliant
Let's,
Do,
It,
okay,
before
I
just
start
plowing
ahead,
I,
wanna,
I
wanna
get
this
thing
running
locally.
Okay,
great,
oh,
wait!
One
of
the
lessons
I
learned
last
time
and
I
continue
to
learn
is
for
the
moment
there's
an
issue
with
Firefox
when
working
on
this
locally,
because
it
doesn't
break
cash
for
some
of
the
service
worker
stuff.
That
happens.
So
it's
easier
to
develop
locally
on
Chrome,
so
I'm
just
going
to
set
that
up
and
I'm
gonna
make
sure
that
I
have
disabled
cash.
A
Okay,
yeah
we
gotta,
we
gotta,
implement
the
cash
break
and
stuff
at
some
point.
Okay,
we're
just
gonna,
hit
getlab.com
sweet
all
right,
so
yeah
I
think
I.
Think
a
good
place
to
start
is:
let's
change.
This
type,
we're
going
to
return
ref-
and
here
these
are
API
types
that
we're
passing
through
to
the
extension.
But
it
looks
like
our
ref
is
actually
going
to
be
different
types.
So
you
don't
know
yeah
I,
think
we'll
have
something
like.
A
A
B
A
D
A
I
didn't
say,
project
that
doesn't
make
any
sense,
good
suggestions,
I
guess
so
so,
instead
of
git
live
Branch,
we'll
call
it
gitlab
ref.
Now,
okay,
the
ref
for
the
current
web
ID
contest,
sweet,
okay.
So
now
changing
this
type.
What
I
love
is
it's
going
to
give
me
all
sorts
of
things
I
gotta
fix,
so
we
can
start
fixing
the
command
that
now
needs
to
actually
return
the
correct
stuff
or
we
can
fix
how
we
consume
these.
A
This
response,
what
do
you
think
should
we
fix
this
command
first,
or
should
we
go
to
fix,
fix
the
types
of
the.
D
A
I,
like
it
so
to
get
to
get
those
failures,
I
can
run
yarn,
build
typescript
I
can
get
a
list
of
the
typescript
failures
here.
So
here
in
the
start,
command
we're
failing.
A
Did
you
just
all
of
a
sudden,
just
completely
die
on
me,
or
are
you
not?
Actually?
Why
am
I
I
would
expect
you
to
fail
a
little
bit
more
than
that.
Let's
see
why
we're
not
failing
even
more
so
here
I'm
in
the
web,
ID
vs
code
extension.
Let
me
go
to
the
entry
point
where
I
know
that
we
call
the
start
command.
Okay,
yeah
I'd
expect
I'd,
expect
typescript
to
start
dying
on
me
here,
but
I
guess
it
kind
of
just
maybe
I
need
to
run
clean
first
or
something
like
that.
A
A
A
D
A
Yep
yep,
so
that
sounds
like.
A
Sounds
like
maybe
something
we
can
do
in
line
here
of
like
let's
see
yeah
see
here,
we
also
reference
commit
ID
and
stuff
too.
A
A
Ref.Ref
that
doesn't
look
good,
maybe
I
should
rename
it
to
something.
Maybe
I
should
rename
it
to
name.
What
do
you
think.
B
E
B
C
E
A
A
And
that's
what
I
was
trying
to
do
here
and
one
of
the
things
typescript
is
so
good
at
is
like
if
I
do
these
Union
types
and
I
and
I
give
static
values
to
the
type
it
it
can
at
compile
time
know
under
what
context
is
the
type
supposed
to
be
which
is
great
used
as
a
value
here?
Oh
because
I'm
doing
equals?
That's
why
it's
not
enjoying
anything
that
I'm
doing
here?
A
Okay,
so
I
have
Branch,
ref,
isn't
a
great
thing,
but
if
I
didn't
do
gitlab
are
we
thinking
like
commit,
ref
and
I
can
say,
type
commit
and
I
can
have
Shaw,
and
this
one
could
also
have
Chomp,
which
is.
Maybe
all
of
these
refs
have
just
a
shop
that
we're
trying
to
attach
to
it.
D
A
B
Yeah
I
think
so
I
think
it
lines
up
with
like
it
like
the
get
sem
book
as
well
so
get
reference
in
the
book
as
blobs
trees
commits
tags,
essentially.
A
Okay,
let's
keep,
let's
keep
it
like
this
and
I
like
how
we
can
then,
when
we
initialize
all
these
things,
I
don't
have
to
dive
into
knowing
I,
don't
have
to
I,
don't
have
to
break
encapsulation
and
know
like
how
do
I
get
the
shot.
Well,
if
it's
a
branch,
it's
this
thing.
If
it's
tag
it's
this
thing,
it
just
commits
this
thing:
let's
just
have
that
be
part
of
the
prop
the
read
property
here:
cool.
A
D
A
Like
typescript
is
pretty
good
at
just
being
able
to
figure
itself
out,
okay,
so
that's
great,
because
then
I
don't
have
to
do
all
of
this,
and
I
can
just
do
branch.
A
A
We'll
have
to
we'll
have
to
maybe
first
jump
into
this
thing,
so
it
looks
like
these
are
the
source,
control,
setup
options
taken
a
branch,
but
let's
make
it
a
ref
and
we'll
call
it
itlab,
ref,
okay
am
I
exporting,
oh
good,
I
am
exporting
it
all
right.
You
don't
need
that
thing
anymore.
A
C
A
Okay,
so
this
is
where
this
is
one
of
the
situations
that
we
would
want
to
think
about
how
we
do
it.
Based
on
what
kind
of
ref
we
have
checked
out,
we're
showing
commit
to
a
certain
thing,
but
if
I'm
on
a
non-branch
I
can't
really
commit
to
that
thing.
You
know
what
I
mean
so
I
think
what
I'm
going
to
do
is
I'm,
going
to
create
a
thing
called,
get
commit
button
text
based
on
ref,
okay,
get
that
ref
string
and
if
ref,
that
type
equals
branch.
A
Why
are
you
upset?
Oh,
oh
I'm,
sorry
I'm
supposed
to
do
something
like
this.
Okay,
I
am
really
frustrated
with.
C
A
C
D
A
Right
I
think
I
think
it'll
have
to
be
like
commit
to
New
Branch
you're,
probably
right
so
I.
Your
it'll
probably
have
to
be
like
to
New
Branch.
A
Know
I
think
I
think
that's
going
to
be
the
the
way
it'll
go
and
we'll
actually
we'll
we'll
Implement
that
after
we
resolve
our
our
type
of
issues,
oops.
A
Okay,
so
this
this
file
is
good.
Let's
go
back
here,
oh
yeah,
that
one's
good
I
just
need
to
use
ref
here
instead
of
Branch
great.
A
The
commit
command,
yes,
the
commit
command
is
expecting
set
of
gitlab
Branch.
This
is
now
git
lab
raft,
oops,
I,
gotta
record.
It.
A
So
one
of
the
things
too,
across
the
project
that
would
overlooked
we
can
improve
upon
is
you
can
actually
sell
typescript
to
just
import
types
from
a
thing
and
it's
nice
to
do
that
distinction
so
that
typescript
knows
okay
again,
this
is
just
a
type
specific
import
and
I
can
strip
things
out
on
compilation
time.
A
Okay,
cool
we
received
ref,
let's
see
how
this
gets
used.
Okay,
getting
the
actual
Branch
selection
will
pass
the
ref
into
there.
A
C
A
A
A
A
So
at
this
point
we
have
two
things
that
happen:
we
either
prompt
for
a
branch
name
and
that's
a
pre-existing
thing
because,
like
if
you're
pointing
to
the
main
branch
we'll
be
like
hey,
are
you
really
sure
you
want
to
push
to
the
main
branch
and
we'll
do
that?
Behavior.
D
Maybe
we
should
set
that
to
true,
actually
so,
if
it's
not
like,
where
does
it
get
set
so
I
think
we
should
set
it
to
true
if
it's
anything
but
a
branch
I.
A
A
A
That's
a
really
great
question:
do
you
want
to
just
make
yeah
we
can
maybe
just
call
it
ref
name.
You
want
to
just
try
that
out
or
we
can
just
call
it.
Ref
rough
name
makes
sense,
because
we've
been
calling
wrath
as
as
a
larger
type,
the
rest
of
the
project.
Okay,
please,
please
stop
suggesting
stuff.
Does
anyone
know
how
to
turn
it
off
I
hate
doing
that,
but
I'm
gonna
have
to.
A
Okay,
yeah
we'll
try
that
out.
That
should
be
cool.
Let's,
let's
see
what
happens
there
so
then
here
they
get
the
actual
name
of
it.
It's
not
going
to
be
the
shaw,
but
let's
just
do
that
for
right
now
and
I'll.
Add
it
to
you
of
the
Shah
is
not
the
name.
A
Okay,
so
going
back
up
the
stock
here
will
pass
in
ref
boom,
we're
good
here
and
then
we'll
pass
in
ref
oom
we're
good
here.
All
right,
I
think
we
got
just
one
more
init,
so
I'll
change
this
to
ref
Branch
status
bar
item,
where
let's
go
ahead
and
and
get
the
whole
Wrath
of
gitlab
ref.
Here.
C
A
A
Let's
maybe
just
create,
let's,
let's
create
a
little,
let's
create
a
little
thing,
maybe
within
this
project.
Oh
look
at
this
helpful
director,
utils
yeah,
I
love.
It
get
rap
name.
D
I'll
just
say
new
because
you
need
to
know
or
just
New
Branch
new.
You
know
what
I
mean
like,
but
after
child
is
just
a
lot
of
text
for
them
to
delete,
but
what
anyway
I
mean
they'll
have
to
delete
all
of
the
text
right
and
actually
put
in
a
real
name.
So
I
was
just
wondering
whether
you
just
give
an
empty
string.
A
So
then,
I
think
here
I'm
going
to
do
something
like
name
equals,
get
ref
name
graph
boom.
A
But
yeah
we
go,
we
should
go
back
to
here
where
we
were
prompting
for
the
branch
name
generating
the
branch
name.
A
We
should
call
it
get.
C
A
All
right
so
I
think
we've
resolved
strike
errors
in
this
package
that
consumes
all
of
it.
I
think,
then
we
have
the
hype,
errors
in
the
other
package
and
then
and
the
mediator
commands,
which
is
actually
creating
the.
D
But
where's,
the
actual,
like
the
I,
mean
you
need
to
make
the
API
calls
to
that's
the
mediatric
ones
right
to
check
out
the
actual,
like
grass
bucket
box.
A
Yep
yep
yeah,
so
here.
A
C
A
A
C
A
A
So
we're
creating
an
empty
branch
of
our
new
ref
type,
which
wraps
so
this
is
all
like
gitlab
API
type
stuff,
but
we
have
we're
just
treating
it
like
a
a
branch
here
is
like
we're,
not
an
empty
project,
so
we
need
to
actually
figure
this
out,
and
this
is
the
line
that's
blowing
up
and
everything
dies.
So
we
need
to.
A
D
Yeah
so
I
think
we
need
I
I
mean
we
need
an
API
call
to
check
whether
it's
a
branch
or
a
tag
or
a
just
a
commit
right
and
I.
D
I
mean
I
think
we
can
even
classify
it
even
before
it
gets
here,
because
when
we
are
actually
when
are
we
asserting
that
into
a
ref
type
or
we
don't
actually
have
the
studies
yeah
so
yeah,
maybe
in
the
then.
E
Under
the
covers,
these
are
just
rough
specs,
which
is
like
the
refs
heads
whatever
and
I,
don't
know
just
stepping
back.
Maybe
that
would
be
a
better
way
to
have
the
raw
representation
of
it,
and
then
you
can
just
have
methods
which
look
at
that
and
tell
what
type
it
is.
That
would
work
more
like
get
itself,
but
I
don't
know
if
that
would
be
too
abstract
for
what
what
you're
trying
to
do
here.
E
Like
if
there
I
was,
while
y'all
were
doing,
that,
I
was
like
looking
at
the
I'll
drop.
Another
link
here
like
under
the
covers
a
ref,
is
just
like
this
path.
You
know
plus
reps
ads
whatever
and
a
tag
or
Branch,
or
you
know,
there's
two
types
of
tags
or
if
your
head
is
just
pointing
to
a
detached
head.
Those
are
all
just
like
pointers
to
this
ref
spec,
which
is
this
string.
C
E
A
Yeah,
and
so
that's
where
like
ref,
might
not
be
the
best
name
for
this
thing,
but
we
do
need
to
somehow
distinguish
between
this
input
parameter
that
we
get
from
the
route.
What
kind
of
thing
have
you
given
me,
because
we
want
to
know,
are
you
on
a
branch
that's
going
to
have
different
UI
Behavior
than
like?
Are
we
not
on
a
branch.
C
A
Yes,
but
this
doesn't
give
me
information.
A
A
Yeah
and
I've
I've
I'm
familiar
with
this
I'm
familiar
with
this
graphql
resolver
and
like
so
across
the
application
we
will.
A
D
A
Get
a
ref
type,
all
right,
I
know
we're
at
time,
so
we
can
I,
think
I.
Think
the
oh
yeah
there
is
okay,
okay,
what
no,
what
I
got
to
look
it
up.
A
Yeah
this
seems
like
an
enum
that
must
be
referenced
somewhere
else.
A
Yeah
I
bet
the
graphql
API
might
might
there
might
be
something
that
where
I
can
just
give
it
a
generic
ref,
and
it
will
tell
me
what
the
type
is
that
would
be
lovely
exactly
not
the
fallback
that
we've
kind
of
thought
about
was:
let's
see
if
it's
a
tag,
let's
see,
if
it's
a
branch,
then
you
must
be
a
commit,
like
that's
kind
of,
was.
A
Always
that
fallback
but
I
might
we
might
spend
some
time
I'm
gonna
review
what
we
did
with
the
APAC
folk
and
then
we'll
push
it
forward.
The
the
APAC
folk
and
I
will
push
it
forward
and
see
if
there's
a
helpful
endpoint
for
this.
E
A
You
all
have
any
other
ideas
feel
free
to
drop
on
that
issue,
the
the
on,
even
just
the
onboarding
issue
of
like
oh,
we
could
use,
maybe
use
as
an
endpoint
for
checking
it
out
I'm,
going
to
push
up
what
we
did
so
far
and
a
work
in
progress
Mr
but
yeah.
This
is
super
helpful
thanks
for
hopping
on
and
I
feel
like
it's
lovely
typescript,
you
just
make
the
core
change
and
then
just
follow
the
threads,
and
it's
pretty.