web-dev-qa-db-ja.com

SparkleShareはGitとどのように連携しますか?

インターネットのどこにもこれに対する答えを見つけることができなかったので、誰かが答えを持っているかどうかを確認するために、ここに私の質問を持ってきたいと思いました!

私はGitシーンに不慣れで、SparkleShareがGitとどのように連携するのか興味があります。

SparkleShareはSSH経由でプライベートサーバー上のリポジトリに接続し、デフォルトではSSHプロトコルでのsFTPのデフォルトポートであるポート22を使用することを知っています。私が理解していないのは、サーバーを介してマシン間でファイルを同期する方法です。ファイルを編集すると、SparkleShareがコミットをサーバーにプッシュし、他のすべてのマシンがファイルの変更をフェッチするのを待機していますか?または、サーバーは変更を関連するマシンにプッシュしますか?それとも、サーバーからデータを取得するのはgitフックですか?

洞察を事前に感謝します。

3
Far_Eggs

SparkleShareは、inotifyを介してデータへのローカル変更の通知を受け取り、ファイルシステムアクティビティが解決するまで待機し、SSHを介してサーバーへの変更のコミットとプッシュを開始します。新しいファイルがいつ利用可能になるかを知るために、Sparkleshare開発者によって提供されるサーバーがあり、Sparkleshareはリポジトリごとに新しいチャネルを作成し、ファイルが変更されたときにチャネルにサブスクライブされたすべてのインスタンスにプッシュ通知を送信できます。これが不可能な場合、SparkleShareはポーリングにフォールバックします。

サーバー側は完全にパッシブであり、SparkleShareについては何も知りません。これは単なるgitリポジトリです。

競合管理とバイナリファイルに関する私の経験の一部ですが、これは偏っている可能性があります。

SparkleShareを半年間使用しようとしていますが、先週あきらめました。オフライン中にさまざまなデバイスでさまざまな変更を加えるまで、すべてがうまくいきます。これにより、ほとんどの場合、あまり優れていないgitスキルを使用して競合を手動で解決する必要がありました。私の知る限り、競合が発生すると、SparkleshareはリポジトリのHEADを、競合する両方の変更間で共通のコミットに戻そうとし、サーバーからのコミットを最上位で再生しますその後、ローカルの変更を適用しようとしますが、それについてはよくわかりませんし、うまくいきませんでした。この問題は、変更中のバイナリファイルでgitが抱えるいくつかの問題と組み合わされて、競合を手動で解決するまで、CPUは定期的に100%でした。低RAM環境のデバイスの1つでは、再現性のあるメモリが不足したため、リポジトリの1つを複製することさえできませんでした。

SparkleShareの使用方法についてアドバイスを求めていないことは承知していますが、バイナリファイルやsavegames、一部の構成ファイルなどのように急速に変化するファイルでは使用しないことをお勧めします。

3
FSMaxB