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

1418
Far_Eggs

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

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

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

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

3

1 ответ на вопрос

4
FSMaxB

SparkleShare gets notified of local changes to the data via inotify, then it waits until the filesystem activities settle and starts commiting and pushing the changes to the server via SSH. In order to know when new files are available, there is a server provided by the Sparkleshare developers where Sparkleshare creates a new channel for each repository so push notifications can be sent to every instance subscribed to the channel when files are changed. If this is not possible SparkleShare falls back to polling.

The server side is fully passive and doesn't know anything about SparkleShare at all, it's just a git repository.

Now some of my experience with the conflict management and binary files, this might be biased:

I've been trying to use SparkleShare for half a year now but I gave up last week. Everything goes fine until you make different changes on different devices while being offline. This nearly always resulted in me having to resolve the conflicts manually with my not that good git skills. As far as I know, when having a conflict, Sparkleshare tries to get the HEAD of the repository back to the commit that is common between both conflicting changes, then plays the commits from the server on top of it and then tries to apply the local changes, but I'm not sure about that and it didn't work for me. This problem in combination with some problems that git has with binary files that are changing, resulted in times when my CPU was at 100% regularly until resolving the conflicts manually. On one of my devices with a low ram environment, it couldn't even clone one of my repositories, because I ran out of memory reproducably.

I know you didn't ask for my advice on how to use SparkleShare, but I advise you not to use it with binary files and/or files that are changing rapidly like savegames, some config files etc.

Год или два назад, когда я впервые услышал о sparkleshare (до того, как он вышел в Linux) и увидел, что он использует git под капотом, мне было интересно, как они собираются избежать его полного сосания двоичных файлов ... Звучит так, как будто они этого не делали. т. Sirex 11 лет назад 0
@Sirex Да, им лучше не планировать Mercurial в качестве альтернативного бэкэнда в будущем, а внедрять его прямо сейчас (или они должны были использовать его с самого начала) FSMaxB 11 лет назад 0

Похожие вопросы