gaiththewolf/git-manager

此包可以在项目上执行和解析git命令,它可以提供一个方法,通过客户端界面点击按钮来更新laravel应用程序,而无需知道git命令

v0.0.4 2023-06-14 12:55 UTC

This package is auto-updated.

Last update: 2024-09-08 09:44:22 UTC


README

Latest Version on Packagist Total Downloads GitHub Actions

此包可以在项目上执行和解析git命令,它可以提供一个方法,通过客户端界面点击按钮来更新laravel应用程序,而无需知道git命令

需求

  • Laravel 9.x 至 10.x
  • PHP >= 8.0

安装

您可以通过composer安装此包

composer require gaiththewolf/git-manager

功能

  • git版本
  • 仓库最后更新
  • 检查仓库更新(新提交)
  • 拉取更改
  • 运行命令,如(composer,php artisan,...)

用法

namespace App\Http\Controllers;

use GitManager;

class UpdaterController extends Controller
{

    public function __construct()
    {
        // init and set git working directory
        GitManager::init(base_path());
    }

    public function index()
    {
        $version = GitManager::version(); // get string of installed git version
        $version = trim(str_replace("git version", "",$version));

        $lastUpdate = trim(GitManager::lastUpdate()); // get string of last update datetime

        $status = GitManager::status(); // get Object git status include command `git fetch` before
        //$status = GitManager::status("ssh password");

        $logs = GitManager::log(); // get Object Last 10 logs

        return view('update.index', compact('version', 'lastUpdate', 'status', 'logs'));
    }

    public function pull()
    {
        $output = GitManager::pull(); // get Object of pull changes if exist
        //$output = GitManager::pull("ssh password");
        if ($output["is_up_to_date"]) {
            return redirect()->route('update.index');
        }
        return redirect()->route('update.index')->with("pullData", $output);
    }

}

数据结构

GitManager::status() 的数据结构。

Gaiththewolf\GitManager\Data\GitStatus {#1512 ▼ // app\Http\Controllers\UpdaterController.php:37
  +branch: "main"
  +isUpToDate: true
  +isPush: false
  +isPull: false
}

GitManager::log() 的数据结构。

Illuminate\Support\Collection {#1512 ▼ // app\Http\Controllers\UpdaterController.php:37
  #items: array:4 [▶
    0 => Gaiththewolf\GitManager\Data\GitLog {#763 ▶
      +hash: "1c1efa505bb1c15f6bc40747f3d73"
      +merge: array:2 [▶
        0 => "d0f83"
        1 => "5f047"
      ]
      +author: array:2 [▶
        "full_name" => "User 1"
        "email" => "user1@mail.local"
      ]
      +date: "Tue Jun 13 14:30:35 2023 +0100"
      +message: "Merge branch 'main' of github.com:gaiththewolf/projectXXX"
    }
    1 => Gaiththewolf\GitManager\Data\GitLog {#778 ▶
      +hash: "d0f6283eebb28d4fbc9231d3e4d6e2720cd9"
      +merge: []
      +author: array:2 [▶
        "full_name" => "User 1"
        "email" => "user1@mail.local"
      ]
      +date: "Tue Jun 13 14:30:27 2023 +0100"
      +message: "fix"
    }
    2 => Gaiththewolf\GitManager\Data\GitLog {#1579 ▶
      +hash: "5f23047507e41a429ca2a7adadcfd127"
      +merge: []
      +author: array:2 [▶
        "full_name" => "User 2"
        "email" => "user2@mail.local"
      ]
      +date: "Tue Jun 13 14:29:50 2023 +0100"
      +message: "Update README.md"
    }
    3 => Gaiththewolf\GitManager\Data\GitLog {#780 ▶
      +hash: "5160f64d7ad207322cde61bd965c2ad3a"
      +merge: []
      +author: array:2 [▶
        "full_name" => "User 1"
        "email" => "user1@mail.local"
      ]
      +date: "Tue Jun 13 14:07:35 2023 +0100"
      +message: "Update README.md"
    }
  ]
  #escapeWhenCastingToString: false
}

GitManager::pull() 的数据结构。

Gaiththewolf\GitManager\Data\GitPull {#1512 ▼ // app\Http\Controllers\UpdaterController.php:37
  +files: array:1 [▶
    0 => " README.md"
  ]
  +isUpToDate: false
  +changed: "1"
  +insertion: "2"
  +deletion: "0"
}

测试

composer test

变更日志

请参阅 CHANGELOG 了解最近更改的更多信息。

贡献

请参阅 CONTRIBUTING 了解详细信息。

安全

如果您发现任何安全相关的问题,请发送电子邮件至 gaiththewolf@gmail.com 而不是使用问题跟踪器。

致谢

许可

MIT 许可证 (MIT)。请参阅 许可文件 了解更多信息。