SparkleShare 如何与 Git 协作?

SparkleShare 如何与 Git 协作?

我在互联网上任何地方都找不到这个问题的答案,所以我想在这里提出我的问题,看看是否有人有答案!

我是 Git 领域的新手,我很好奇 SparkleShare 如何与 Git 协同工作。

我知道 SparkleShare 通过 SSH 连接到私有服务器上的存储库,默认情况下使用端口 22,这是 SSH 协议下 sFTP 的默认端口。我不明白的是它如何通过服务器在机器之间同步文件。当您对文件进行编辑时,SparkleShare 是否会将提交推送到服务器,而所有其他机器都在等待获取文件更改?还是服务器将更改推送到相关机器?还是它是一个从服务器获取数据的 git 钩子?

提前感谢您的任何见解。

答案1

SparkleShare 通过 inotify 收到本地数据更改通知,然后等待文件系统活动稳定下来,然后开始通过 SSH 提交和推送更改到服务器。为了知道新文件何时可用,Sparkleshare 开发人员提供了一个服务器,Sparkleshare 为每个存储库创建一个新频道,因此当文件更改时,可以向订阅该频道的每个实例发送推送通知。如果这不可能,SparkleShare 将回退到轮询。

服务器端完全是被动的,根本不知道有关 SparkleShare 的任何信息,它只是一个 git 存储库。

现在谈谈我对冲突管理和二进制文件的一些经验,这可能会有偏见:

我已经尝试使用 SparkleShare 半年了,但上周我放弃了。一切都很顺利,直到你在离线时在不同设备上做出不同的更改。这几乎总是导致我不得不用我不太好的 git 技能手动解决冲突。据我所知,当发生冲突时,Sparkleshare 会尝试将存储库的 HEAD 返回到两个冲突更改之间共同的提交,然后在其上播放来自服务器的提交,然后尝试应用本地更改,但我对此不确定,而且它对我来说不起作用。这个问题加上 git 在更改二进制文件时遇到的一些问题,导致我的 CPU 经常处于 100%,直到手动解决冲突。在我的一台内存较低的设备上,它甚至无法克隆我的一个存储库,因为我反复耗尽了内存。

我知道您没有征求我关于如何使用 SparkleShare 的建议,但我建议您不要将它与二进制文件和/或快速变化的文件(如保存游戏、某些配置文件等)一起使用。

相关内容