Git-Native
view release on metacpan or search on metacpan
lib/Git/Native/Credential.pm view on Meta::CPAN
my ( $class, %args ) = @_;
my $user = $args{username} // Carp::croak "username: 'username' required";
check_rc Git::Libgit2::FFI::git_credential_username_new( \my $cred, $user );
return $class->new( _handle => $cred );
}
# Internal â called by the credential-acquire thunk after handing the
# pointer to libgit2. Prevents DEMOLISH from double-freeing.
sub _disown {
my $self = shift;
my $h = $self->_handle;
$self->_handle(undef);
return $h;
}
sub DEMOLISH {
my $self = shift;
if ( my $h = $self->{_handle} ) {
Git::Libgit2::FFI::git_credential_free($h);
}
}
1;
__END__
=pod
=encoding UTF-8
=head1 NAME
Git::Native::Credential - A libgit2 credential (passed back from acquire callbacks)
=head1 VERSION
version 0.003
=head1 SYNOPSIS
use Git::Native::Credential;
my $cred = Git::Native::Credential->userpass(
username => 'git',
password => $ENV{GITHUB_TOKEN},
);
# ssh-agent (matches CLI default for git+ssh remotes)
my $cred = Git::Native::Credential->ssh_agent(username => 'git');
# explicit key file
my $cred = Git::Native::Credential->ssh_key(
username => 'git',
public_key => "$ENV{HOME}/.ssh/id_ed25519.pub",
private_key => "$ENV{HOME}/.ssh/id_ed25519",
passphrase => '',
);
=head1 DESCRIPTION
Returned from the C<credentials> callback you pass to
L<Git::Native::Remote>'s C<fetch>/C<push>. libgit2 takes ownership of
the credential once the callback returns successfully â the Perl wrapper
is disowned automatically so it won't double-free.
If you construct one without passing it to libgit2, DEMOLISH calls
C<git_credential_free> for you.
=head1 SUPPORT
=head2 Issues
Please report bugs and feature requests on GitHub at
L<https://github.com/Getty/p5-git-native/issues>.
=head1 CONTRIBUTING
Contributions are welcome! Please fork the repository and submit a pull request.
=head1 AUTHOR
Torsten Raudssus <getty@cpan.org>
=head1 COPYRIGHT AND LICENSE
This software is copyright (c) 2026 by Torsten Raudssus <torsten@raudssus.de> L<https://raudssus.de/>.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
=cut
( run in 0.598 second using v1.01-cache-2.11-cpan-140bd7fdf52 )