Как SparkleShare работает с Git?

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

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

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

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

1 ответ

Решение

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

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

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

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

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

Другие вопросы по тегам