Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 57 additions & 11 deletions book/A-git-in-other-environments/sections/powershell.asc
Original file line number Diff line number Diff line change
Expand Up @@ -3,29 +3,75 @@

(((powershell)))(((achèvement tab, powershell)))(((invites, powershell)))
(((posh-git)))
Le terminal de ligne de commande standard sous Windows (`cmd.exe`) n'est pas vraiment capable de fournir une expérience de Git personnalisée, mais si vous utilisez Powershell, vous avez de la chance.
Un paquetage appelé Posh-Git (https://github.com/dahlbyk/posh-git[]) fournit un système d'achèvement sur tabulation, ainsi qu'une invite améliorée pour vous aider à rester informé de l'état de votre dépôt.
Le terminal de ligne de commande ancestral sous Windows (`cmd.exe`) n'est pas vraiment capable de fournir une expérience de Git personnalisée, mais si vous utilisez Powershell, vous avez de la chance.
Cela marche aussi si vous utilisez PowerShell sous une plateforme non Windows comme Debian.
Un paquetage appelé Posh-Git (https://github.com/dahlbyk/posh-git[]) fournit un système de complétion automatique, ainsi qu'une invite améliorée pour vous aider à rester informé de l'état de votre dépôt.
Elle ressemble à ceci :

.Powershell avec Posh-git.
image::images/posh-git.png[Powershell avec Posh-git.]

Si vous avez installé GitHub pour Windows, Posh-Git est inclus par défaut et tout ce que vous avez à faire est d'ajouter ces lignes à votre `profile.ps1` (qui est habituellement dans `C:\Users\<username>\Documents\WindowsPowerShell`) :
=== Installation

==== Prérequis (Windows seulement)

Avant de pouvoir lancer des scripts PowerShell sur votre machine, vous devez définir votre ExecutionPolicy locale à RemoteSigned (en gros tout sauf Undefined et Restricted).
Si vous choisissez AllSigned au lieu de RemoteSigned, même les scripts locaux (les vôtres) devront être signés numériquement pour pouvoir être exécutés.
Avec RemoteSigned, seuls les scripts ayant le "ZoneIdentifier" défini à Internet (téléchargés depuis le web) devront être signés, pas les autres.
Si vous êtes un administrateur et que vous voulez la définir pour tous les utilisateurs de cette machine, utilisez "-Scope LocalMachine".
Si vous êtes un utilisateur normal sans les privilèges administrateur, vous pouvez utiliser "-Scope CurrentUser" pour ne la définir que pour vous.

Plus d'informations sur les portées (_Scopes_) PowerShell : https://docs.microsoft.com/fr-fr/powershell/module/microsoft.powershell.core/about/about_scopes[].

Plus d'informations sur la politique d'exécution (_ExecutionPolicy_) PowerShell : https://docs.microsoft.com/fr-fr/powershell/module/microsoft.powershell.security/set-executionpolicy[].

[source,powershell]
-----
. (Resolve-Path "$env:LOCALAPPDATA\GitHub\shell.ps1")
. $env:github_posh_git\profile.example.ps1
> Set-ExecutionPolicy -Scope LocalMachine -ExecutionPolicy RemoteSigned -Force
-----

Si vous n'êtes pas un utilisateur de GitHub pour Windows, téléchargez simplement une distribution depuis (https://github.com/dahlbyk/posh-git[]) et décompressez-la dans le répertoire `WindowsPowershell`.
Ensuite, ouvrez une invite Powershell en tant qu'administrateur et faites ceci :
===== PowerShell Gallery

Si vous avez au moins PowerShell 4 ou Powershell 5 avec PackageManagement installé, vous pouvez utiliser le gestionnaire de paquets pour obtenir Posh-Git.

Plus d'informations sur PowerShell Gallery : https://docs.microsoft.com/fr-fr/powershell/gallery/overview[].

[source,powershell]
-----
> Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Confirm
> cd ~\Documents\WindowsPowerShell\posh-git
> .\install.ps1
> Set-PSRepository -Name PSGallery -InstallationPolicy Trusted
> Update-Module PowerShellGet -Force
> Install-Module Posh-Git -Scope AllUsers
-----

Si vous voulez installer Posh-Git seulement pour l'utilisateur courant et non globalement, utilisez "-Scope CurrentUser" à la place.
Si la deuxième commande échoue avec une erreur comme `Module 'PowershellGet' was not installed by using Install-Module`, vous devrez d'abord lancer une autre commande :
[source,powershell]
-----
> Install-Module PowerShellGet -Force -SkipPublisherCheck
-----
Maintenant vous pouvez y retourner et recommencer.
Cela arrive parce que les modules qui viennent avec Windows PowerShell sont signés avec un certificat de publication différent.

Cela ajoutera la ligne correcte à votre fichier `profile.ps1` et posh-git sera actif la prochaine fois que vous ouvrirez une invite.
===== Mise à jour du terminal PowerShell

Pour inclure les informations git dans le terminal, posh-git doit être importé.
Pour faire cela automatiquement, incluez l'instruction d'import dans votre script $profile.
Ce script est exécuté chaque fois que vous ouvrez un nouveau terminal PowerShell.
Gardez en tête qu'il y a de multiples scripts $profile.
Par exemple, un pour le terminal et un autre séparé pour l'environnement de script intégré (ISE, _Integrated Scripting Environment_).
[source,powershell]
-----
> New-Item -Name $(Split-Path -Path $profile) -ItemType Directory -Force
> 'Import-Module Posh-Git' | Out-File -Append -Encoding default -FilePath $profile
-----

===== Depuis les sources

Téléchargez une version Posh-Git depuis https://github.com/dahlbyk/posh-git[] et décompressez-la dans le dossier `WindowsPowerShell`.
Puis ouvrez un terminal PowerShell en tant qu'administrateur et saisissez ceci :
[source,powershell]
-----
> cd ~\Documents\WindowsPowerShell\Module\posh-git
> .\install.ps1
-----
Cela ajoutera la bonne ligne à votre fichier `profile.ps1` et posh-git sera actif la prochaine fois que vous ouvrirez votre terminal.