2011-12-19 117 views
2

我們在工作中遇到了一個奇怪的問題,我一直無法弄清楚。我們都在我們的臺式機上使用帶有Snow Leopard的MacBook,並且我們也有一些遠程使用的Linux服務器。我的一些團隊成員將git存儲庫放在Mac和Linux服務器之間共享的NFS文件系統上,這樣他們就不必考慮在其個人工作流程中共享代碼庫之間的代碼。git顯示在Mac上更改的隨機文件NFS文件系統

這是奇怪的開始,在OSX機器git會隨機在狀態展示一些文件過時的當您嘗試如果您運行git status沒有文件顯示過時的合併或轉換分支等。 gitk將以相同的方式顯示文件被修改但未提交的狀態。如果你reset --hard這些文件,你可以有時改變分支之前,這再次出現,但大多不是。如果您登錄到其中一臺Linux機器並查看相同的存儲庫,那麼所有工作都可以完美地工作這些文件沒有標記爲已更改,您可以隨心所欲地做任何事情。

我已經消除了線結束差異和文件模式差異作爲罪魁禍首,但我不知道還有什麼其他嘗試。是否有一些OSX特定的NFS交互,我們必須以某種方式解決?

+0

您的NFS服務器是否正確保存可執行位? – Romain 2011-12-19 15:06:33

+0

除了@Romains問題:當文件顯示'過時'時:'git diff'返回什麼? – eckes 2011-12-19 15:10:06

+0

我已經更新了我的文章,我誤以爲這些文件實際上並沒有顯示出來。 'git diff'什麼都不顯示(立即返回而沒有輸出)。 Mac和Linux上的'ls -l'看起來都一樣,有什麼我應該看的?在啓用了空白模式的emacs中,文件在Linux和Mac上顯示爲相同,並且具有相同的文件編碼。 – asm 2011-12-19 16:59:29

回答

3

也許服務器和工作站之間的不同步時間使文件的修改時間不可靠。 core.trustctime的設置有幫助嗎? (默認情況下是這樣)。 還有更重的設置:core.ignoreStat忽略更改檢測代碼中的完整stat(2)信息。

相關問題