Использование Dropbox как git рабочего каталога на нескольких машинах - фиксации не синхронизируются отлично

Во-первых, я хотел бы подчеркнуть, что этот вопрос НЕ касается размещения моего центрального репо на Dropbox и что я довольно новичок в использовании git. Ни один из других вопросов, связанных с Dropbox и git, которые я мог бы найти, действительно отвечал на мой вопрос; все они либо размещают ваш репозиторий с помощью Dropbox, либо являются ли "хорошей идеей" использовать эти два совместно, ни о том, о чем я прошу здесь.

Мой вопрос таков: у меня есть два компьютера, каждый из которых имеет двойную загрузку Windows и Ubuntu (ноутбук и рабочий стол). У меня есть локальный репозиторий git (клонированный из репозитория github), расположенный в папке Dropbox, так что он синхронизируется между машинами и операционными системами. Когда я делаю фиксацию на одной машине/операционной системе, она, похоже, не синхронизирует статус фиксации с другими машинами.

например:.

На моем рабочем столе Windows я вношу изменения в foo.cpp. Затем я git commit -a 'и' git push ', нажав мои изменения в репозиторий, размещенный в github. Изменения в файлах также синхронизируются в моей папке Dropbox, и когда я запишусь на свой Windows-ноутбук в школе, все загружается без проблем. Однако, когда я набираю 'git status', он говорит:

# On branch master
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   foo.cpp
#
no changes added to commit (use "git add" and/or "git commit -a")

Но я уже сделал эти изменения на своей другой машине, якобы, в том же рабочем каталоге. Попытка "git pull" с серверов github дает мне сообщение, что все "уже обновлено".

Я бы надеялся, что статус репозитория будет легко синхронизирован Dropbox. Кто-нибудь знаком с этим способом? Спасибо!

Ответ 1

TL; DR

Не используйте Dropbox для параллельных операций с Git.

Возможная непротиворечивость вызовет ваше горе

Dropbox дает вам возможную согласованность. Использование его в качестве хранилища для критических операций Git - это плохая идея и торговля;. Это еще хуже, если вы используете его как рабочее дерево, а не как голый репозиторий. Вы, конечно же, можете это сделать, но вам нужно понять ограничения этого подхода.

Dropbox и Spideroak Hive отлично подходят, если вы хотите использовать синхронизированные каталоги в качестве рабочего дерева для одного пользователя за раз. Просто убедитесь, что ваши файлы и папки полностью синхронизированы, прежде чем обращаться к ним из другой системы. До тех пор, пока вы придерживаетесь однопользовательского однопоточного рабочего процесса, вы не должны сталкиваться с проблемами, но ваш пробег может отличаться.

Timestamps

Вы также можете столкнуться с проблемами, если используете несколько компьютеров, которые не согласны во времени. Если вы не используете NTP, один машинный такт может быть впереди или позади другого. Это может привести к ситуациям, когда служба синхронизации считает, что новый файл на самом деле является более старым файлом (или наоборот). Короче говоря, все, что полагается на метки времени, может быть подвержено ошибкам.

Точность временных меток особенно важна, если вы используете GNU make или другие инструменты, которые полагаются на них. Если вы собираетесь использовать Dropbox для синхронизации рабочего дерева, убедитесь, что ваш хронометраж является точным во всех системах, которые будут касаться этого дерева.