The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Git::Raw::Remote - Git remote class

VERSION

version 0.43

SYNOPSIS

    use Git::Raw;

    # open the Git repository at $path
    my $repo = Git::Raw::Repository -> open($path);

    # add a new remote
    my $remote = Git::Raw::Remote -> create($repo, 'origin', $url);

    # set the acquire credentials callback
    $remote -> callbacks({
      'credentials' => sub { Git::Raw::Cred -> userpass($usr, $pwd) },
      'update_tips' => sub {
        my ($ref, $a, $b) = @_;
        print "Updated $ref: $a -> $b", "\n";
      }
    });

    # connect the remote
    $remote -> connect('fetch');

    # fetch from the remote and update the local tips
    $remote -> download;
    $remote -> update_tips;

    # disconnect
    $remote -> disconnect;

    my $empty_repo = Git::Raw::Repository -> new;
    my $anonymous_remote = Git::Raw::Remote -> create_anonymous($repo, $url, undef);
    my $list = $anonymous_remote -> ls;

DESCRIPTION

A Git::Raw::Remote represents a Git remote.

WARNING: The API of this module is unstable and may change without warning (any change will be appropriately documented in the changelog).

METHODS

create( $repo, $name, $url )

Create a remote with the default fetch refspec and add it to the repository's configuration.

create_anonymous( $repo, $url, $fetch_refspec )

Create a remote in memory (anonymous).

load( $repo, $name )

Load an existing remote.

owner( )

Retrieve the Git::Raw::Repository owning the remote.

name( [ $name, \@problems ] )

Retrieve the name of the remote. If $name is passed, the remote's name will be updated and returned. Non-default refspecs cannot be renamed and will be store in @problems if provided.

url( [ $url ] )

Retrieve the URL of the remote. If $url is passed, the remote's URL will be updated and returned.

pushurl( [ $url ] )

Retrieve the push URL for the remote. If $url is passed, teh rmeote's push URL will be updated and returned.

check_cert( $value )

Set whether to check the server's certificate (applies to HTTPS only).

add_fetch( $spec )

Add a fetch spec to the remote.

add_push( $spec )

Add a push spec to the remote.

clear_refspecs( )

Clear the remote's refspecs.

refspec_count( )

Retrieve the refspec count.

refspecs( )

Retrieve the remote's refspecs. Returns a list of Git::Raw::RefSpec objects.

ls( )

Retrieve the list of refs at the remote. Returns a hash reference where the key is the name of the reference, and the value is a hash reference containing the following values:

  • "local"

    Whether the reference exists locally.

  • "id"

    The OID of the reference.

  • "lid"

    The local OID of the reference (optional).

callbacks( \%callbacks )

  • "credentials"

    The callback to be called any time authentication is required to connect to the remote repository. The callback receives a string containing the URL of the remote, and it must return a Git::Raw::Cred object.

  • "sideband_progress"

    Textual progress from the remote. Text send over the progress side-band will be passed to this function (this is the 'counting objects' output). The callback receives a string containing progress information.

  • "transfer_progress"

    During the download of new data, this will be regularly called with the current count of progress done by the indexer. The callback receives the following integers: total_objects, received_objects, local_objects, total_deltas, indexed_deltas and received_bytes.

  • "update_tips"

    Each time a reference is updated locally, this function will be called with information about it. The callback receives a string containing the name of the reference that was updated, and the two OID's a before and after b the update.

fetch( )

Download new data and update tips. Convenience function to connect to a remote, download the data, disconnect and update the remote-tracking branches.

connect( $direction )

Connect to the remote. The $direction should either be "fetch" or "push".

disconnect( )

Disconnect the remote.

download( )

Download the remote packfile.

save( )

Save the remote to its repository's config.

update_tips( )

Update the tips to the new status.

is_connected( )

Check if the remote is connected.

is_url_valid( $url )

Check whether $url is a valid remote URL.

is_url_supported( $url )

Check whether $url the passed URL is supported by this version of the library.

AUTHOR

Alessandro Ghedini <alexbio@cpan.org>

Jacques Germishuys <jacquesg@striata.com>

LICENSE AND COPYRIGHT

Copyright 2012 Alessandro Ghedini.

This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.

See http://dev.perl.org/licenses/ for more information.