aboutsummaryrefslogtreecommitdiffstats
path: root/library/kzykhys/git/src
diff options
context:
space:
mode:
authorMario <mario@mariovavti.com>2024-10-12 15:15:40 +0000
committerMario <mario@mariovavti.com>2024-10-12 15:15:40 +0000
commit05a5b644bf043aee941d17ac3fb254c99b1c64d1 (patch)
tree982b728a449956278a1f28296eeed89aead9e99d /library/kzykhys/git/src
parent84556854e858a8fafb208f796a298821e1ed2e91 (diff)
parentb117cf9dc71a2042b27420b9a713ac69514f469e (diff)
downloadvolse-hubzilla-05a5b644bf043aee941d17ac3fb254c99b1c64d1.tar.gz
volse-hubzilla-05a5b644bf043aee941d17ac3fb254c99b1c64d1.tar.bz2
volse-hubzilla-05a5b644bf043aee941d17ac3fb254c99b1c64d1.zip
Merge branch 'remove-repo-handling-from-admin-addons' into 'dev'
Remove addon repo management from admin/addons. See merge request hubzilla/core!2149
Diffstat (limited to 'library/kzykhys/git/src')
-rw-r--r--library/kzykhys/git/src/PHPGit/Command.php123
-rw-r--r--library/kzykhys/git/src/PHPGit/Command/AddCommand.php75
-rw-r--r--library/kzykhys/git/src/PHPGit/Command/ArchiveCommand.php96
-rw-r--r--library/kzykhys/git/src/PHPGit/Command/BranchCommand.php229
-rw-r--r--library/kzykhys/git/src/PHPGit/Command/CatCommand.php91
-rw-r--r--library/kzykhys/git/src/PHPGit/Command/CheckoutCommand.php145
-rw-r--r--library/kzykhys/git/src/PHPGit/Command/CloneCommand.php71
-rw-r--r--library/kzykhys/git/src/PHPGit/Command/CommitCommand.php87
-rw-r--r--library/kzykhys/git/src/PHPGit/Command/ConfigCommand.php132
-rw-r--r--library/kzykhys/git/src/PHPGit/Command/DescribeCommand.php90
-rw-r--r--library/kzykhys/git/src/PHPGit/Command/FetchCommand.php112
-rw-r--r--library/kzykhys/git/src/PHPGit/Command/InitCommand.php65
-rw-r--r--library/kzykhys/git/src/PHPGit/Command/LogCommand.php105
-rw-r--r--library/kzykhys/git/src/PHPGit/Command/MergeCommand.php110
-rw-r--r--library/kzykhys/git/src/PHPGit/Command/MvCommand.php70
-rw-r--r--library/kzykhys/git/src/PHPGit/Command/PullCommand.php59
-rw-r--r--library/kzykhys/git/src/PHPGit/Command/PushCommand.php65
-rw-r--r--library/kzykhys/git/src/PHPGit/Command/RebaseCommand.php129
-rw-r--r--library/kzykhys/git/src/PHPGit/Command/Remote/SetBranchesCommand.php98
-rw-r--r--library/kzykhys/git/src/PHPGit/Command/Remote/SetHeadCommand.php120
-rw-r--r--library/kzykhys/git/src/PHPGit/Command/Remote/SetUrlCommand.php175
-rw-r--r--library/kzykhys/git/src/PHPGit/Command/RemoteCommand.php278
-rw-r--r--library/kzykhys/git/src/PHPGit/Command/ResetCommand.php199
-rw-r--r--library/kzykhys/git/src/PHPGit/Command/RmCommand.php97
-rw-r--r--library/kzykhys/git/src/PHPGit/Command/ShortlogCommand.php134
-rw-r--r--library/kzykhys/git/src/PHPGit/Command/ShowCommand.php70
-rw-r--r--library/kzykhys/git/src/PHPGit/Command/StashCommand.php309
-rw-r--r--library/kzykhys/git/src/PHPGit/Command/StatusCommand.php147
-rw-r--r--library/kzykhys/git/src/PHPGit/Command/TagCommand.php156
-rw-r--r--library/kzykhys/git/src/PHPGit/Command/TreeCommand.php70
-rw-r--r--library/kzykhys/git/src/PHPGit/Exception/GitException.php39
-rw-r--r--library/kzykhys/git/src/PHPGit/Git.php308
32 files changed, 0 insertions, 4054 deletions
diff --git a/library/kzykhys/git/src/PHPGit/Command.php b/library/kzykhys/git/src/PHPGit/Command.php
deleted file mode 100644
index 9238a5454..000000000
--- a/library/kzykhys/git/src/PHPGit/Command.php
+++ /dev/null
@@ -1,123 +0,0 @@
-<?php
-
-namespace PHPGit;
-
-use Symfony\Component\OptionsResolver\OptionsResolver;
-use Symfony\Component\OptionsResolver\OptionsResolverInterface;
-use Symfony\Component\Process\ProcessBuilder;
-
-/**
- * Base class for git commands
- *
- * @author Kazuyuki Hayashi <hayashi@valnur.net>
- */
-abstract class Command
-{
-
- /**
- * @var Git
- */
- protected $git;
-
- /**
- * @param Git $git
- */
- public function __construct(Git $git)
- {
- $this->git = $git;
- }
-
- /**
- * Returns the combination of the default and the passed options
- *
- * @param array $options An array of options
- *
- * @return array
- */
- public function resolve(array $options = array())
- {
- $resolver = new OptionsResolver();
- $this->setDefaultOptions($resolver);
-
- return $resolver->resolve($options);
- }
-
- /**
- * Sets the default options
- *
- * @param OptionsResolverInterface $resolver The resolver for the options
- *
- * @codeCoverageIgnore
- */
- public function setDefaultOptions(OptionsResolverInterface $resolver)
- {
- }
-
- /**
- * Split string by new line or null(\0)
- *
- * @param string $input The string to split
- * @param bool $useNull True to split by new line, otherwise null
- *
- * @return array
- */
- protected function split($input, $useNull = false)
- {
- if ($useNull) {
- $pattern = '/\0/';
- } else {
- $pattern = '/\r?\n/';
- }
-
- return preg_split($pattern, rtrim($input), -1, PREG_SPLIT_NO_EMPTY);
- }
-
- /**
- * Adds boolean options to command arguments
- *
- * @param ProcessBuilder $builder A ProcessBuilder object
- * @param array $options An array of options
- * @param array $optionNames The names of options to add
- */
- protected function addFlags(ProcessBuilder $builder, array $options = array(), array $optionNames = null)
- {
- if ($optionNames) {
- foreach ($optionNames as $name) {
- if (isset($options[$name]) && is_bool($options[$name]) && $options[$name]) {
- $builder->add('--' . $name);
- }
- }
- } else {
- foreach ($options as $name => $option) {
- if ($option) {
- $builder->add('--' . $name);
- }
- }
- }
- }
-
- /**
- * Adds options with values to command arguments
- *
- * @param ProcessBuilder $builder A ProcessBuilder object
- * @param array $options An array of options
- * @param array $optionNames The names of options to add
- */
- protected function addValues(ProcessBuilder $builder, array $options = array(), array $optionNames = null)
- {
- if ($optionNames) {
- foreach ($optionNames as $name) {
- if (isset($options[$name]) && $options[$name]) {
- $builder->add('--' . $name . '=' . $options[$name]);
- }
- }
- } else {
- foreach ($options as $name => $option) {
- if ($option) {
- $builder->add('--' . $name . '=' . $option);
- }
- }
- }
- }
-
-} \ No newline at end of file
diff --git a/library/kzykhys/git/src/PHPGit/Command/AddCommand.php b/library/kzykhys/git/src/PHPGit/Command/AddCommand.php
deleted file mode 100644
index c035b2412..000000000
--- a/library/kzykhys/git/src/PHPGit/Command/AddCommand.php
+++ /dev/null
@@ -1,75 +0,0 @@
-<?php
-
-namespace PHPGit\Command;
-
-use PHPGit\Command;
-use PHPGit\Exception\GitException;
-use Symfony\Component\OptionsResolver\OptionsResolverInterface;
-
-/**
- * Add file contents to the index - `git add`
- *
- * @author Kazuyuki Hayashi <hayashi@valnur.net>
- */
-class AddCommand extends Command
-{
-
- /**
- * Add file contents to the index
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->setRepository('/path/to/repo');
- * $git->add('file.txt');
- * $git->add('file.txt', ['force' => false, 'ignore-errors' => false);
- * ```
- *
- * ##### Options
- *
- * - **force** (_boolean_) Allow adding otherwise ignored files
- * - **ignore-errors** (_boolean_) Do not abort the operation
- *
- * @param string|array|\Traversable $file Files to add content from
- * @param array $options [optional] An array of options {@see AddCommand::setDefaultOptions}
- *
- * @throws GitException
- * @return bool
- */
- public function __invoke($file, array $options = array())
- {
- $options = $this->resolve($options);
- $builder = $this->git->getProcessBuilder()
- ->add('add');
-
- $this->addFlags($builder, $options);
-
- if (!is_array($file) && !($file instanceof \Traversable)) {
- $file = array($file);
- }
-
- foreach ($file as $value) {
- $builder->add($value);
- }
-
- $this->git->run($builder->getProcess());
-
- return true;
- }
-
- /**
- * {@inheritdoc}
- *
- * - **force** (_boolean_) Allow adding otherwise ignored files
- * - **ignore-errors** (_boolean_) Do not abort the operation
- */
- public function setDefaultOptions(OptionsResolverInterface $resolver)
- {
- $resolver->setDefaults(array(
- //'dry-run' => false,
- 'force' => false,
- 'ignore-errors' => false,
- //'ignore-missing' => false,
- ));
- }
-
-} \ No newline at end of file
diff --git a/library/kzykhys/git/src/PHPGit/Command/ArchiveCommand.php b/library/kzykhys/git/src/PHPGit/Command/ArchiveCommand.php
deleted file mode 100644
index a6c9bd0d9..000000000
--- a/library/kzykhys/git/src/PHPGit/Command/ArchiveCommand.php
+++ /dev/null
@@ -1,96 +0,0 @@
-<?php
-
-namespace PHPGit\Command;
-
-use PHPGit\Command;
-use PHPGit\Exception\GitException;
-use Symfony\Component\OptionsResolver\OptionsResolverInterface;
-
-/**
- * Create an archive of files from a named tree - `git archive`
- *
- * @author Kazuyuki Hayashi <hayashi@valnur.net>
- */
-class ArchiveCommand extends Command
-{
-
- /**
- * Create an archive of files from a named tree
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->setRepository('/path/to/repo');
- * $git->archive('repo.zip', 'master', null, ['format' => 'zip']);
- * ```
- *
- * ##### Options
- *
- * - **format** (_boolean_) Format of the resulting archive: tar or zip
- * - **prefix** (_boolean_) Prepend prefix/ to each filename in the archive
- *
- * @param string $file The filename
- * @param string $tree [optional] The tree or commit to produce an archive for
- * @param string|array|\Traversable $path [optional] If one or more paths are specified, only these are included
- * @param array $options [optional] An array of options {@see ArchiveCommand::setDefaultOptions}
- *
- * @throws GitException
- * @return bool
- */
- public function __invoke($file, $tree = null, $path = null, array $options = array())
- {
- $options = $this->resolve($options);
- $builder = $this->git->getProcessBuilder()
- ->add('archive');
-
- if ($options['format']) {
- $builder->add('--format=' . $options['format']);
- }
-
- if ($options['prefix']) {
- $builder->add('--prefix=' . $options['prefix']);
- }
-
- $builder->add('-o')->add($file);
-
- if ($tree) {
- $builder->add($tree);
- }
-
- if (!is_array($path) && !($path instanceof \Traversable)) {
- $path = array($path);
- }
-
- foreach ($path as $value) {
- $builder->add($value);
- }
-
- $this->git->run($builder->getProcess());
-
- return true;
- }
-
- /**
- * {@inheritdoc}
- *
- * - **format** (_boolean_) Format of the resulting archive: tar or zip
- * - **prefix** (_boolean_) Prepend prefix/ to each filename in the archive
- */
- public function setDefaultOptions(OptionsResolverInterface $resolver)
- {
- $resolver->setDefaults(array(
- 'format' => null,
- 'prefix' => null
- ));
-
- $resolver->setAllowedTypes(array(
- 'format' => array('null', 'string'),
- 'prefix' => array('null', 'string')
- ));
-
- $resolver->setAllowedValues(array(
- 'format' => array('tar', 'zip')
- ));
- }
-
-
-} \ No newline at end of file
diff --git a/library/kzykhys/git/src/PHPGit/Command/BranchCommand.php b/library/kzykhys/git/src/PHPGit/Command/BranchCommand.php
deleted file mode 100644
index 4b42f5048..000000000
--- a/library/kzykhys/git/src/PHPGit/Command/BranchCommand.php
+++ /dev/null
@@ -1,229 +0,0 @@
-<?php
-
-namespace PHPGit\Command;
-
-use PHPGit\Command;
-use PHPGit\Exception\GitException;
-use Symfony\Component\OptionsResolver\OptionsResolverInterface;
-
-/**
- * List, create, or delete branches - `git branch`
- *
- * @author Kazuyuki Hayashi <hayashi@valnur.net>
- */
-class BranchCommand extends Command
-{
-
- /**
- * Returns an array of both remote-tracking branches and local branches
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->setRepository('/path/to/repo');
- * $branches = $git->branch();
- * ```
- *
- * ##### Output Example
- *
- * ```
- * [
- * 'master' => ['current' => true, 'name' => 'master', 'hash' => 'bf231bb', 'title' => 'Initial Commit'],
- * 'origin/master' => ['current' => false, 'name' => 'origin/master', 'alias' => 'remotes/origin/master']
- * ]
- * ```
- *
- * ##### Options
- *
- * - **all** (_boolean_) List both remote-tracking branches and local branches
- * - **remotes** (_boolean_) List the remote-tracking branches
- *
- * @param array $options [optional] An array of options {@see BranchCommand::setDefaultOptions}
- *
- * @throws GitException
- * @return array
- */
- public function __invoke(array $options = array())
- {
- $options = $this->resolve($options);
- $branches = array();
- $builder = $this->getProcessBuilder()
- ->add('-v')->add('--abbrev=7');
-
- if ($options['remotes']) {
- $builder->add('--remotes');
- }
-
- if ($options['all']) {
- $builder->add('--all');
- }
-
- $process = $builder->getProcess();
- $this->git->run($process);
-
- $lines = preg_split('/\r?\n/', rtrim($process->getOutput()), -1, PREG_SPLIT_NO_EMPTY);
-
- foreach ($lines as $line) {
- $branch = array();
- preg_match('/(?<current>\*| ) (?<name>[^\s]+) +((?:->) (?<alias>[^\s]+)|(?<hash>[0-9a-z]{7}) (?<title>.*))/', $line, $matches);
-
- $branch['current'] = ($matches['current'] == '*');
- $branch['name'] = $matches['name'];
-
- if (isset($matches['hash'])) {
- $branch['hash'] = $matches['hash'];
- $branch['title'] = $matches['title'];
- } else {
- $branch['alias'] = $matches['alias'];
- }
-
- $branches[$matches['name']] = $branch;
- }
-
- return $branches;
- }
-
- /**
- * Creates a new branch head named **$branch** which points to the current HEAD, or **$startPoint** if given
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->setRepository('/path/to/repo');
- * $git->branch->create('bugfix'); // from current HEAD
- * $git->branch->create('patch-1', 'a092bf7s'); // from commit
- * $git->branch->create('1.0.x-fix', 'v1.0.2'); // from tag
- * ```
- *
- * ##### Options
- *
- * - **force** (_boolean_) Reset **$branch** to **$startPoint** if **$branch** exists already
- *
- * @param string $branch The name of the branch to create
- * @param string $startPoint [optional] The new branch head will point to this commit.
- * It may be given as a branch name, a commit-id, or a tag.
- * If this option is omitted, the current HEAD will be used instead.
- * @param array $options [optional] An array of options {@see BranchCommand::setDefaultOptions}
- *
- * @throws GitException
- * @return bool
- */
- public function create($branch, $startPoint = null, array $options = array())
- {
- $options = $this->resolve($options);
- $builder = $this->getProcessBuilder();
-
- if ($options['force']) {
- $builder->add('-f');
- }
-
- $builder->add($branch);
-
- if ($startPoint) {
- $builder->add($startPoint);
- }
-
- $this->git->run($builder->getProcess());
-
- return true;
- }
-
- /**
- * Move/rename a branch and the corresponding reflog
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->setRepository('/path/to/repo');
- * $git->branch->move('bugfix', '2.0');
- * ```
- *
- * ##### Options
- *
- * - **force** (_boolean_) Move/rename a branch even if the new branch name already exists
- *
- * @param string $branch The name of an existing branch to rename
- * @param string $newBranch The new name for an existing branch
- * @param array $options [optional] An array of options {@see BranchCommand::setDefaultOptions}
- *
- * @throws GitException
- * @return bool
- */
- public function move($branch, $newBranch, array $options = array())
- {
- $options = $this->resolve($options);
- $builder = $this->getProcessBuilder();
-
- if ($options['force']) {
- $builder->add('-M');
- } else {
- $builder->add('-m');
- }
-
- $builder->add($branch)->add($newBranch);
- $this->git->run($builder->getProcess());
-
- return true;
- }
-
- /**
- * Delete a branch
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->setRepository('/path/to/repo');
- * $git->branch->delete('2.0');
- * ```
- *
- * The branch must be fully merged in its upstream branch, or in HEAD if no upstream was set with --track or --set-upstream.
- *
- * ##### Options
- *
- * - **force** (_boolean_) Delete a branch irrespective of its merged status
- *
- * @param string $branch The name of the branch to delete
- * @param array $options [optional] An array of options {@see BranchCommand::setDefaultOptions}
- *
- * @throws GitException
- * @return bool
- */
- public function delete($branch, array $options = array())
- {
- $options = $this->resolve($options);
- $builder = $this->getProcessBuilder();
-
- if ($options['force']) {
- $builder->add('-D');
- } else {
- $builder->add('-d');
- }
-
- $builder->add($branch);
- $this->git->run($builder->getProcess());
-
- return true;
- }
-
- /**
- * {@inheritdoc}
- *
- * - **force** (_boolean_) Reset <branchname> to <startpoint> if <branchname> exists already
- * - **all** (_boolean_) List both remote-tracking branches and local branches
- * - **remotes** (_boolean_) List or delete (if used with delete()) the remote-tracking branches
- */
- public function setDefaultOptions(OptionsResolverInterface $resolver)
- {
- $resolver->setDefaults(array(
- 'force' => false,
- 'all' => false,
- 'remotes' => false,
- ));
- }
-
- /**
- * @return \Symfony\Component\Process\ProcessBuilder
- */
- protected function getProcessBuilder()
- {
- return $this->git->getProcessBuilder()
- ->add('branch');
- }
-
-} \ No newline at end of file
diff --git a/library/kzykhys/git/src/PHPGit/Command/CatCommand.php b/library/kzykhys/git/src/PHPGit/Command/CatCommand.php
deleted file mode 100644
index 0c4fc1f41..000000000
--- a/library/kzykhys/git/src/PHPGit/Command/CatCommand.php
+++ /dev/null
@@ -1,91 +0,0 @@
-<?php
-
-namespace PHPGit\Command;
-
-use PHPGit\Command;
-use PHPGit\Exception\GitException;
-
-/**
- * Provide content or type and size information for repository objects - `git cat-file`
- *
- * @author Kazuyuki Hayashi <hayashi@valnur.net>
- */
-class CatCommand extends Command
-{
-
- /**
- * Returns the contents of blob object
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->setRepository('/path/to/repo');
- * $contents = $git->cat->blob('e69de29bb2d1d6434b8b29ae775ad8');
- * ```
- *
- * @param string $object The name of the blob object to show
- *
- * @throws GitException
- * @return string
- */
- public function blob($object)
- {
- $process = $this->git->getProcessBuilder()
- ->add('cat-file')
- ->add('blob')
- ->add($object)
- ->getProcess();
-
- return $this->git->run($process);
- }
-
- /**
- * Returns the object type identified by **$object**
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->setRepository('/path/to/repo');
- * $type = $git->cat->type('e69de29bb2d1d6434b8b29ae775ad8');
- * ```
- *
- * @param string $object The name of the object to show
- *
- * @throws GitException
- * @return string
- */
- public function type($object)
- {
- $process = $this->git->getProcessBuilder()
- ->add('cat-file')
- ->add('-t')
- ->add($object)
- ->getProcess();
-
- return trim($this->git->run($process));
- }
-
- /**
- * Returns the object size identified by **$object**
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->setRepository('/path/to/repo');
- * $type = $git->cat->size('e69de29bb2d1d6434b8b29ae775ad8');
- * ```
- *
- * @param string $object The name of the object to show
- *
- * @throws GitException
- * @return string
- */
- public function size($object)
- {
- $process = $this->git->getProcessBuilder()
- ->add('cat-file')
- ->add('-s')
- ->add($object)
- ->getProcess();
-
- return trim($this->git->run($process));
- }
-
-} \ No newline at end of file
diff --git a/library/kzykhys/git/src/PHPGit/Command/CheckoutCommand.php b/library/kzykhys/git/src/PHPGit/Command/CheckoutCommand.php
deleted file mode 100644
index caddf07bd..000000000
--- a/library/kzykhys/git/src/PHPGit/Command/CheckoutCommand.php
+++ /dev/null
@@ -1,145 +0,0 @@
-<?php
-
-namespace PHPGit\Command;
-
-use PHPGit\Command;
-use PHPGit\Exception\GitException;
-use Symfony\Component\OptionsResolver\OptionsResolverInterface;
-
-/**
- * Checkout a branch or paths to the working tree - `git checkout`
- *
- * @author Kazuyuki Hayashi <hayashi@valnur.net>
- */
-class CheckoutCommand extends Command
-{
-
- /**
- * Switches branches by updating the index, working tree, and HEAD to reflect the specified branch or commit
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->setRepository('/path/to/repo');
- * $git->checkout('develop');
- * ```
- *
- * ##### Options
- *
- * - **force** (_boolean_) Proceed even if the index or the working tree differs from HEAD
- * - **merge** (_boolean_) Merges local modification
- *
- * @param string $branch Branch to checkout
- * @param array $options [optional] An array of options {@see CheckoutCommand::setDefaultOptions}
- *
- * @throws GitException
- * @return bool
- */
- public function __invoke($branch, array $options = array())
- {
- $options = $this->resolve($options);
- $builder = $this->git->getProcessBuilder()
- ->add('checkout');
-
- $this->addFlags($builder, $options, array('force', 'merge'));
-
- $builder->add($branch);
- $this->git->run($builder->getProcess());
-
- return true;
- }
-
- /**
- * Create a new branch and checkout
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->setRepository('/path/to/repo');
- * $git->checkout->create('patch-1');
- * $git->checkout->create('patch-2', 'develop');
- * ```
- *
- * ##### Options
- *
- * - **force** (_boolean_) Proceed even if the index or the working tree differs from HEAD
- *
- * @param string $branch Branch to checkout
- * @param string $startPoint The name of a commit at which to start the new branch
- * @param array $options [optional] An array of options {@see CheckoutCommand::setDefaultOptions}
- *
- * @throws GitException
- * @return bool
- */
- public function create($branch, $startPoint = null, array $options = array())
- {
- $options = $this->resolve($options);
- $builder = $this->git->getProcessBuilder()
- ->add('checkout')
- ->add('-b');
-
- $this->addFlags($builder, $options, array('force', 'merge'));
-
- $builder->add($branch);
-
- if ($startPoint) {
- $builder->add($startPoint);
- }
-
- $this->git->run($builder->getProcess());
-
- return true;
- }
-
- /**
- * Create a new orphan branch, named <new_branch>, started from <start_point> and switch to it
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->setRepository('/path/to/repo');
- * $git->checkout->orphan('gh-pages');
- * ```
- *
- * ##### Options
- *
- * - **force** (_boolean_) Proceed even if the index or the working tree differs from HEAD
- *
- * @param string $branch Branch to checkout
- * @param string $startPoint [optional] The name of a commit at which to start the new branch
- * @param array $options [optional] An array of options {@see CheckoutCommand::setDefaultOptions}
- *
- * @throws GitException
- * @return bool
- */
- public function orphan($branch, $startPoint = null, array $options = array())
- {
- $options = $this->resolve($options);
- $builder = $this->git->getProcessBuilder()
- ->add('checkout');
-
- $this->addFlags($builder, $options, array('force', 'merge'));
-
- $builder->add('--orphan')->add($branch);
-
- if ($startPoint) {
- $builder->add($startPoint);
- }
-
- $this->git->run($builder->getProcess());
-
- return true;
- }
-
- /**
- * {@inheritdoc}
- *
- * - **force** (_boolean_) Proceed even if the index or the working tree differs from HEAD
- * - **merge** (_boolean_) Merges local modification
- */
- public function setDefaultOptions(OptionsResolverInterface $resolver)
- {
- $resolver->setDefaults(array(
- 'force' => false,
- 'merge' => false
- ));
- }
-
-} \ No newline at end of file
diff --git a/library/kzykhys/git/src/PHPGit/Command/CloneCommand.php b/library/kzykhys/git/src/PHPGit/Command/CloneCommand.php
deleted file mode 100644
index cc6b4ab37..000000000
--- a/library/kzykhys/git/src/PHPGit/Command/CloneCommand.php
+++ /dev/null
@@ -1,71 +0,0 @@
-<?php
-
-namespace PHPGit\Command;
-
-use PHPGit\Command;
-use PHPGit\Exception\GitException;
-use Symfony\Component\OptionsResolver\OptionsResolverInterface;
-
-/**
- * Clone a repository into a new directory - `git clone`
- *
- * @author Kazuyuki Hayashi <hayashi@valnur.net>
- */
-class CloneCommand extends Command
-{
-
- /**
- * Clone a repository into a new directory
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->clone('https://github.com/kzykhys/PHPGit.git', '/path/to/repo');
- * ```
- *
- * ##### Options
- *
- * - **shared** (_boolean_) Starts out without any object of its own
- * - **bare** (_boolean_) Make a bare GIT repository
- *
- * @param string $repository The repository to clone from
- * @param string $path [optional] The name of a new directory to clone into
- * @param array $options [optional] An array of options {@see CloneCommand::setDefaultOptions}
- *
- * @throws GitException
- * @return bool
- */
- public function __invoke($repository, $path = null, array $options = array())
- {
- $options = $this->resolve($options);
- $builder = $this->git->getProcessBuilder()
- ->add('clone')
- ->add('--quiet');
-
- $this->addFlags($builder, $options);
-
- $builder->add($repository);
-
- if ($path) {
- $builder->add($path);
- }
-
- $this->git->run($builder->getProcess());
-
- return true;
- }
-
- /**
- * {@inheritdoc}
- *
- * - **shared** (_boolean_) Starts out without any object of its own
- * - **bare** (_boolean_) Make a bare GIT repository
- */
- public function setDefaultOptions(OptionsResolverInterface $resolver)
- {
- $resolver->setDefaults(array(
- 'shared' => false,
- 'bare' => false
- ));
- }
-
-} \ No newline at end of file
diff --git a/library/kzykhys/git/src/PHPGit/Command/CommitCommand.php b/library/kzykhys/git/src/PHPGit/Command/CommitCommand.php
deleted file mode 100644
index a4f2bdd95..000000000
--- a/library/kzykhys/git/src/PHPGit/Command/CommitCommand.php
+++ /dev/null
@@ -1,87 +0,0 @@
-<?php
-
-namespace PHPGit\Command;
-
-use PHPGit\Command;
-use PHPGit\Exception\GitException;
-use Symfony\Component\OptionsResolver\OptionsResolverInterface;
-
-/**
- * Record changes to the repository - `git commit`
- *
- * @author Kazuyuki Hayashi <hayashi@valnur.net>
- */
-class CommitCommand extends Command
-{
-
- /**
- * Record changes to the repository
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->clone('https://github.com/kzykhys/PHPGit.git', '/path/to/repo');
- * $git->setRepository('/path/to/repo');
- * $git->add('README.md');
- * $git->commit('Fixes README.md');
- * ```
- *
- * ##### Options
- *
- * - **all** (_boolean_) Stage files that have been modified and deleted
- * - **reuse-message** (_string_) Take an existing commit object, and reuse the log message and the authorship information (including the timestamp) when creating the commit
- * - **squash** (_string_) Construct a commit message for use with rebase --autosquash
- * - **author** (_string_) Override the commit author
- * - **date** (_string_) Override the author date used in the commit
- * - **cleanup** (_string_) Can be one of verbatim, whitespace, strip, and default
- * - **amend** (_boolean_) Used to amend the tip of the current branch
- *
- * @param string $message Use the given <$msg> as the commit message
- * @param array $options [optional] An array of options {@see CloneCommand::setDefaultOptions}
- *
- * @throws GitException
- * @return bool
- */
- public function __invoke($message, array $options = array())
- {
- $options = $this->resolve($options);
- $builder = $this->git->getProcessBuilder()
- ->add('commit')
- ->add('-m')->add($message);
-
- $this->addFlags($builder, $options, array('all', 'amend'));
- $this->addValues($builder, $options, array('reuse-message', 'squash', 'author', 'date', 'cleanup'));
-
- $this->git->run($builder->getProcess());
-
- return true;
- }
-
- /**
- * {@inheritdoc}
- *
- * - **all** (_boolean_) Stage files that have been modified and deleted
- * - **reuse-message** (_string_) Take an existing commit object, and reuse the log message and the authorship information (including the timestamp) when creating the commit
- * - **squash** (_string_) Construct a commit message for use with rebase --autosquash
- * - **author** (_string_) Override the commit author
- * - **date** (_string_) Override the author date used in the commit
- * - **cleanup** (_string_) Can be one of verbatim, whitespace, strip, and default
- * - **amend** (_boolean_) Used to amend the tip of the current branch
- */
- public function setDefaultOptions(OptionsResolverInterface $resolver)
- {
- $resolver->setDefaults(array(
- 'all' => false,
- 'reuse-message' => null,
- 'squash' => null,
- 'author' => null,
- 'date' => null,
- 'cleanup' => null,
- 'amend' => false
- ));
-
- $resolver->setAllowedValues(array(
- 'cleanup' => array(null, 'default', 'verbatim', 'whitespace', 'strip')
- ));
- }
-
-} \ No newline at end of file
diff --git a/library/kzykhys/git/src/PHPGit/Command/ConfigCommand.php b/library/kzykhys/git/src/PHPGit/Command/ConfigCommand.php
deleted file mode 100644
index cb8bb625f..000000000
--- a/library/kzykhys/git/src/PHPGit/Command/ConfigCommand.php
+++ /dev/null
@@ -1,132 +0,0 @@
-<?php
-
-namespace PHPGit\Command;
-
-use PHPGit\Command;
-use PHPGit\Exception\GitException;
-use Symfony\Component\OptionsResolver\OptionsResolverInterface;
-
-/**
- * Get and set repository or global options - `git config`
- *
- * @author Kazuyuki Hayashi <hayashi@valnur.net>
- */
-class ConfigCommand extends Command
-{
-
- /**
- * Returns all variables set in config file
- *
- *
- * ##### Options
- *
- * - **global** (_boolean_) Read or write configuration options for the current user
- * - **system** (_boolean_) Read or write configuration options for all users on the current machine
- *
- * @param array $options [optional] An array of options {@see ConfigCommand::setDefaultOptions}
- *
- * @throws GitException
- * @return array
- */
- public function __invoke(array $options = array())
- {
- $options = $this->resolve($options);
- $builder = $this->git->getProcessBuilder()
- ->add('config')
- ->add('--list')
- ->add('--null');
-
- $this->addFlags($builder, $options, array('global', 'system'));
-
- $config = array();
- $output = $this->git->run($builder->getProcess());
- $lines = $this->split($output, true);
-
- foreach ($lines as $line) {
- list($name, $value) = explode("\n", $line, 2);
-
- if (isset($config[$name])) {
- $config[$name] .= "\n" . $value;
- } else {
- $config[$name] = $value;
- }
- }
-
- return $config;
- }
-
- /**
- * Set an option
- *
- * ##### Options
- *
- * - **global** (_boolean_) Read or write configuration options for the current user
- * - **system** (_boolean_) Read or write configuration options for all users on the current machine
- *
- * @param string $name The name of the option
- * @param string $value The value to set
- * @param array $options [optional] An array of options {@see ConfigCommand::setDefaultOptions}
- *
- * @throws GitException
- * @return bool
- */
- public function set($name, $value, array $options = array())
- {
- $options = $this->resolve($options);
- $builder = $this->git->getProcessBuilder()
- ->add('config');
-
- $this->addFlags($builder, $options, array('global', 'system'));
-
- $builder->add($name)->add($value);
- $process = $builder->getProcess();
- $this->git->run($process);
-
- return true;
- }
-
- /**
- * Adds a new line to the option without altering any existing values
- *
- * ##### Options
- *
- * - **global** (_boolean_) Read or write configuration options for the current user
- * - **system** (_boolean_) Read or write configuration options for all users on the current machine
- *
- * @param string $name The name of the option
- * @param string $value The value to add
- * @param array $options [optional] An array of options {@see ConfigCommand::setDefaultOptions}
- *
- * @throws GitException
- * @return bool
- */
- public function add($name, $value, array $options = array())
- {
- $options = $this->resolve($options);
- $builder = $this->git->getProcessBuilder()
- ->add('config');
-
- $this->addFlags($builder, $options, array('global', 'system'));
-
- $builder->add('--add')->add($name)->add($value);
- $process = $builder->getProcess();
- $this->git->run($process);
-
- return true;
- }
-
- /**
- * {@inheritdoc}
- *
- * - **global** (_boolean_) Read or write configuration options for the current user
- * - **system** (_boolean_) Read or write configuration options for all users on the current machine
- */
- public function setDefaultOptions(OptionsResolverInterface $resolver)
- {
- $resolver->setDefaults(array(
- 'global' => false,
- 'system' => false,
- ));
- }
-
-} \ No newline at end of file
diff --git a/library/kzykhys/git/src/PHPGit/Command/DescribeCommand.php b/library/kzykhys/git/src/PHPGit/Command/DescribeCommand.php
deleted file mode 100644
index affdd009b..000000000
--- a/library/kzykhys/git/src/PHPGit/Command/DescribeCommand.php
+++ /dev/null
@@ -1,90 +0,0 @@
-<?php
-
-namespace PHPGit\Command;
-
-use PHPGit\Command;
-use Symfony\Component\OptionsResolver\OptionsResolverInterface;
-
-/**
- * Show the most recent tag that is reachable from a commit - `git describe`
- *
- * @author Kazuyuki Hayashi <hayashi@valnur.net>
- */
-class DescribeCommand extends Command
-{
-
- /**
- * Returns the most recent tag that is reachable from a commit
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->setRepository('/path/to/repo');
- * $git->tag->create('v1.0.0');
- * $git->commit('Fixes #14');
- * echo $git->describe('HEAD', ['tags' => true]);
- * ```
- *
- * ##### Output Example
- *
- * ```
- * v1.0.0-1-g7049efc
- * ```
- *
- * ##### Options
- *
- * - **all** (_boolean_) Enables matching any known branch, remote-tracking branch, or lightweight tag
- * - **tags** (_boolean_) Enables matching a lightweight (non-annotated) tag
- * - **always** (_boolean_) Show uniquely abbreviated commit object as fallback
- *
- * @param string $committish [optional] Committish object names to describe.
- * @param array $options [optional] An array of options {@see DescribeCommand::setDefaultOptions}
- *
- * @return string
- */
- public function __invoke($committish = null, array $options = array())
- {
- $options = $this->resolve($options);
- $builder = $this->git->getProcessBuilder()
- ->add('describe');
-
- $this->addFlags($builder, $options, array());
-
- if ($committish) {
- $builder->add($committish);
- }
-
- return trim($this->git->run($builder->getProcess()));
- }
-
- /**
- * Equivalent to $git->describe($committish, ['tags' => true]);
- *
- * @param string $committish [optional] Committish object names to describe.
- * @param array $options [optional] An array of options {@see DescribeCommand::setDefaultOptions}
- *
- * @return string
- */
- public function tags($committish = null, array $options = array())
- {
- $options['tags'] = true;
-
- return $this->__invoke($committish, $options);
- }
-
- /**
- * {@inheritdoc}
- *
- * - **all** (_boolean_) Enables matching any known branch, remote-tracking branch, or lightweight tag
- * - **tags** (_boolean_) Enables matching a lightweight (non-annotated) tag
- * - **always** (_boolean_) Show uniquely abbreviated commit object as fallback
- */
- public function setDefaultOptions(OptionsResolverInterface $resolver)
- {
- $resolver->setDefaults(array(
- 'all' => false,
- 'tags' => false,
- 'always' => false,
- ));
- }
-
-}
diff --git a/library/kzykhys/git/src/PHPGit/Command/FetchCommand.php b/library/kzykhys/git/src/PHPGit/Command/FetchCommand.php
deleted file mode 100644
index 1302038e8..000000000
--- a/library/kzykhys/git/src/PHPGit/Command/FetchCommand.php
+++ /dev/null
@@ -1,112 +0,0 @@
-<?php
-
-namespace PHPGit\Command;
-
-use PHPGit\Command;
-use PHPGit\Exception\GitException;
-use Symfony\Component\OptionsResolver\OptionsResolverInterface;
-
-/**
- * Download objects and refs from another repository - `git fetch`
- *
- * @author Kazuyuki Hayashi <hayashi@valnur.net>
- */
-class FetchCommand extends Command
-{
-
- /**
- * Fetches named heads or tags from one or more other repositories, along with the objects necessary to complete them
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->setRepository('/path/to/repo');
- * $git->remote->add('origin', 'git://your/repo.git');
- * $git->fetch('origin');
- * ```
- *
- * ##### Options
- *
- * - **append** (_boolean_) Append ref names and object names of fetched refs to the existing contents of .git/FETCH_HEAD
- * - **keep** (_boolean_) Keep downloaded pack
- * - **prune** (_boolean_) After fetching, remove any remote-tracking branches which no longer exist on the remote
- *
- * @param string $repository The "remote" repository that is the source of a fetch or pull operation
- * @param string $refspec The format of a <refspec> parameter is an optional plus +, followed by the source ref <src>,
- * followed by a colon :, followed by the destination ref <dst>
- * @param array $options [optional] An array of options {@see FetchCommand::setDefaultOptions}
- *
- * @throws GitException
- * @return bool
- */
- public function __invoke($repository, $refspec = null, array $options = array())
- {
- $options = $this->resolve($options);
- $builder = $this->git->getProcessBuilder()
- ->add('fetch');
-
- $this->addFlags($builder, $options);
- $builder->add($repository);
-
- if ($refspec) {
- $builder->add($refspec);
- }
-
- $this->git->run($builder->getProcess());
-
- return true;
- }
-
- /**
- * Fetch all remotes
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->setRepository('/path/to/repo');
- * $git->remote->add('origin', 'git://your/repo.git');
- * $git->remote->add('release', 'git://your/another_repo.git');
- * $git->fetch->all();
- * ```
- *
- * ##### Options
- *
- * - **append** (_boolean_) Append ref names and object names of fetched refs to the existing contents of .git/FETCH_HEAD
- * - **keep** (_boolean_) Keep downloaded pack
- * - **prune** (_boolean_) After fetching, remove any remote-tracking branches which no longer exist on the remote
- *
- * @param array $options [optional] An array of options {@see FetchCommand::setDefaultOptions}
- *
- * @throws GitException
- * @return bool
- */
- public function all(array $options = array())
- {
- $options = $this->resolve($options);
- $builder = $this->git->getProcessBuilder()
- ->add('fetch')
- ->add('--all');
-
- $this->addFlags($builder, $options);
-
- $this->git->run($builder->getProcess());
-
- return true;
- }
-
- /**
- * {@inheritdoc}
- *
- * - **append** (_boolean_) Append ref names and object names of fetched refs to the existing contents of .git/FETCH_HEAD
- * - **keep** (_boolean_) Keep downloaded pack
- * - **prune** (_boolean_) After fetching, remove any remote-tracking branches which no longer exist on the remote
- */
- public function setDefaultOptions(OptionsResolverInterface $resolver)
- {
- $resolver->setDefaults(array(
- 'append' => false,
- //'force' => false,
- 'keep' => false,
- 'prune' => false,
- ));
- }
-
-} \ No newline at end of file
diff --git a/library/kzykhys/git/src/PHPGit/Command/InitCommand.php b/library/kzykhys/git/src/PHPGit/Command/InitCommand.php
deleted file mode 100644
index 1ff56fa5b..000000000
--- a/library/kzykhys/git/src/PHPGit/Command/InitCommand.php
+++ /dev/null
@@ -1,65 +0,0 @@
-<?php
-
-namespace PHPGit\Command;
-
-use PHPGit\Command;
-use PHPGit\Exception\GitException;
-use Symfony\Component\OptionsResolver\OptionsResolverInterface;
-
-/**
- * Create an empty git repository or reinitialize an existing one - `git init`
- *
- * @author Kazuyuki Hayashi <hayashi@valnur.net>
- */
-class InitCommand extends Command
-{
-
- /**
- * Create an empty git repository or reinitialize an existing one
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->init('/path/to/repo1');
- * $git->init('/path/to/repo2', array('shared' => true, 'bare' => true));
- * ```
- *
- * ##### Options
- *
- * - **shared** (_boolean_) Specify that the git repository is to be shared amongst several users
- * - **bare** (_boolean_) Create a bare repository
- *
- * @param string $path The directory to create an empty repository
- * @param array $options [optional] An array of options {@see InitCommand::setDefaultOptions}
- *
- * @throws GitException
- * @return bool
- */
- public function __invoke($path, array $options = array())
- {
- $options = $this->resolve($options);
- $builder = $this->git->getProcessBuilder()
- ->add('init');
-
- $this->addFlags($builder, $options, array('shared', 'bare'));
-
- $process = $builder->add($path)->getProcess();
- $this->git->run($process);
-
- return true;
- }
-
- /**
- * {@inheritdoc}
- *
- * - **shared** (_boolean_) Specify that the git repository is to be shared amongst several users
- * - **bare** (_boolean_) Create a bare repository
- */
- public function setDefaultOptions(OptionsResolverInterface $resolver)
- {
- $resolver->setDefaults(array(
- 'shared' => false,
- 'bare' => false
- ));
- }
-
-} \ No newline at end of file
diff --git a/library/kzykhys/git/src/PHPGit/Command/LogCommand.php b/library/kzykhys/git/src/PHPGit/Command/LogCommand.php
deleted file mode 100644
index c116550f7..000000000
--- a/library/kzykhys/git/src/PHPGit/Command/LogCommand.php
+++ /dev/null
@@ -1,105 +0,0 @@
-<?php
-
-namespace PHPGit\Command;
-
-use PHPGit\Command;
-use PHPGit\Exception\GitException;
-use Symfony\Component\OptionsResolver\OptionsResolverInterface;
-
-/**
- * Show commit logs - `git log`
- *
- * @author Kazuyuki Hayashi <hayashi@valnur.net>
- */
-class LogCommand extends Command
-{
-
- /**
- * Returns the commit logs
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->setRepository('/path/to/repo');
- * $logs = $git->log(array('limit' => 10));
- * ```
- *
- * ##### Output Example
- *
- * ``` php
- * [
- * 0 => [
- * 'hash' => '1a821f3f8483747fd045eb1f5a31c3cc3063b02b',
- * 'name' => 'John Doe',
- * 'email' => 'john@example.com',
- * 'date' => 'Fri Jan 17 16:32:49 2014 +0900',
- * 'title' => 'Initial Commit'
- * ],
- * 1 => [
- * //...
- * ]
- * ]
- * ```
- *
- * ##### Options
- *
- * - **limit** (_integer_) Limits the number of commits to show
- * - **skip** (_integer_) Skip number commits before starting to show the commit output
- *
- * @param string $revRange [optional] Show only commits in the specified revision range
- * @param string $path [optional] Show only commits that are enough to explain how the files that match the specified paths came to be
- * @param array $options [optional] An array of options {@see LogCommand::setDefaultOptions}
- *
- * @throws GitException
- * @return array
- */
- public function __invoke($revRange = '', $path = null, array $options = array())
- {
- $commits = array();
- $options = $this->resolve($options);
-
- $builder = $this->git->getProcessBuilder()
- ->add('log')
- ->add('-n')->add($options['limit'])
- ->add('--skip=' . $options['skip'])
- ->add('--format=%H||%aN||%aE||%aD||%s');
-
- if ($revRange) {
- $builder->add($revRange);
- }
-
- if ($path) {
- $builder->add('--')->add($path);
- }
-
- $output = $this->git->run($builder->getProcess());
- $lines = $this->split($output);
-
- foreach ($lines as $line) {
- list($hash, $name, $email, $date, $title) = preg_split('/\|\|/', $line, -1, PREG_SPLIT_NO_EMPTY);
- $commits[] = array(
- 'hash' => $hash,
- 'name' => $name,
- 'email' => $email,
- 'date' => $date,
- 'title' => $title
- );
- }
-
- return $commits;
- }
-
- /**
- * {@inheritdoc}
- *
- * - **limit** (_integer_) Limits the number of commits to show
- * - **skip** (_integer_) Skip number commits before starting to show the commit output
- */
- public function setDefaultOptions(OptionsResolverInterface $resolver)
- {
- $resolver->setDefaults(array(
- 'limit' => 10,
- 'skip' => 0
- ));
- }
-
-} \ No newline at end of file
diff --git a/library/kzykhys/git/src/PHPGit/Command/MergeCommand.php b/library/kzykhys/git/src/PHPGit/Command/MergeCommand.php
deleted file mode 100644
index e1987151f..000000000
--- a/library/kzykhys/git/src/PHPGit/Command/MergeCommand.php
+++ /dev/null
@@ -1,110 +0,0 @@
-<?php
-
-namespace PHPGit\Command;
-
-use PHPGit\Command;
-use PHPGit\Exception\GitException;
-use Symfony\Component\OptionsResolver\OptionsResolverInterface;
-
-/**
- * Join two or more development histories together - `git merge`
- *
- * @author Kazuyuki Hayashi <hayashi@valnur.net>
- */
-class MergeCommand extends Command
-{
-
- /**
- * Incorporates changes from the named commits into the current branch
- *
- * ```php
- * $git = new PHPGit\Git();
- * $git->setRepository('/path/to/repo');
- * $git->merge('1.0');
- * $git->merge('1.1', 'Merge message', ['strategy' => 'ours']);
- * ```
- *
- * ##### Options
- *
- * - **no-ff** (_boolean_) Do not generate a merge commit if the merge resolved as a fast-forward, only update the branch pointer
- * - **rerere-autoupdate** (_boolean_) Allow the rerere mechanism to update the index with the result of auto-conflict resolution if possible
- * - **squash** (_boolean_) Allows you to create a single commit on top of the current branch whose effect is the same as merging another branch
- * - **strategy** (_string_) Use the given merge strategy
- * - **strategy-option** (_string_) Pass merge strategy specific option through to the merge strategy
- *
- * @param string|array|\Traversable $commit Commits to merge into our branch
- * @param string $message [optional] Commit message to be used for the merge commit
- * @param array $options [optional] An array of options {@see MergeCommand::setDefaultOptions}
- *
- * @throws GitException
- * @return bool
- */
- public function __invoke($commit, $message = null, array $options = array())
- {
- $options = $this->resolve($options);
- $builder = $this->git->getProcessBuilder()
- ->add('merge');
-
- $this->addFlags($builder, $options, array('no-ff', 'rerere-autoupdate', 'squash'));
-
- if (!is_array($commit) && !($commit instanceof \Traversable)) {
- $commit = array($commit);
- }
- foreach ($commit as $value) {
- $builder->add($value);
- }
-
- $this->git->run($builder->getProcess());
-
- return true;
- }
-
- /**
- * Abort the merge process and try to reconstruct the pre-merge state
- *
- * ```php
- * $git = new PHPGit\Git();
- * $git->setRepository('/path/to/repo');
- * try {
- * $git->merge('dev');
- * } catch (PHPGit\Exception\GitException $e) {
- * $git->merge->abort();
- * }
- * ```
- *
- * @throws GitException
- * @return bool
- */
- public function abort()
- {
- $builder = $this->git->getProcessBuilder()
- ->add('merge')
- ->add('--abort');
-
- $this->git->run($builder->getProcess());
-
- return true;
- }
-
- /**
- * {@inheritdoc}
- *
- * - **no-ff** (_boolean_) Do not generate a merge commit if the merge resolved as a fast-forward, only update the branch pointer
- * - **rerere-autoupdate** (_boolean_) Allow the rerere mechanism to update the index with the result of auto-conflict resolution if possible
- * - **squash** (_boolean_) Allows you to create a single commit on top of the current branch whose effect is the same as merging another branch
- * - **strategy** (_string_) Use the given merge strategy
- * - **strategy-option** (_string_) Pass merge strategy specific option through to the merge strategy
- */
- public function setDefaultOptions(OptionsResolverInterface $resolver)
- {
- $resolver->setDefaults(array(
- 'no-ff' => false,
- 'rerere-autoupdate' => false,
- 'squash' => false,
-
- 'strategy' => null,
- 'strategy-option' => null
- ));
- }
-
-} \ No newline at end of file
diff --git a/library/kzykhys/git/src/PHPGit/Command/MvCommand.php b/library/kzykhys/git/src/PHPGit/Command/MvCommand.php
deleted file mode 100644
index fe7ce6af6..000000000
--- a/library/kzykhys/git/src/PHPGit/Command/MvCommand.php
+++ /dev/null
@@ -1,70 +0,0 @@
-<?php
-
-namespace PHPGit\Command;
-
-use PHPGit\Command;
-use Symfony\Component\OptionsResolver\OptionsResolverInterface;
-
-/**
- * Move or rename a file, a directory, or a symlink - `git mv`
- *
- * @author Kazuyuki Hayashi <hayashi@valnur.net>
- */
-class MvCommand extends Command
-{
-
- /**
- * Move or rename a file, a directory, or a symlink
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->setRepository('/path/to/repo');
- * $git->mv('UPGRADE-1.0.md', 'UPGRADE-1.1.md');
- * ```
- *
- * ##### Options
- *
- * - **force** (_boolean_) Force renaming or moving of a file even if the target exists
- *
- * @param string|array|\Iterator $source The files to move
- * @param string $destination The destination
- * @param array $options [optional] An array of options {@see MvCommand::setDefaultOptions}
- *
- * @return bool
- */
- public function __invoke($source, $destination, array $options = array())
- {
- $options = $this->resolve($options);
- $builder = $this->git->getProcessBuilder()
- ->add('mv');
-
- $this->addFlags($builder, $options, array('force'));
-
- if (!is_array($source) && !($source instanceof \Traversable)) {
- $source = array($source);
- }
-
- foreach ($source as $value) {
- $builder->add($value);
- }
-
- $builder->add($destination);
-
- $this->git->run($builder->getProcess());
-
- return true;
- }
-
- /**
- * {@inheritdoc}
- *
- * - **force** (_boolean_) Force renaming or moving of a file even if the target exists
- */
- public function setDefaultOptions(OptionsResolverInterface $resolver)
- {
- $resolver->setDefaults(array(
- 'force' => false
- ));
- }
-
-} \ No newline at end of file
diff --git a/library/kzykhys/git/src/PHPGit/Command/PullCommand.php b/library/kzykhys/git/src/PHPGit/Command/PullCommand.php
deleted file mode 100644
index a7cea0025..000000000
--- a/library/kzykhys/git/src/PHPGit/Command/PullCommand.php
+++ /dev/null
@@ -1,59 +0,0 @@
-<?php
-
-namespace PHPGit\Command;
-
-use PHPGit\Command;
-use Symfony\Component\OptionsResolver\OptionsResolverInterface;
-
-/**
- * Fetch from and merge with another repository or a local branch - `git pull`
- *
- * @author Kazuyuki Hayashi <hayashi@valnur.net>
- */
-class PullCommand extends Command
-{
-
- /**
- * Fetch from and merge with another repository or a local branch
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->setRepository('/path/to/repo');
- * $git->pull('origin', 'master');
- * ```
- *
- * @param string $repository The "remote" repository that is the source of a fetch or pull operation
- * @param string $refspec The format of a <refspec> parameter is an optional plus +,
- * followed by the source ref <src>, followed by a colon :, followed by the destination ref <dst>
- * @param array $options [optional] An array of options {@see PullCommand::setDefaultOptions}
- *
- * @return bool
- */
- public function __invoke($repository = null, $refspec = null, array $options = array())
- {
- $options = $this->resolve($options);
- $builder = $this->git->getProcessBuilder()
- ->add('pull');
-
- if ($repository) {
- $builder->add($repository);
-
- if ($refspec) {
- $builder->add($refspec);
- }
- }
-
- $this->git->run($builder->getProcess());
-
- return true;
- }
-
- /**
- * {@inheritdoc}
- */
- public function setDefaultOptions(OptionsResolverInterface $resolver)
- {
-
- }
-
-} \ No newline at end of file
diff --git a/library/kzykhys/git/src/PHPGit/Command/PushCommand.php b/library/kzykhys/git/src/PHPGit/Command/PushCommand.php
deleted file mode 100644
index d0665d735..000000000
--- a/library/kzykhys/git/src/PHPGit/Command/PushCommand.php
+++ /dev/null
@@ -1,65 +0,0 @@
-<?php
-
-namespace PHPGit\Command;
-
-use PHPGit\Command;
-use Symfony\Component\OptionsResolver\OptionsResolverInterface;
-
-/**
- * Update remote refs along with associated objects - `git push`
- *
- * @author Kazuyuki Hayashi <hayashi@valnur.net>
- */
-class PushCommand extends Command
-{
-
- /**
- * Update remote refs along with associated objects
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->setRepository('/path/to/repo');
- * $git->push('origin', 'master');
- * ```
- *
- * @param string $repository The "remote" repository that is destination of a push operation
- * @param string $refspec Specify what destination ref to update with what source object
- * @param array $options [optional] An array of options {@see PushCommand::setDefaultOptions}
- *
- * @return bool
- */
- public function __invoke($repository = null, $refspec = null, array $options = array())
- {
- $options = $this->resolve($options);
- $builder = $this->git->getProcessBuilder()
- ->add('push');
-
- $this->addFlags($builder, $options);
-
- if ($repository) {
- $builder->add($repository);
-
- if ($refspec) {
- $builder->add($refspec);
- }
- }
-
- $this->git->run($builder->getProcess());
-
- return true;
- }
-
- /**
- * {@inheritdoc}
- */
- public function setDefaultOptions(OptionsResolverInterface $resolver)
- {
- $resolver->setDefaults(array(
- 'all' => false,
- 'mirror' => false,
- 'tags' => false,
- 'force' => false
- ));
- }
-
-} \ No newline at end of file
diff --git a/library/kzykhys/git/src/PHPGit/Command/RebaseCommand.php b/library/kzykhys/git/src/PHPGit/Command/RebaseCommand.php
deleted file mode 100644
index 7516b360c..000000000
--- a/library/kzykhys/git/src/PHPGit/Command/RebaseCommand.php
+++ /dev/null
@@ -1,129 +0,0 @@
-<?php
-
-namespace PHPGit\Command;
-
-use PHPGit\Command;
-use Symfony\Component\OptionsResolver\OptionsResolverInterface;
-
-/**
- * Forward-port local commits to the updated upstream head - `git rebase`
- *
- * @author Kazuyuki Hayashi <hayashi@valnur.net>
- */
-class RebaseCommand extends Command
-{
-
- /**
- * Forward-port local commits to the updated upstream head
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->setRepository('/path/to/repo');
- * $git->fetch('origin');
- * $git->rebase('origin/master');
- * ```
- *
- * ##### Options
- *
- * - **onto** (_string_) Starting point at which to create the new commits
- * - **no-verify** (_boolean_) Bypasses the pre-rebase hook
- * - **force-rebase** (_boolean_) Force the rebase even if the current branch is a descendant of the commit you are rebasing onto
- *
- * @param string $upstream [optional] Upstream branch to compare against
- * @param string $branch [optional] Working branch; defaults to HEAD
- * @param array $options [optional] An array of options {@see RebaseCommand::setDefaultOptions}
- *
- * @return bool
- */
- public function __invoke($upstream = null, $branch = null, array $options = array())
- {
- $options = $this->resolve($options);
- $builder = $this->git->getProcessBuilder()
- ->add('rebase');
-
- if ($options['onto']) {
- $builder->add('--onto')->add($options['onto']);
- }
-
- if ($upstream) {
- $builder->add($upstream);
- }
-
- if ($branch) {
- $builder->add($branch);
- }
-
- $this->git->run($builder->getProcess());
-
- return true;
- }
-
- /**
- * Restart the rebasing process after having resolved a merge conflict
- *
- * @return bool
- */
- public function continues()
- {
- $builder = $this->git->getProcessBuilder()
- ->add('rebase')
- ->add('--continue');
-
- $this->git->run($builder->getProcess());
-
- return true;
- }
-
- /**
- * Abort the rebase operation and reset HEAD to the original branch
- *
- * @return bool
- */
- public function abort()
- {
- $builder = $this->git->getProcessBuilder()
- ->add('rebase')
- ->add('--abort');
-
- $this->git->run($builder->getProcess());
-
- return true;
- }
-
- /**
- * Restart the rebasing process by skipping the current patch
- *
- * @return bool
- */
- public function skip()
- {
- $builder = $this->git->getProcessBuilder()
- ->add('rebase')
- ->add('--skip');
-
- $this->git->run($builder->getProcess());
-
- return true;
- }
-
- /**
- * {@inheritdoc}
- *
- * - **onto** (_string_) Starting point at which to create the new commits
- * - **no-verify** (_boolean_) Bypasses the pre-rebase hook
- * - **force-rebase** (_boolean_) Force the rebase even if the current branch is a descendant of the commit you are rebasing onto
- */
- public function setDefaultOptions(OptionsResolverInterface $resolver)
- {
- $resolver->setDefaults(array(
- 'onto' => null,
- 'no-verify' => false,
- 'force-rebase' => false
- ));
-
- $resolver->setAllowedTypes(array(
- 'onto' => array('null', 'string')
- ));
- }
-
-} \ No newline at end of file
diff --git a/library/kzykhys/git/src/PHPGit/Command/Remote/SetBranchesCommand.php b/library/kzykhys/git/src/PHPGit/Command/Remote/SetBranchesCommand.php
deleted file mode 100644
index 4e17a4d48..000000000
--- a/library/kzykhys/git/src/PHPGit/Command/Remote/SetBranchesCommand.php
+++ /dev/null
@@ -1,98 +0,0 @@
-<?php
-
-namespace PHPGit\Command\Remote;
-
-use PHPGit\Command;
-
-/**
- * Changes the list of branches tracked by the named remote
- *
- * @author Kazuyuki Hayashi
- */
-class SetBranchesCommand extends Command
-{
-
- /**
- * Alias of set()
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->setRepository('/path/to/repo');
- * $git->remote->add('origin', 'https://github.com/kzykhys/Text.git');
- * $git->remote->branches('origin', array('master', 'develop'));
- * ```
- *
- * @param string $name The remote name
- * @param array $branches The names of the tracked branch
- *
- * @return bool
- */
- public function __invoke($name, array $branches)
- {
- return $this->set($name, $branches);
- }
-
- /**
- * Changes the list of branches tracked by the named remote
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->setRepository('/path/to/repo');
- * $git->remote->add('origin', 'https://github.com/kzykhys/Text.git');
- * $git->remote->branches->set('origin', array('master', 'develop'));
- * ```
- *
- * @param string $name The remote name
- * @param array $branches The names of the tracked branch
- *
- * @return bool
- */
- public function set($name, array $branches)
- {
- $builder = $this->git->getProcessBuilder()
- ->add('remote')
- ->add('set-branches')
- ->add($name);
-
- foreach ($branches as $branch) {
- $builder->add($branch);
- }
-
- $this->git->run($builder->getProcess());
-
- return true;
- }
-
- /**
- * Adds to the list of branches tracked by the named remote
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->setRepository('/path/to/repo');
- * $git->remote->add('origin', 'https://github.com/kzykhys/Text.git');
- * $git->remote->branches->add('origin', array('master', 'develop'));
- * ```
- *
- * @param string $name The remote name
- * @param array $branches The names of the tracked branch
- *
- * @return bool
- */
- public function add($name, array $branches)
- {
- $builder = $this->git->getProcessBuilder()
- ->add('remote')
- ->add('set-branches')
- ->add($name)
- ->add('--add');
-
- foreach ($branches as $branch) {
- $builder->add($branch);
- }
-
- $this->git->run($builder->getProcess());
-
- return true;
- }
-
-} \ No newline at end of file
diff --git a/library/kzykhys/git/src/PHPGit/Command/Remote/SetHeadCommand.php b/library/kzykhys/git/src/PHPGit/Command/Remote/SetHeadCommand.php
deleted file mode 100644
index 9241ef5b7..000000000
--- a/library/kzykhys/git/src/PHPGit/Command/Remote/SetHeadCommand.php
+++ /dev/null
@@ -1,120 +0,0 @@
-<?php
-
-namespace PHPGit\Command\Remote;
-
-use PHPGit\Command;
-
-/**
- * Sets or deletes the default branch (i.e. the target of the symbolic-ref refs/remotes/<name>/HEAD) for the named remote
- *
- * @author Kazuyuki Hayashi
- */
-class SetHeadCommand extends Command
-{
-
- /**
- * Alias of set()
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->setRepository('/path/to/repo');
- * $git->remote->add('origin', 'https://github.com/kzykhys/Text.git');
- * $git->remote->head('origin');
- * ```
- *
- * @param string $name The remote name
- * @param string $branch [optional] The symbolic-ref to set
- *
- * @return bool
- */
- public function __invoke($name, $branch = null)
- {
- return $this->set($name, $branch);
- }
-
- /**
- * Sets the default branch for the named remote
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->setRepository('/path/to/repo');
- * $git->remote->add('origin', 'https://github.com/kzykhys/Text.git');
- * $git->remote->head->set('origin');
- * ```
- *
- * @param string $name The remote name
- * @param string $branch [optional] The symbolic-ref to set
- *
- * @return bool
- */
- public function set($name, $branch)
- {
- $builder = $this->git->getProcessBuilder()
- ->add('remote')
- ->add('set-head')
- ->add($name);
-
- if ($branch) {
- $builder->add($branch);
- }
-
- $this->git->run($builder->getProcess());
-
- return true;
- }
-
- /**
- * Deletes the default branch for the named remote
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->setRepository('/path/to/repo');
- * $git->remote->add('origin', 'https://github.com/kzykhys/Text.git');
- * $git->remote->head->delete('origin');
- * ```
- *
- * @param string $name The remote name
- *
- * @return bool
- */
- public function delete($name)
- {
- $builder = $this->git->getProcessBuilder()
- ->add('remote')
- ->add('set-head')
- ->add($name)
- ->add('-d');
-
- $this->git->run($builder->getProcess());
-
- return true;
- }
-
- /**
- * Determine the default branch by querying remote
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->setRepository('/path/to/repo');
- * $git->remote->add('origin', 'https://github.com/kzykhys/Text.git');
- * $git->remote->head->remote('origin');
- * ```
- *
- * @param string $name The remote name
- *
- * @return bool
- */
- public function remote($name)
- {
- $builder = $this->git->getProcessBuilder()
- ->add('remote')
- ->add('set-head')
- ->add($name)
- ->add('-a');
-
- $this->git->run($builder->getProcess());
-
- return true;
- }
-
-} \ No newline at end of file
diff --git a/library/kzykhys/git/src/PHPGit/Command/Remote/SetUrlCommand.php b/library/kzykhys/git/src/PHPGit/Command/Remote/SetUrlCommand.php
deleted file mode 100644
index 7b7d84ff5..000000000
--- a/library/kzykhys/git/src/PHPGit/Command/Remote/SetUrlCommand.php
+++ /dev/null
@@ -1,175 +0,0 @@
-<?php
-
-namespace PHPGit\Command\Remote;
-
-use PHPGit\Command;
-use Symfony\Component\OptionsResolver\OptionsResolverInterface;
-
-/**
- * Changes URL remote points to
- *
- * @author Kazuyuki Hayashi
- */
-class SetUrlCommand extends Command
-{
-
- /**
- * Alias of set()
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->setRepository('/path/to/repo');
- * $git->remote->add('origin', 'https://github.com/kzykhys/Text.git');
- * $git->remote->url('origin', 'https://github.com/text/Text.git');
- * ```
- *
- * ##### Options
- *
- * - **push** (_boolean_) Push URLs are manipulated instead of fetch URLs
- *
- * @param string $name The name of remote
- * @param string $newUrl The new URL
- * @param string $oldUrl [optional] The old URL
- * @param array $options [optional] An array of options {@see SetUrlCommand::setDefaultOptions}
- *
- * @return bool
- */
- public function __invoke($name, $newUrl, $oldUrl = null, array $options = array())
- {
- return $this->set($name, $newUrl, $oldUrl, $options);
- }
-
- /**
- * Sets the URL remote to $newUrl
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->setRepository('/path/to/repo');
- * $git->remote->add('origin', 'https://github.com/kzykhys/Text.git');
- * $git->remote->url->set('origin', 'https://github.com/text/Text.git');
- * ```
- *
- * ##### Options
- *
- * - **push** (_boolean_) Push URLs are manipulated instead of fetch URLs
- *
- * @param string $name The name of remote
- * @param string $newUrl The new URL
- * @param string $oldUrl [optional] The old URL
- * @param array $options [optional] An array of options {@see SetUrlCommand::setDefaultOptions}
- *
- * @return bool
- */
- public function set($name, $newUrl, $oldUrl = null, array $options = array())
- {
- $options = $this->resolve($options);
- $builder = $this->git->getProcessBuilder()
- ->add('remote')
- ->add('set-url');
-
- $this->addFlags($builder, $options);
-
- $builder
- ->add($name)
- ->add($newUrl);
-
- if ($oldUrl) {
- $builder->add($oldUrl);
- }
-
- $this->git->run($builder->getProcess());
-
- return true;
- }
-
- /**
- * Adds new URL to remote
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->setRepository('/path/to/repo');
- * $git->remote->add('origin', 'https://github.com/kzykhys/Text.git');
- * $git->remote->url->add('origin', 'https://github.com/text/Text.git');
- * ```
- *
- * ##### Options
- *
- * - **push** (_boolean_) Push URLs are manipulated instead of fetch URLs
- *
- * @param string $name The name of remote
- * @param string $newUrl The new URL
- * @param array $options [optional] An array of options {@see SetUrlCommand::setDefaultOptions}
- *
- * @return bool
- */
- public function add($name, $newUrl, array $options = array())
- {
- $options = $this->resolve($options);
- $builder = $this->git->getProcessBuilder()
- ->add('remote')
- ->add('set-url')
- ->add('--add');
-
- $this->addFlags($builder, $options);
-
- $builder
- ->add($name)
- ->add($newUrl);
-
- $this->git->run($builder->getProcess());
-
- return true;
- }
-
- /**
- * Deletes all URLs matching regex $url
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->setRepository('/path/to/repo');
- * $git->remote->add('origin', 'https://github.com/kzykhys/Text.git');
- * $git->remote->url->delete('origin', 'https://github.com');
- * ```
- *
- * ##### Options
- *
- * - **push** (_boolean_) Push URLs are manipulated instead of fetch URLs
- *
- * @param string $name The remote name
- * @param string $url The URL to delete
- * @param array $options [optional] An array of options {@see SetUrlCommand::setDefaultOptions}
- *
- * @return bool
- */
- public function delete($name, $url, array $options = array())
- {
- $options = $this->resolve($options);
- $builder = $this->git->getProcessBuilder()
- ->add('remote')
- ->add('set-url')
- ->add('--delete');
-
- $this->addFlags($builder, $options);
-
- $builder
- ->add($name)
- ->add($url);
-
- $this->git->run($builder->getProcess());
-
- return true;
- }
-
- /**
- * {@inheritdoc}
- *
- * - **push** (_boolean_) Push URLs are manipulated instead of fetch URLs
- */
- public function setDefaultOptions(OptionsResolverInterface $resolver)
- {
- $resolver->setDefaults(array(
- 'push' => false
- ));
- }
-
-} \ No newline at end of file
diff --git a/library/kzykhys/git/src/PHPGit/Command/RemoteCommand.php b/library/kzykhys/git/src/PHPGit/Command/RemoteCommand.php
deleted file mode 100644
index 08220a551..000000000
--- a/library/kzykhys/git/src/PHPGit/Command/RemoteCommand.php
+++ /dev/null
@@ -1,278 +0,0 @@
-<?php
-
-namespace PHPGit\Command;
-
-use PHPGit\Command;
-use PHPGit\Git;
-use Symfony\Component\OptionsResolver\OptionsResolverInterface;
-
-/**
- * Manage set of tracked repositories - `git remote`
- *
- * @author Kazuyuki Hayashi <hayashi@valnur.net>
- *
- * @method head($name, $branch) Sets the default branch for the named remote
- * @method branches($name, $branches) Changes the list of branches tracked by the named remote
- * @method url($name, $newUrl, $oldUrl = null, $options = array()) Sets the URL remote to $newUrl
- */
-class RemoteCommand extends Command
-{
-
- /** @var Remote\SetHeadCommand */
- public $head;
-
- /** @var Remote\SetBranchesCommand */
- public $branches;
-
- /** @var Remote\SetUrlCommand */
- public $url;
-
- /**
- * @param Git $git
- */
- public function __construct(Git $git)
- {
- parent::__construct($git);
-
- $this->head = new Remote\SetHeadCommand($git);
- $this->branches = new Remote\SetBranchesCommand($git);
- $this->url = new Remote\SetUrlCommand($git);
- }
-
- /**
- * Calls sub-commands
- *
- * @param string $name The name of a property
- * @param array $arguments An array of arguments
- *
- * @throws \BadMethodCallException
- * @return mixed
- */
- public function __call($name, $arguments)
- {
- if (isset($this->{$name}) && is_callable($this->{$name})) {
- return call_user_func_array($this->{$name}, $arguments);
- }
-
- throw new \BadMethodCallException(sprintf('Call to undefined method %s::%s()', __CLASS__, $name));
- }
-
- /**
- * Returns an array of existing remotes
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->clone('https://github.com/kzykhys/Text.git', '/path/to/repo');
- * $git->setRepository('/path/to/repo');
- * $remotes = $git->remote();
- * ```
- *
- * ##### Output Example
- *
- * ``` php
- * [
- * 'origin' => [
- * 'fetch' => 'https://github.com/kzykhys/Text.git',
- * 'push' => 'https://github.com/kzykhys/Text.git'
- * ]
- * ]
- * ```
- *
- * @return array
- */
- public function __invoke()
- {
- $builder = $this->git->getProcessBuilder()
- ->add('remote')
- ->add('-v');
-
- $remotes = array();
- $output = $this->git->run($builder->getProcess());
- $lines = $this->split($output);
-
- foreach ($lines as $line) {
- if (preg_match('/^(.*)\t(.*)\s\((.*)\)$/', $line, $matches)) {
- if (!isset($remotes[$matches[1]])) {
- $remotes[$matches[1]] = array();
- }
-
- $remotes[$matches[1]][$matches[3]] = $matches[2];
- }
- }
-
- return $remotes;
- }
-
- /**
- * Adds a remote named **$name** for the repository at **$url**
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->setRepository('/path/to/repo');
- * $git->remote->add('origin', 'https://github.com/kzykhys/Text.git');
- * $git->fetch('origin');
- * ```
- *
- * ##### Options
- *
- * - **tags** (_boolean_) With this option, `git fetch <name>` imports every tag from the remote repository
- * - **no-tags** (_boolean_) With this option, `git fetch <name>` does not import tags from the remote repository
- *
- * @param string $name The name of the remote
- * @param string $url The url of the remote
- * @param array $options [optional] An array of options {@see RemoteCommand::setDefaultOptions}
- *
- * @return bool
- */
- public function add($name, $url, array $options = array())
- {
- $options = $this->resolve($options);
- $builder = $this->git->getProcessBuilder()
- ->add('remote')
- ->add('add');
-
- $this->addFlags($builder, $options, array('tags', 'no-tags'));
-
- $builder->add($name)->add($url);
-
- $this->git->run($builder->getProcess());
-
- return true;
- }
-
- /**
- * Rename the remote named **$name** to **$newName**
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->setRepository('/path/to/repo');
- * $git->remote->add('origin', 'https://github.com/kzykhys/Text.git');
- * $git->remote->rename('origin', 'upstream');
- * ```
- *
- * @param string $name The remote name to rename
- * @param string $newName The new remote name
- *
- * @return bool
- */
- public function rename($name, $newName)
- {
- $builder = $this->git->getProcessBuilder()
- ->add('remote')
- ->add('rename')
- ->add($name)
- ->add($newName);
-
- $this->git->run($builder->getProcess());
-
- return true;
- }
-
- /**
- * Remove the remote named **$name**
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->setRepository('/path/to/repo');
- * $git->remote->add('origin', 'https://github.com/kzykhys/Text.git');
- * $git->remote->rm('origin');
- * ```
- *
- * @param string $name The remote name to remove
- *
- * @return bool
- */
- public function rm($name)
- {
- $builder = $this->git->getProcessBuilder()
- ->add('remote')
- ->add('rm')
- ->add($name);
-
- $this->git->run($builder->getProcess());
-
- return true;
- }
-
- /**
- * Gives some information about the remote **$name**
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->clone('https://github.com/kzykhys/Text.git', '/path/to/repo');
- * $git->setRepository('/path/to/repo');
- * echo $git->remote->show('origin');
- * ```
- *
- * ##### Output Example
- *
- * ```
- * \* remote origin
- * Fetch URL: https://github.com/kzykhys/Text.git
- * Push URL: https://github.com/kzykhys/Text.git
- * HEAD branch: master
- * Remote branch:
- * master tracked
- * Local branch configured for 'git pull':
- * master merges with remote master
- * Local ref configured for 'git push':
- * master pushes to master (up to date)
- * ```
- *
- * @param string $name The remote name to show
- *
- * @return string
- */
- public function show($name)
- {
- $builder = $this->git->getProcessBuilder()
- ->add('remote')
- ->add('show')
- ->add($name);
-
- return $this->git->run($builder->getProcess());
- }
-
- /**
- * Deletes all stale remote-tracking branches under **$name**
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->setRepository('/path/to/repo');
- * $git->remote->prune('origin');
- * ```
- *
- * @param string $name The remote name
- *
- * @return bool
- */
- public function prune($name = null)
- {
- $builder = $this->git->getProcessBuilder()
- ->add('remote')
- ->add('prune');
-
- if ($name) {
- $builder->add($name);
- }
-
- $this->git->run($builder->getProcess());
-
- return true;
- }
-
- /**
- * {@inheritdoc}
- *
- * - **tags** (_boolean_) With this option, `git fetch <name>` imports every tag from the remote repository
- * - **no-tags** (_boolean_) With this option, `git fetch <name>` does not import tags from the remote repository
- */
- public function setDefaultOptions(OptionsResolverInterface $resolver)
- {
- $resolver->setDefaults(array(
- 'tags' => false,
- 'no-tags' => false
- ));
- }
-
-} \ No newline at end of file
diff --git a/library/kzykhys/git/src/PHPGit/Command/ResetCommand.php b/library/kzykhys/git/src/PHPGit/Command/ResetCommand.php
deleted file mode 100644
index f70f53e2e..000000000
--- a/library/kzykhys/git/src/PHPGit/Command/ResetCommand.php
+++ /dev/null
@@ -1,199 +0,0 @@
-<?php
-
-namespace PHPGit\Command;
-
-use PHPGit\Command;
-use PHPGit\Exception\GitException;
-
-/**
- * Reset current HEAD to the specified state - `git reset`
- *
- * @author Kazuyuki Hayashi <hayashi@valnur.net>
- */
-class ResetCommand extends Command
-{
-
- /**
- * Resets the index entries for all **$paths** to their state at **$commit**
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->setRepository('/path/to/repo');
- * $git->reset();
- * ```
- *
- * @param string|array|\Traversable $paths The paths to reset
- * @param string $commit The commit
- *
- * @return bool
- */
- public function __invoke($paths, $commit = null)
- {
- $builder = $this->git->getProcessBuilder()
- ->add('reset');
-
- if ($commit) {
- $builder->add($commit)->add('--');
- }
-
- if (!is_array($paths) && !($paths instanceof \Traversable)) {
- $paths = array($paths);
- }
-
- foreach ($paths as $path) {
- $builder->add($path);
- }
-
- try {
- $this->git->run($builder->getProcess());
- } catch (GitException $e) {
- // Confirm exit code
- }
-
- return true;
- }
-
- /**
- * Resets the current branch head to **$commit**
- *
- * Does not touch the index file nor the working tree at all (but resets the head to **$commit**,
- * just like all modes do).
- * This leaves all your changed files "Changes to be committed", as git status would put it.
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->setRepository('/path/to/repo');
- * $git->reset->soft();
- * ```
- *
- * @param string $commit The commit
- *
- * @return bool
- */
- public function soft($commit = null)
- {
- return $this->mode('soft', $commit);
- }
-
- /**
- * Resets the current branch head to **$commit**
- *
- * Resets the index but not the working tree (i.e., the changed files are preserved but not marked for commit)
- * and reports what has not been updated. This is the default action.
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->setRepository('/path/to/repo');
- * $git->reset->mixed();
- * ```
- *
- * @param string $commit The commit
- *
- * @return bool
- */
- public function mixed($commit = null)
- {
- return $this->mode('mixed', $commit);
- }
-
- /**
- * Resets the current branch head to **$commit**
- *
- * Resets the index and working tree. Any changes to tracked files in the working tree since **$commit** are discarded
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->setRepository('/path/to/repo');
- * $git->reset->hard();
- * ```
- *
- * @param string $commit The commit
- *
- * @return bool
- */
- public function hard($commit = null)
- {
- return $this->mode('hard', $commit);
- }
-
- /**
- * Resets the current branch head to **$commit**
- *
- * Resets the index and updates the files in the working tree that are different between **$commit** and HEAD,
- * but keeps those which are different between the index and working tree
- * (i.e. which have changes which have not been added). If a file that is different between **$commit** and
- * the index has unstaged changes, reset is aborted
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->setRepository('/path/to/repo');
- * $git->reset->merge();
- * ```
- *
- * @param string $commit The commit
- *
- * @return bool
- */
- public function merge($commit = null)
- {
- return $this->mode('merge', $commit);
- }
-
- /**
- * Resets the current branch head to **$commit**
- *
- * Resets index entries and updates files in the working tree that are different between **$commit** and HEAD.
- * If a file that is different between **$commit** and HEAD has local changes, reset is aborted.
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->setRepository('/path/to/repo');
- * $git->reset->keep();
- * ```
- *
- * @param string $commit The commit
- *
- * @return bool
- */
- public function keep($commit = null)
- {
- return $this->mode('keep', $commit);
- }
-
- /**
- * Resets the current branch head to **$commit**
- *
- * Possibly updates the index (resetting it to the tree of **$commit**) and the working tree depending on **$mode**
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->setRepository('/path/to/repo');
- * $git->reset->mode('hard');
- * ```
- *
- * @param string $mode --<mode>
- * @param string $commit The commit
- *
- * @throws \InvalidArgumentException
- * @return bool
- */
- public function mode($mode, $commit = null)
- {
- if (!in_array($mode, array('soft', 'mixed', 'hard', 'merge', 'keep'))) {
- throw new \InvalidArgumentException('$mode must be one of the following: soft, mixed, hard, merge, keep');
- }
-
- $builder = $this->git->getProcessBuilder()
- ->add('reset')
- ->add('--' . $mode);
-
- if ($commit) {
- $builder->add($commit);
- }
-
- $this->git->run($builder->getProcess());
-
- return true;
- }
-
-} \ No newline at end of file
diff --git a/library/kzykhys/git/src/PHPGit/Command/RmCommand.php b/library/kzykhys/git/src/PHPGit/Command/RmCommand.php
deleted file mode 100644
index d6da31230..000000000
--- a/library/kzykhys/git/src/PHPGit/Command/RmCommand.php
+++ /dev/null
@@ -1,97 +0,0 @@
-<?php
-
-namespace PHPGit\Command;
-
-use PHPGit\Command;
-use Symfony\Component\OptionsResolver\OptionsResolverInterface;
-
-/**
- * Remove files from the working tree and from the index - `git rm`
- *
- * @author Kazuyuki Hayashi
- */
-class RmCommand extends Command
-{
-
- /**
- * Remove files from the working tree and from the index
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->setRepository('/path/to/repo');
- * $git->rm('CHANGELOG-1.0-1.1.txt', ['force' => true]);
- * ```
- *
- * ##### Options
- *
- * - **force** (_boolean_) Override the up-to-date check
- * - **cached** (_boolean_) Unstage and remove paths only from the index
- * - **recursive** (_boolean_) Allow recursive removal when a leading directory name is given
- *
- * @param string|array|\Traversable $file Files to remove. Fileglobs (e.g. *.c) can be given to remove all matching files.
- * @param array $options [optional] An array of options {@see RmCommand::setDefaultOptions}
- *
- * @return bool
- */
- public function __invoke($file, array $options = array())
- {
- $options = $this->resolve($options);
- $builder = $this->git->getProcessBuilder()
- ->add('rm');
-
- $this->addFlags($builder, $options, array('force', 'cached'));
-
- if ($options['recursive']) {
- $builder->add('-r');
- }
-
- if (!is_array($file) && !($file instanceof \Traversable)) {
- $file = array($file);
- }
-
- foreach ($file as $value) {
- $builder->add($value);
- }
-
- $this->git->run($builder->getProcess());
-
- return true;
- }
-
- /**
- * Equivalent to $git->rm($file, ['cached' => true]);
- *
- * ##### Options
- *
- * - **force** (_boolean_) Override the up-to-date check
- * - **recursive** (_boolean_) Allow recursive removal when a leading directory name is given
- *
- * @param string|array|\Traversable $file Files to remove. Fileglobs (e.g. *.c) can be given to remove all matching files.
- * @param array $options [optional] An array of options {@see RmCommand::setDefaultOptions}
- *
- * @return bool
- */
- public function cached($file, array $options = array())
- {
- $options['cached'] = true;
-
- return $this->__invoke($file, $options);
- }
-
- /**
- * {@inheritdoc}
- *
- * - **force** (_boolean_) Override the up-to-date check
- * - **cached** (_boolean_) Unstage and remove paths only from the index
- * - **recursive** (_boolean_) Allow recursive removal when a leading directory name is given
- */
- public function setDefaultOptions(OptionsResolverInterface $resolver)
- {
- $resolver->setDefaults(array(
- 'force' => false,
- 'cached' => false,
- 'recursive' => false
- ));
- }
-
-} \ No newline at end of file
diff --git a/library/kzykhys/git/src/PHPGit/Command/ShortlogCommand.php b/library/kzykhys/git/src/PHPGit/Command/ShortlogCommand.php
deleted file mode 100644
index 23c66e464..000000000
--- a/library/kzykhys/git/src/PHPGit/Command/ShortlogCommand.php
+++ /dev/null
@@ -1,134 +0,0 @@
-<?php
-
-namespace PHPGit\Command;
-
-use PHPGit\Command;
-
-/**
- * Summarize 'git log' output - `git shortlog`
- *
- * @author Kazuyuki Hayashi <hayashi@valnur.net>
- */
-class ShortlogCommand extends Command
-{
-
- /**
- * Summarize 'git log' output
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->setRepository('/path/to/repo');
- * $shortlog = $git->shortlog();
- * ```
- *
- * ##### Output Example
- *
- * ``` php
- * [
- * 'John Doe <john@example.com>' => [
- * 0 => ['commit' => '589de67', 'date' => new \DateTime('2014-02-10 12:56:15 +0300'), 'subject' => 'Update README'],
- * 1 => ['commit' => '589de67', 'date' => new \DateTime('2014-02-15 12:56:15 +0300'), 'subject' => 'Update README'],
- * ],
- * //...
- * ]
- * ```
- * @param string|array|\Traversable $commits [optional] Defaults to HEAD
- *
- * @return array
- */
- public function __invoke($commits = 'HEAD')
- {
- $builder = $this->git->getProcessBuilder()
- ->add('shortlog')
- ->add('--numbered')
- ->add('--format=')
- ->add('-w256,2,2')
- ->add('-e');
-
- if (!is_array($commits) && !($commits instanceof \Traversable)) {
- $commits = array($commits);
- }
-
- foreach ($commits as $commit) {
- $builder->add($commit);
- }
-
- $process = $builder->getProcess();
- $process->setCommandLine(str_replace('--format=', '--format=%h|%ci|%s', $process->getCommandLine()));
-
- $output = $this->git->run($process);
- $lines = $this->split($output);
- $result = array();
- $author = null;
-
- foreach ($lines as $line) {
- if (substr($line, 0, 1) != ' ') {
- if (preg_match('/([^<>]*? <[^<>]+>)/', $line, $matches)) {
- $author = $matches[1];
- $result[$author] = array();
- }
- continue;
- }
-
- list ($commit, $date, $subject) = explode('|', trim($line), 3);
- $result[$author][] = array(
- 'commit' => $commit,
- 'date' => new \DateTime($date),
- 'subject' => $subject
- );
- }
-
- return $result;
- }
-
- /**
- * Suppress commit description and provide a commit count summary only
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->setRepository('/path/to/repo');
- * $shortlog = $git->shortlog->summary();
- * ```
- *
- * ##### Output Example
- *
- * ``` php
- * [
- * 'John Doe <john@example.com>' => 153,
- * //...
- * ]
- * ```
- *
- * @param string $commits [optional] Defaults to HEAD
- *
- * @return array
- */
- public function summary($commits = 'HEAD')
- {
- $builder = $this->git->getProcessBuilder()
- ->add('shortlog')
- ->add('--numbered')
- ->add('--summary')
- ->add('-e');
-
- if (!is_array($commits) && !($commits instanceof \Traversable)) {
- $commits = array($commits);
- }
-
- foreach ($commits as $commit) {
- $builder->add($commit);
- }
-
- $output = $this->git->run($builder->getProcess());
- $lines = $this->split($output);
- $result = array();
-
- foreach ($lines as $line) {
- list ($commits, $author) = explode("\t", trim($line), 2);
- $result[$author] = (int) $commits;
- }
-
- return $result;
- }
-
-} \ No newline at end of file
diff --git a/library/kzykhys/git/src/PHPGit/Command/ShowCommand.php b/library/kzykhys/git/src/PHPGit/Command/ShowCommand.php
deleted file mode 100644
index 866388357..000000000
--- a/library/kzykhys/git/src/PHPGit/Command/ShowCommand.php
+++ /dev/null
@@ -1,70 +0,0 @@
-<?php
-
-namespace PHPGit\Command;
-
-use PHPGit\Command;
-use Symfony\Component\OptionsResolver\OptionsResolverInterface;
-
-/**
- * Show various types of objects - `git show`
- *
- * @author Kazuyuki Hayashi
- */
-class ShowCommand extends Command
-{
-
- /**
- * Shows one or more objects (blobs, trees, tags and commits)
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->setRepository('/path/to/repo');
- * echo $git->show('3ddee587e209661c8265d5bfd0df999836f6dfa2');
- * ```
- *
- * ##### Options
- *
- * - **format** (_string_) Pretty-print the contents of the commit logs in a given format, where <format> can be one of oneline, short, medium, full, fuller, email, raw and format:<string>
- * - **abbrev-commit** (_boolean_) Instead of showing the full 40-byte hexadecimal commit object name, show only a partial prefix
- *
- * @param string $object The names of objects to show
- * @param array $options [optional] An array of options {@see ShowCommand::setDefaultOptions}
- *
- * @return string
- */
- public function __invoke($object, array $options = array())
- {
- $options = $this->resolve($options);
- $builder = $this->git->getProcessBuilder()
- ->add('show');
-
- $this->addFlags($builder, $options, array('abbrev-commit'));
-
- if ($options['format']) {
- $builder->add('--format=' . $options['format']);
- }
-
- $builder->add($object);
-
- return $this->git->run($builder->getProcess());
- }
-
- /**
- * {@inheritdoc}
- *
- * - **format** (_string_) Pretty-print the contents of the commit logs in a given format, where <format> can be one of oneline, short, medium, full, fuller, email, raw and format:<string>
- * - **abbrev-commit** (_boolean_) Instead of showing the full 40-byte hexadecimal commit object name, show only a partial prefix
- */
- public function setDefaultOptions(OptionsResolverInterface $resolver)
- {
- $resolver->setDefaults(array(
- 'format' => null,
- 'abbrev-commit' => false
- ));
-
- $resolver->setAllowedTypes(array(
- 'format' => array('null', 'string'),
- ));
- }
-
-} \ No newline at end of file
diff --git a/library/kzykhys/git/src/PHPGit/Command/StashCommand.php b/library/kzykhys/git/src/PHPGit/Command/StashCommand.php
deleted file mode 100644
index 52dceaa6b..000000000
--- a/library/kzykhys/git/src/PHPGit/Command/StashCommand.php
+++ /dev/null
@@ -1,309 +0,0 @@
-<?php
-
-namespace PHPGit\Command;
-
-use PHPGit\Command;
-
-/**
- * Stash the changes in a dirty working directory away - `git stash`
- *
- * @author Kazuyuki Hayashi
- */
-class StashCommand extends Command
-{
-
- /**
- * Save your local modifications to a new stash, and run git reset --hard to revert them
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->setRepository('/path/to/repo');
- * $git->stash();
- * ```
- *
- * @return bool
- */
- public function __invoke()
- {
- $builder = $this->git->getProcessBuilder()
- ->add('stash');
-
- $this->git->run($builder->getProcess());
-
- return true;
- }
-
- /**
- * Save your local modifications to a new stash, and run git reset --hard to revert them.
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->setRepository('/path/to/repo');
- * $git->stash->save('My stash');
- * ```
- *
- * @param string $message [optional] The description along with the stashed state
- * @param array $options [optional] An array of options {@see StashCommand::setDefaultOptions}
- *
- * @return bool
- */
- public function save($message = null, array $options = array())
- {
- $options = $this->resolve($options);
- $builder = $this->git->getProcessBuilder()
- ->add('stash')
- ->add('save');
-
- $builder->add($message);
-
- $this->git->run($builder->getProcess());
-
- return true;
- }
-
- /**
- * Returns the stashes that you currently have
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->setRepository('/path/to/repo');
- * $stashes = $git->stash->lists();
- * ```
- *
- * ##### Output Example
- *
- * ``` php
- * [
- * 0 => ['branch' => 'master', 'message' => '0e2f473 Fixes README.md'],
- * 1 => ['branch' => 'master', 'message' => 'ce1ddde Initial commit'],
- * ]
- * ```
- *
- * @param array $options [optional] An array of options {@see StashCommand::setDefaultOptions}
- *
- * @return array
- */
- public function lists(array $options = array())
- {
- $builder = $this->git->getProcessBuilder()
- ->add('stash')
- ->add('list');
-
- $output = $this->git->run($builder->getProcess());
- $lines = $this->split($output);
- $list = array();
-
- foreach ($lines as $line) {
- if (preg_match('/stash@{(\d+)}:.* [Oo]n (.*): (.*)/', $line, $matches)) {
- $list[$matches[1]] = array(
- 'branch' => $matches[2],
- 'message' => $matches[3]
- );
- }
- }
-
- return $list;
- }
-
- /**
- * Show the changes recorded in the stash as a diff between the stashed state and its original parent
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->setRepository('/path/to/repo');
- * echo $git->stash->show('stash@{0}');
- * ```
- *
- * ##### Output Example
- *
- * ```
- * REAMDE.md | 2 +-
- * 1 files changed, 1 insertions(+), 1 deletions(-)
- * ```
- *
- * @param string $stash The stash to show
- *
- * @return string
- */
- public function show($stash = null)
- {
- $builder = $this->git->getProcessBuilder()
- ->add('stash')
- ->add('show');
-
- if ($stash) {
- $builder->add($stash);
- }
-
- return $this->git->run($builder->getProcess());
- }
-
- /**
- * Remove a single stashed state from the stash list
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->setRepository('/path/to/repo');
- * $git->stash->drop('stash@{0}');
- * ```
- *
- * @param string $stash The stash to drop
- *
- * @return mixed
- */
- public function drop($stash = null)
- {
- $builder = $this->git->getProcessBuilder()
- ->add('stash')
- ->add('drop');
-
- if ($stash) {
- $builder->add($stash);
- }
-
- return $this->git->run($builder->getProcess());
- }
-
- /**
- * Remove a single stashed state from the stash list and apply it on top of the current working tree state
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->setRepository('/path/to/repo');
- * $git->stash->pop('stash@{0}');
- * ```
- *
- * @param string $stash The stash to pop
- * @param array $options [optional] An array of options {@see StashCommand::setDefaultOptions}
- *
- * @return bool
- */
- public function pop($stash = null, array $options = array())
- {
- $options = $this->resolve($options);
- $builder = $this->git->getProcessBuilder()
- ->add('stash')
- ->add('pop');
-
- $this->addFlags($builder, $options, array('index'));
-
- if ($stash) {
- $builder->add($stash);
- }
-
- $this->git->run($builder->getProcess());
-
- return true;
- }
-
- /**
- * Like pop, but do not remove the state from the stash list
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->setRepository('/path/to/repo');
- * $git->stash->apply('stash@{0}');
- * ```
- *
- * @param string $stash The stash to apply
- * @param array $options [optional] An array of options {@see StashCommand::setDefaultOptions}
- *
- * @return bool
- */
- public function apply($stash = null, array $options = array())
- {
- $options = $this->resolve($options);
- $builder = $this->git->getProcessBuilder()
- ->add('stash')
- ->add('apply');
-
- $this->addFlags($builder, $options, array('index'));
-
- if ($stash) {
- $builder->add($stash);
- }
-
- $this->git->run($builder->getProcess());
-
- return true;
- }
-
- /**
- * Creates and checks out a new branch named <branchname> starting from the commit at which the <stash> was originally created, applies the changes recorded in <stash> to the new working tree and index
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->setRepository('/path/to/repo');
- * $git->stash->branch('hotfix', 'stash@{0}');
- * ```
- *
- * @param string $name The name of the branch
- * @param string $stash The stash
- *
- * @return bool
- */
- public function branch($name, $stash = null)
- {
- $builder = $this->git->getProcessBuilder()
- ->add('stash')
- ->add('branch')
- ->add($name);
-
- if ($stash) {
- $builder->add($stash);
- }
-
- $this->git->run($builder->getProcess());
-
- return true;
- }
-
- /**
- * Remove all the stashed states
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->setRepository('/path/to/repo');
- * $git->stash->clear();
- * ```
- *
- * @return bool
- */
- public function clear()
- {
- $builder = $this->git->getProcessBuilder()
- ->add('stash')
- ->add('clear');
-
- $this->git->run($builder->getProcess());
-
- return true;
- }
-
- /**
- * Create a stash (which is a regular commit object) and return its object name, without storing it anywhere in the ref namespace
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->setRepository('/path/to/repo');
- * $commit = $git->stash->create();
- * ```
- *
- * ##### Output Example
- *
- * ```
- * 877316ea6f95c43b7ccc2c2a362eeedfa78b597d
- * ```
- *
- * @return string
- */
- public function create()
- {
- $builder = $this->git->getProcessBuilder()
- ->add('stash')
- ->add('create');
-
- return $this->git->run($builder->getProcess());
- }
-
-} \ No newline at end of file
diff --git a/library/kzykhys/git/src/PHPGit/Command/StatusCommand.php b/library/kzykhys/git/src/PHPGit/Command/StatusCommand.php
deleted file mode 100644
index c2bc983fe..000000000
--- a/library/kzykhys/git/src/PHPGit/Command/StatusCommand.php
+++ /dev/null
@@ -1,147 +0,0 @@
-<?php
-
-namespace PHPGit\Command;
-
-use PHPGit\Command;
-use Symfony\Component\OptionsResolver\OptionsResolverInterface;
-
-/**
- * Show the working tree status - `git status`
- *
- * = unmodified
- * M = modified
- * A = added
- * D = deleted
- * R = renamed
- * C = copied
- * U = updated but unmerged
- *
- * X Y Meaning
- * -------------------------------------------------
- * [MD] not updated
- * M [ MD] updated in index
- * A [ MD] added to index
- * D [ M] deleted from index
- * R [ MD] renamed in index
- * C [ MD] copied in index
- * [MARC] index and work tree matches
- * [ MARC] M work tree changed since index
- * [ MARC] D deleted in work tree
- * -------------------------------------------------
- * D D unmerged, both deleted
- * A U unmerged, added by us
- * U D unmerged, deleted by them
- * U A unmerged, added by them
- * D U unmerged, deleted by us
- * A A unmerged, both added
- * U U unmerged, both modified
- * -------------------------------------------------
- * ? ? untracked
- * ! ! ignored
- * -------------------------------------------------
- *
- * @author Kazuyuki Hayashi <hayashi@valnur.net>
- */
-class StatusCommand extends Command
-{
-
- const UNMODIFIED = ' ';
- const MODIFIED = 'M';
- const ADDED = 'A';
- const DELETED = 'D';
- const RENAMED = 'R';
- const COPIED = 'C';
- const UPDATED_BUT_UNMERGED = 'U';
- const UNTRACKED = '?';
- const IGNORED = '!';
-
- /**
- * Returns the working tree status
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->setRepository('/path/to/repo');
- * $status = $git->status();
- * ```
- *
- * ##### Constants
- *
- * - StatusCommand::UNMODIFIED [=' '] unmodified
- * - StatusCommand::MODIFIED [='M'] modified
- * - StatusCommand::ADDED [='A'] added
- * - StatusCommand::DELETED [='D'] deleted
- * - StatusCommand::RENAMED [='R'] renamed
- * - StatusCommand::COPIED [='C'] copied
- * - StatusCommand::UPDATED_BUT_UNMERGED [='U'] updated but unmerged
- * - StatusCommand::UNTRACKED [='?'] untracked
- * - StatusCommand::IGNORED [='!'] ignored
- *
- * ##### Output Example
- *
- * ``` php
- * [
- * 'branch' => 'master',
- * 'changes' => [
- * ['file' => 'item1.txt', 'index' => 'A', 'work_tree' => 'M'],
- * ['file' => 'item2.txt', 'index' => 'A', 'work_tree' => ' '],
- * ['file' => 'item3.txt', 'index' => '?', 'work_tree' => '?'],
- * ]
- * ]
- * ```
- *
- * ##### Options
- *
- * - **ignored** (_boolean_) Show ignored files as well
- *
- * @param array $options [optional] An array of options {@see StatusCommand::setDefaultOptions}
- *
- * @return mixed
- */
- public function __invoke(array $options = array())
- {
- $options = $this->resolve($options);
- $builder = $this->git->getProcessBuilder()
- ->add('status')
- ->add('--porcelain')->add('-s')->add('-b')->add('--null');
-
- $this->addFlags($builder, $options);
-
- $process = $builder->getProcess();
- $result = array('branch' => null, 'changes' => array());
- $output = $this->git->run($process);
-
- list($branch, $changes) = preg_split('/(\0|\n)/', $output, 2);
- $lines = $this->split($changes, true);
-
- if (substr($branch, -11) == '(no branch)') {
- $result['branch'] = null;
- } elseif (preg_match('/([^ ]*)\.\.\..*?\[.*?\]$/', $branch, $matches)) {
- $result['branch'] = $matches[1];
- } elseif (preg_match('/ ([^ ]*)$/', $branch, $matches)) {
- $result['branch'] = $matches[1];
- }
-
- foreach ($lines as $line) {
- $result['changes'][] = array(
- 'file' => substr($line, 3),
- 'index' => substr($line, 0, 1),
- 'work_tree' => substr($line, 1, 1)
- );
- }
-
- return $result;
- }
-
- /**
- * {@inheritdoc}
- *
- * - **ignored** (_boolean_) Show ignored files as well
- */
- public function setDefaultOptions(OptionsResolverInterface $resolver)
- {
- $resolver->setDefaults(array(
- 'ignored' => false
- ));
- }
-
-} \ No newline at end of file
diff --git a/library/kzykhys/git/src/PHPGit/Command/TagCommand.php b/library/kzykhys/git/src/PHPGit/Command/TagCommand.php
deleted file mode 100644
index 197d3e887..000000000
--- a/library/kzykhys/git/src/PHPGit/Command/TagCommand.php
+++ /dev/null
@@ -1,156 +0,0 @@
-<?php
-
-namespace PHPGit\Command;
-
-use PHPGit\Command;
-use PHPGit\Exception\GitException;
-use Symfony\Component\OptionsResolver\OptionsResolverInterface;
-
-/**
- * Create, list, delete or verify a tag object signed with GPG - `git tag`
- *
- * @author Kazuyuki Hayashi
- */
-class TagCommand extends Command
-{
-
- /**
- * Returns an array of tags
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->clone('https://github.com/kzykhys/PHPGit.git', '/path/to/repo');
- * $git->setRepository('/path/to/repo');
- * $tags = $git->tag();
- * ```
- *
- * ##### Output Example
- *
- * ```
- * ['v1.0.0', 'v1.0.1', 'v1.0.2']
- * ```
- *
- * @throws GitException
- * @return array
- */
- public function __invoke()
- {
- $builder = $this->git->getProcessBuilder()
- ->add('tag');
-
- $output = $this->git->run($builder->getProcess());
-
- return $this->split($output);
- }
-
- /**
- * Creates a tag object
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->setRepository('/path/to/repo');
- * $git->tag->create('v1.0.0');
- * ```
- *
- * ##### Options
- *
- * - **annotate** (_boolean_) Make an unsigned, annotated tag object
- * - **sign** (_boolean_) Make a GPG-signed tag, using the default e-mail address’s key
- * - **force** (_boolean_) Replace an existing tag with the given name (instead of failing)
- *
- * @param string $tag The name of the tag to create
- * @param string $commit The SHA1 object name of the commit object
- * @param array $options [optional] An array of options {@see TagCommand::setDefaultOptions}
- *
- * @throws GitException
- * @return bool
- */
- public function create($tag, $commit = null, array $options = array())
- {
- $options = $this->resolve($options);
- $builder = $this->git->getProcessBuilder()
- ->add('tag')
- ->add($tag);
-
- $this->addFlags($builder, $options, array('annotate', 'sign', 'force'));
-
- if ($commit) {
- $builder->add($commit);
- }
-
- $this->git->run($builder->getProcess());
-
- return true;
- }
-
- /**
- * Delete existing tags with the given names
- *
- * @param string|array|\Traversable $tag The name of the tag to create
- *
- * @throws GitException
- * @return bool
- */
- public function delete($tag)
- {
- $builder = $this->git->getProcessBuilder()
- ->add('tag')
- ->add('-d');
-
- if (!is_array($tag) && !($tag instanceof \Traversable)) {
- $tag = array($tag);
- }
-
- foreach ($tag as $value) {
- $builder->add($value);
- }
-
- $this->git->run($builder->getProcess());
-
- return true;
- }
-
- /**
- * Verify the gpg signature of the given tag names
- *
- * @param string|array|\Traversable $tag The name of the tag to create
- *
- * @throws GitException
- * @return bool
- */
- public function verify($tag)
- {
- $builder = $this->git->getProcessBuilder()
- ->add('tag')
- ->add('-v');
-
- if (!is_array($tag) && !($tag instanceof \Traversable)) {
- $tag = array($tag);
- }
-
- foreach ($tag as $value) {
- $builder->add($value);
- }
-
- $this->git->run($builder->getProcess());
-
- return true;
- }
-
- /**
- * {@inheritdoc}
- *
- * - **annotate** (_boolean_) Make an unsigned, annotated tag object
- * - **sign** (_boolean_) Make a GPG-signed tag, using the default e-mail address’s key
- * - **force** (_boolean_) Replace an existing tag with the given name (instead of failing)
- */
- public function setDefaultOptions(OptionsResolverInterface $resolver)
- {
- $resolver->setDefaults(array(
- 'annotate' => false,
- 'sign' => false,
- 'force' => false,
- ));
- }
-
-} \ No newline at end of file
diff --git a/library/kzykhys/git/src/PHPGit/Command/TreeCommand.php b/library/kzykhys/git/src/PHPGit/Command/TreeCommand.php
deleted file mode 100644
index ea1040a6a..000000000
--- a/library/kzykhys/git/src/PHPGit/Command/TreeCommand.php
+++ /dev/null
@@ -1,70 +0,0 @@
-<?php
-
-namespace PHPGit\Command;
-
-use PHPGit\Command;
-
-/**
- * List the contents of a tree object - `git ls-tree`
- *
- * @author Kazuyuki Hayashi <hayashi@valnur.net>
- */
-class TreeCommand extends Command
-{
-
- /**
- * Returns the contents of a tree object
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->clone('https://github.com/kzykhys/PHPGit.git', '/path/to/repo');
- * $git->setRepository('/path/to/repo');
- * $tree = $git->tree('master');
- * ```
- *
- * ##### Output Example
- *
- * ``` php
- * [
- * ['mode' => '100644', 'type' => 'blob', 'hash' => '1f100ce9855b66111d34b9807e47a73a9e7359f3', 'file' => '.gitignore', 'sort' => '2:.gitignore'],
- * ['mode' => '100644', 'type' => 'blob', 'hash' => 'e0bfe494537037451b09c32636c8c2c9795c05c0', 'file' => '.travis.yml', 'sort' => '2:.travis.yml'],
- * ['mode' => '040000', 'type' => 'tree', 'hash' => '8d5438e79f77cd72de80c49a413f4edde1f3e291', 'file' => 'bin', 'sort' => '1:.bin'],
- * ]
- * ```
- *
- * @param string $branch The commit
- * @param string $path The path
- *
- * @return array
- */
- public function __invoke($branch = 'master', $path = '')
- {
- $objects = array();
- $builder = $this->git->getProcessBuilder();
- $process = $builder->add('ls-tree')->add($branch . ':' . $path)->getProcess();
- $output = $this->git->run($process);
- $lines = $this->split($output);
-
- $types = array(
- 'submodule' => 0,
- 'tree' => 1,
- 'blob' => 2
- );
-
- foreach ($lines as $line) {
- list($meta, $file) = explode("\t", $line);
- list($mode, $type, $hash) = explode(" ", $meta);
-
- $objects[] = array(
- 'sort' => sprintf('%d:%s', $types[$type], $file),
- 'mode' => $mode,
- 'type' => $type,
- 'hash' => $hash,
- 'file' => $file
- );
- }
-
- return $objects;
- }
-
-} \ No newline at end of file
diff --git a/library/kzykhys/git/src/PHPGit/Exception/GitException.php b/library/kzykhys/git/src/PHPGit/Exception/GitException.php
deleted file mode 100644
index f5901010c..000000000
--- a/library/kzykhys/git/src/PHPGit/Exception/GitException.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-
-namespace PHPGit\Exception;
-
-/**
- * @author Kazuyuki Hayashi <hayashi@valnur.net>
- */
-class GitException extends \Exception
-{
-
- /**
- * @var string
- */
- protected $commandLine;
-
- /**
- * Construct the exception. Note: The message is NOT binary safe.
- *
- * @param string $message [optional] The Exception message to throw.
- * @param int $code [optional] The Exception code.
- * @param string $commandLine [optional] Command-line
- * @param \Exception $previous [optional] The previous exception used for the exception chaining. Since 5.3.0
- */
- public function __construct($message = "", $code = 0, $commandLine = null, \Exception $previous = null)
- {
- parent::__construct($message, $code, $previous);
-
- $this->commandLine = $commandLine;
- }
-
- /**
- * @return null|string
- */
- public function getCommandLine()
- {
- return $this->commandLine;
- }
-
-} \ No newline at end of file
diff --git a/library/kzykhys/git/src/PHPGit/Git.php b/library/kzykhys/git/src/PHPGit/Git.php
deleted file mode 100644
index f952d6f1f..000000000
--- a/library/kzykhys/git/src/PHPGit/Git.php
+++ /dev/null
@@ -1,308 +0,0 @@
-<?php
-
-namespace PHPGit;
-
-use PHPGit\Command;
-use PHPGit\Exception\GitException;
-use Symfony\Component\Process\Process;
-use Symfony\Component\Process\ProcessBuilder;
-
-/**
- * PHPGit - A Git wrapper for PHP5.3+
- * ==================================
- *
- * [![Latest Unstable Version](https://poser.pugx.org/kzykhys/git/v/unstable.png)](https://packagist.org/packages/kzykhys/git)
- * [![Build Status](https://travis-ci.org/kzykhys/PHPGit.png?branch=master)](https://travis-ci.org/kzykhys/PHPGit)
- * [![Coverage Status](https://coveralls.io/repos/kzykhys/PHPGit/badge.png)](https://coveralls.io/r/kzykhys/PHPGit)
- * [![SensioLabsInsight](https://insight.sensiolabs.com/projects/04f10b57-a113-47ad-8dda-9a6dacbb079f/mini.png)](https://insight.sensiolabs.com/projects/04f10b57-a113-47ad-8dda-9a6dacbb079f)
- *
- * Requirements
- * ------------
- *
- * * PHP5.3
- * * Git
- *
- * Installation
- * ------------
- *
- * Update your composer.json and run `composer update`
- *
- * ``` json
- * {
- * "require": {
- * "kzykhys/git": "dev-master"
- * }
- * }
- * ```
- *
- * Basic Usage
- * -----------
- *
- * ``` php
- * <?php
- *
- * require __DIR__ . '/vendor/autoload.php';
- *
- * $git = new PHPGit\Git();
- * $git->clone('https://github.com/kzykhys/PHPGit.git', '/path/to/repo');
- * $git->setRepository('/path/to/repo');
- * $git->remote->add('production', 'git://example.com/your/repo.git');
- * $git->add('README.md');
- * $git->commit('Adds README.md');
- * $git->checkout('release');
- * $git->merge('master');
- * $git->push();
- * $git->push('production', 'release');
- * $git->tag->create('v1.0.1', 'release');
- *
- * foreach ($git->tree('release') as $object) {
- * if ($object['type'] == 'blob') {
- * echo $git->show($object['file']);
- * }
- * }
- * ```
- *
- * @author Kazuyuki Hayashi <hayashi@valnur.net>
- * @license MIT
- *
- * @method add($file, $options = array()) Add file contents to the index
- * @method archive($file, $tree = null, $path = null, $options = array()) Create an archive of files from a named tree
- * @method branch($options = array()) List both remote-tracking branches and local branches
- * @method checkout($branch, $options = array()) Checkout a branch or paths to the working tree
- * @method clone($repository, $path = null, $options = array()) Clone a repository into a new directory
- * @method commit($message = '', $options = array()) Record changes to the repository
- * @method config($options = array()) List all variables set in config file
- * @method describe($committish = null, $options = array()) Returns the most recent tag that is reachable from a commit
- * @method fetch($repository, $refspec = null, $options = array()) Fetches named heads or tags from one or more other repositories
- * @method init($path, $options = array()) Create an empty git repository or reinitialize an existing one
- * @method log($path = null, $options = array()) Returns the commit logs
- * @method merge($commit, $message = null, $options = array()) Incorporates changes from the named commits into the current branch
- * @method mv($source, $destination, $options = array()) Move or rename a file, a directory, or a symlink
- * @method pull($repository = null, $refspec = null, $options = array()) Fetch from and merge with another repository or a local branch
- * @method push($repository = null, $refspec = null, $options = array()) Update remote refs along with associated objects
- * @method rebase($upstream = null, $branch = null, $options = array()) Forward-port local commits to the updated upstream head
- * @method remote() Returns an array of existing remotes
- * @method reset($commit = null, $paths = array()) Resets the index entries for all <paths> to their state at <commit>
- * @method rm($file, $options = array()) Remove files from the working tree and from the index
- * @method shortlog($commits = array()) Summarize 'git log' output
- * @method show($object, $options = array()) Shows one or more objects (blobs, trees, tags and commits)
- * @method stash() Save your local modifications to a new stash, and run git reset --hard to revert them
- * @method status($options = array()) Show the working tree status
- * @method tag() Returns an array of tags
- * @method tree($branch = 'master', $path = '') List the contents of a tree object
- */
-class Git
-{
-
- /** @var Command\AddCommand */
- public $add;
-
- /** @var Command\ArchiveCommand */
- public $archive;
-
- /** @var Command\BranchCommand */
- public $branch;
-
- /** @var Command\CatCommand */
- public $cat;
-
- /** @var Command\CheckoutCommand */
- public $checkout;
-
- /** @var Command\CloneCommand */
- public $clone;
-
- /** @var Command\CommitCommand */
- public $commit;
-
- /** @var Command\ConfigCommand */
- public $config;
-
- /** @var Command\DescribeCommand */
- public $describe;
-
- // Not implemented yet
- public $diff;
-
- /** @var Command\FetchCommand */
- public $fetch;
-
- /** @var Command\InitCommand */
- public $init;
-
- /** @var Command\LogCommand */
- public $log;
-
- /** @var Command\MergeCommand */
- public $merge;
-
- /** @var Command\MvCommand */
- public $mv;
-
- /** @var Command\PullCommand */
- public $pull;
-
- /** @var Command\PushCommand */
- public $push;
-
- /** @var Command\RebaseCommand */
- public $rebase;
-
- /** @var Command\RemoteCommand */
- public $remote;
-
- /** @var Command\ResetCommand */
- public $reset;
-
- /** @var Command\RmCommand */
- public $rm;
-
- /** @var Command\ShortlogCommand */
- public $shortlog;
-
- /** @var Command\ShowCommand */
- public $show;
-
- /** @var Command\StashCommand */
- public $stash;
-
- /** @var Command\StatusCommand */
- public $status;
-
- /** @var Command\TagCommand */
- public $tag;
-
- /** @var Command\TreeCommand */
- public $tree;
-
- /** @var string */
- private $bin = 'git';
-
- /** @var string */
- private $directory = '.';
-
- /**
- * Initializes sub-commands
- */
- public function __construct()
- {
- $this->add = new Command\AddCommand($this);
- $this->archive = new Command\ArchiveCommand($this);
- $this->branch = new Command\BranchCommand($this);
- $this->cat = new Command\CatCommand($this);
- $this->checkout = new Command\CheckoutCommand($this);
- $this->clone = new Command\CloneCommand($this);
- $this->commit = new Command\CommitCommand($this);
- $this->config = new Command\ConfigCommand($this);
- $this->describe = new Command\DescribeCommand($this);
- $this->fetch = new Command\FetchCommand($this);
- $this->init = new Command\InitCommand($this);
- $this->log = new Command\LogCommand($this);
- $this->merge = new Command\MergeCommand($this);
- $this->mv = new Command\MvCommand($this);
- $this->pull = new Command\PullCommand($this);
- $this->push = new Command\PushCommand($this);
- $this->rebase = new Command\RebaseCommand($this);
- $this->remote = new Command\RemoteCommand($this);
- $this->reset = new Command\ResetCommand($this);
- $this->rm = new Command\RmCommand($this);
- $this->shortlog = new Command\ShortlogCommand($this);
- $this->show = new Command\ShowCommand($this);
- $this->stash = new Command\StashCommand($this);
- $this->status = new Command\StatusCommand($this);
- $this->tag = new Command\TagCommand($this);
- $this->tree = new Command\TreeCommand($this);
- }
-
- /**
- * Calls sub-commands
- *
- * @param string $name The name of a property
- * @param array $arguments An array of arguments
- *
- * @throws \BadMethodCallException
- * @return mixed
- */
- public function __call($name, $arguments)
- {
- if (isset($this->{$name}) && is_callable($this->{$name})) {
- return call_user_func_array($this->{$name}, $arguments);
- }
-
- throw new \BadMethodCallException(sprintf('Call to undefined method PHPGit\Git::%s()', $name));
- }
-
- /**
- * Sets the Git binary path
- *
- * @param string $bin
- *
- * @return Git
- */
- public function setBin($bin)
- {
- $this->bin = $bin;
-
- return $this;
- }
-
- /**
- * Sets the Git repository path
- *
- * @var string $directory
- *
- * @return Git
- */
- public function setRepository($directory)
- {
- $this->directory = $directory;
-
- return $this;
- }
-
- /**
- * Returns version number
- *
- * @return mixed
- */
- public function getVersion()
- {
- $process = $this->getProcessBuilder()
- ->add('--version')
- ->getProcess();
-
- return $this->run($process);
- }
-
- /**
- * Returns an instance of ProcessBuilder
- *
- * @return ProcessBuilder
- */
- public function getProcessBuilder()
- {
- return ProcessBuilder::create()
- ->setPrefix($this->bin)
- ->setWorkingDirectory($this->directory);
- }
-
- /**
- * Executes a process
- *
- * @param Process $process The process to run
- *
- * @throws Exception\GitException
- * @return mixed
- */
- public function run(Process $process)
- {
- $process->run();
-
- if (!$process->isSuccessful()) {
- throw new GitException($process->getErrorOutput(), $process->getExitCode(), $process->getCommandLine());
- }
-
- return $process->getOutput();
- }
-
-} \ No newline at end of file