►
From YouTube: GSoC 2021 Git credentials binding 2021 06 17
Description
Git credentials binding project in Google Summer of Code 2021. Discussion topics included the first pull request, more project documentation, handling multiple git tool installations, adding online help for the plugin, and adding documentation to the README
A
B
Yeah,
should
we
I
mean,
should
we
discuss
the
code
today.
A
That
would
that
would
be
great
with
me.
I
was
just
attempting
to
show
a
test
failure
with
by
experimenting
with
the
code.
I
was
expecting
it
to
fail
because
I
think
it
had
failed
for
me
locally,
but
I
don't
see
the
failure
when
I
run
it
now,
and
so
I
am,
I
am
at
the
moment
a
little
bit
perplexed.
I
was
expecting
to
see
failures
and
didn't,
and
so
I
would
love
to
have
a
discussion
of
the
code.
B
Which
test?
Are
you
talking
about
mark.
A
B
A
A
A
Then,
if
you
go
down
five
or
ten
lines,
you'll
see,
there's
an
assertion
that
the
the
very
last
line
on
178
is
that
it
expects
to
find
exactly
that
text
username
the
literal
colon
and
a
password
in
the
file
off.text,
and
it
succeeds
at
least
in
my
case
it
does.
And
now
I
need
to
check
the
ci
job.
Maybe
the
ci
job
failed
and,
and
would
tell
me
something
just
a
minute.
A
Test
tests
test
result:
okay,
yeah,
okay.
So
the
test
result.
Oh,
oh,
maybe
that's
the
reason.
Okay,
all
right!
First,
for
whatever
reason
on
the
on
the
continuous
integration
server,
it's
showing
the
failures
only
on
windows,
and
that's
where
I
was
running
the
last
time.
I
was
seeing
test
failures,
so
I
I
can't
explain
why
read
and
execute
permissions
to
be
set.
A
To
the
the
thing
that
well,
maybe.
A
B
Okay
mean
the
I
mean
the
most
of
the
failures
are
in
the
generate:
get
script
right
test.
A
B
B
B
A
C
B
D
A
A
A
A
It,
yes,
okay,
so
this
the
one
that
has
the
the
ampersand
character
in
it,
because
ampersand
is
also
a
special
character
in
the
in
bat.
A
B
A
A
B
No,
I
was
saying
that
I
can
like
debug
the
test,
set
a
break
point
and
go
manually,
go
to
the
temporary
directory
created
by
this
test
and
check
the
bad
file
properties
for
that
permissions.
On.
B
B
A
A
A
B
A
A
D
That
gets
to
be
a
fun
fight
and
get
when
you
have
some
people
on
linux
and
some
people
on
windows
and
not
everyone's
converting.
A
And
now
the
so
having
your
seeing
your
ide
hints
there,
it's
listing
the
encoding
on
the
right
as
null.
Don't
you
want
it
as
utf-8.
A
B
So
these
are
the
changes
I
have
made
till
yesterday.
I
was
working
on
the
test
cases
and
I
have
to
work
on
this
area.
The
git
get
tool.
Instance,
I
mean
we,
I
I
am
testing
using
different
different
different
instance
for
git
tool
instances,
so
I'm
using
j
git
to
get
apache
to
test
that
it
does
not
work
on
the
authentication
process
does
not
work
on
all
of
these
git
implementations,
and
only
this
good
cli
implementation,
but
the
variable
binding
will
require
will
be
provided
to
all
the
git
implementations.
A
So
I
think
what
you've
got
here
is
is
great
now
tell
us
tell
me
the
the
expected
behavior
when
you
pass
in
jet
tool,
magic
x,
a
name
I
was
assuming
that
that
would
be
a
failure,
because
you
can't
use
you
get
username
password
binding
with
jet,
and
yet
I
think
the
tests
are
passing.
Aren't
they.
E
B
B
So
now
so
now
it
is
giving
j
get
two
instances
on
j
get
apache
instance,
but
it
is
returning
null.
So
I
have
still
have
to
figure
that
out
why
it's
returning
them.
B
Also,
I
mean
if
even
if
that
I
mean
I've
investigated
that
and
that
works
fine,
this
test
will
pass
because
this
is
not
performing
any
authentication
operation
like
git
command.
This
is
only
echoing
the
bindings
that
is
provided
by
all
required
to
all
the
implementations,
so
this
is
not
restricted.
This
is
the
the
you
know,
the
expected
behavior,
the.
What
we
are
expecting
to
fail
is
the
git
command
that
should
fail,
because
that
is
the
authentication
process
process
that
is
being
performed.
A
Okay,
so
it's
it's
not
that
we
would.
We
would
consider
putting
a
safeguard
in
there.
That
says,
if
you're
attempting
to
use
a
credential
binding
with
jgit,
we
tell
you
it
just
can't
be
done
rather
we're
relying
on
even
if
they
use
jgit
to
do
the
to
do
the
clone.
We
will
still
pass
down
username
and
password
and
assume
that
they've
got
a
command
line,
get
implementation
available
there.
Okay,.
B
A
B
No,
it
will
only
fail
when
it's
digit
or
jkt
apache.
I
mean
no,
I
mean
yeah,
so
this
will
fail
when
it's
jet
or
jkt
apache.
So
this
specific
line,
I'm
talking
about.
A
I
think
okay
got
it,
so
it
the
the
the
question
that's
being
asked
there
on
line.
56
is:
does
the
string
get
tool
end
with
either
jgit
or
jacob
apache.
B
B
Because
if
you
can
see
like
on
line
54
the
set
key
bindings,
so
it
is
not
checking
that
if
the
implementation
is
get
cli
get
j
get
on
jk
patches,
so
these
will
be
available
to
all
the
implementations.
If
we
include
this
under
under
the
stay
56
statement,
then
it
won't
be
available.
So
it's
upon
us
if
we
want
it
or
not,.
C
What
can
we
have
a
custom
name
for
jk.
A
C
Because
I
am
concerned
about
a
case
where,
if
the
git
tool
name
in
in
a
cli
gate,
implementation,
let's
say,
is
a
name
which
contains
jake
it.
For
any
reason.
For
any
weird
reason,.
E
B
B
Yeah,
well,
I
think
this
method
I
am,
I
will
read
the
documentation
of
this
method,
but
I
think
that
this
is
matching
the
entire
string
rather
than
the
end.
I
think
that,
because
I
will
work
on
that
raj
git
case
as
well
and
see
if
it
fails.
C
So
let's
say:
if
we
have
three
click
installations,
how
do
we
choose
which
one
to
use?
C
B
Yeah,
so
yes,
yes,
I
know
so
the
so
from
what
I
understand
like
so
the
name
should
be.
If
the
name
is
default,
then
it
will
go
with
with
default.
If
the
name
is
not
default,
then
you
would
go
with
the
first
implementation
that
the
at
index
zero,
so
yeah,
okay,.
C
B
A
But
it's
do
okay,
so
it
isn't
isn't
line
33,
though
doing
okay,
I'm
gonna
have
to
go.
Do
some
research
separately,
but
I
thought
that
line
33
said
return
me
the
get
tool
for
the
jenkins
controller,
the
jenkins
dot
get
there
says,
give
me
the
node.
That
is
the
jenkins
controller.
So
that's
not
the
agent
that
will
be
running
the
job.
That's
truly
the
jenkins
controller.
Isn't
it.
A
Yeah,
so
so,
and
now
we
we,
I
think
we
correctly
can
assume
that
there
is
a
command
line.
Get
on
the
jenkins
controller.
That's
that's
to
me
seems
like
a
safe
assumption,
but
I
thought
that
rashab's
question
was
what
happens
if
the
to
get
tool
on
the
controller
is
named
git
and
the
get
tool
on
the
agent?
Let's
say
it's
a
centos
8
machine
that
I
had
to
install
a
brand
new
version
of
git
because
of
the
ancient
thing
that's
there
and
it's
called
git
dash,
2.2
2.32.
A
A
C
I
was
iterating
through
all
the
possible
get
installations
for
a
particular
agent,
and
then
I
I
checked
each
of
them,
which
one
is
valid
for
the
agent,
and
I
just
I
assumed
that
there
would
be
one
if
there's
more
than
one.
Then
I
choose
the
first
one.
There
are
like
more
than
one
options
to
run
for
a
particular
agent.
I
choose
the
first
one
and
then
I
proceed
forward.
I
did
something
like
that.
A
Controller
because
I
I
apologize
harsh
it,
but
I'm
not
sure
how
to
tell
you,
I
I
can
tell
you
what
things
I
would
think
to
check.
I
would
check
if
I
define
a
get
tool
on
my
controller
named
git
the
default
and
then
on
an
agent.
I
define
a
an
installation,
say
a
windows
agent
and
call
it
git
dash
2.2
2.32.
A
A
B
I
mean
we
still
mentioning
the
the
greater
channel
like
we
could
use
the
credentials
for
finding
out
the
git
tool.
I
mean
I
have
not
worked
on
that,
but
we
should.
Could
you
explain
more
on
that.
C
C
I
think
I
was
asking
you,
how
would
we
find
the
git
tool
name
like
the
user's
choice
and
they
get
to
in
the
credentials
context,
because
I
remember
where
I
implemented
this
logic
there
was,
I
could
get
the
user's
choice
and
then
validate
if
it
exists
or
not
in
the
environment
I
was
running
in,
but
I'm
not
sure
if
that
is
possible
and
the
credentials
binding
context.
B
A
I
think
so
yeah
and
I'm
not
even
sure
what
compatible
means
in
this
case
right
because
harshit
help
me
remember
is
there:
is
there
any
difference
between
command
line,
get
versions
in
terms
of
how
we
pass
username
and
password?
I
don't
think
there
is,
I
think,
the
place
we
had
differences
was
in
ssh,
not
in
not
in
username
password.
A
So
for
at
least
for
now,
it
may
be
good
enough
just
to
say
let's,
let's
just
go
with
it
and
not
worry
about
the
complexity
of
of
not
worry
about
anything
further
on
the
complexity
of
git
tool
use
this
test.
It
get
to
the
point
where
we
think
it's
ready
to
ready
to
ship
or
ready
to
ask
for
code
review
from
jesse
glickenship.
D
A
D
I
think
I
run
in
that
mode.
Oh
you
do
okay,
good
yeah,
because
we,
what
can
I
say,
agents
running
container
images
and
the
container
images
contain
their
own
git.
So
we
manage
it
that.
D
A
A
A
C
Just
one
last
question:
do
we
get
the
node
instance
in
this
context
like
this?
Is
a
class
called
node.
E
B
C
Because
the
git
utils
resolve
git
tool
should,
I
think,
be
sufficient
for
us
to
decide
which
tool
we
need,
and
maybe,
after
that,
we
can
look
for
our
specific
case.
But
then
you're
saying
that
we
don't
we
from
gender.get.
But
mark
pointed
out
that
jenkins.
would
give
us
the
controller
instant,
not
instance,
not
the.
C
F
C
A
A
B
So
I
think
this
so
I
think
I
was
working
on
that
yeah
yesterday,
so
this
code
looks
like
promising
to
me,
but
I
I
have
tested
it,
but
it
creates
a
j,
get
apache
git
tool
in
the
jenkins
and
it's
called
agent.
I
guess
so.
E
A
So
there's
a
there's
a
readme
file
readme.adoc
at
the
root
of
the
of
the
repository
and
that
readme
file
is
the
documentation
for
the
for
the
plugin.
A
And
so
that's
where
you
would
put
the
put
an
example
of
how
to
use
get
with
credentials.
A
A
A
A
A
The
way
we
add
this
help
is
we
place
a
specifically
named
file
at
a
certain
location
in
the
in
the
in
the
source
code
repository
so
I'll
I'll
see.
If
I
can
find
that
we
learned
about
this
as
part
of
a
project,
we
did
with
chico
africa
about
how
to
add
this.
This
help.
So
I
can.
I
think
I
can
find
that
and
point
you
to
the
file
name.
A
Okay,
yeah,
so
that
that
one,
let
me
put
myself
sorry
and
I've
not
been
taking
any
notes,
but
let's
get
some
notes
on
this
just
to
remind.
C
So
I
think
what
you
just
showed
should
be
part
of
the
bra
which
it
should
go
with.
It
should
ship
with
the
functionality,
because
I
think
it's
equally
important.
A
A
A
Installations-
and
we
also
discussed
how
to
add,
help
to
the
the
pull
request
and
we've
got
mark
action
mark
send
location
of
the
file
to
harsh
it
for
inclusion.
D
You
can
ignore
my
comment,
as
I
suspected
mr
mark
was
correct
about
oh
sorry
about
what
the
default
git
tool
thing.
That's
what
we
use.
A
D
A
default
kit
configured
and
it
has
a
path
to
get,
and
then
god
just
have
that
correctly
in
the
path.
Okay,
very
good,
sorry.
A
Okay,
okay,
so
online
help
and
then
harshit.
The
other
one
was
how
to
add
documentation
to
the
readme
and
there,
maybe,
if
you're,
okay
with
it
harsh
and
I'm
going
to
share
my
screen
so
that
we
can
look
at
the
readme
together.
Would
that
be
all
right?
A
Yeah,
okay,
so
share
this
one
and
here's
what
so?
If
we
look
at
how
it's
presented
to
the
user,
they
might
look
on
the
plug-in
site
for
get
client
and
what
they
see
is
this
page
of
of
documentation
that
describes
parameters
and
various
things
like
okay,
how
to
how
to
use
what
are
the
properties
that
are
defined
in
the
plug-in
and
how
do
you
install
portable
git
automatically
these
these
kind
of
things?
A
After
the
change
logs
thing
put
an
entry
here
for
pipelines
or
for
credential
mapping,
and
maybe
it's
just
credential
mapping
and
then
in
there
you
insert
several
examples:
oh
here's,
how
you
use
with
credentials
to
to
do
this
operation
and
that
operation?
So
now
what
we're
seeing
here
is
what's
presented
to
the
user.
If
we
now
open
the
github
repository,
you
can
see
where
the
doc,
where
that
documentation
actually
lives,
and
it's
right
here
in
the
readme
oops.
Sorry,
we
want
to
get
client
readme.
D
D
So
I
plugged
a
couple
of
links
to
the
jelly
files
in
github
both
for
the
example
that
you'd
pointed
out
as
well
as
a
help
file
in
the
git
plugin.
Oh
good,
very.
D
D
So
if
you
remember
that
help,
this
is
all
like
jelly
stuff
and
some
of
those
help
files
are
standards
based.
So
you
typically
put
the
help
in
the
same
path
as
the
plugin
class
under
source
main
resources.
So
you
see
source
main
resources,
org
check
and
ci
plugins
credential,
binding
impul,
ssh
user,
private
key
binding
and
there's
a
high
level
help.html.
D
And
if
you
remember
there
was
a
lot
of
text
about
like
hey
this
copies
ssh
key,
given
the
blah
blah
blah
blah
blah.
So
that's
kind
of
a
convention
based
way
of
configuring.
The
help
at
this
higher
level
you'll
see
there's
a
few
other
things,
and
so
there's
a
help
for
the
key
file
variable
and
that
you'll
see
that
corresponds
to
that
field.
D
A
A
A
So
now
we
would
not
find
this
kind
of
a
page
yet
for
the
get
client
plugin,
because
it
hasn't
published
anything.
Yet
that
has
a
credential.
But
when,
when
the
get
client
plugin
publishes,
it
will
be
added
to
the
same
list.
If
I
understand
correctly,
because,
for
instance,
here
we
see
vault,
ssh
user
private
key
binding
that
thing
and
that
one,
I
think,
is
provided
by
something,
isn't
the
credentials
binding
plug-in
it's
from
the
hashicorp
vault
plugin.
A
By
it
so
harshit
are
you
have?
Will
I'll
publish,
publish
the
recording
of
this
so
that
you
can
refer
to
it
later
if
you
need
to,
but
justin's
just
shown
us
how
you
put
the
help
in
there
that
was
justin.
That
was
absolutely
great.
Thank
you
so
much
sure,
absolutely
anything
else.
I
should
show
here
or
hand
it
back.
F
D
B
C
So
I'm
a
little
confused
here.
We
don't
need
to
raise
a
pr
like
at
the
jenkins
dot
io
level
in
that
repository
for
this
to
be
added
there.
A
Correct
we
don't,
I
know
it's,
it's
like
black
dark,
evil,
terrible
magic,
but
it
is.
It
is
exactly
that
kind
of
magic,
it's
fantastical
magic.
So
so
what
happens
is
there
is
a
tool
that
runs
periodically
that
surveys
all
jenkins,
plug-ins
and
looks
for
all
implementations
of
those
extension
points
and
extracts
the
documentation
from
those
plugins
and
publishes
it
to
that
steps
reference.
A
A
Yeah
and
because
all
right
harshit's
pull
request
will
add
one
little
file,
a
help.html
or
maybe
three
files,
help.html
and
two
more
for
some
variable
or
something
like
that
and
magically.
It
will
appear
in
that
pipeline
steps
reference.
It
is
visible
in
the
jenkins
ui,
with
the
snippet
generator
yeah.
It
really
is
quite
elegant.
E
A
Now
harshit
there
was
one
item
I
had.
You
had
submitted
a
pull
request,
so
we've
only
got
a
few
minutes
left,
but
maybe
it
would
be
enough
for
us
to
get
that
pull
request.
Merged
you'd
submitted
a
pull
request
to
jenkins.io
just
a
minute.
Let
me
see
if
I
can
find
it
and
I
was
gonna
offer
if
you're,
okay,
I
can
just
apply
the
changes
and
merge
the
the
pull
requests,
but
if
you
would
prefer
to
to
make
the
changes
yourself
you're
welcome
to
do
that.
A
A
Yes,
okay,
so
this
is.
This
is
the
change
in
some
of
the
changes
I
propose.
The
mandatory
change
is
this?
Oh,
let's
make
it
big
enough
to
read
okay,
the
mandatory
change
is
this
one
it
needs
to.
I
know
is
that
right,
which
one
is
the
no?
No.
Where
was
that
there
was
one
change
that
had
to
be
made
in
order?
No,
maybe
not.
A
A
A
A
A
A
That
are
you
comfortable
with
the
change
you
need
to.
Well.
Do
you
have
time
to
make
the
change,
because,
given
that
I've
got
permission,
I
had
permission
to
do
that?
I
should.
I
could
actually
make
this
change
as
well
and
get
that
image
placed
into
the
images
directory
so
that
you
can
stay
focused
on
the
code
rather
than
on
documentation.
B
A
A
A
A
A
C
I
was
surprised
that
we
don't
have
individual
project
folders
in
gsoc
2021
directory.
C
Because
students
have,
they
haven't
published
their
blogs
yet
right.
Maybe
that
is
the
reason.
A
It
could
be
so,
if
I
look
at,
let's
see
it
was
where
was
I,
this
is
the
one
we
were
just
editing.
Wasn't
it
get
s,
get
credentials
binding
for
sh.
A
A
B
A
A
A
D
A
So
I
I
think
we
need
to
finish
the
documentation
and
I
would
like
to
finish
the
release
of
the
of
the
of
the
username
and
password.
A
B
C
A
A
A
A
A
A
I
hope
so
if
you
see
that
I
forgot
to,
if
I
failed
to
just
send
me
an
email
and
I'll
upload
it
for
last
week,
yeah
I'll
cover
it.
If
it's
not
covered,
oh
bless,
you.
That
would
be
wonderful.
Thank
you
thanks
very
much,
absolutely
all
right
thanks.
Everybody.