3

Я нигде не смог найти ответ на этот вопрос в Интернете, поэтому я хотел перенести свой вопрос сюда, чтобы узнать, есть ли у кого-нибудь ответ!

Я новичок в Git-сцене, и мне любопытно, как SparkleShare работает в сочетании с Git.

Я знаю, что SparkleShare подключается к хранилищу на частном сервере через SSH и по умолчанию использует порт 22, который является портом по умолчанию для sFTP по протоколу SSH. Чего я не понимаю, так это как он синхронизирует файлы между машинами через сервер. Когда вы вносите изменения в файл, SparkleShare передает фиксацию на сервер, и все остальные машины ждут, чтобы получить изменения файла? Или сервер отправляет изменения на связанные машины? Или это git hook, который получает данные с сервера?

Заранее спасибо за любые идеи.

1 ответ1

4

SparkleShare получает уведомление о локальных изменениях данных с помощью inotify, затем ждет, пока действия файловой системы не завершатся, и не начнет фиксировать и отправлять изменения на сервер через SSH. Чтобы узнать, когда новые файлы доступны, есть сервер, предоставленный разработчиками Sparkleshare, где Sparkleshare создает новый канал для каждого репозитория, чтобы push-уведомления можно было отправлять каждому экземпляру, подписанному на канал, при изменении файлов. Если это невозможно, SparkleShare возвращается к опросу.

Серверная часть полностью пассивна и вообще ничего не знает о SparkleShare, это просто git-репозиторий.

Теперь некоторые из моего опыта с управлением конфликтами и двоичными файлами, это может быть предвзятым:

Я пытался использовать SparkleShare уже полгода, но на прошлой неделе я сдался. Все идет хорошо, пока вы не внесете различные изменения на разных устройствах в автономном режиме. Это почти всегда приводило к тому, что мне приходилось разрешать конфликты вручную с моими не очень хорошими навыками. Насколько я знаю, при возникновении конфликта Sparkleshare пытается вернуть HEAD хранилища обратно в коммит, который является общим для обоих конфликтующих изменений, затем воспроизводит коммиты с сервера поверх него и затем пытается применить локальный изменения, но я не уверен в этом, и это не сработало для меня. Эта проблема в сочетании с некоторыми проблемами, которые есть у git с бинарными файлами, которые меняются, приводили к тому, что мой ЦП работал на 100% регулярно до разрешения конфликтов вручную. На одном из моих устройств со средой с низкой оперативной памятью он не мог даже клонировать одно из моих хранилищ, потому что у меня не хватало воспроизводимой памяти.

Я знаю, что вы не спрашивали моего совета о том, как использовать SparkleShare, но я советую вам не использовать его с двоичными файлами и / или файлами, которые быстро меняются, такими как savegames, некоторые файлы конфигурации и т.д.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .