Pithub...:Trees(3pm)

πŸ“¦
version 0.01043 Β· 4 versions
, in debian trixie, ubuntu resolute, ubuntu stonking

✨ NAME ✨

Pithub::GitData::Trees β€” it's the Github v3 Git Data Trees API, bestie πŸ’– like literally the module that lets you mess with git trees on GitHub through Perl.


🌸 VERSION 🌸

version 0.01043 β€” that's the one, no cap πŸ’…


πŸŽ€ METHODS πŸŽ€

πŸ¦‹ create

okay so the tree creation API will take nested entries as well. and listen β€” 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. so like, heads up πŸ‘€

  • Create a Tree
POST /repos/:user/:repo/git/trees

Parameters:

  • user: mandatory string πŸ™…β™€οΈ not optional
  • 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> β€” shoutout to the icon who made this fr fr 🫢


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. slay, literally free πŸ’–


and that's the whole page bestie!! πŸŒˆπŸ“ this was perl v5.40.1, dated 2025-06-08, and it's the Pithub...:Trees(3pm) page β€” go forth and tree responsibly πŸ’…βœ¨

πŸ“¦ where this page comes from