msysgit / git

msysGit-based Git for Windows 1.x is now superseded by Git for Windows 2.x
http://github.com/git-for-windows/git
Other
1.01k stars 316 forks source link

Pull fails in symlinked submodule on Windows #247

Closed euclio closed 9 years ago

euclio commented 10 years ago

Steps to reproduce:

  1. Open Administrator command prompt.

    mkdir repo
    cd repo
    git init
    mkdir dir
    cd dir
    git submodule add <some arbitrary git repo> submodule
    cd ..
    mklink /D link dir\submodule
    cd link
    git pull origin master
  2. Expected behavior: The submodule is updated to origin/master.
  3. Actual behavior: Command fails, outputs

    fatal: Not a git repository: ../../.git/modules/dir/submodule
t-b commented 10 years ago

What is your git version and windows version? Have you enabled/disabled core.symlinks?

Symlinks are in general problematic with our git.

frogonwheels commented 10 years ago

I thought I had symlinks largely working for git 2, but I've had some flaws in my implementation pointed out to me, so I need to do a bit of reworking. Meanwhile symlinks and msysgit don't work at all. Msys has no support for it. (It's in msys2)

euclio commented 10 years ago
git version 1.9.4.msysgit.0
OS Name:                   Microsoft Windows 8.1 Pro
OS Version:                6.3.9600 N/A Build 9600

I have not enabled or disabled core.symlinks.

frogonwheels commented 10 years ago

When I say "I thought I had", this means that I had some things that were fundamentally bad, and so the patches have been excluded. I'm trying to find time to follow up on the recommendations and get it fixed. At least I have the tests working though; that should make it a whole bunch easier this time. What you are trying to do won't work without the symlink changes. As with all things msysgit, the more people who actually dig in and do work, the easier it gets.

paquettej commented 10 years ago

I am seeing a similar issue with symlinks in 1.9.0.msysgit.0. I have a directory within my source tree that is a symlink (mklink /d) to a folder outside the tree. I was able to do an initial commit without issue. Now that I have modified files within that folder, git status shows them as deleted.

dscho commented 10 years ago

@snowmoonsoftware let's follow best practices and test against the latest release, yes?

paquettej commented 10 years ago

@dscho Confirmed the issue exists using git version 1.9.4.msysgit.2

kmashint commented 10 years ago

+1 on any progress to have symlinks working with git-Windows, although this is a dependency on MSYS as well.

@dscho I'll see if I can get time to write code rather than comments ;-)

dscho commented 10 years ago

+1 on any progress to have symlinks working with git-Windows, although this is a dependency on MSYS as well.

@kmashint unfortunately, votes do not matter much in this project; contributions matter a lot, though.

frogonwheels commented 10 years ago

@kmashint - Look at my work and the final criticisms of it. The changes to all the tests are relevant, mostly until msys supports symlinks. There's a lot there that is still correct, and it's just a matter of redoing some of it (like the Stat - which works on the whole path instead of just the last item).

dscho commented 9 years ago

Symlink support was finally merged into Git for Windows 2.x; Please note that you will have to activate the support specifically using core.symlinks:

git clone -c core.symlinks=true <URL>