git-for-windows / git

A fork of Git containing Windows-specific patches.
http://gitforwindows.org/
Other
8.35k stars 2.53k forks source link

Change directory issue in a mounted volume in Docker #3654

Open yegorich opened 2 years ago

yegorich commented 2 years ago

Setup

git version 2.35.0.windows.1
cpu: x86_64
built from commit: 853373155dce195a91e6e41a58c8b8e5c5a94652
sizeof-long: 4
sizeof-size_t: 8
shell-path: /bin/sh
feature: fsmonitor--daemon
$ cmd.exe /c ver

Microsoft Windows [Version 10.0.17763.2458]

I have used the scoop installation method.

# Install Python and Git.
RUN powershell.exe -ExecutionPolicy RemoteSigned `
  iex (new-object net.webclient).downloadstring('https://get.scoop.sh'); `
  scoop install python git

Windows host: Windows 10 64-bit, Windows image in Docker:

# Use the latest Windows Server Core image with .NET Framework 4.8.
FROM mcr.microsoft.com/dotnet/framework/sdk:4.8-windowsservercore-ltsc2019

Details

CMD and PowerShell

git submodule update --init

Update of the submodules.

/mingw64/libexec/git-core/git-sh-setup: line 365: cd: .git: Not a directory Unable to determine absolute path of git directory

OpenOCD

The problem is that inside the mounted volume git cannot properly execute cd command. I have already asked this question on Stackoverflow but without an answer.

dscho commented 2 years ago

/mingw64/libexec/git-core/git-sh-setup: line 365: cd: .git: Not a directory

That is a shell script. Could you edit it, inserting the set -x command somewhere in the beginning, then instrument it just before line 365 to show the current working directory via pwd >&2, then see whether .git might be a file instead of a directory?

yegorich commented 2 years ago
PS C:\TEMP> git submodule update --init                                                                                                                                                        
+++ git --exec-path                                                                                                                                                                            
++ . C:/Users/ContainerAdministrator/scoop/apps/git/2.35.0.windows.1/mingw64/libexec/git-core/git-sh-i18n                                                                                      
+++ TEXTDOMAIN=git                                                                                                                                                                             
+++ export TEXTDOMAIN                                                                                                                                                                          
+++ test -z ''                                                                                                                                                                                 
+++ test -z ''                                                                                                                                                                                 
+++ TEXTDOMAINDIR=/mingw64/share/locale                                                                                                                                                        
+++ export TEXTDOMAINDIR                                                                                                                                                                       
+++ GIT_INTERNAL_GETTEXT_SH_SCHEME=fallthrough                                                                                                                                                 
+++ test -n fallthrough                                                                                                                                                                        
+++ GIT_INTERNAL_GETTEXT_SH_SCHEME=fallthrough                                                                                                                                                 
+++ export GIT_INTERNAL_GETTEXT_SH_SCHEME                                                                                                                                                      
+++ case "$GIT_INTERNAL_GETTEXT_SH_SCHEME" in                                                                                                                                                  
++ GIT_QUIET=                                                                                                                                                                                  
++ test -n ''                                                                                                                                                                                  
+++ basename -- 'C:/Users/ContainerAdministrator/scoop/apps/git/2.35.0.windows.1/mingw64/libexec/git-core\git-submodule'                                                                       
+++ sed -e 's/-/ /'                                                                                                                                                                            
++ dashless='git submodule'                                                                                                                                                                    
++ '[' -z '' ']'                                                                                                                                                                               
+++ eval_gettext 'usage: $dashless $USAGE'                                                                                                                                                     
+++ printf %s 'usage: $dashless $USAGE'                                                                                                                                                        
++++ git sh-i18n--envsubst --variables 'usage: $dashless $USAGE'                                                                                                                               
+++ export PATH dashless USAGE                                                                                                                                                                 
+++ git sh-i18n--envsubst 'usage: $dashless $USAGE'                                                                                                                                            
++ LONG_USAGE='usage: git submodule [--quiet] [--cached]                                                                                                                                       
   or: git submodule [--quiet] add [-b <branch>] [-f|--force] [--name <name>] [--reference <repository>] [--] <repository> [<path>]                                                            
   or: git submodule [--quiet] status [--cached] [--recursive] [--] [<path>...]                                                                                                                
   or: git submodule [--quiet] init [--] [<path>...]                                                                                                                                           
   or: git submodule [--quiet] deinit [-f|--force] (--all| [--] <path>...)                                                                                                                     
   or: git submodule [--quiet] update [--init] [--remote] [-N|--no-fetch] [-f|--force] [--checkout|--merge|--rebase] [--[no-]recommend-shallow] [--reference <repository>] [--recursive] [--[no
-]single-branch] [--] [<path>...]                                                                                                                                                              
   or: git submodule [--quiet] set-branch (--default|--branch <branch>) [--] <path>                                                                                                            
   or: git submodule [--quiet] set-url [--] <path> <newurl>                                                                                                                                    
   or: git submodule [--quiet] summary [--cached|--files] [--summary-limit <n>] [commit] [--] [<path>...]                                                                                      
   or: git submodule [--quiet] foreach [--recursive] <command>                                                                                                                                 
   or: git submodule [--quiet] sync [--recursive] [--] [<path>...]                                                                                                                             
   or: git submodule [--quiet] absorbgitdirs [--] [<path>...]'                                                                                                                                 
++ case "$1" in                                                                                                                                                                                
++ case $(uname -s) in                                                                                                                                                                         
+++ uname -s                                                                                                                                                                                   
++ test -x /usr/bin/sort                                                                                                                                                                       
++ test -x /usr/bin/find                                                                                                                                                                       
++ type builtin                                                                                                                                                                                
++ test -z ''                                                                                                                                                                                  
++ git_dir_init                                                                                                                                                                                
+++ git rev-parse --git-dir                                                                                                                                                                    
++ GIT_DIR=.git                                                                                                                                                                                
++ '[' -z Yes ']'                                                                                                                                                                              
++ pwd                                                                                                                                                                                         
++ builtin pwd -W                                                                                                                                                                              
C:/TEMP                                                                                                                                                                                        
++ test -n .git                                                                                                                                                                                
+++ cd .git                                                                                                                                                                                    
/mingw64/libexec/git-core/git-sh-setup: line 368: cd: .git: Not a directory                                                                                                                    
++ GIT_DIR=                                                                                                                                                                                    
++ gettextln 'Unable to determine absolute path of git directory'                                                                                                                              
++ gettext 'Unable to determine absolute path of git directory'                                                                                                                                
++ printf %s 'Unable to determine absolute path of git directory'                                                                                                                              
Unable to determine absolute path of git directory++ echo                                                                                                                                      

++ exit 1                                                                                                                                                                                      
yegorich commented 2 years ago

This is a part of the mapped folder. Windows sees .git as a folder and from command line I can change there.

PS C:\TEMP> dir

    Directory: C:\TEMP

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----        1/27/2022   6:59 AM                .git
d-----        1/26/2022   6:01 PM                src
-a----        1/26/2022   6:01 PM             88 .gitmodules
-a----        1/26/2022   6:01 PM            162 build.bat

If I don't mount the local folder into the Docker image and just clone git repository when running the Docker image, git has no problems with the .git folder.

dscho commented 2 years ago

Maybe the problem is Bash? Can you cd into C:\TEMP\.git via the Git Bash, like this:

C:/Users/ContainerAdministrator/scoop/apps/git/2.35.0.windows.1/usr/bin/bash.exe -lc "cd C:/TEMP/.git"

(You could compare that to cding directly in CMD.)

yegorich commented 2 years ago

In PowerShell there are problems, but in cmd environment the command could be successfully executed:

PS C:\TEMP> C:/Users/ContainerAdministrator/scoop/apps/git/2.35.0.windows.1/usr/bin/bash.exe -lc "cd C:/TEMP/.git"
'C:\Windows\system32\drivers\etc\hosts' -> '/etc/hosts'
'C:\Windows\system32\drivers\etc\protocol' -> '/etc/protocols'
'C:\Windows\system32\drivers\etc\services' -> '/etc/services'
'C:\Windows\system32\drivers\etc\networks' -> '/etc/networks'
ln: failed to create hard link 'C:/Users/ContainerAdministrator/scoop/apps/git/2.35.0.windows.1/mingw64/libexec/git-core/dlls-copied' => 'C:/Users/ContainerAdministrator/scoop/apps/git/2.35.0.windows.1/mingw64//bin/git.exe': Permission denied
PS C:\TEMP> cmd
Microsoft Windows [Version 10.0.17763.2458]
(c) 2018 Microsoft Corporation. All rights reserved.

C:\TEMP>C:/Users/ContainerAdministrator/scoop/apps/git/2.35.0.windows.1/usr/bin/bash.exe -lc "cd C:/TEMP/.git"

Update:

Though cd command didn't throw any errors, it didn't change into .git.

yegorich commented 2 years ago

My Dockerfile that can help to reproduce this issue:

# escape=`

# Use a specific tagged image. Tags can be changed, though that is unlikely for most images.
# You could also use the immutable tag @sha256:324e9ab7262331ebb16a4100d0fb1cfb804395a766e3bb1806c62989d1fc1326
ARG FROM_IMAGE=mcr.microsoft.com/dotnet/framework/sdk:4.8-windowsservercore-ltsc2019
FROM ${FROM_IMAGE}

# Restore the default Windows shell for correct batch processing.
SHELL ["cmd", "/S", "/C"]

# Copy our Install script.
COPY Install.cmd C:\TEMP\

# Download collect.exe in case of an install failure.
ADD https://aka.ms/vscollect.exe C:\TEMP\collect.exe

# Use the latest release channel. For more control, specify the location of an internal layout.
ARG CHANNEL_URL=https://aka.ms/vs/17/release/channel
ADD ${CHANNEL_URL} C:\TEMP\VisualStudio.chman

ADD https://aka.ms/vs/17/release/vs_buildtools.exe C:\TEMP\vs_buildtools.exe

RUN C:\TEMP\Install.cmd C:\TEMP\vs_buildtools.exe --quiet --wait --norestart --nocache modify `
        --installPath "%ProgramFiles(x86)%\Microsoft Visual Studio\2022\BuildTools" `
        --channelUri C:\TEMP\VisualStudio.chman `
        --installChannelUri C:\TEMP\VisualStudio.chman `
        --add Microsoft.VisualStudio.Workload.VCTools;includeRecommended `
        --add Microsoft.Component.MSBuild

# Install Python and Git.
RUN powershell.exe -ExecutionPolicy RemoteSigned `
        iex (new-object net.webclient).downloadstring('https://get.scoop.sh'); `
        scoop install python git vim

# Define the entry point for the Docker container.
# This entry point starts the developer command prompt and launches the PowerShell shell.
ENTRYPOINT ["C:\\Program Files (x86)\\Microsoft Visual Studio\\2022\\BuildTools\\Common7\\Tools\\VsDevCmd.bat", "&&", "powershell.exe", "-NoLogo", "-ExecutionPolicy", "Bypass"]

My Docker version info (4.4.4):

$ docker version
Client:
 Cloud integration: v1.0.22
 Version:           20.10.12
 API version:       1.41
 Go version:        go1.16.12
 Git commit:        e91ed57
 Built:             Mon Dec 13 11:44:07 2021
 OS/Arch:           windows/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.12
  API version:      1.41 (minimum version 1.24)
  Go version:       go1.16.12
  Git commit:       459d0df
  Built:            Mon Dec 13 11:42:13 2021
  OS/Arch:          windows/amd64
  Experimental:     false
dscho commented 2 years ago

ln: failed to create hard link 'C:/Users/ContainerAdministrator/scoop/apps/git/2.35.0.windows.1/mingw64/libexec/git-core/dlls-copied' => 'C:/Users/ContainerAdministrator/scoop/apps/git/2.35.0.windows.1/mingw64//bin/git.exe': Permission denied

That looks suspicious. Could you insert a set -x somewhere in the beginning of /etc/profile? That might be something scoop-specific.

Though cd command didn't throw any errors, it didn't change into .git.

Can you do cd C:/TEMP/.git || { echo $?; exit 1}? The exit code might say more. You could then also run the Bash commands stat C:/TEMP/.git and cygpath -aw C:/TEMP/.git to find out more.

My Dockerfile that can help to reproduce this issue:

Thank you for that. I do not have any working Windows Docker set up, though, so I cannot investigate further over here.

yegorich commented 2 years ago

Result of "C:/Program Files/Git/usr/bin/bash.exe" -lc "cd C:/TEMP/.git"

C:\TEMP>"C:/Program Files/Git/usr/bin/bash.exe" -lc "cd C:/TEMP/.git"                                                                                                    
+ case "${MSYS2_PATH_TYPE:-inherit}" in                                                                                                                                  
+ ORIGINAL_PATH='/c/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/VC/Tools/MSVC/14.30.30705/bin/HostX86/x86:/c/Program Files (x86)/Microsoft Visual Studio/

2022/BuildTools/Common7/IDE/VC/VCPackages:/c/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/Common7/IDE/CommonExtensions/Microsoft/TestWindow:/c/Program Fil

es (x86)/Microsoft Visual Studio/2022/BuildTools/Common7/IDE/CommonExtensions/Microsoft/TeamFoundation/Team Explorer:/c/Program Files (x86)/Microsoft Visual Studio/2022/

BuildTools/MSBuild/Current/bin/Roslyn:/c/Program Files (x86)/Microsoft SDKs/Windows/v10.0A/bin/NETFX 4.8 Tools:/c/Program Files (x86)/Windows Kits/10/bin/10.0.19041.0/x8

6:/c/Program Files (x86)/Windows Kits/10/bin/x86:/c/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/MSBuild/Current/Bin/amd64:/c/Windows/Microsoft.NET/Framew

ork/v4.0.30319:/c/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/Common7/IDE:/c/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/Common7/Tools:/c

/Windows/system32:/c/Windows:/c/Windows/System32/Wbem:/c/Windows/System32/WindowsPowerShell/v1.0:/c/Windows/System32/OpenSSH:/c/Program Files/dotnet:/c/Users/ContainerAd

ministrator/AppData/Local/Microsoft/WindowsApps:/c/Users/ContainerAdministrator/.dotnet/tools:/c/Program Files/NuGet:/c/Program Files (x86)/Microsoft Visual Studio/2022/

TestAgent/Common7/IDE/CommonExtensions/Microsoft/TestWindow:/c/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/MSBuild/Current/Bin:/c/Program Files (x86)/Mic

rosoft SDKs/Windows/v10.0A/bin/NETFX 4.8 Tools:/c/Program Files (x86)/Microsoft SDKs/ClickOnce/SignTool:/cmd:/c/Users/ContainerAdministrator/scoop/apps/python/current/Sc

ripts:/c/Users/ContainerAdministrator/scoop/apps/python/current:/c/Users/ContainerAdministrator/scoop/shims:/c/Program Files (x86)/Microsoft Visual Studio/2022/BuildTool

s/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/bin:/c/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/Common7/IDE/CommonExtensions/Microsoft/CMake/Ninj

a'                                                                                                                                                                       
+ unset MINGW_MOUNT_POINT                                                                                                                                                
+ . /etc/msystem                                                                                                                                                         
++ export MSYSTEM=MSYS                                                                                                                                                   
++ MSYSTEM=MSYS                                                                                                                                                          
++ unset MSYSTEM_PREFIX                                                                                                                                                  
++ unset MSYSTEM_CARCH                                                                                                                                                   
++ unset MSYSTEM_CHOST                                                                                                                                                   
++ unset MINGW_CHOST                                                                                                                                                     
++ unset MINGW_PREFIX                                                                                                                                                    
++ unset MINGW_PACKAGE_PREFIX                                                                                                                                            
++ case "${MSYSTEM}" in                                                                                                                                                  
++ MSYSTEM_PREFIX=/usr                                                                                                                                                   
+++ /usr/bin/uname -m                                                                                                                                                    
++ MSYSTEM_CARCH=x86_64                                                                                                                                                  
+++ /usr/bin/uname -m                                                                                                                                                    
++ MSYSTEM_CHOST=x86_64-pc-msys                                                                                                                                          
++ export MSYSTEM_PREFIX MSYSTEM_CARCH MSYSTEM_CHOST                                                                                                                     
+ case "${MSYSTEM}" in                                                                                                                                                   
+ PATH='/usr/local/bin:/usr/bin:/bin:/opt/bin:/c/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/VC/Tools/MSVC/14.30.30705/bin/HostX86/x86:/c/Program Files (

x86)/Microsoft Visual Studio/2022/BuildTools/Common7/IDE/VC/VCPackages:/c/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/Common7/IDE/CommonExtensions/Micros

oft/TestWindow:/c/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/Common7/IDE/CommonExtensions/Microsoft/TeamFoundation/Team Explorer:/c/Program Files (x86)/

Microsoft Visual Studio/2022/BuildTools/MSBuild/Current/bin/Roslyn:/c/Program Files (x86)/Microsoft SDKs/Windows/v10.0A/bin/NETFX 4.8 Tools:/c/Program Files (x86)/Window

s Kits/10/bin/10.0.19041.0/x86:/c/Program Files (x86)/Windows Kits/10/bin/x86:/c/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/MSBuild/Current/Bin/amd64:/c

/Windows/Microsoft.NET/Framework/v4.0.30319:/c/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/Common7/IDE:/c/Program Files (x86)/Microsoft Visual Studio/202

2/BuildTools/Common7/Tools:/c/Windows/system32:/c/Windows:/c/Windows/System32/Wbem:/c/Windows/System32/WindowsPowerShell/v1.0:/c/Windows/System32/OpenSSH:/c/Program File

s/dotnet:/c/Users/ContainerAdministrator/AppData/Local/Microsoft/WindowsApps:/c/Users/ContainerAdministrator/.dotnet/tools:/c/Program Files/NuGet:/c/Program Files (x86)/

Microsoft Visual Studio/2022/TestAgent/Common7/IDE/CommonExtensions/Microsoft/TestWindow:/c/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/MSBuild/Current/B

in:/c/Program Files (x86)/Microsoft SDKs/Windows/v10.0A/bin/NETFX 4.8 Tools:/c/Program Files (x86)/Microsoft SDKs/ClickOnce/SignTool:/cmd:/c/Users/ContainerAdministrator

/scoop/apps/python/current/Scripts:/c/Users/ContainerAdministrator/scoop/apps/python/current:/c/Users/ContainerAdministrator/scoop/shims:/c/Program Files (x86)/Microsoft

 Visual Studio/2022/BuildTools/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/bin:/c/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/Common7/IDE/CommonEx

tensions/Microsoft/CMake/Ninja'                                                                                                                                          
+ PKG_CONFIG_PATH=/usr/lib/pkgconfig:/usr/share/pkgconfig:/lib/pkgconfig                                                                                                 
+ CONFIG_SITE=/etc/config.site                                                                                                                                           
+ MAYBE_FIRST_START=false                                                                                                                                                
+ SYSCONFDIR=/etc                                                                                                                                                        
+ ORIGINAL_TMP=/tmp                                                                                                                                                      
+ ORIGINAL_TEMP=/tmp                                                                                                                                                     
+ case "$TMP" in                                                                                                                                                         
+ case "$TEMP" in                                                                                                                                                        
+ test -d ''                                                                                                                                                             
+ test '!' -d /tmp                                                                                                                                                       
+ TMPDIR=/tmp                                                                                                                                                            
+ export TMPDIR                                                                                                                                                          
++ export LC_COLLATE=C                                                                                                                                                   
++ LC_COLLATE=C                                                                                                                                                          
++ echo '/etc/post-install/*.post'                                                                                                                                       
+ for postinst in $(export LC_COLLATE=C; echo /etc/post-install/*.post)                                                                                                  
+ '[' -e '/etc/post-install/*.post' ']'                                                                                                                                  
+ '[' '!' 'x4.4.23(2)-release' = x ']'                                                                                                                                   
++ exec /usr/bin/hostname                                                                                                                                                
+ HOSTNAME=2281de303e3a                                                                                                                                                  
++ which bash                                                                                                                                                            
+ SHELL=/usr/bin/bash                                                                                                                                                    
+ profile_d sh                                                                                                                                                           
+ local file=                                                                                                                                                            
++ export LC_COLLATE=C                                                                                                                                                   
++ LC_COLLATE=C                                                                                                                                                          
++ echo /etc/profile.d/aliases.sh /etc/profile.d/bash_profile.sh /etc/profile.d/env.sh /etc/profile.d/git-prompt.sh /etc/profile.d/lang.sh /etc/profile.d/perlbin.sh     
+ for file in $(export LC_COLLATE=C; echo /etc/profile.d/*.$1)                                                                                                           
+ '[' -e /etc/profile.d/aliases.sh ']'                                                                                                                                   
+ . /etc/profile.d/aliases.sh                                                                                                                                            
++ alias 'ls=ls -F --color=auto --show-control-chars'                                                                                                                    
++ alias 'll=ls -l'                                                                                                                                                      
++ case "$TERM" in                                                                                                                                                       
++ for name in node ipython php php5 psql python2.7                                                                                                                      
++ case "$(type -p "$name".exe 2>/dev/null)" in                                                                                                                          
+++ type -p node.exe                                                                                                                                                     
++ continue                                                                                                                                                              
++ for name in node ipython php php5 psql python2.7                                                                                                                      
++ case "$(type -p "$name".exe 2>/dev/null)" in                                                                                                                          
+++ type -p ipython.exe                                                                                                                                                  
++ continue                                                                                                                                                              
++ for name in node ipython php php5 psql python2.7                                                                                                                      
++ case "$(type -p "$name".exe 2>/dev/null)" in                                                                                                                          
+++ type -p php.exe                                                                                                                                                      
++ continue                                                                                                                                                              
++ for name in node ipython php php5 psql python2.7                                                                                                                      
++ case "$(type -p "$name".exe 2>/dev/null)" in                                                                                                                          
+++ type -p php5.exe                                                                                                                                                     
++ continue                                                                                                                                                              
++ for name in node ipython php php5 psql python2.7                                                                                                                      
++ case "$(type -p "$name".exe 2>/dev/null)" in                                                                                                                          
+++ type -p psql.exe                                                                                                                                                     
++ continue                                                                                                                                                              
++ for name in node ipython php php5 psql python2.7                                                                                                                      
++ case "$(type -p "$name".exe 2>/dev/null)" in                                                                                                                          
+++ type -p python2.7.exe                                                                                                                                                
++ continue                                                                                                                                                              
+ for file in $(export LC_COLLATE=C; echo /etc/profile.d/*.$1)                                                                                                           
+ '[' -e /etc/profile.d/bash_profile.sh ']'                                                                                                                              
+ . /etc/profile.d/bash_profile.sh                                                                                                                                       
++ '[' -e /c/Users/ContainerAdministrator/.bashrc -a '!' -e /c/Users/ContainerAdministrator/.bash_profile -a '!' -e /c/Users/ContainerAdministrator/.bash_login -a '!' -e

 /c/Users/ContainerAdministrator/.profile ']'                                                                                                                            
+ for file in $(export LC_COLLATE=C; echo /etc/profile.d/*.$1)                                                                                                           
+ '[' -e /etc/profile.d/env.sh ']'                                                                                                                                       
+ . /etc/profile.d/env.sh                                                                                                                                                
++ export 'PATH=/c/Users/ContainerAdministrator/bin:/usr/local/bin:/usr/bin:/bin:/opt/bin:/c/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/VC/Tools/MSVC/14

.30.30705/bin/HostX86/x86:/c/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/Common7/IDE/VC/VCPackages:/c/Program Files (x86)/Microsoft Visual Studio/2022/Bu

ildTools/Common7/IDE/CommonExtensions/Microsoft/TestWindow:/c/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/Common7/IDE/CommonExtensions/Microsoft/TeamFoun

dation/Team Explorer:/c/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/MSBuild/Current/bin/Roslyn:/c/Program Files (x86)/Microsoft SDKs/Windows/v10.0A/bin/N

ETFX 4.8 Tools:/c/Program Files (x86)/Windows Kits/10/bin/10.0.19041.0/x86:/c/Program Files (x86)/Windows Kits/10/bin/x86:/c/Program Files (x86)/Microsoft Visual Studio/

2022/BuildTools/MSBuild/Current/Bin/amd64:/c/Windows/Microsoft.NET/Framework/v4.0.30319:/c/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/Common7/IDE:/c/Pro

gram Files (x86)/Microsoft Visual Studio/2022/BuildTools/Common7/Tools:/c/Windows/system32:/c/Windows:/c/Windows/System32/Wbem:/c/Windows/System32/WindowsPowerShell/v1.0

:/c/Windows/System32/OpenSSH:/c/Program Files/dotnet:/c/Users/ContainerAdministrator/AppData/Local/Microsoft/WindowsApps:/c/Users/ContainerAdministrator/.dotnet/tools:/c

/Program Files/NuGet:/c/Program Files (x86)/Microsoft Visual Studio/2022/TestAgent/Common7/IDE/CommonExtensions/Microsoft/TestWindow:/c/Program Files (x86)/Microsoft Vis

ual Studio/2022/BuildTools/MSBuild/Current/Bin:/c/Program Files (x86)/Microsoft SDKs/Windows/v10.0A/bin/NETFX 4.8 Tools:/c/Program Files (x86)/Microsoft SDKs/ClickOnce/S

ignTool:/cmd:/c/Users/ContainerAdministrator/scoop/apps/python/current/Scripts:/c/Users/ContainerAdministrator/scoop/apps/python/current:/c/Users/ContainerAdministrator/

scoop/shims:/c/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/bin:/c/Program Files (x86)/Microsoft Visual

 Studio/2022/BuildTools/Common7/IDE/CommonExtensions/Microsoft/CMake/Ninja'                                                                                              
++ PATH='/c/Users/ContainerAdministrator/bin:/usr/local/bin:/usr/bin:/bin:/opt/bin:/c/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/VC/Tools/MSVC/14.30.307

05/bin/HostX86/x86:/c/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/Common7/IDE/VC/VCPackages:/c/Program Files (x86)/Microsoft Visual Studio/2022/BuildTool

s/Common7/IDE/CommonExtensions/Microsoft/TestWindow:/c/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/Common7/IDE/CommonExtensions/Microsoft/TeamFoundation/

Team Explorer:/c/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/MSBuild/Current/bin/Roslyn:/c/Program Files (x86)/Microsoft SDKs/Windows/v10.0A/bin/NETFX 4.

8 Tools:/c/Program Files (x86)/Windows Kits/10/bin/10.0.19041.0/x86:/c/Program Files (x86)/Windows Kits/10/bin/x86:/c/Program Files (x86)/Microsoft Visual Studio/2022/Bu

ildTools/MSBuild/Current/Bin/amd64:/c/Windows/Microsoft.NET/Framework/v4.0.30319:/c/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/Common7/IDE:/c/Program Fi

les (x86)/Microsoft Visual Studio/2022/BuildTools/Common7/Tools:/c/Windows/system32:/c/Windows:/c/Windows/System32/Wbem:/c/Windows/System32/WindowsPowerShell/v1.0:/c/Win

dows/System32/OpenSSH:/c/Program Files/dotnet:/c/Users/ContainerAdministrator/AppData/Local/Microsoft/WindowsApps:/c/Users/ContainerAdministrator/.dotnet/tools:/c/Progra

m Files/NuGet:/c/Program Files (x86)/Microsoft Visual Studio/2022/TestAgent/Common7/IDE/CommonExtensions/Microsoft/TestWindow:/c/Program Files (x86)/Microsoft Visual Stu

dio/2022/BuildTools/MSBuild/Current/Bin:/c/Program Files (x86)/Microsoft SDKs/Windows/v10.0A/bin/NETFX 4.8 Tools:/c/Program Files (x86)/Microsoft SDKs/ClickOnce/SignTool

:/cmd:/c/Users/ContainerAdministrator/scoop/apps/python/current/Scripts:/c/Users/ContainerAdministrator/scoop/apps/python/current:/c/Users/ContainerAdministrator/scoop/s

hims:/c/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/bin:/c/Program Files (x86)/Microsoft Visual Studio

/2022/BuildTools/Common7/IDE/CommonExtensions/Microsoft/CMake/Ninja'                                                                                                     
++ test -n ''                                                                                                                                                            
++ case "$MSYSTEM" in                                                                                                                                                    
+ for file in $(export LC_COLLATE=C; echo /etc/profile.d/*.$1)                                                                                                           
+ '[' -e /etc/profile.d/git-prompt.sh ']'                                                                                                                                
+ . /etc/profile.d/git-prompt.sh                                                                                                                                         
++ test -f /etc/profile.d/git-sdk.sh                                                                                                                                     
++ TITLEPREFIX=MSYS                                                                                                                                                      
++ test -f /c/Users/ContainerAdministrator/.config/git/git-prompt.sh                                                                                                     
++ PS1='\[\033]0;$TITLEPREFIX:$PWD\007\]'                                                                                                                                
++ PS1='\[\033]0;$TITLEPREFIX:$PWD\007\]\n'                                                                                                                              
++ PS1='\[\033]0;$TITLEPREFIX:$PWD\007\]\n\[\033[32m\]'                                                                                                                  
++ PS1='\[\033]0;$TITLEPREFIX:$PWD\007\]\n\[\033[32m\]\u@\h '                                                                                                            
++ PS1='\[\033]0;$TITLEPREFIX:$PWD\007\]\n\[\033[32m\]\u@\h \[\033[35m\]'                                                                                                
++ PS1='\[\033]0;$TITLEPREFIX:$PWD\007\]\n\[\033[32m\]\u@\h \[\033[35m\]$MSYSTEM '                                                                                       
++ PS1='\[\033]0;$TITLEPREFIX:$PWD\007\]\n\[\033[32m\]\u@\h \[\033[35m\]$MSYSTEM \[\033[33m\]'                                                                           
++ PS1='\[\033]0;$TITLEPREFIX:$PWD\007\]\n\[\033[32m\]\u@\h \[\033[35m\]$MSYSTEM \[\033[33m\]\w'                                                                         
++ test -z ''                                                                                                                                                            
+++ git --exec-path                                                                                                                                                      
++ GIT_EXEC_PATH='C:/Program Files/Git/mingw64/libexec/git-core'                                                                                                         
++ COMPLETION_PATH='C:/Program Files/Git/mingw64'                                                                                                                        
++ COMPLETION_PATH='C:/Program Files/Git/mingw64'                                                                                                                        
++ COMPLETION_PATH='C:/Program Files/Git/mingw64/share/git/completion'                                                                                                   
++ test -f 'C:/Program Files/Git/mingw64/share/git/completion/git-prompt.sh'                                                                                             
++ . 'C:/Program Files/Git/mingw64/share/git/completion/git-completion.bash'                                                                                             
+++ case "$COMP_WORDBREAKS" in                                                                                                                                           
+++ : great                                                                                                                                                              
+++ type _get_comp_words_by_ref                                                                                                                                          
+++ [[ -n '' ]]                                                                                                                                                          
++++ compgen -v __gitcomp_builtin_                                                                                                                                       
+++ unset                                                                                                                                                                
+++ __git_merge_strategies=                                                                                                                                              
+++ __git_merge_strategy_options='ours theirs subtree subtree= patience                                                                                                  
        histogram diff-algorithm= ignore-space-change ignore-all-space                                                                                                   
        ignore-space-at-eol renormalize no-renormalize no-renames                                                                                                        
        find-renames find-renames= rename-threshold='                                                                                                                    
+++ __git_all_commands=                                                                                                                                                  
+++ __git_whitespacelist='nowarn warn error error-all fix'                                                                                                               
+++ __git_patchformat='mbox stgit stgit-series hg mboxrd'                                                                                                                
+++ __git_showcurrentpatch='diff raw'                                                                                                                                    
+++ __git_am_inprogress_options='--skip --continue --resolved --abort --quit --show-current-patch'                                                                       
+++ __git_quoted_cr='nowarn warn strip'                                                                                                                                  
+++ __git_ref_fieldlist='refname objecttype objectsize objectname upstream push HEAD symref'                                                                             
+++ __git_sequencer_inprogress_options='--continue --quit --abort --skip'                                                                                                
+++ __git_cherry_pick_inprogress_options='--continue --quit --abort --skip'                                                                                              
+++ __git_untracked_file_modes='all no normal'                                                                                                                           
+++ __git_diff_algorithms='myers minimal patience histogram'                                                                                                             
+++ __git_diff_submodule_formats='diff log short'                                                                                                                        
+++ __git_color_moved_opts='no default plain blocks zebra dimmed-zebra'                                                                                                  
+++ __git_color_moved_ws_opts='no ignore-space-at-eol ignore-space-change                                                                                                
                        ignore-all-space allow-indentation-change'                                                                                                       
+++ __git_diff_common_options='--stat --numstat --shortstat --summary                                                                                                    
                        --patch-with-stat --name-only --name-status --color                                                                                              
                        --no-color --color-words --no-renames --check                                                                                                    
                        --color-moved --color-moved= --no-color-moved                                                                                                    
                        --color-moved-ws= --no-color-moved-ws                                                                                                            
                        --full-index --binary --abbrev --diff-filter=                                                                                                    
                        --find-copies-harder --ignore-cr-at-eol                                                                                                          
                        --text --ignore-space-at-eol --ignore-space-change                                                                                               
                        --ignore-all-space --ignore-blank-lines --exit-code                                                                                              
                        --quiet --ext-diff --no-ext-diff                                                                                                                 
                        --no-prefix --src-prefix= --dst-prefix=                                                                                                          
                        --inter-hunk-context=                                                                                                                            
                        --patience --histogram --minimal                                                                                                                 
                        --raw --word-diff --word-diff-regex=                                                                                                             
                        --dirstat --dirstat= --dirstat-by-file                                                                                                           
                        --dirstat-by-file= --cumulative                                                                                                                  
                        --diff-algorithm=                                                                                                                                
                        --submodule --submodule= --ignore-submodules                                                                                                     
                        --indent-heuristic --no-indent-heuristic                                                                                                         
                        --textconv --no-textconv                                                                                                                         
                        --patch --no-patch                                                                                                                               
                        --anchored=                                                                                                                                      
'                                                                                                                                                                        
+++ __git_diff_difftool_options='--cached --staged --pickaxe-all --pickaxe-regex                                                                                         
                        --base --ours --theirs --no-index --relative --merge-base                                                                                        
                        --stat --numstat --shortstat --summary                                                                                                           
                        --patch-with-stat --name-only --name-status --color                                                                                              
                        --no-color --color-words --no-renames --check                                                                                                    
                        --color-moved --color-moved= --no-color-moved                                                                                                    
                        --color-moved-ws= --no-color-moved-ws                                                                                                            
                        --full-index --binary --abbrev --diff-filter=                                                                                                    
                        --find-copies-harder --ignore-cr-at-eol                                                                                                          
                        --text --ignore-space-at-eol --ignore-space-change                                                                                               
                        --ignore-all-space --ignore-blank-lines --exit-code                                                                                              
                        --quiet --ext-diff --no-ext-diff                                                                                                                 
                        --no-prefix --src-prefix= --dst-prefix=                                                                                                          
                        --inter-hunk-context=                                                                                                                            
                        --patience --histogram --minimal                                                                                                                 
                        --raw --word-diff --word-diff-regex=                                                                                                             
                        --dirstat --dirstat= --dirstat-by-file                                                                                                           
                        --dirstat-by-file= --cumulative                                                                                                                  
                        --diff-algorithm=                                                                                                                                
                        --submodule --submodule= --ignore-submodules                                                                                                     
                        --indent-heuristic --no-indent-heuristic                                                                                                         
                        --textconv --no-textconv                                                                                                                         
                        --patch --no-patch                                                                                                                               
                        --anchored=                                                                                                                                      
'                                                                                                                                                                        
+++ __git_mergetools_common='diffuse diffmerge ecmerge emerge kdiff3 meld opendiff                                                                                       
                        tkdiff vimdiff nvimdiff gvimdiff xxdiff araxis p4merge                                                                                           
                        bc codecompare smerge                                                                                                                            
'                                                                                                                                                                        
+++ __git_fetch_recurse_submodules='yes on-demand no'                                                                                                                    
+++ __git_format_patch_extra_options='                                                                                                                                   
        --full-index --not --all --no-prefix --src-prefix=                                                                                                               
        --dst-prefix= --notes                                                                                                                                            
'                                                                                                                                                                        
+++ __git_log_common_options='                                                                                                                                           
        --not --all                                                                                                                                                      
        --branches --tags --remotes                                                                                                                                      
        --first-parent --merges --no-merges                                                                                                                              
        --max-count=                                                                                                                                                     
        --max-age= --since= --after=                                                                                                                                     
        --min-age= --until= --before=                                                                                                                                    
        --min-parents= --max-parents=                                                                                                                                    
        --no-min-parents --no-max-parents                                                                                                                                
'                                                                                                                                                                        
+++ __git_log_gitk_options='                                                                                                                                             
        --dense --sparse --full-history                                                                                                                                  
        --simplify-merges --simplify-by-decoration                                                                                                                       
        --left-right --notes --no-notes                                                                                                                                  
'                                                                                                                                                                        
+++ __git_log_shortlog_options='                                                                                                                                         
        --author= --committer= --grep=                                                                                                                                   
        --all-match --invert-grep                                                                                                                                        
'                                                                                                                                                                        
+++ __git_log_pretty_formats='oneline short medium full fuller reference email raw format: tformat: mboxrd'                                                              
+++ __git_log_date_formats='relative iso8601 iso8601-strict rfc2822 short local default human raw unix auto: format:'                                                    
+++ __git_push_recurse_submodules='check on-demand only'                                                                                                                 
+++ __git_rebase_inprogress_options='--continue --skip --abort --quit --show-current-patch'                                                                              
+++ __git_rebase_interactive_inprogress_options='--continue --skip --abort --quit --show-current-patch --edit-todo'                                                      
+++ __git_send_email_confirm_options='always never auto cc compose'                                                                                                      
+++ __git_send_email_suppresscc_options='author self cc bodycc sob cccmd body all'                                                                                       
+++ __git_config_vars=                                                                                                                                                   
+++ __git_config_sections=                                                                                                                                               
+++ __git_revert_inprogress_options='--continue --quit --abort --skip'                                                                                                   
+++ __git_cmds_with_parseopt_helper=                                                                                                                                     
+++ [[ -n '' ]]                                                                                                                                                          
+++ ___git_complete git __git_main                                                                                                                                       
+++ local wrapper=__git_wrap__git_main                                                                                                                                   
+++ eval '__git_wrap__git_main () { __git_func_wrap __git_main ; }'                                                                                                      
+++ complete -o bashdefault -o default -o nospace -F __git_wrap__git_main git                                                                                            
+++ ___git_complete gitk __gitk_main                                                                                                                                     
+++ local wrapper=__git_wrap__gitk_main                                                                                                                                  
+++ eval '__git_wrap__gitk_main () { __git_func_wrap __gitk_main ; }'                                                                                                    
+++ complete -o bashdefault -o default -o nospace -F __git_wrap__gitk_main gitk                                                                                          
+++ '[' msys = cygwin ']'                                                                                                                                                
++ . 'C:/Program Files/Git/mingw64/share/git/completion/git-prompt.sh'                                                                                                   
+++ __git_printf_supports_v=                                                                                                                                             
+++ printf -v __git_printf_supports_v -- %s yes                                                                                                                          
++ PS1='\[\033]0;$TITLEPREFIX:$PWD\007\]\n\[\033[32m\]\u@\h \[\033[35m\]$MSYSTEM \[\033[33m\]\w\[\033[36m\]'                                                             
++ PS1='\[\033]0;$TITLEPREFIX:$PWD\007\]\n\[\033[32m\]\u@\h \[\033[35m\]$MSYSTEM \[\033[33m\]\w\[\033[36m\]`__git_ps1`'                                                  
++ PS1='\[\033]0;$TITLEPREFIX:$PWD\007\]\n\[\033[32m\]\u@\h \[\033[35m\]$MSYSTEM \[\033[33m\]\w\[\033[36m\]`__git_ps1`\[\033[0m\]'                                       
++ PS1='\[\033]0;$TITLEPREFIX:$PWD\007\]\n\[\033[32m\]\u@\h \[\033[35m\]$MSYSTEM \[\033[33m\]\w\[\033[36m\]`__git_ps1`\[\033[0m\]\n'                                     
++ PS1='\[\033]0;$TITLEPREFIX:$PWD\007\]\n\[\033[32m\]\u@\h \[\033[35m\]$MSYSTEM \[\033[33m\]\w\[\033[36m\]`__git_ps1`\[\033[0m\]\n$ '                                   
++ MSYS2_PS1='\[\033]0;$TITLEPREFIX:$PWD\007\]\n\[\033[32m\]\u@\h \[\033[35m\]$MSYSTEM \[\033[33m\]\w\[\033[36m\]`__git_ps1`\[\033[0m\]\n$ '                             
++ test -z ''                                                                                                                                                            
++ for c in "$HOME"/bash_completion.d/*.bash                                                                                                                             
++ test '!' -f '/c/Users/ContainerAdministrator/bash_completion.d/*.bash'                                                                                                
+ for file in $(export LC_COLLATE=C; echo /etc/profile.d/*.$1)                                                                                                           
+ '[' -e /etc/profile.d/lang.sh ']'                                                                                                                                      
+ . /etc/profile.d/lang.sh                                                                                                                                               
++ test -z ''                                                                                                                                                            
+++ exec /usr/bin/locale -uU                                                                                                                                             
++ export LANG=en_US.UTF-8                                                                                                                                               
++ LANG=en_US.UTF-8                                                                                                                                                      
+ for file in $(export LC_COLLATE=C; echo /etc/profile.d/*.$1)                                                                                                           
+ '[' -e /etc/profile.d/perlbin.sh ']'                                                                                                                                   
+ . /etc/profile.d/perlbin.sh                                                                                                                                            
++ '[' -d /usr/bin/site_perl ']'                                                                                                                                         
++ '[' -d /usr/lib/perl5/site_perl/bin ']'                                                                                                                               
++ '[' -d /usr/bin/vendor_perl ']'                                                                                                                                       
++ PATH='/c/Users/ContainerAdministrator/bin:/usr/local/bin:/usr/bin:/bin:/opt/bin:/c/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/VC/Tools/MSVC/14.30.307

05/bin/HostX86/x86:/c/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/Common7/IDE/VC/VCPackages:/c/Program Files (x86)/Microsoft Visual Studio/2022/BuildTool

s/Common7/IDE/CommonExtensions/Microsoft/TestWindow:/c/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/Common7/IDE/CommonExtensions/Microsoft/TeamFoundation/

Team Explorer:/c/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/MSBuild/Current/bin/Roslyn:/c/Program Files (x86)/Microsoft SDKs/Windows/v10.0A/bin/NETFX 4.

8 Tools:/c/Program Files (x86)/Windows Kits/10/bin/10.0.19041.0/x86:/c/Program Files (x86)/Windows Kits/10/bin/x86:/c/Program Files (x86)/Microsoft Visual Studio/2022/Bu

ildTools/MSBuild/Current/Bin/amd64:/c/Windows/Microsoft.NET/Framework/v4.0.30319:/c/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/Common7/IDE:/c/Program Fi

les (x86)/Microsoft Visual Studio/2022/BuildTools/Common7/Tools:/c/Windows/system32:/c/Windows:/c/Windows/System32/Wbem:/c/Windows/System32/WindowsPowerShell/v1.0:/c/Win

dows/System32/OpenSSH:/c/Program Files/dotnet:/c/Users/ContainerAdministrator/AppData/Local/Microsoft/WindowsApps:/c/Users/ContainerAdministrator/.dotnet/tools:/c/Progra

m Files/NuGet:/c/Program Files (x86)/Microsoft Visual Studio/2022/TestAgent/Common7/IDE/CommonExtensions/Microsoft/TestWindow:/c/Program Files (x86)/Microsoft Visual Stu

dio/2022/BuildTools/MSBuild/Current/Bin:/c/Program Files (x86)/Microsoft SDKs/Windows/v10.0A/bin/NETFX 4.8 Tools:/c/Program Files (x86)/Microsoft SDKs/ClickOnce/SignTool

:/cmd:/c/Users/ContainerAdministrator/scoop/apps/python/current/Scripts:/c/Users/ContainerAdministrator/scoop/apps/python/current:/c/Users/ContainerAdministrator/scoop/s

hims:/c/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/bin:/c/Program Files (x86)/Microsoft Visual Studio

/2022/BuildTools/Common7/IDE/CommonExtensions/Microsoft/CMake/Ninja:/usr/bin/vendor_perl'                                                                                
++ '[' -d /usr/lib/perl5/vendor_perl/bin ']'                                                                                                                             
++ '[' -d /usr/bin/core_perl ']'                                                                                                                                         
++ PATH='/c/Users/ContainerAdministrator/bin:/usr/local/bin:/usr/bin:/bin:/opt/bin:/c/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/VC/Tools/MSVC/14.30.307

ildTools/MSBuild/Current/Bin/amd64:/c/Windows/Microsoft.NET/Framework/v4.0.30319:/c/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/Common7/IDE:/c/Program Fi
les (x86)/Microsoft Visual Studio/2022/BuildTools/Common7/Tools:/c/Windows/system32:/c/Windows:/c/Windows/System32/Wbem:/c/Windows/System32/WindowsPowerShell/v1.0:/c/Win
dows/System32/OpenSSH:/c/Program Files/dotnet:/c/Users/ContainerAdministrator/AppData/Local/Microsoft/WindowsApps:/c/Users/ContainerAdministrator/.dotnet/tools:/c/Progra
m Files/NuGet:/c/Program Files (x86)/Microsoft Visual Studio/2022/TestAgent/Common7/IDE/CommonExtensions/Microsoft/TestWindow:/c/Program Files (x86)/Microsoft Visual Stu
dio/2022/BuildTools/MSBuild/Current/Bin:/c/Program Files (x86)/Microsoft SDKs/Windows/v10.0A/bin/NETFX 4.8 Tools:/c/Program Files (x86)/Microsoft SDKs/ClickOnce/SignTool
:/cmd:/c/Users/ContainerAdministrator/scoop/apps/python/current/Scripts:/c/Users/ContainerAdministrator/scoop/apps/python/current:/c/Users/ContainerAdministrator/scoop/s
hims:/c/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/bin:/c/Program Files (x86)/Microsoft Visual Studio
/2022/BuildTools/Common7/IDE/CommonExtensions/Microsoft/CMake/Ninja:/usr/bin/vendor_perl'                                                                                
++ '[' -d /usr/lib/perl5/vendor_perl/bin ']'                                                                                                                             
++ '[' -d /usr/bin/core_perl ']'                                                                                                                                         
++ PATH='/c/Users/ContainerAdministrator/bin:/usr/local/bin:/usr/bin:/bin:/opt/bin:/c/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/VC/Tools/MSVC/14.30.307
05/bin/HostX86/x86:/c/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/Common7/IDE/VC/VCPackages:/c/Program Files (x86)/Microsoft Visual Studio/2022/BuildTool
s/Common7/IDE/CommonExtensions/Microsoft/TestWindow:/c/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/Common7/IDE/CommonExtensions/Microsoft/TeamFoundation/
Team Explorer:/c/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/MSBuild/Current/bin/Roslyn:/c/Program Files (x86)/Microsoft SDKs/Windows/v10.0A/bin/NETFX 4.
8 Tools:/c/Program Files (x86)/Windows Kits/10/bin/10.0.19041.0/x86:/c/Program Files (x86)/Windows Kits/10/bin/x86:/c/Program Files (x86)/Microsoft Visual Studio/2022/Bu
ildTools/MSBuild/Current/Bin/amd64:/c/Windows/Microsoft.NET/Framework/v4.0.30319:/c/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/Common7/IDE:/c/Program Fi
les (x86)/Microsoft Visual Studio/2022/BuildTools/Common7/Tools:/c/Windows/system32:/c/Windows:/c/Windows/System32/Wbem:/c/Windows/System32/WindowsPowerShell/v1.0:/c/Win
dows/System32/OpenSSH:/c/Program Files/dotnet:/c/Users/ContainerAdministrator/AppData/Local/Microsoft/WindowsApps:/c/Users/ContainerAdministrator/.dotnet/tools:/c/Progra
m Files/NuGet:/c/Program Files (x86)/Microsoft Visual Studio/2022/TestAgent/Common7/IDE/CommonExtensions/Microsoft/TestWindow:/c/Program Files (x86)/Microsoft Visual Stu
dio/2022/BuildTools/MSBuild/Current/Bin:/c/Program Files (x86)/Microsoft SDKs/Windows/v10.0A/bin/NETFX 4.8 Tools:/c/Program Files (x86)/Microsoft SDKs/ClickOnce/SignTool
:/cmd:/c/Users/ContainerAdministrator/scoop/apps/python/current/Scripts:/c/Users/ContainerAdministrator/scoop/apps/python/current:/c/Users/ContainerAdministrator/scoop/s
hims:/c/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/bin:/c/Program Files (x86)/Microsoft Visual Studio
/2022/BuildTools/Common7/IDE/CommonExtensions/Microsoft/CMake/Ninja:/usr/bin/vendor_perl:/usr/bin/core_perl'                                                             
++ export PATH                                                                                                                                                           
+ '[' -n '' ']'                                                                                                                                                          
+ '[' -f /etc/bash.bashrc ']'                                                                                                                                            
+ . /etc/bash.bashrc                                                                                                                                                     
++ [[ -z '' ]]                                                                                                                                                           
++ CYG_SYS_BASHRC=1                                                                                                                                                      
++ [[ hxBc != *i* ]]                                                                                                                                                     
++ return                                                                                                                                                                
+ '[' -n '' ']'                                                                                                                                                          
+ export PATH MANPATH INFOPATH PKG_CONFIG_PATH USER TMP TEMP HOSTNAME PS1 SHELL tmp temp ORIGINAL_TMP ORIGINAL_TEMP ORIGINAL_PATH CONFIG_SITE                            
+ unset PATH_SEPARATOR                                                                                                                                                   
+ '[' false = true ']'                                                                                                                                                   
+ unset MAYBE_FIRST_START                                                                                                                                                
+ cd C:/TEMP/.git                                                                                                                                                        

C:\TEMP>                                                                                                                                                                 
yegorich commented 2 years ago
"C:/Program Files/Git/usr/bin/bash.exe" -lc "stat C:/TEMP/.git"
....
++ export PATH
+ '[' -n '' ']'
+ '[' -f /etc/bash.bashrc ']'
+ . /etc/bash.bashrc
++ [[ -z '' ]]
++ CYG_SYS_BASHRC=1
++ [[ hxBc != *i* ]]
++ return
+ '[' -n '' ']'
+ export PATH MANPATH INFOPATH PKG_CONFIG_PATH USER TMP TEMP HOSTNAME PS1 SHELL tmp temp ORIGINAL_TMP ORIGINAL_TEMP ORIGINAL_PATH CONFIG_SITE
+ unset PATH_SEPARATOR
+ '[' false = true ']'
+ unset MAYBE_FIRST_START
+ stat C:/TEMP/.git
  File: C:/TEMP/.git
  Size: 0               Blocks: 4          IO Block: 65536  directory
Device: 2a980aa8h/714607272d    Inode: 281474977885218  Links: 1
Access: (0755/drwxr-xr-x)  Uid: (380929/ContainerAdministrator)   Gid: (380929/ UNKNOWN)
Access: 2022-01-28 17:47:24.080548400 +0100
Modify: 2022-01-28 06:41:22.275407700 +0100
Change: 2022-01-28 06:41:22.275407700 +0100
 Birth: 2020-04-28 13:35:42.007765400 +0200
yegorich commented 2 years ago
"C:/Program Files/Git/usr/bin/bash.exe" -lc "cygpath -aw C:/TEMP/.git"
...
++ export PATH
+ '[' -n '' ']'
+ '[' -f /etc/bash.bashrc ']'
+ . /etc/bash.bashrc
++ [[ -z '' ]]
++ CYG_SYS_BASHRC=1
++ [[ hxBc != *i* ]]
++ return
+ '[' -n '' ']'
+ export PATH MANPATH INFOPATH PKG_CONFIG_PATH USER TMP TEMP HOSTNAME PS1 SHELL tmp temp ORIGINAL_TMP ORIGINAL_TEMP ORIGINAL_PATH CONFIG_SITE
+ unset PATH_SEPARATOR
+ '[' false = true ']'
+ unset MAYBE_FIRST_START
+ cygpath -aw C:/TEMP/.git
C:\TEMP\.git

C:\TEMP>
yegorich commented 2 years ago

To rule out the scoop stuff, I have installed git "manually":

ADD https://github.com/git-for-windows/git/releases/download/v2.35.0.windows.1/Git-2.35.0-64-bit.exe git.exe
        # install Git
RUN c:\git.exe /SP- /VERYSILENT /NORESTART /NOCANCEL /CLOSEAPPLICATIONS /RESTARTAPPLICATIONS -Wait -NoNewWindow

But the behavior is stil the same.

yegorich commented 2 years ago
C:\TEMP>"C:/Program Files/Git/usr/bin/bash.exe" -lc "cd C:/TEMP/.git; echo $?"
0
C:\TEMP>

Though the result code is 0, we are still in C:\TEMP

dscho commented 2 years ago

I bet the same happens with a Cygwin Bash, i.e. I suspect that this is actually a bug in the Cygwin runtime (a close fork of which is used in Git for Windows' Bash, namely the MSYS2 runtime).

If that is the case, running the cd command through strace -fF bash -c "cd ..." might turn out to be informative.

yegorich commented 2 years ago

The log is huge: strace.log

This part is strange:

 198  441517 [main] bash 1533 mount_info::conv_to_posix_path: /c/TEMP/ = conv_to_posix_path (C:\TEMP\)
  171  441688 [main] bash 1533 symlink_info::check: -8 = symlink.check(C:\TEMP, 0xFFFFB360) (mount_flags 0x6020, path_flags 0x0)
  233  441921 [main] bash 1533 stat_worker: got 92 error from path_conv
  155  442076 [main] bash 1533 __set_errno: int stat_worker(path_conv&, stat*):2096 setting errno 92
  161  442237 [main] bash 1533 stat_worker: -1 = ((null),0xFFFFC5B0)
dscho commented 2 years ago

171 441688 [main] bash 1533 symlink_info::check: -8 = symlink.check(C:\TEMP, 0xFFFFB360) (mount_flags 0x6020, path_flags 0x0)

This message is produced by this code.

Since Docker volumes are represented as some sort of bogus symlink on some Windows versions, I suspect that we're running into this code block.

At first, I suspected check_reparse_point_target() to return that -8. But that function returns the negative errno value, and 8 corresponds to ENOEXEC, which would not make any sense in this context.

So I think we're running into this block instead, where we "posixify" c:\TEMP and do not receive the expected \??\X:\ prefix (because the bogus symlink target looks more like /ContainerMappedDirectories/). The length of /c/TEMP/ is 8, whose negative is suspiciously identical to the reported value.

Now, as to how to fix this, I can only offer suspicions, and would like to encourage you to run with them, hopefully figuring out a fix:

yegorich commented 2 years ago

Thanks for the hints. I'll try to debug it as described.

Meanwhile, I have some interesting results with different git versions:

yegorich commented 2 years ago

Output from git submodule update --init using git 2.34 (as one can see, the second invocation was successful):

C:\TEMP>git submodule update --init
Submodule 'jimtcl' (https://github.com/msteveb/jimtcl.git) registered for path 'jimtcl'
Submodule 'src/jtag/drivers/libjaylink' (https://repo.or.cz/libjaylink.git) registered for path 'src/jtag/drivers/libjaylink'
Submodule 'tools/git2cl' (https://repo.or.cz/git2cl.git) registered for path 'tools/git2cl'
Cloning into 'C:/TEMP//jimtcl'...
fatal: Invalid path 'C:/TEMP/.git/modules/jimtcl': Not a directory
fatal: clone of 'https://github.com/msteveb/jimtcl.git' into submodule path 'C:/TEMP//jimtcl' failed
Failed to clone 'jimtcl'. Retry scheduled
Cloning into 'C:/TEMP//src/jtag/drivers/libjaylink'...
fatal: Invalid path 'C:/TEMP/.git/modules/src/jtag/drivers/libjaylink': Not a directory
fatal: clone of 'https://repo.or.cz/libjaylink.git' into submodule path 'C:/TEMP//src/jtag/drivers/libjaylink' failed
Failed to clone 'src/jtag/drivers/libjaylink'. Retry scheduled
Cloning into 'C:/TEMP//tools/git2cl'...
fatal: Invalid path 'C:/TEMP/.git/modules/tools/git2cl': Not a directory
fatal: clone of 'https://repo.or.cz/git2cl.git' into submodule path 'C:/TEMP//tools/git2cl' failed
Failed to clone 'tools/git2cl'. Retry scheduled
Cloning into 'C:/TEMP//jimtcl'...
fatal: Invalid path 'C:/TEMP/.git/modules/jimtcl': Not a directory
fatal: clone of 'https://github.com/msteveb/jimtcl.git' into submodule path 'C:/TEMP//jimtcl' failed
Failed to clone 'jimtcl' a second time, aborting

C:\TEMP>git submodule update --init
Cloning into 'C:/TEMP//jimtcl'...
Cloning into 'C:/TEMP//src/jtag/drivers/libjaylink'...
Cloning into 'C:/TEMP//tools/git2cl'...
Submodule path 'jimtcl': checked out 'a77ef1a6218fad4c928ddbdc03c1aedc41007e70'
Submodule path 'src/jtag/drivers/libjaylink': checked out '9aa7a5957c07bb6e862fc1a6d3153d109c7407e4'
Submodule path 'tools/git2cl': checked out '8373c9f74993e218a08819cbcdbab3f3564bbeba'
dscho commented 2 years ago

Most likely the second try takes a different code path where git is asked to cd into the directory (probably because that directory now already exists). And git has no problem since we added that work-around.

As to why earlier Git versions seem not to have any problems? Probably because the Cygwin runtime was taught to handle more types of symlinks in the meantime, and just has not learned yet to work around the mislabeled symlink that some Windows versions show Docker volumes as.