Pithub...:Trees(3pm)
β¨ 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 optionalrepo: mandatory stringdata: 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 of100644for file (blob),100755for executable (blob),040000for subdirectory (tree),160000for submodule (commit) or120000for 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 stringrepo: mandatory stringsha: mandatory stringrecursive: 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 stringrepo: mandatory stringsha: mandatory stringrecursive: 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 π«Ά
π 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. 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
- debian trixie: libpithub-perl 0.01043-1 Β· Artistic-1.0-Perl OR GPL-1.0-or-later
- ubuntu resolute: libpithub-perl 0.01043-1 Β· Artistic-1.0-Perl OR GPL-1.0-or-later
- ubuntu stonking: libpithub-perl 0.01043-1 Β· Artistic-1.0-Perl OR GPL-1.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms