2010-09-21 130 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的默认使用有关。