wslgit

by hangxingliu

hangxingliu / wslgit

:candy: Use Git installed in WSL(Windows Subsystem for Linux) from Windows and Visual Studio Code

136 Stars 17 Forks Last release: Not found GNU General Public License v3.0 37 Commits 0 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

WSLGit

Build Status

Use Git installed in WSL(windows Subsystem for Linux) from Windows and Visual Studio Code.

The project was inspired by A. R. S.'s project andy-5/wslgit written by Rust.
But why do I re-implement it by scripts, because I hope the wslgit tools could support any mount points (but not only under the

/mnt/
) and could be used without compiling.

Usage

  1. Please ensure
    git
    is installed in your WSL.
  2. Copy
    wslgit.sh
    to the
    /usr/bin/
    or
    ~/bin
    directory in your WSL.
  3. Add the following config into your VSCode Settings.
    • { "git.path": "C:\\path\\to\\git.bat" }

🐢 Feeling slowly? (Disable interactive shell)

wslgit launch git installed in WSL in interactive shell mode by default now.
In short, the

ssh-agent
setup in
.bashrc
script is supported. but slower then non-interactive mode.

If you want disable interactive shell to reduce launch time, you can set Windows environment variable

WSLGIT_USE_INTERACTIVE_SHELL
to
false
.

via GUI

Set up environment variable

via Powershell

[System.Environment]::SetEnvironmentVariable("WSLGIT_USE_INTERACTIVE_SHELL", "false", "User")

Update

2019-04-16

  1. Fixed bug caused by Windows 10 19H1 changed the output of
    mount
    command

2019-03-11

  1. BREAKING CHANGE: Start git installed in WSL in interactive mode.
    • If you want to use non-interactive mode, just like before: Set Windows env variable
      WSLGIT_USE_INTERACTIVE_SHELL
      to
      true
      .
  2. Fixed error in the unix path to win path convert function.
  3. Added path converting for the output of
    git init

CHANGELOG

Under the hood

How does it work

  1. Pass all arguments and env variable
    WSLGIT_SH_CWD
    into
    wslgit.sh
    in WSL when you or VSCode execute
    git.bat
    .
  2. Get all mounted drive info by
    mount -t drvfs
    command in
    wslgit.sh
    .
  3. Move cwd(current working directory) to
    WSLGIT_SH_CWD
    .
  4. Iterate arguments, and replace each path argument from Windows style to Linux style by reference to mounted drive info.
  5. And convert the path in the git output to Windows style if git arguments included special keywords/actions. (Eg.
    rev-parse
    ,
    remote
    )
  6. Why the it doesn't use
    wslpath
    for path convert, please reference to the test case: test-win/main.js

How to test it

How to contribute (issue/pull request)

CONTRIBUTING.md

Related links

Author

LiuYue (@hangxingliu)

Contributors

License

GPL-3.0

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.