Como o SparkleShare funciona com o Git?

3

Eu não consegui encontrar uma resposta para isso em nenhum lugar na internet, então eu queria trazer minha pergunta aqui, para ver se alguém tem uma resposta!

Sou novo na cena do Git e tenho curiosidade em saber como o SparkleShare funciona em conjunto com o Git.

Eu sei que o SparkleShare se conecta ao repositório em um servidor privado por SSH & por padrão, usa a porta 22, que é a porta padrão do sFTP no protocolo SSH. O que eu não entendo é como ele sincroniza os arquivos entre as máquinas através do servidor. Quando você faz uma edição em um arquivo, o SparkleShare está empurrando o commit para o servidor, e todas as outras máquinas estão esperando para buscar as alterações do arquivo? Ou o servidor envia as alterações para máquinas associadas? Ou é um gancho git que obtém os dados do servidor?

Agradecemos antecipadamente por qualquer insight.

    
por Far_Eggs 22.05.2013 / 20:37

1 resposta

4

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.

    
por 22.05.2013 / 21:43