O SparkleShare é notificado de alterações locais nos dados via inotify, em seguida, aguarda até que as atividades do sistema de arquivos se estabeleçam e comecem a confirmar e enviar as alterações para o servidor via SSH. Para saber quando novos arquivos estão disponíveis, existe um servidor fornecido pelos desenvolvedores do Sparkleshare, onde o Sparkleshare cria um novo canal para cada repositório, de forma que as notificações por push possam ser enviadas para cada instância inscrita no canal quando os arquivos forem alterados. Se isso não for possível, o SparkleShare volta a pesquisar.
O lado do servidor é totalmente passivo e não sabe nada sobre o SparkleShare, é apenas um repositório git.
Agora, um pouco da minha experiência com o gerenciamento de conflitos e arquivos binários, isso pode ser tendencioso:
Estou tentando usar o SparkleShare há meio ano, mas desisti na semana passada. Tudo vai bem até que você faça alterações diferentes em dispositivos diferentes enquanto estiver off-line. Isso quase sempre resultou em eu ter que resolver os conflitos manualmente com minhas habilidades de git não. Tanto quanto eu sei, quando tendo um conflito, Sparkleshare tenta obter o HEAD do repositório de volta para o commit que é comum entre as duas mudanças conflitantes, então joga os commits do servidor em cima dele e então tenta aplicar o local mudanças, mas eu não tenho certeza sobre isso e não funcionou para mim. Esse problema em combinação com alguns problemas que o git tem com arquivos binários que estão mudando, resultou em momentos em que minha CPU estava em 100% regularmente até resolver os conflitos manualmente. Em um dos meus dispositivos com um ambiente de memória baixa, ele não conseguia nem clonar um dos meus repositórios, porque fiquei sem memória reproduzível.
Eu sei que você não pediu meu conselho sobre como usar o SparkleShare, mas eu aconselho que você não o use com arquivos binários e / ou arquivos que estão mudando rapidamente como savegames, alguns arquivos de configuração, etc.