# Leading slash exclusion does not with git clean on Windows

2 messages from 2022-02-16 to 2022-03-09. Participants: Adam Kapos, Johannes Schindelin.
Thread: https://gitlist.dev/t/57425

## Adam Kapos, 2022-02-16 14:15

Subject: Leading slash exclusion does not with git clean on Windows
Message-ID: <CAMwvdPQLMK2-CPyLqSKBWZjEi+6o2iaj_=C2VnJA=sV5GUV47Q@mail.gmail.com>
URL: https://gitlist.dev/e/CAMwvdPQLMK2-CPyLqSKBWZjEi%2B6o2iaj_%3DC2VnJA%3DsV5GUV47Q%40mail.gmail.com

```
I came across an issue where the leading slash exclusion pattern does
not work with git clean on Windows.

What did you do before the bug happened? (Steps to reproduce your issue)

Run the following commands:
1. mkdir foo
2. mkdir -p bar/foo
3. git clean -fdx --exclude /foo

What did you expect to happen? (Expected behavior)
The root-level directory is not removed because it's excluded

Removing bar/

What happened instead? (Actual behavior)
The root level directory is removed:

Removing bar/
Removing foo/


What's different between what you expected and what actually happened?
The root-level exclusion doesn't work

Anything else you want to add:

Please review the rest of the bug report below.
You can delete any lines you don't wish to share.


[System Info]
git version:
git version 2.35.1.windows.2, 2.31.1.windows.1
cpu: x86_64
built from commit: c5f0be26a7e3846e3b6268d1c6c4800d838c6bbb
sizeof-long: 4
sizeof-size_t: 8
shell-path: /bin/sh
feature: fsmonitor--daemon
uname: Windows 10.0 22000
compiler info: gnuc: 10.2
libc info: no libc information available
$SHELL (typically, interactive shell): C:\Program Files\Git\usr\bin\bash.exe


[Enabled Hooks]
post-commit
post-checkout
post-merge
pre-push

-- 




**Confidentiality**
The
 information contained in this e-mail is 
confidential, may be privileged
 and is intended solely for the use of the 
named addressee. Access to 
this e-mail by any other person is not 
authorised. If you are not the 
intended recipient, you should not 
disclose, copy, distribute, take any 
action or rely on it and you should 
please notify the sender by reply. 
Any opinions expressed are not 
necessarily those of the company.

We
 may monitor all incoming and 
outgoing emails in line with current 
legislation. We have taken steps to 
ensure that this email and 
attachments are free from any virus, but it 
remains your responsibility 
to ensure that viruses do not adversely affect 
you.



```

## Johannes Schindelin, 2022-03-09 23:02

Subject: Re: Leading slash exclusion does not with git clean on Windows
Message-ID: <nycvar.QRO.7.76.6.2203092358510.357@tvgsbejvaqbjf.bet>
URL: https://gitlist.dev/e/nycvar.QRO.7.76.6.2203092358510.357%40tvgsbejvaqbjf.bet
In-Reply-To: <CAMwvdPQLMK2-CPyLqSKBWZjEi+6o2iaj_=C2VnJA=sV5GUV47Q@mail.gmail.com>

```
Hi Adam,


On Wed, 16 Feb 2022, Adam Kapos wrote:

> I came across an issue where the leading slash exclusion pattern does
> not work with git clean on Windows.
>
> What did you do before the bug happened? (Steps to reproduce your issue)
>
> Run the following commands:
> 1. mkdir foo
> 2. mkdir -p bar/foo
> 3. git clean -fdx --exclude /foo
>
> What did you expect to happen? (Expected behavior)
> The root-level directory is not removed because it's excluded
>
> Removing bar/
>
> What happened instead? (Actual behavior)
> The root level directory is removed:
>
> Removing bar/
> Removing foo/
>
>
> What's different between what you expected and what actually happened?
> The root-level exclusion doesn't work

As mentioned in the Known Issues section of Git for Windows' Release Notes
(https://github.com/git-for-windows/build-extra/blob/master/ReleaseNotes.md#known-issues,
also available via Start Menu>Git>Git Release Notes):

	* If you specify command-line options starting with a slash,
	  POSIX-to-Windows path conversion will kick in converting e.g.
	  "`/usr/bin/bash.exe`" to "`C:\Program
	  Files\Git\usr\bin\bash.exe`". When that is not desired -- e.g.
	  "`--upload-pack=/opt/git/bin/git-upload-pack`" or "`-L/regex/`"
	  -- you need to set the environment variable `MSYS_NO_PATHCONV`
	  temporarily, like so:

	  > `MSYS_NO_PATHCONV=1 git blame -L/pathconv/ msys2_path_conv.cc`

	  Alternatively, you can double the first slash to avoid
	  POSIX-to-Windows path conversion, e.g. "`//usr/bin/bash.exe`".

Ciao,
Johannes

> Anything else you want to add:
>
> Please review the rest of the bug report below.
> You can delete any lines you don't wish to share.
>
>
> [System Info]
> git version:
> git version 2.35.1.windows.2, 2.31.1.windows.1
> cpu: x86_64
> built from commit: c5f0be26a7e3846e3b6268d1c6c4800d838c6bbb
> sizeof-long: 4
> sizeof-size_t: 8
> shell-path: /bin/sh
> feature: fsmonitor--daemon
> uname: Windows 10.0 22000
> compiler info: gnuc: 10.2
> libc info: no libc information available
> $SHELL (typically, interactive shell): C:\Program Files\Git\usr\bin\bash.exe
>
>
> [Enabled Hooks]
> post-commit
> post-checkout
> post-merge
> pre-push
>
> --
>
>
>
>
> **Confidentiality**
> The
>  information contained in this e-mail is
> confidential, may be privileged
>  and is intended solely for the use of the
> named addressee. Access to
> this e-mail by any other person is not
> authorised. If you are not the
> intended recipient, you should not
> disclose, copy, distribute, take any
> action or rely on it and you should
> please notify the sender by reply.
> Any opinions expressed are not
> necessarily those of the company.
>
> We
>  may monitor all incoming and
> outgoing emails in line with current
> legislation. We have taken steps to
> ensure that this email and
> attachments are free from any virus, but it
> remains your responsibility
> to ensure that viruses do not adversely affect
> you.
>
>
>

```
