Можно ли разместить пустой Git-репозиторий, используя Dropbox, для обмена кодом? - PullRequest
21 голосов
/ 04 февраля 2010

Я понимаю, что есть похожие вопросы , но мой вопрос немного другой: мне интересно, будет ли работать общий доступ к голому репозиторию через синхронизированную папку Dropbox на нескольких компьютерах поделиться кодом через Git?

Другими словами: делится репозиторием Git через Dropbox так же, как делится им из одного централизованного места, например, через SSH или HTTP?

Обновляется ли репозиторий на локальном диске каждого человека?Это то же самое, что совместное использование репозитория Git через общий сетевой диск?

Примечание: Это , а не эмпирический вопрос: похоже, он работает нормально.Я спрашиваю, совместим ли способ репозитория Git с этим способом обмена.

РЕДАКТИРОВАТЬ Чтобы пояснить / повторить, я говорю о сохранении Git-репозитория на Dropbox как голое хранилище .Я не говорю о сохранении фактических файлов, которые находятся под контролем источника в Dropbox.

Ответы [ 8 ]

20 голосов
/ 04 февраля 2010

Я не вижу причин, по которым это могло бы привести к потере данных - структура хранилища Git является надежной, и в самом хранилище хранилища файлы с одинаковыми именами всегда будут иметь одинаковое содержимое (это не относится к именам ветвей).

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

Вы также можете обнаружить, что, хотя данныевсе это есть, вы получаете незарегистрированные изменения из-за двух копий, в которых одновременно обновляется одна и та же ветка.Это можно обойти, убедившись, что вы нажимаете на разные ветви из каждой копии, но это будет проблемой.

15 голосов
/ 18 февраля 2011

Я уверен, что это небезопасно. В репозитории Git есть куча движущихся частей, и Dropbox может легко разрушить одну из них. Например, вы можете получить неправильные подсказки веток (master и т. Д.) В каталоге refs, или ваше хранилище объектов может перестать работать, если файл objects/info/packs имеет неправильное содержимое. Репозитории Git довольно просты и надежны, но они не просто тупое неразрывное хранилище.

Доступ к удаленным репозиториям через SSH, git или HTTP, или даже локально в сетевой файловой системе, безопасен, поскольку доступ к репозиторию возможен только через процесс git, который гарантирует, что все перемещено в нужное место порядок. Но Dropbox не дает никаких гарантий относительно порядка, поэтому вы можете потерять данные.

Просто используйте вместо этого Git-сервер (или любой SSH-сервер) - если у вас его нет, GitHub , Bitbucket или GitLab разум. Это избавит вас от многих проблем и не сложнее в использовании, чем локальный репозиторий, доступный через Dropbox (у вас просто SSH-URL вместо локальных путей).

12 голосов
/ 04 февраля 2010

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

9 голосов
/ 16 июля 2010

У меня были проблемы с использованием Dropbox с Git и с Mercurial.Файлы репозитория часто бывают повреждены, возможно, из-за того, что синхронизация Dropbox не идеальна, особенно когда изменения вносятся из разных мест.Кроме того, Dropbox работает в фоновом режиме, поэтому очень легко случайно попытаться использовать репозиторий (или перезагрузить компьютер), когда он находится в середине операции синхронизации.не очень хорошая замена для общего диска или «реального» удаленного Git-репозитория.

5 голосов
/ 04 февраля 2010

Раньше я делал это с MobileMe, но компьютеры не синхронизировались. У каждого компьютера будет репо, отличное от хранилища в облаке, и, поскольку в MobileMe нет понятия «слияние» (и я полагаю, DropBox тоже, верно?), Я бы в итоге просто выбрал версию сохранить и потерять некоторые изменения или скопировать изменения и повторно применить их. Жизнь стала намного проще с тех пор, как я перешел на центральное Git-репо.

Если это пока работает для вас, хорошо. Я полагаю, вам будет очень больно, если два разработчика будут одновременно толкать свои репо. Как DropBox узнает, что правильно?

3 голосов
/ 30 сентября 2012

Если бы я сказал вам, что есть случаи, когда Dropbox испортил мой Git, я бы ответил на ваш вопрос противоречием?По крайней мере, по моему опыту, это происходило более 5 раз, и многие люди имеют такой же опыт.

Но в настоящее время я не верю, что Dropbox действительно важен для Git, действительно,На самом деле вы можете установить удаленные ветви (Github, Gitorious, Bitbucket), которые могут заменить функции общего доступа к Dropbox и истории изменений (не все ли о Dropbox?) И предложить вам еще больше.

2 голосов
/ 08 мая 2010

Одна проблема с DropBox связана с тем, как они обрабатывают исторические резервные копии. Хотя вы можете откатить отдельный файл (в течение последних 30 дней или навсегда, если у вас есть PackRat), вы не можете откатить целые каталоги. Это означает, что если ваше хранилище по какой-либо причине испорчено, то удивительный сервис архивирования резервных копий по сути бесполезен, поскольку вам придется нажимать на тысячи файлов, чтобы вернуть их к более ранней версии.

А затем, если хотите, возникают проблемы с условиями гонки, о которых упоминалось в большинстве других ответов.

0 голосов
/ 17 февраля 2011

Я просто размещаю свой репозиторий на github.com как частный репозиторий. Да, вы должны заплатить за микро-план ($ 7 / план), но у вас есть защита, зная, что у вас есть резервная копия вашего кода извне.

...