问题
I just upgraded to OSX Lion on my Mac and I aquired a strange problem with a git repo. I have my .vim files under version control with a number of plugins configured as git submodules. After upgrading, I ran a git status
command into my .vim directory and got the following:
fatal: git status --porcelain failed
fatal: git status --porcelain failed
fatal: git status --porcelain failed
fatal: git status --porcelain failed
fatal: git status --porcelain failed
fatal: git status --porcelain failed
fatal: git status --porcelain failed
fatal: git status --porcelain failed
fatal: git status --porcelain failed
fatal: git status --porcelain failed
fatal: git status --porcelain failed
fatal: git status --porcelain failed
fatal: git status --porcelain failed
fatal: git status --porcelain failed
fatal: git status --porcelain failed
fatal: git status --porcelain failed
fatal: git status --porcelain failed
Does anyone know what my problem is? I searched the above error message on Google and SO, but I didn't find any answers. I've also noticed that git seems to be very slow now. Also, I have no other problems in other git repos (expect the slowness problem), which makes me think the problem is not related to Lion. Does anyone have any suggestions for how I can fix my .vim repo? Thanks in advance for the help.
Here is some of the trace output requested by drizzd:
setup: worktree: /Users/sbrown/.vim/bundle/supertab
setup: cwd: /Users/sbrown/.vim/bundle/supertab
setup: prefix: (null)
trace: built-in: git 'status' '--porcelain'
trace: run_command: 'status' '--porcelain'
trace: exec: 'git' 'status' '--porcelain'
setup: git_dir: .git
setup: worktree: /Users/sbrown/.vim/bundle/surround
setup: cwd: /Users/sbrown/.vim/bundle/surround
setup: prefix: (null)
trace: built-in: git 'status' '--porcelain'
trace: run_command: 'status' '--porcelain'
trace: exec: 'git' 'status' '--porcelain'
setup: git_dir: .git
setup: worktree: /Users/sbrown/.vim/bundle/tasklist
setup: cwd: /Users/sbrown/.vim/bundle/tasklist
setup: prefix: (null)
trace: built-in: git 'status' '--porcelain'
trace: run_command: 'status' '--porcelain'
trace: exec: 'git' 'status' '--porcelain'
setup: git_dir: .git
setup: worktree: /Users/sbrown/.vim
setup: cwd: /Users/sbrown/.vim
setup: prefix: bundle/vim-colors-solarized/
trace: built-in: git 'status' '--porcelain'
trace: run_command: 'status' '--porcelain'
trace: exec: 'git' 'status' '--porcelain'
回答1:
For future reference, the only way I could correct the problem was to remove all submodules and then reinstall them.
回答2:
In case it helps anyone else, I just encountered the same issue and found that running git init
in the project root fixed it.
回答3:
Your git-project (or at least one of your submodules, if you have some) became corrupted. This means that some of the files in your .git
-folder(s) are corrupt or missing.
Fix git-repo
As Jordan mentioned: Go to your root and run git init
. Then try git status
again.
Fix submodules
If this doesn't work, navigate to your submodule-folder(s) and try git init
again. Go back to root and run git status
.
Why is it broken?
One answer could be, that there are problems with the access-permissions. Maybe you're working with several users on the working copy?
Another answer could be some kind of sync-software like OwnCloud, Dropbox, Google Drive or like in my case BitTorrent Sync. My working copies are located in the sync-folder, which is synced between my computer at work and at home. This causes some issues with permissions.
Hope it helps.
来源:https://stackoverflow.com/questions/7301329/strange-problem-with-git-repo