Использование Dropbox для синхронизации файлов и их резервного копирования в управлении версиями

Я использую dropbox для случайных текстовых заметок (org-mode) и точечных файлов, которые я загружаю, а именно

  • часть моей инициализации bash
  • Конфигурация emacs
  • Конфигурация vim

Документация в режиме Org предлагает некоторую резервную копию в случае ошибки при редактировании сложенных разделов. Имеет смысл. Мне также нужны резервные копии, если я хочу отменить изменение конфигурации.

Есть много сообщений о том, почему использование git может ломаться в Dropbox.

Я вижу несколько вариантов:

  • Не использовать dropbox и использовать битбакет для размещения файлов на git. Недостаток заключается в том, что когда я переключаю машины, я должен помнить, чтобы делать любые изменения, что не удобно.

  • Я могу использовать git с помощью задания chron на одной из моих машин для резервного копирования файлов в папке Dropbox и убедиться, что каталог git не синхронизирован с помощью Dropbox. Недостатком было бы то, что это немного асимметрично, поскольку одна машина имеет git в файлах dropbox. Однако история предназначена только для целей резервного копирования, а не для совместной работы.

  • Не беспокойтесь о проблемах с Dropbox, так как я редко фиксирую изменения и не делаю никаких других команд с репозиториями git.

  • Может быть комбинация # 1 и # 2. Иногда нажимайте мои изменения на удаленный, имея каталог .git, не синхронизированный.

Ответ 1

Вы можете использовать dropbox, просто не для полного годового репозитория Git (из-за большого количества файлов для синхронизации и риска для поврежденного репо, если даже один из этих файлов не получает синхронизацию должным образом, как показано в Git ref master теперь пуст, как восстановить?").

Я предпочитаю использовать dropbox в сочетании с Git репо пакетом (т.е. одним файлом):
См. "Git с Dropbox" и "Резервное копирование локального репозитория Git.
См. Подробный анализ в этом сообщении .

Здесь вы можете увидеть пример script для этой задачи (пример shtirlic (Serg Podtynnyi)):

#!/usr/bin/env ruby
if __FILE__ == $0
        bundle_name = ARGV[0] if (ARGV[0])
        bundle_name = `pwd`.split('/').last.chomp if bundle_name.nil?
        bundle_name += ".git.bundle"
        puts "Backing up to bundle #{bundle_name}"
        `git bundle create ~/Dropbox/backup/git-repos/#{bundle_name} --all`
end