web-dev-qa-db-fra.com

Utilisation de Git dans le sous-système Windows pour Linux via IntelliJ

J'essaie de définir l'exécutable Git dans IntelliJ pour être le git installé dans le sous-système Windows pour Linux. J'ai essayé différentes méthodes, mais j'ai toujours eu une sorte d'erreur. Aujourd'hui, j'ai installé to Creators Update (version 1703), réinstallé WSL et essayé à nouveau. Voici ce que j'ai fait:

J'ai créé un script .bat:

@echo off
C:\Windows\System32\bash.exe -c "git %*"

Donc, lorsque vous l'exécutez:

C:\Users\Limon\Desktop>bash.bat --version
git version 2.7.4

Alors j'ai alors essayé de définir cette chauve-souris sur l'exécutable git dans IntelliJ:  Setting Git executable in IntelliJ

Et ça a marché! Mais tout le reste échoue, par exemple lorsque j'essaie de tirer ou de créer une branche dans IntelliJ, je reçois:

Couldn't check the working tree for unmerged files because of an error.
'C:\Windows\System32\bash.exe' is not recognized as an internal or external command,
operable program or batch file.

Des idées sur comment résoudre ce problème? Je ne sais pas vraiment quoi que ce soit à propos du script batch. Cela fonctionne parfaitement en ligne de commande.

22
Limon

Je cherchais un moyen d'utiliser git sur un sous-système WSL Windows pour Linux via Webstorm ou un logiciel Idelli Id.

J'ai essayé la solution de KatoPue, mais j'ai eu l'erreur suivante:

fatal: could not read log file 'C:/Program Files/Git/mnt/c/Users/Elies/AppData/Local/Temp/git-commit-msg-.txt': No such file or directory

Je l'ai résolu en remplaçant le chemin lors de l'envoi de la commande au git de WSL

Settings > Version Control > Git > Path to Git executable : path_to_wslgit.bat

wslgit.bat:

@echo off
setlocal enabledelayedexpansion
set command=%*
set find=C:\Users\%USERNAME%\AppData\Local\Temp\git-commit-msg-.txt
set replace=/mnt/c/Users/%USERNAME%/AppData/Local/Temp/git-commit-msg-.txt
call set command=%%command:!find!=!replace!%%
echo | C:\Windows\Sysnative\bash.exe -c 'git %command%'
13
Elies Lou

Dans PyCharm 2018.1, j'ai eu plusieurs erreurs en essayant de régler Git. Je dois combiner différentes approches pour le faire fonctionner. Le code suivant fonctionne pour moi:

@echo off
setlocal enabledelayedexpansion
set command=%*
If %PROCESSOR_ARCHITECTURE% == x86 (
    echo | C:\Windows\sysnative\bash.exe -c 'git %command%'
) Else (
    echo | bash.exe -c 'git %command%'
)

UPD:

L'intégration avec Git est maintenant disponible dans WSL via le wrapper WSLGit. J'ai discuté avec PyCharm et ça marche comme un charme. Voici un lien https://github.com/andy-5/wslgit

6
Infernion

Changez le double en guillemets simples.

Vous pouvez vous connecter, quels arguments sont fournis à votre fichier bat

@echo off
@echo %*>> %~dp0log.txt
bash.exe -c 'git %*'

Avec cela, j'ai découvert que j'avais quelques problèmes à résoudre.

Pour votre information: avec les créateurs Win10, la mise à jour de piping bash et sa création à partir de programmes Windows fonctionnent correctement.

5
KatoPue

Dans PhpStorm (2017.2 EAP) je reçois une erreur 

Causée par: com.intellij.openapi.vcs.VcsException: 'bash.exe' n'est pas reconnu comme une commande interne ou externe, un programme utilisable ou un fichier de commandes.

Pour solution, je change la dernière ligne en

If %PROCESSOR_ARCHITECTURE% == x86 (
    C:\Windows\sysnative\bash.exe -c 'git %command%'
) Else (
    bash.exe -c 'git %command%'
)
4
Alexey Stepankov

Travaillé jusqu'à PHPSTORM 2018.3 (ou peut-être une mise à jour de Windows a modifié certains comportements concernant bash.exe). J'utilise Ubuntu 18.04 LTS. Cependant, le chemin de mon bash.exe a changé - il n’est plus dans C:\Windows\Sysnative\bash.exe.

Pour que les choses fonctionnent à nouveau, j'ai modifié le fichier wslgit.bat d'Elies Lou et défini un nouveau chemin pour bash.exe:

@echo off
setlocal enabledelayedexpansion
set command=%*
set find=C:\Users\%USERNAME%\AppData\Local\Temp\git-commit-msg-.txt
set replace=/mnt/c/Users/%USERNAME%/AppData/Local/Temp/git-commit-msg-.txt
call set command=%%command:!find!=!replace!%%
echo | C:\Windows\System32\bash.exe -c 'git %command%'
0
mfuesslin

Pour moi cette solution fonctionne:

Fichier: git.bat

@echo off
setlocal enabledelayedexpansion
set command=%*
If %PROCESSOR_ARCHITECTURE% == x86 (
    C:\Windows\sysnative\bash.exe -c 'git %command%'
) Else (
    bash.exe -c 'git %command%'
)
0
Rdey