Vytváranie repozitárov
createRepository() zvolí cestu podľa vstupu: template vygeneruje repozitár zo šablóny (POST /repos/{template}/generate), owner ho vytvorí v danej organizácii (POST /orgs/{owner}/repos) a bez oboch vznikne pod prihláseným účtom (POST /user/repos):
use RoundlyConsulting\Git\Dto\Input\NewRepository;
$repo = Git::github()->createRepository(new NewRepository(
name: 'widget-for-laravel',
private: true,
owner: 'acme',
template: 'acme/package-template',
));Úvodný commit a predvolená vetva
Commit má hneď po vytvorení len repozitár zo šablóny — zvyšné dve cesty vytvoria prázdny repozitár, pokiaľ neodovzdáte autoInit: true, a klonovanie prázdneho repozitára s --branch zlyhá. defaultBranch sa uplatní premenovaním úvodnej vetvy po vytvorení, pretože GitHub pri vytváraní default_branch neprijíma; preto vyžaduje autoInit alebo šablónu:
// An empty repository cannot be cloned with --branch — ask for an initial commit:
$repo = Git::github()->createRepository(new NewRepository(
name: 'widget',
private: true,
description: 'Internal widget service',
autoInit: true,
defaultBranch: 'develop', // requires autoInit or a template
));Oprávnenia v organizácii
Vytvorenie v organizácii vyžaduje, aby GitHub App mala oprávnenie organizácie administration: write — schvaľuje ho vlastník organizácie na existujúcej inštalácii. Token naň vydajte až v momente potreby a nechajte ho zaniknúť:
use RoundlyConsulting\Git\Dto\Credentials\GithubAppToken;
use RoundlyConsulting\Git\Dto\Input\InstallationTokenScope;
$credentials = GithubAppToken::for($appId, $installationId, $privateKey)
->forScope(InstallationTokenScope::administrationOnly());
Git::github($credentials)->createRepository(new NewRepository(
name: 'widget',
owner: 'acme',
autoInit: true,
));Keď GitHub vytvorenie odmietne s 403 bez známok obmedzenia rýchlosti, balík vyhodí InvalidCredentialsException s názvom chýbajúceho oprávnenia namiesto nejasného „Resource not accessible by integration“ od GitHubu.
Na GitLabe a Bitbuckete
- GitLab mapuje owner na číselné namespace_id (nečíselný owner vyhodí InvalidArgumentException), autoInit na initialize_with_readme a defaultBranch prijíma priamo pri vytvorení.
- Bitbucket mapuje owner na workspace — zadajte ho. Nemá možnosť úvodného commitu, preto autoInit alebo defaultBranch vyhodí FeatureNotSupportedException, namiesto aby sa potichu zahodili.
- Generovanie zo šablóny je len na GitHube, inde vyhodí FeatureNotSupportedException.
Prejavte lásku k open source
Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.
Ďalšie spôsoby podpory vrátane kryptomienOdoslaním daru súhlasíte s našimi podmienkami prijímania darov.
Chcete to zabudovať do svojho produktu?
Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.