I am working on setting up git repositories on a windows server (2019), attempting to follow https://git-scm.com/book/en/v2/Git-on-the-Server-Setting-Up-the-Server. However, no matter what I do, git push comes up with fatal: ''/Users/testing/testrepo.git'' does not appear to be a git repository.
I ran:
git init
git add test.txt (test file, just contained test)
git commit -m "test"
git remote add origin testing@(removed):Users/testing/testrepo.git
git push origin master
After struggling with this for a while, I enabled logging for ssh and found this line on the server side log file:
7744 2021-06-09 03:58:37.691 debug1: Executing command: "c:\windows\system32\cmd.exe" /c "git-receive-pack '/Users/testing/testrepo.git'" with no pty
I tried manually running git-recieve-pack '/Users/testing/testrepo.git', and it came up with the same error. However, I then tried running git-receive-pack "/Users/testing/testrepo.git", and it gave
00bb0000000000000000000000000000000000000000 capabilities^{} report-status report-status-v2 delete-refs side-band-64k quiet atomic ofs-delta object-format=sha1 agent=git/2.32.0.windows.1
0000
The only difference was " instead of '. Is this something weird with windows server, or am I doing something wrong?
Turns out it was an issue with the ssh server I was using: https://github.com/PowerShell/Win32-OpenSSH/issues/752. One of the workarounds in the comments was to set the git receivepack and uploadpack commands to use powershell, but since I didn't want to change that for my global git config or have to do it for every repository I found a better solution. Following https://learn.microsoft.com/en-us/windows-server/administration/openssh/openssh_server_configuration, I added a key to HKLM:\SOFTWARE\OpenSSH: DefaultShell = "C:\windows\System32\WindowsPowerShell\v1.0\powershell.exe". Now ssh commands go to powershell by default on that server, which fixed the issue with git-receive-pack.