Jacques Germishuys > Git-Raw > Git::Raw::Push

Download:
Git-Raw-0.50.tar.gz

Dependencies

Annotate this POD

Website

View/Report Bugs
Module Version: 0.50   Source  

NAME ^

Git::Raw::Push - Git push class

VERSION ^

version 0.50

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";
      }
    });

    # perform the actual push
    if ($push -> finish) {
      if ($push -> unpack_ok) {
        print "References updated successfully", "\n";
      } else {
        print STDERR "Not all references updated", "\n";
      }
      $push -> update_tips;
    } else {
      print STDERR "Push failed", "\n";
    }

    # 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 )

finish( )

Perform the actual push. Return a truthy value to indicate if the push was successful.

unpack_ok( )

Check if the remote successfully unpacked.

update_tips( )

Update the tips to the new status.

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.

syntax highlighting: