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

Git

Το Rudel χρησιμοποιεί λειτουργίες Git εγγενείς στο PHP μέσω του Pitmaster. Δεν απαιτεί το δυαδικό αρχείο git του host. Η πρόσβαση στα απομακρυσμένα αποθετήρια γίνεται μέσω HTTP(S) ή SSH.

Κάθε sandbox έχει ένα όνομα κλάδου, το rudel/{sandbox-id}, που χρησιμοποιείται από όλες τις παρακάτω ροές εργασίας Git.

Κλωνοποίηση απομακρυσμένου αποθετηρίου σε νέο sandbox

Κέλυφος
wp rudel create --name=feature-x --git=https://example.test/my-theme.git

Το Rudel δημιουργεί το sandbox, κλωνοποιεί το απομακρυσμένο αποθετήριο στο themes/my-theme μέσα στον κατάλογο του sandbox (το όνομα του καταλόγου είναι το όνομα του αποθετηρίου), δημιουργεί τον κλάδο rudel/{id} από τον προεπιλεγμένο κλάδο και τον επιλέγει. Με το --type=plugin, η επιλογή γίνεται στο plugins/my-theme. Το απομακρυσμένο αποθετήριο, ο κατάλογος και ο βασικός κλάδος αποθηκεύονται στο sandbox για μελλοντικές αποστολές αλλαγών. Αν αποτύχει η κλωνοποίηση, το sandbox διατηρείται και η εντολή εμφανίζει προειδοποίηση.

Το checkout είναι ένα λειτουργικό αντίγραφο για το wp rudel push. Στην τρέχουσα έκδοση, το sandbox δεν το προβάλλει (issue #11):

  • Το sandbox προβάλλει το θέμα που επιλέχθηκε με το --theme ή το ενεργό θέμα του host, το οποίο αντιγράφεται από τον host κατά τη δημιουργία του sandbox. Το --theme πρέπει να δηλώνει ένα θέμα εγκατεστημένο στον host. Έτσι, ένα checkout προβάλλεται μόνο όταν το όνομα του αποθετηρίου ταιριάζει με αυτό το slug και η κλωνοποίηση γράφει στον αντιγραμμένο κατάλογο του θέματος.
  • Τα πρόσθετα φορτώνονται πάντα από τον κατάλογο πρόσθετων του host, επομένως ένα checkout --type=plugin δεν εκτελείται ποτέ.

Συνδεδεμένα worktrees

Όταν κλωνοποιείτε ένα sandbox του οποίου ο θεματικός κατάλογος είναι αποθετήριο Git, το Rudel δημιουργεί ένα συνδεδεμένο worktree για το νέο sandbox αντί να αντιγράφει αρχεία:

Κέλυφος
wp rudel create --name=feature-y --clone-from=feature-x-3be7

Το worktree βρίσκεται στον κλάδο rudel/{new-id}. Το Rudel το καταγράφει στα μεταδεδομένα του νέου sandbox με ρητό όνομα worktree που βασίζεται στο ID του sandbox, τον τύπο περιεχομένου και το slug του θέματος, ώστε να μην υπάρχει σύγκρουση μεταξύ δύο sandbox που χρησιμοποιούν το ίδιο slug θέματος. Η καταστροφή του sandbox αφαιρεί το worktree και διαγράφει τον κλάδο του.

Το wp rudel cleanup --merged λαμβάνει υπόψη μόνο αυτά τα συνδεδεμένα worktrees. Δείτε την ενότητα Εκκαθάριση.

Αποστολή αλλαγών

Κέλυφος
wp rudel push feature-x-3be7 --message="Update checkout template"

Το push κάνει commit κάθε αλλαγή στο checkout και στέλνει τον κλάδο rudel/{id} στο origin. Επιστρέφει No changes to push. όταν δεν υπάρχουν αλλαγές.

  • Το --git=<remote> ορίζει το απομακρυσμένο αποθετήριο, αν δεν έχει αποθηκευτεί κανένα· μετά την πρώτη επιτυχημένη αποστολή, το απομνημονεύει.
  • Το --dir=<dir> επιλέγει τον κατάλογο σε σχέση με τον κατάλογο του sandbox, για παράδειγμα themes/my-theme. Έχει προεπιλογή τον κατάλογο που αποθηκεύτηκε από το --git ή, διαφορετικά, ολόκληρο τον κατάλογο του sandbox.
  • Το --message έχει προεπιλογή το Update from Rudel sandbox.

Από το PHP, το Rudel::push( $id, $remote_url, $message, $subdir ) κάνει το ίδιο και ενεργοποιεί τα hooks rudel_*_environment_push.

Ταυτότητα commit

Αν το checkout δεν έχει user.name ή user.email στη διαμόρφωση Git του, το Rudel γράφει τα Rudel και rudel@localhost. Ορίστε τα RUDEL_GIT_AUTHOR_NAME και RUDEL_GIT_AUTHOR_EMAIL στο wp-config.php για να χρησιμοποιήσετε άλλες τιμές.