The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Pithub::GitData::Trees - Github v3 Git Data Trees API

VERSION

version 0.01029

METHODS

create

The tree creation API will take nested entries as well. If both a tree and a nested path modifying that tree are specified, it will overwrite the contents of that tree with the new path contents and write a new tree out.

  • Create a Tree

        POST /repos/:user/:repo/git/trees

    Parameters:

    • user: mandatory string

    • repo: mandatory string

    • data: mandatory hashref, having following keys:

      • base_tree: optional String of the SHA1 of the tree you want to update with new data.

      • tree: mandatory arrayref of hashrefs, having following keys:

        • path: mandatory string of the file referenced in the tree.

        • mode: mandatory string of the file mode - one of 100644 for file (blob), 100755 for executable (blob), 040000 for subdirectory (tree), 160000 for submodule (commit) or 120000 for a blob that specifies the path of a symlink.

        • type: mandatory string of blob, tree, commit.

        • sha: mandatory string of SHA1 checksum ID of the object in the tree.

        • content: String of content you want this file to have - GitHub will write this blob out and use that SHA for this entry. Use either this or tree.sha.

    Examples:

        my $t = Pithub::GitData::Trees->new;
        my $result = $t->create(
            user => 'octocat',
            repo => 'Hello-World',
            data => {
                tree => [
                    {
                        path => 'file.rb',
                        mode => '100644',
                        type => 'blob',
                        sha  => '7c258a9869f33c1e1e1f74fbb32f07c86cb5a75b',
                    }
                ]
            }
        );

    Response: Status: 201 Created

        {
            "sha": "cd8274d15fa3ae2ab983129fb037999f264ba9a7",
            "url": "https://api.github.com/repo/octocat/Hello-World/trees/cd8274d15fa3ae2ab983129fb037999f264ba9a7",
            "tree": [
            {
                "path": "file.rb",
                "mode": "100644",
                "type": "blob",
                "size": 132,
                "sha": "7c258a9869f33c1e1e1f74fbb32f07c86cb5a75b",
                "url": "https://api.github.com/octocat/Hello-World/git/blobs/7c258a9869f33c1e1e1f74fbb32f07c86cb5a75b"
            }
            ]
        }

get

  • Get a Tree

        GET /repos/:user/:repo/git/trees/:sha

    Parameters:

    • user: mandatory string

    • repo: mandatory string

    • sha: mandatory string

    • recursive: optional boolean

    Examples:

        my $t = Pithub::GitData::Trees->new;
        my $result = $t->get(
            user => 'plu',
            repo => 'Pithub',
            sha  => 'df21b2660fb6'
        );

    Response: Status: 200 OK

        {
            "sha": "9fb037999f264ba9a7fc6274d15fa3ae2ab98312",
            "url": "https://api.github.com/repo/octocat/Hello-World/trees/9fb037999f264ba9a7fc6274d15fa3ae2ab98312",
            "tree": [
            {
                "path": "file.rb",
                "mode": "100644",
                "type": "blob",
                "size": 30,
                "sha": "44b4fc6d56897b048c772eb4087f854f46256132",
                "url": "https://api.github.com/octocat/Hello-World/git/blobs/44b4fc6d56897b048c772eb4087f854f46256132"
            },
            {
                "path": "subdir",
                "mode": "040000",
                "type": "tree",
                "sha": "f484d249c660418515fb01c2b9662073663c242e",
                "url": "https://api.github.com/octocat/Hello-World/git/blobs/f484d249c660418515fb01c2b9662073663c242e"
            },
            {
                "path": "exec_file",
                "mode": "100755",
                "type": "blob",
                "size": 75,
                "sha": "45b983be36b73c0788dc9cbcb76cbb80fc7bb057",
                "url": "https://api.github.com/octocat/Hello-World/git/blobs/45b983be36b73c0788dc9cbcb76cbb80fc7bb057"
            }
            ]
        }
  • Get a Tree Recursively

        GET /repos/:user/:repo/git/trees/:sha?recursive=1

    Parameters:

    • user: mandatory string

    • repo: mandatory string

    • sha: mandatory string

    • recursive: optional boolean

    Examples:

        my $t = Pithub::GitData::Trees->new;
        my $result = $t->get(
            user      => 'plu',
            repo      => 'Pithub',
            sha       => 'df21b2660fb6',
            recursive => 1,
        );

    Response: Status: 200 OK

        {
            "sha": "fc6274d15fa3ae2ab983129fb037999f264ba9a7",
            "url": "https://api.github.com/repo/octocat/Hello-World/trees/fc6274d15fa3ae2ab983129fb037999f264ba9a7",
            "tree": [
            {
                "path": "subdir/file.txt",
                "mode": "100644",
                "type": "blob",
                "size": 132,
                "sha": "7c258a9869f33c1e1e1f74fbb32f07c86cb5a75b",
                "url": "https://api.github.com/octocat/Hello-World/git/7c258a9869f33c1e1e1f74fbb32f07c86cb5a75b"
            }
            ]
        }

AUTHOR

Johannes Plunien <plu@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2011 by Johannes Plunien.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.