Chapters ▾ 2nd Edition

A1.8 Appendix A: Το Git σε άλλα περιβάλλοντα - Το Git στο Powershell

Το Git στο Powershell

Το σύνηθες τερματικό γραμμής εντολών στα Windows (cmd.exe) δεν είναι ικανό για μια εξατομικευμένη εμπειρία Git, αλλά όσοι χρησιμοποιούμε το Powershell, έχουμε αυτήν την τύχη. Αυτό επίσης δουλεύει αν τρέχουμε PowerShell Core σε Linux ή Mac. Ένα πακέτο που ονομάζεται posh-git (https://github.com/dahlbyk/posh-git) παρέχει ισχυρές δυνατότητες συμπλήρωσης με tab, καθώς και μια βελτιωμένη προτροπή για να μας βοηθήσει να έχουμε τον έλεγχο της κατάστασης αποθετηρίων μας. Μοιάζει με αυτό:

.Powershell με Posh-git
Figure 187. Powershell με Posh-git

Εγκατάσταση

Προαπαιτούμενα (Windows μόνο)

Προτού να είμαστε σε θέση να τρέξουμε PowerShell scripts στο μηχάνημά μας, πρέπει να έχουμε ορίσει την τοπική ExecutionPolicy σε RemoteSigned (βασικά, οτιδήποτε εκτός από Undefined και Restricted). Αν επιλέξουμε το AllSigned αντί του RemoteSigned, όλα τα (δικά μας) τοπικά scripts πρέπει να υπογραφούν ηλεκτρονικά για να μπορούν να εκτελεστούν. Με το RemoteSigned, μόνο τα scripts που έχουν το ZoneIdentifier ορισμένο σε Internet (αυτά τα οποία κατέβηκαν από το διαδίκτυο) πρέπει να υπογραφούν, τα άλλα όχι. Αν είμαστε διαχειριστές και θέλουμε να το ορίσουμε για όλους τους χρήστες σε αυτό το μηχάνημα, χρησιμοποιούμε την επιλογή -Scope LocalMachine. Αν είμαστε κανονικοί χρήστες, χωρίς δικαιώματα διαχειριστή, μπορούμε να χρησιμοποιήσουμε την επιλογή -Scope CurrentUser για να το ορίσουμε μόνο για εμάς.

Περισσότερα σχετικά με τα PowerShell Scopes: https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_scopes.

Περισσότερα σχετικά με τα PowerShell ExecutionPolicy: https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.security/set-executionpolicy.

Για ορίσουμε την τιμή της ExecutionPolicy σε RemoteSigned για όλους τους χρήστες χρησιμοποιούμε την επόμενη εντολή:

> Set-ExecutionPolicy -Scope LocalMachine -ExecutionPolicy RemoteSigned -Force

Αν έχουμε τουλάχιστον PowerShell 5 ή PowerShell 4 με τον PackageManagement εγκατεστημένο, μπορούμε να χρησιμοποιήσουμε τον package manager για να εγκαταστήσουμε το posh-git για εμάς.

Περισσότερες πληροφορίες σχετικά με PowerShell Gallery: https://learn.microsoft.com/en-us/powershell/scripting/gallery/overview.

> Install-Module posh-git -Scope CurrentUser -Force
> Install-Module posh-git -Scope CurrentUser -AllowPrerelease -Force # Newer beta version with PowerShell Core support

Αν θέλουμε να εγκαταστήσουμε το posh-git για όλους τους χρήστες, χρησιμοποιούμε την επιγολή -Scope AllUsers και εκτελούμε την εντολή από μια PowerShell κονσόλα. Αν η δεύτερη εντολή αποτύχει με σφάλμα όπως Module 'PowerShellGet' was not installed by using Install-Module, πρέπει να τρέξουμε άλλη εντολή πρώτα:

> Install-Module PowerShellGet -Force -SkipPublisherCheck

Μετά μπορούμε να επιστρέψουμε και να ξαναπροσπαθήσουμε. Αυτό συμβαίνει, γιατί τα modules που έρχονται μαζί με το Windows PowerShell είναι υπογεγραμμένα με διαφορετικό εκδότη πιστοποιητικών.

Ενημέρωση PowerShell Prompt

Για να συμπεριλάβουμε Git πληροφορίες μέσα στο κέλυφός μας, το posh-git module θα πρέπει να εισαχθεί. Για να έχουμε εισαγμένο το posh-git κάθε φορά που ξεκινά το PowerShell, εκτελούμε την εντολή Add-PoshGitToProfile που θα εισάγει την δήλωση μέσα στο $profile script. Αυτό το script εκτελείται κάθε φορά που ανοίγουμε την PowerShell κονσόλα. Θυμόμαστε ότι υπάρχουν διάφορα $profile scripts. Π.χ. ένα για την κονσόλα και ένα διαφορετικό για το ISE.

> Import-Module posh-git
> Add-PoshGitToProfile -AllHosts

Από τον Πηγαίο κώδικα

Απλώς κατεβάζουμε την έκδοση posh-git από https://github.com/dahlbyk/posh-git/releases, και την αποσυμπιέζουμε. Μετά εισάγουμε το module χρησιμοποιώντας ολόκληρη τη διαδρομή (path) στο posh-git.psd1 αρχείο:

> Import-Module <path-to-uncompress-folder>\src\posh-git.psd1
> Add-PoshGitToProfile -AllHosts

Αυτό θα βάλει την κατάλληλη γραμμή στο profile.ps1 αρχείο, και το posh-git θα ενεργοποιηθεί στην επόμενη φορά που θα ανοίξουμε το PowerShell.

Για μια περιγραφή της Git status συνοπτικής πληροφορίας που εμφανίζεται στο κέλυφος βλ. https://github.com/dahlbyk/posh-git/blob/master/README.md#git-status-summary-information Για περισσότερες λεπτομέριες για το πως να προσαρμόσουμε το posh-git κέλυφός μας βλ. https://github.com/dahlbyk/posh-git/blob/master/README.md#customization-variables.