git status does not work properly with Virtualbox Shared Folders

家住魔仙堡 提交于 2020-01-24 06:14:14

问题


Details

  • Host Machine: macOS Sierra
  • Guest Machine: Ubuntu 64bits 16.04 LTS
  • Virtualbox: 5.1.14

On the host the repository is only local for now. Initialized and have several [local] commits without a single push to remote.

Symptoms

On my host machine I have parent folder with a Git repository on it. I have shared parent folder with the guest machine, after login on the VM the folder is in /media/sf_parent.

In a terminal I do cd /media/sf_parent at the moment the content seems to be properly shared. But when I change to the repo folder I tried to do a git status and the output is as everything single file in the repository is tracked but modified.

The strange part is that the git log delivers the last commit I have made on host. I tried to visually compare both "versions" of the repository folder with ls and they the same value for "update date" and "file size" but have different values for "owner", "group" and "permissions".


What could be the problem?

Maybe Virtualbox somehow does not support this?

Might be the conflict on filesystem level with "owner" and "permissions"?


回答1:


With the help of git config I was able to resolve this problem as I suspected and @g19fanatic suggested this problem seems to be related with "user permissions".

After reading a lot of the properties on the page I tested this two:

git config core.filemode false
git config core.ignorecase false

PS: Their are both true as default.

Restarted the VM and it worked, now working tree is synced between host and guest.




回答2:


linux user administration is your problem. Your vm doesn't know what/who the group/users are from your host machine and vice/versa. The can be fixed by using separate authentication servers for user accounts but that answer is out of scope for StackOverflow.

One git way to fix this would be to host a bare repository on the shared folder and clone locally to the VM. push/pull changes as necessary

from host

cd shared/folder
mkdir <repo name>.git    #.git isn't really needed but is typical
cd <repo name>.git
git init --bare

cd <current repo location>
git remote add origin <path to repo.git folder>
git push --all

from vm

cd ~
git clone <path to shared folder bare repo.git>

be sure to set the username and email address when on the VM so that the commits are attributed to the correct people (using git config)



来源:https://stackoverflow.com/questions/43067801/git-status-does-not-work-properly-with-virtualbox-shared-folders

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!