NAME
Git::Raw::Push - Git push class
VERSION
version 0.34
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) }
});
# connect the remote
$remote -> connect('push');
# create a push object
my $push = Git::Raw::Push -> new($remote);
# add a refspec
my $spec = "refs/heads/master:refs/heads/master";
$push -> add_refspec($spec);
$push -> callbacks({
'status' => sub {
my ($ref, $msg) = @_;
if (!defined($msg)) {
print "Updated $ref", "\n";
} else {
print STDERR "Update failed: $ref: $msg", "\n";
}
},
'pack_progress' => sub {
my ($stage, $current, $total) = @_;
print "Packed $current objects\r";
}
});
# actually perform the push
$push -> finish;
if ($push -> update_ok) {
print "References updated successfully", "\n";
} else {
print STDERR "Not all references updated", "\n";
}
$push -> update_tips;
# disconnect the remote
$remote -> disconnect;
# now fetch from the remote
$remote -> connect('fetch');
$remote -> download;
$remote -> update_tips;
$remote -> disconnect;
DESCRIPTION
Helper class for pushing.
WARNING: The API of this module is unstable and may change without warning (any change will be appropriately documented in the changelog).
METHODS
new( $remote )
Create a new push object.
add_refspec( $spec )
Add the $spec
refspec to the push object. Note that $spec
is a string.
callbacks( \%callbacks )
"transfer_progress"
During the upload of new data, this will reguarly be called with the transfer progress. The callback receives the following integers:
current
,total
andbytes
."pack_progress"
During the packing of new data, this will reguarly be called with the progress of the pack operation. Be aware that this is called inline with pack building operations, so performance may be affected. The callback receives the following integers:
stage
,current
andtotal
."status"
For each of the updated references, this will be called with a status report for the reference. The callback receives
ref
andmsg
as strings. Ifmsg
is defined, the reference mentioned inref
has not been updated.
finish( )
Actually push.
unpack_ok( )
Check if the remote successfully unpacked.
update_tips( )
Update the tips to the new status.
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.