NAME
Git::Raw::Remote - Git remote class
VERSION
version 0.30
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 $inmem_remote = Git::Raw::Remote -> create_inmemory($repo, undef, $url);
my $list = $inmem_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_inmemory( $repo, $fetch_refspec, $url )
Create a remote in memory.
load( $repo, $name )
Load an existing remote.
name( [ $name ] )
Retrieve the name of the remote. If $name
is passed, the remote's name will be updated and returned.
url( [ $url ] )
Retrieve the URL of the remote. If $url
is passed, the remote's URL will be updated and returned.
add_fetch( $spec )
Add a fetch spec to the remote.
add_push( $spec )
Add a push spec to the remote.
ls( )
Retrieve the list of refs at the remote. Returns a hash reference containing key =
value> pairs 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 object ID of the reference.
"lid"
The local object ID 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.
"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.
"completion"
Completion is called when different parts of the download process are done (currently unused).
"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
andreceived_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 afterb
the update.
connect( $direction )
Connect to the remote. The direction can be either "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.
AUTHOR
Alessandro Ghedini <alexbio@cpan.org>
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.