Git::Raw::Push - Git push class
version 0.44
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"; } }); # perform the actual push $push -> finish; if ($push -> unpack_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;
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).
Create a new push object.
Add the $spec refspec to the push object. Note that $spec is a string.
$spec
"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 and bytes.
current
total
bytes
"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 and total.
stage
"status"
For each of the updated references, this will be called with a status report for the reference. The callback receives ref and msg as strings. If msg is defined, the reference mentioned in ref has not been updated.
ref
msg
Perform the actual push.
Check if the remote successfully unpacked.
Update the tips to the new status.
Alessandro Ghedini <alexbio@cpan.org>
Jacques Germishuys <jacquesg@striata.com>
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.
To install Git::Raw, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Git::Raw
CPAN shell
perl -MCPAN -e shell install Git::Raw
For more information on module installation, please visit the detailed CPAN module installation guide.