git
version-control
cloud
dropbox
n1kh1lp
источник
источник
Ответы:
Я думаю, что Git на Dropbox великолепен. Я использую это все время. У меня есть несколько компьютеров (два дома и один на работе), которые я использую Dropbox как центральное хранилище. Поскольку я не хочу размещать его в общедоступной службе и у меня нет доступа к серверу, к которому я всегда могу подключиться по ssh, Dropbox позаботится об этом, синхронизируя (очень быстро) в фоновом режиме.
Установка выглядит примерно так:
Оттуда вы можете просто клонировать
~/Dropbox/git/project.git
то, что вы связали с вашей учетной записью Dropbox (или поделились этим каталогом с людьми), вы можете выполнять все обычные операции Git, и они будут синхронизироваться со всеми вашими другими машинами автоматически.Я написал сообщение в блоге, на версии Control , ( старая ссылка мертвую ) на моих рассуждениях и как настроить мое окружение, это основано на моем Ruby On Rails опыт разработки, но оно может быть применено к чему - либо, на самом деле.
источник
Правильный способ сделать это - использовать git-remote-dropbox: https://github.com/anishathalye/git-remote-dropbox
Создание собственного репо в Dropbox вызывает много проблем. Аниш (создатель библиотеки) объясняет это лучше всего :
источник
Этот ответ основан на Mercurial опыте , а не на Git, но этот опыт говорит, что использование Dropbox таким способом запрашивает поврежденные репозитории, если даже есть вероятность, что вы будете обновлять один и тот же репозиторий на основе Dropbox с разных машин в разное время (Mac, Unix, Windows в моем случае).
У меня нет полного списка вещей, которые могут пойти не так, но вот конкретный пример, который меня укусил. У каждого компьютера есть свое представление о символах конца строки и о том, как символы верхнего и нижнего регистра обрабатываются в именах файлов. Dropbox и Git / Mercurial обрабатывают это немного по-разному (я не помню точных различий). Если Dropbox обновляет хранилище за спиной Git / Mercurial, то есть preto, сломанное хранилище. Это происходит немедленно и незаметно, поэтому вы даже не знаете, что ваш репозиторий сломан, пока не попытаетесь что-то восстановить из него.
После того, как я покопался в одном беспорядке, занимаясь этим, я использовал следующий рецепт с большим успехом и без каких-либо проблем. Просто переместите свой репозиторий из Dropbox. Используйте Dropbox для всего остального; документация, файлы JAR , все что угодно. И используйте GitHub (Git) или Bitbucket (Mercurial) для управления самим хранилищем. Оба бесплатны, так что это ничего не добавляет к затратам, и теперь каждый инструмент играет на своих сильных сторонах.
Запуск Git / Mercurial поверх Dropbox ничего не добавляет, кроме риска. Не делай этого.
источник
Что касается небольших команд, использующих Dropbox:
Если у каждого разработчика есть свой собственный доступный для записи пустой репозиторий в Dropbox, доступный только для других разработчиков, то это облегчает совместное использование кода без риска повреждения!
Затем, если вам нужна централизованная «основная линия», вы можете попросить одного разработчика управлять всеми ее усилиями из собственного репо.
источник
Я не хотел помещать все свои проекты в один репозиторий Git, и при этом я не хотел входить и запускать этот код для каждого отдельного проекта, поэтому я создал скрипт Bash , который автоматизирует процесс. Вы можете использовать его в одном или нескольких каталогах - так что он может сделать код в этом посте для вас, или он может сделать это для нескольких проектов одновременно.
источник
Я не думаю, что использование Git и Dropbox - это путь ... Просто подумайте об особенностях обоих:
Git:
Dropbox:
И если вы беспокоитесь о том, чтобы поделиться некоторыми своими файлами, почему бы не зашифровать их? И тогда вы можете получить самое большое преимущество Dropbox для Git, то есть иметь открытые и закрытые файлы ...
источник
Сейчас 2015 год, и три дня назад был создан новый инструмент на основе Dropbox API v2 для безопасного использования git в Dropbox. Он работает против API, а не с помощью клиента рабочего стола, и правильно обрабатывает несколько одновременных запросов в репозиторий, размещенный в общей папке.
После настройки он позволяет настроить git remote точно так же, как и любой другой git remote.
источник
Я использую Mercurial (или Git) + TrueCrypt + Dropbox для зашифрованных удаленных резервных копий .
Самое классное, что Dropbox НЕ синхронизирует весь контейнер TrueCrypt, если вы изменили небольшую часть вашего кода. Время синхронизации примерно пропорционально количеству изменений. Несмотря на то, что он зашифрован, комбинация TrueCrypt + Dropbox отлично использует блочный шифр + синхронизацию на уровне блоков.
Во-вторых, монолитный зашифрованный контейнер не только повышает безопасность, но и снижает вероятность повреждения хранилища .
Внимание: Однако вы должны быть очень осторожны, чтобы не устанавливать контейнер во время работы Dropbox. Также может быть затруднительно разрешать конфликты, если 2 разных клиента регистрируют разные версии в контейнере. Таким образом, это практично только для одного человека, использующего его для резервного копирования, а не для команды.
Настроить:
preserve modification timestamp
*.Применение:
PS Снятие флажка
preserve modification timestamp
говорит о том, что файл был изменен, и он должен быть синхронизирован. Обратите внимание, что монтирование контейнера изменяет временную метку, даже если вы не измените в ней файл. Если вы не хотите, чтобы это произошло, просто смонтируйте том какread-only
источник
Мне нравится ответ Дэна МакНевина! Я тоже сейчас использую Git и Dropbox вместе, и я использую несколько псевдонимов в моем .bash_profile, так что мой рабочий процесс выглядит так:
Это мои псевдонимы:
источник
Мы используем этот метод (создание чистого хранилища в Dropbox) в общей папке .
Небольшая группа разработчиков может извлечь из этого простого синхронизированного хранилища и создать локальный клон. Как только единица работы завершена, мы возвращаемся к исходной точке.
Одна вещь, которую я пропускаю, - это хороший способ отправить электронное письмо с информацией о наборе изменений после того, как произойдет толчок к источнику. Мы используем Google Wave для отслеживания изменений вручную.
источник
Я использовал Mercurial рекомендованным способом и призываю вас быть осторожными, особенно если какая-либо из машин отличается. Форум Dropbox полон жалоб на таинственные проблемы с именами файлов, возникающих спонтанно. Hg (и я предполагаю, что Git) не будет замечать или жаловаться во время рутинных проверок, и вы будете слышать о коррупции только тогда, когда он жалуется на поврежденное хранилище, когда вы пытаетесь использовать его по-настоящему. Плохие новости. Хотел бы я быть более конкретным о проблеме и ее обходных путях; Я все еще пытаюсь откопать себя в этом беспорядке.
источник
Есть также проект с открытым исходным кодом (коллекция кроссплатформенных [Linux, Mac, Win] сценариев), который выполняет все мелкие детали управления хранилищем с помощью нескольких (3-4) команд.
https://github.com/karalabe/gitbox/wiki
Пример использования:
После чего нормальное использование git:
Проверьте вики проекта и руководства для полного справочника команд и учебных пособий.
источник
Я храню свои репозитории без Github в Dropbox. Одна оговорка, с которой я столкнулся, была синхронизация после переустановки. Dropbox сначала загрузит самые маленькие файлы, а затем перейдет к более крупным. Не проблема, если вы начинаете ночью и возвращаетесь после выходных :-)
Моя ветка - http://forums.dropbox.com/topic.php?id=29984&replies=6
источник
Сейчас, в 2014 году, я без проблем пользуюсь Git и Dropbox около полутора лет. Некоторые моменты, хотя:
git push
отправляет в удаленный репозиторий, так что если он когда-либо будет поврежден, я легко смогу его восстановить.C:\Users
с,mklink /D link target
потому что некоторые библиотеки указывали на абсолютные местоположения.источник
Мне нравится лучший голос Дэна МакНевина. В итоге я слишком много раз выполнял последовательность команд git и решил создать скрипт. Итак, вот оно:
Сценарий требует только имя проекта. Это сгенерирует git-репозиторий в
~/Dropbox/git/
с указанным именем и отправит все содержимое текущего каталога во вновь созданную главную ветвь источника. Если задано более одного имени проекта, будет использован самый правый аргумент имени проекта.Необязательно, аргумент команды -r указывает удаленную ветвь, которая будет отправлять на мастер-источник. Расположение мастера происхождения проекта также можно указать с помощью аргумента -m. Файл .gitignore по умолчанию также помещается в каталог удаленной ветви. По умолчанию каталог и файл .gitignore указываются в скрипте.
источник
Другой подход:
Все ответы на данный момент, включая ответ @Dan который является самым популярным, направлены на идею использования Dropbox для централизации общего репозитория вместо использования службы, ориентированной на git, такой как github, bitbucket и т. Д.
Но поскольку в первоначальном вопросе не указано, что на самом деле означает «эффективно объединять Git и Dropbox», давайте поработаем над другим подходом: «Использование Dropbox для синхронизации только рабочего дерева».
В руководстве есть следующие шаги:
внутри каталога проекта создается пустой
.git
каталог (напримерmkdir -p myproject/.git
)отменить синхронизацию
.git
каталога в Dropbox. При использовании приложения Dropbox: перейдите в «Настройки», «Синхронизация» и «выберите папки для синхронизации», где.git
каталог должен быть без опознавательных знаков. Это удалит.git
каталог.запустить
git init
в каталоге проектаЭто также работает, если
.git
уже существует, тогда только сделайте шаг 2. Хотя Dropbox сохранит копию файлов git на веб-сайте.Шаг 2 заставит Dropbox не синхронизировать структуру git-системы, что является желаемым результатом для этого подхода.
Почему бы использовать этот подход?
Изменения, которые еще не были переданы, будут иметь резервную копию Dropbox, и они будут синхронизироваться между устройствами.
В случае, если Dropbox что-то испортит при синхронизации между устройствами,
git status
иgit diff
будет удобно разобраться.Это экономит место в учетной записи Dropbox (там не будет храниться вся история)
Это позволяет избежать проблем, поднятых @dubek и @Ates в комментариях к ответу @ Dan, и проблем @clu в другом ответе .
Существование удаленного где-то еще (github и т. Д.) Будет нормально работать при таком подходе.
Работа в разных ветках приносит некоторые проблемы, о которых нужно позаботиться:
Одна потенциальная проблема заключается в том, что Dropbox (излишне?) Синхронизирует потенциально много файлов, когда проверяются разные ветви.
Если два или более синхронизированных устройства Dropbox имеют разные ветки, не зафиксированные изменения на обоих устройствах могут быть потеряны,
Одним из способов решения этих проблем является использование
git worktree
проверок филиалов в отдельных каталогах.источник
xattr -w com.dropbox.ignored 1 /path/to/somewhere
.Для моих 2 центов Dropbox имеет смысл только для личного использования, где вы не хотите беспокоиться о получении центрального хоста репо. Для любого профессионального развития вы, вероятно, создадите больше проблем, чем решите, как уже упоминалось в этой теме несколько раз, Dropbox не предназначен для этого варианта использования. Тем не менее, совершенно безопасный способ выгрузить репозитории на Dropbox без каких-либо сторонних плагинов или инструментов - это использовать пакеты. У меня есть следующие псевдонимы
.gitconfig
для сохранения ввода:Пример:
источник
Я столкнулся с подобной проблемой и создал небольшой сценарий для того же. Идея состоит в том, чтобы использовать Dropbox с Git как можно проще. В настоящее время я быстро реализовал код на Ruby и скоро добавлю еще.
Сценарий доступен по адресу
https://github.com/nuttylabs/box-git
.источник
Без использования сторонних инструментов интеграции я мог бы немного улучшить условия и использовать DropBox и другие подобные сервисы облачных дисков, такие как SpiderOak с Git.
Цель состоит в том, чтобы избежать синхронизации между этими изменениями файлов, так как это может загрузить частичное состояние и затем загрузить его обратно, полностью повредив ваше состояние git.
Чтобы избежать этой проблемы, я сделал:
git bundle create my_repo.git --all
.Он не идеален, поскольку нет гарантии, что он не испортит состояние git снова, но это помогает, и на данный момент у меня не возникло никаких проблем.
источник
В MacOS вы также можете просто остановить Dropbox, внести свои изменения и снова запустить Dropbox. Я использую следующую комбинацию и вполне ей доволен:
В обоих случаях (локальный каталог управляемого проекта git и удаленный репозиторий git, расположенный в Dropbox), выполните следующую команду, чтобы отключить автоматическую упаковку (что является основной проблемой синхронизации Dropbox).
Затем время от времени сжимайте репозитории с отключенным Dropbox. Например, я делаю следующее в моем bash-build-script всякий раз, когда делаю новые выпуски своих приложений.
источник