Μετάβαση στο περιεχόμενο

Pitmaster

Git σε PHP: ανάγνωση και εγγραφή αποθετηρίων, diff, merge και επικοινωνία μέσω έξυπνου HTTP χωρίς κλήση του git μέσω shell.

Τερματικό
composer require pitmaster/pitmaster

Τελευταία έκδοση v0.2.11 MIT PHP 8.2+

Στην πράξη

Ανοίξτε ένα αποθετήριο και έπειτα διαβάστε και γράψτε σε αυτό με κλήσεις μεθόδων ή από το shell.

Ανάγνωση αποθετηρίου από το PHP

Το Pitmaster::open() εντοπίζει τον κατάλογο .git και επιστρέφει ένα handle αποθετηρίου. Κάθε εγγραφή κατάστασης έχει ξεχωριστή κατάσταση για το index και το working tree.

Από το shell, το ./vendor/bin/pitmaster αντιστοιχεί σε ένα υποσύνολο εντολών git και λειτουργεί από εγκατάσταση Composer, αφού το 0.2.11.

PHP
use Pitmaster\Pitmaster;

$repo = Pitmaster::open('/path/to/project');

// Read the current HEAD commit
$head = $repo->head();
echo $head->message;

// List branches
foreach ($repo->branches() as $branch) {
    echo $branch . "\n";
}

// Check status
foreach ($repo->status() as $entry) {
    echo "{$entry->path}: {$entry->index->value}{$entry->worktree->value}\n";
}

Χωρίς δυαδικό αρχείο git

Οι βασικές λειτουργίες εκτελούνται σε PHP 8.2+ χωρίς δυαδικό αρχείο git ή FFI. Τα hooks και η εναλλακτική λύση SSH εκκινούν διεργασίες, εκτός αν περάσετε ['hooks' => false] ή processFreeOptions().

Ανάγνωση & εγγραφή

Loose αντικείμενα, αρχεία pack με επίλυση delta, το index, refs και διαμόρφωση. Το git διαβάζει όσα γράφει το Pitmaster για τις εκδόσεις index 2 και 3 και τα loose refs.

Diff & merge

Diff Myers, patience και histogram με εντοπισμό μετονομασιών. Merge τριών κατευθύνσεων με δείκτες σύγκρουσης.

Πρωτόκολλο δικτύου

Κλωνοποίηση, λήψη και αποστολή μέσω έξυπνου HTTP ή SSH, με εναλλακτική λύση dumb HTTP για κλωνοποίηση και λήψη. Το πρωτόκολλο v2 είναι διαθέσιμο μέσω των πελατών χαμηλότερου επιπέδου.

Λειτουργίες Git

προσθήκη, καταχώριση, κατάσταση, διαφορές, συγχώνευση, εναλλαγή, επαναφορά, προσωρινή αποθήκευση, επιλεκτική εφαρμογή, αναίρεση, αναδιάταξη, απόδοση ευθύνης, αναζήτηση.

CLI

22 εντολές τύπου git, μεταξύ των οποίων init, log, status, diff, add, commit, branch, merge, stash, blame και grep. Η κλωνοποίηση, η λήψη και η αποστολή είναι διαθέσιμες μόνο μέσω της βιβλιοθήκης.

Δοκιμασμένο με Oracle

Τα 761 σενάρια συγκρίνουν αποτελέσματα με έξοδο που καταγράφηκε από πραγματικό git και εκτελούνται στο CI· τα 605 προέρχονται από τις σουίτες δοκιμών των git, libgit2, go-git, isomorphic-git, dulwich και JGit.

Πλήρης αναζήτηση

Blame, grep, bisect, notes και φίλτρο διαδρομής log, χωρίς κλήση του git μέσω shell.

Γιατί Pitmaster

Λειτουργεί χωρίς εγκατάσταση git

Τα commits, τα diff, η κατάσταση και το ιστορικό υπολογίζονται σε PHP, ώστε τα containers και οι hosts χωρίς δυαδικό αρχείο git να μπορούν και πάλι να εργάζονται με αποθετήρια.

Handles χωρίς διεργασίες

Το Pitmaster::processFreeOptions() απενεργοποιεί τα hooks, τα hooks fsmonitor, την κλωνοποίηση, τη λήψη, την αποστολή και τη μεταφορά διεργασιών SSH. Οι τοπικές αναγνώσεις και εγγραφές συνεχίζουν να λειτουργούν.

Ελεγμένο έναντι του git

Οι δοκιμές ενσωμάτωσης εκτελούνται με το δυαδικό αρχείο git, και ο πίνακας υποστήριξης μετρά 146 από τα 146 χαρακτηριστικά εντός πεδίου ως επαληθευμένα με oracle στο δηλωμένο εύρος ισοτιμίας.

SHA-1 και SHA-256

Δημιουργήστε ένα αποθετήριο SHA-256 με Pitmaster::init($path, 'sha256') ή εκτελέστε init --object-format=sha256. Τα αρχεία pack διαβάζονται και γράφονται· τα αρχεία commit-graph, multi-pack index και reftable μπορούν να διαβαστούν.

Σε σύγκριση με

Άλλοι τρόποι εργασίας με αποθετήρια Git από PHP και οι διαφορές του Pitmaster.

Το Pitmaster σε σύγκριση με άλλα εργαλεία
git (γραμμή εντολών) Κατάλληλο γιαΗ υλοποίηση αναφοράς, με ένα πλούσιο σύνολο εντολών που καλύπτει τόσο λειτουργίες υψηλού επιπέδου όσο και πλήρη πρόσβαση στα εσωτερικά. Διαφορά με το PitmasterΤο Pitmaster εκτελείται μέσα στη διεργασία PHP και οι βασικές λειτουργίες δεν καλούν το git μέσω κελύφους. Το CLI του αντικατοπτρίζει μόνο ένα υποσύνολο των εντολών git.
czproject/git-php Κατάλληλο γιαΈνα συμπαγές PHP API για init, clone, commit, merge, branches, tags και remotes. Εκτελείται σε PHP 8.0 ή νεότερη έκδοση και χρησιμοποιεί το εγκατεστημένο πρόγραμμα-πελάτη git. Διαφορά με το PitmasterΤο Pitmaster δεν χρειάζεται πρόγραμμα-πελάτη git για τις βασικές λειτουργίες, επειδή διαβάζει και γράφει τα ίδια τα αντικείμενα, τα αρχεία pack και το ευρετήριο. Απαιτεί PHP 8.2 ή νεότερη έκδοση.
gitonomy/gitlib Κατάλληλο γιαΠρόσβαση σε αποθετήρια από PHP 8.4 ή νεότερη έκδοση χωρίς να χρειάζεται μεταγλώττιση. Λειτουργεί κάνοντας κλήσεις κελύφους στο git. Διαφορά με το PitmasterΤο Pitmaster δεν κάνει κλήσεις κελύφους για τις βασικές λειτουργίες, ενώ ένας χειριστής χωρίς διεργασίες απενεργοποιεί τα μέρη που θα εκκινούσαν μια διεργασία.
libgit2 Κατάλληλο γιαΜια φορητή υλοποίηση σε C των βασικών μεθόδων του Git ως συνδέσιμη βιβλιοθήκη, με συνδέσεις για Ruby, .NET, Python, Node.js, Rust και άλλα. Διαφορά με το PitmasterΤο Pitmaster είναι απλό PHP εγκατεστημένο με Composer, χωρίς μεταγλωττισμένη βιβλιοθήκη ή FFI. Εισάγει 63 από τα σενάρια oracle του από τους πόρους δοκιμών του libgit2.

Πηγές, επιλεγμένο

Ερωτήσεις και απαντήσεις

Σύντομες απαντήσεις από την τεκμηρίωση του Pitmaster.

Ξεκινήστε με τον οδηγό γρήγορης εκκίνησης για να ανοίξετε το πρώτο σας αποθετήριο από PHP και, στη συνέχεια, χρησιμοποιήστε τις αναφορές API και CLI για τα υπόλοιπα.