2010-09-21 176 views
6

我有一個存儲在我的Dropbox中的git存儲庫(和工作目錄),所以我可以在計算機之間來回移動而不必提交或存儲(閱讀:根本沒有任何努力) 。除了一個令人煩惱的小煩惱之外,這個工作很好。Dropbox中的非同步Git存儲庫

每隔一段時間,我都會讓一臺計算機處於完全提交狀態,以便在另一臺計算機上啓動並發現git status報告發生更改。這些更改不可避免地與權限相關。我不確定的是爲什麼?我認爲這可能與Dropbox如何在同步計算機上寫入文件有關,但兩個系統上的umask都設置爲0002.我認爲該值決定了Dropbox寫入/更新的文件的模式,但它不會是我第一次錯了。

我知道我只能告訴Git忽略文件模式,但這只是掩蓋了問題。我真的很想理解它,所以我可以做出明智的決定如何繼續。

謝謝。

UPDATE

所以這裏有一個倉庫失控,即使它完全包含在Dropbox的同步的一個相當不錯的代表性的例子。正如我們講,我個人的筆記本電腦是報告一個乾淨的工作目錄,我的項目之一:

$ git status 
# On branch develop 
nothing to commit (working directory clean) 

我的工作筆記本電腦,不過,報道了一些未跟蹤文件。讓我再說一遍:未追蹤文件。

$ git status 
# On branch develop 
# Untracked files: 
# (use "git add <file>..." to include in what will be committed) 
# 
# html/cake/console/libs/templates/ 
# ...4 more files... 
# html/cake/tests/test_app/plugins/test_plugin/views/themed/ 
nothing added to commit but untracked files present (use "git add" to track) 

這怎麼可能?我的~/.gitignore文件也在兩臺機器上共享(不是任何這些路徑都被忽略在忽略文件中)。 Git的另一個組件 - 或者Dropbox--可以在這裏玩嗎?

回答

1

我在同樣的情況下得到了這個確切的問題。

要停止文件git status顯示可以設置git的忽略文件模式的變化:

git config core.filemode false 

這種變化是本地的Git倉庫,並將與文件一起同步。

1

你可能想檢查你在哪裏設置你的umask;這可能是Dropbox的啓動與你的shell有不同的umask。但是,我相信git會忽略組/其他權限,並且主要關注執行位,它不應受umask影響。調試的一些想法:

  • 您可以重現這種按需?怎麼樣?
  • 你在什麼操作系統之間進行同步?
  • 如果您git checkout -f上的文件有問題,他們是否獲得正確的權限?
  • 如果您只是在一個系統上有文件chmod,那麼這個更改會傳播嗎?
+0

對你的問題:不(我經常看到這個,但並不一致),兩個Mac,我會嘗試,是的(至少在短期內)。我會繼續鑽研並跟進。 – 2010-09-22 12:21:00

+0

Google搜索Dropbox和OS X權限會返回http://hints.macworld.com/article.php?story=20081009204908181,但我認爲這與您所描述的情況無關。 – 2010-09-22 13:39:55

+0

這需要一段時間才能重現自己。我沒有花很多時間嘗試,但我仍然無法預測它的複製。我現在所擁有的是一個系統,其中有幾個文件有644個燙髮,'git status'顯示他們沒有修改。另一個系統,其中相同的文件是644和'git status',顯示從755修改的權限。 – 2010-09-29 11:35:07

0

你正在使用Mac的事實是相關的 - 在評論中提到的Macworld Hints article解釋了這個問題(但是請閱讀解釋如何修復權限的評論,而不是絕對權限可能會讓事情變得更糟)。

這個Dropbox Support answer解釋了可能發生的事情以及如何解決它 - 與MacOS X Leopard(10.5)如何更改ACL的默認使用有關。