sweetchuck/robo-git

Git related Robo tasks

Maintainers

๐Ÿ‘ Sweetchuck

Package info

github.com/Sweetchuck/robo-git

Type:robo-tasks

pkg:composer/sweetchuck/robo-git

Statistics

Installs: 120โ€‰300

Dependents: 63

Suggesters: 0

Stars: 3

Open Issues: 5

v0.3.0 2020-08-09 17:23 UTC

Requires

Suggests

None

Provides

None

Conflicts

None

Replaces

None

GPL-2.0-or-later 75b093d4a468b090bda2f8063c72416b78109da5

gitrobo-tasks

This package is auto-updated.

Last update: 2026-06-28 20:44:56 UTC


README

๐Ÿ‘ CircleCI
๐Ÿ‘ codecov

The main additional feature compare to the ::taskExec() is that this tasks parse the stdOutput/stdError and make the result available for the next tasks by putting it into the \Robo\State\Data instance which belongs to the pipeline.

Install

Run composer require --dev sweetchuck/robo-git

Task - taskGitBranchList()

<?php

declare(strict_types = 1);

class RoboFileExample extends \Robo\Tasks
{
 use \Sweetchuck\Robo\Git\GitTaskLoader;

 public function gitBranches(string $dir = '.')
 {
 return $this
 ->collectionBuilder()
 ->addTask(
 $this
 ->taskGitBranchList()
 ->setWorkingDirectory($dir)
 // Available options:
 // --all
 // --color
 // --contains
 // --format
 // --list
 // --merged
 // --points-at
 // --sort
 )
 ->addCode(function (\Robo\State\Data $data): int {
 // Here you can do whatever you want with the branches.
 $output = $this->output();
 foreach ($data['gitBranches'] as $longName => $branch) {
 $output->writeln($longName);
 foreach ($branch as $key => $value) {
 $output->writeln("$key = " . var_export($value, true));
 }
 }

 return 0;
 });
 }
}

Run: $ vendor/bin/robo git:branches

Example output:

refs/heads/1.x
 isCurrentBranch = true
 push = 'refs/remotes/upstream/1.x'
 push.short = 'upstream/1.x'
 refName = 'refs/heads/1.x'
 refName.short = '1.x'
 track = ''
 track.ahead = NULL
 track.behind = NULL
 track.gone = false
 upstream = 'refs/remotes/upstream/1.x'
 upstream.short = 'upstream/1.x'

Task - taskGitConfigGet()

<?php

declare(strict_types = 1);

class RoboFileExample extends \Robo\Tasks
{
 use \Sweetchuck\Robo\Git\GitTaskLoader;

 /**
 * @command git:config:get
 */
 public function gitConfigGet(string $name)
 {
 return $this
 ->collectionBuilder()
 ->addTask(
 $this
 ->taskGitConfigGet()
 ->setName($name)
 )
 ->addCode(function (\Robo\State\Data $data) use ($name): int {
 $key = "git.config.$name";
 $this->output()->writeln("$key = {$data[$key]}");

 return 0;
 });
 }
}

Run: $ vendor/bin/robo git:config:get

Example output:

git.config.user.name = Andor

Task - taskGitCurrentBranch()

<?php

declare(strict_types = 1);

class RoboFileExample extends \Robo\Tasks
{
 use \Sweetchuck\Robo\Git\GitTaskLoader;

 /**
 * @command git:current-branch
 */
 public function gitCurrentBranch()
 {
 return $this
 ->collectionBuilder()
 ->addTask($this->taskGitCurrentBranch())
 ->addCode(function (\Robo\State\Data $data): int {
 $this->output()->writeln("long = {$data['gitCurrentBranch.long']}");
 $this->output()->writeln("short = {$data['gitCurrentBranch.short']}");

 return 0;
 });
 }
}

Run: $ vendor/bin/robo git:current-branch

Example output:

long = refs/heads/1.x
short = 1.x

Task - taskGitListFiles()

<?php

declare(strict_types = 1);

class RoboFileExample extends \Robo\Tasks
{
 use \Sweetchuck\Robo\Git\GitTaskLoader;

 /**
 * @command git:list-files
 */
 public function gitListFiles()
 {
 return $this
 ->collectionBuilder()
 ->addTask(
 $this
 ->taskGitListFiles()
 ->setPaths(['R*.md'])
 // Available options:
 // -t
 // -v
 // -z
 // --cached
 // --deleted
 // --directory
 // --empty-directory
 // --eol
 // --exclude
 // --exclude-file
 // --full-name
 // --killed
 // --ignored
 // --modified
 // --others
 // --stage
 // --resolve-undo
 // --unmerged
 )
 ->addCode(function (\Robo\State\Data $data): int {
 $output = $this->output();
 /** * @var \Sweetchuck\Robo\Git\ListFilesItem $file */
 foreach ($data['files'] as $filePath => $file) {
 $output->writeln($filePath);
 $output->writeln(' status = ' . var_export($file->status, true));
 $output->writeln(' objectName = ' . var_export($file->objectName, true));
 $output->writeln(' eolInfoI = ' . var_export($file->eolInfoI, true));
 $output->writeln(' eolInfoW = ' . var_export($file->eolInfoW, true));
 $output->writeln(' eolAttr = ' . var_export($file->eolAttr, true));
 $output->writeln(' fileName = ' . var_export($file->fileName, true));
 }

 return 0;
 });
 }
}

Run: $ vendor/bin/robo git:list-files

Example output:

README.md
 status = NULL
 objectName = NULL
 eolInfoI = NULL
 eolInfoW = NULL
 eolAttr = NULL
 fileName = 'README.md'

Task - taskGitListChangedFiles()

@todo

Task - taskGitListStagedFiles()

@todo

Task - taskGitNumOfCommitsBetween()

@todo

Task - taskGitReadStagedFiles()

@todo

Task - taskGitRemoteList()

@todo

Task - taskGitStatus()

@todo

Task - taskGitTagList()

@todo

Task - taskGitTopLevel()

@todo