git-ssb-gitリポジトリの分散ホスティング

SSB(Secure Scuttlebutt)は、分散型ソーシャルネットワークであり、それが動作するプロトコルです。git-ssbは、通常のgitリポジトリをこのプロトコルでラップします。SSBはFacebookを置き換えたいと考えており、git-ssbはGitHubを置き換えたいと考えています。カットの下で-git-ssbへのクイックガイド。一元化されたサービスを仲介として使用するという考えそのものに不快感を覚える人に関連します。この場合、予期しない結果をもたらす一種の赤い丸薬。





安全なscuttlebutt

SSBプロトコルは、関心のあるネットワークのノード間でデータを同期するためのルールを記述します。データは、ネットワーク上でのアクションの履歴であり、jsonオブジェクトのリンクリストです。接続は、前のオブジェクトのハッシュ合計によって設定されます(ブロックチェーンの場合と同様)。したがって、一度公開されると、オブジェクトは不変であり、削除できません。リストの最後にのみ追加できます。一般的な使用例では、リスト内の各項目がブログ投稿またはコメントであると想定しています。写真やその他の重いオブジェクトは、ブロブの形でリストから保存され、個別に複製されます。リスト内のオブジェクトはそれらを参照できます。





PatchworkおよびManyverseアプリに関するほとんどのnetizensブログ約12のブログアプリケーションがあり、それらはほとんど相互に互換性があり、インターフェイスが異なります。さらに、チェス、チャット、パッケージマネージャー(ssb-npm)、およびgit(git-ssb)があります。一部のSSB開発者は、メインのソース制御サービスとしてgit-ssb使用しています。私たちもやってみます。





ssb-serverとgit-ssbをインストールします

ssb-serverは、p2pネットワーク内の他のノードと同期するために必要です。リポジトリをプッシュ、プル、フェッチ、プルリクエストを作成、またはフォークするときに実行する必要があります。





git-ssbパッケージには次のものが含まれます。





  • リポジトリを管理するためのプログラム(git-ssb)





  • git-remote-helper、ssbで始まるアドレスを理解します://





  • web-, GitHub





ssb-server.





$ sudo apt install git nodejs npm
$ npm install ssb-server git-ssb
      
      



ssb-server git-ssb $HOME/node_modules



. , ~/.profile



:





if [ -d "$HOME/node_modules/.bin/" ] ; then
    PATH="$HOME/node_modules/.bin/:$PATH"
fi
      
      



$PATH



,





$ source ~/.profile
      
      



~/.profile



. (, Xfce) . $PATH



, .xsessionrc



~/.profile



:





. ~/.profile
      
      



ssb-server .





$ ssb-server start
      
      



identity ~/.ssb



.





, . , , . . , .





. , . . , .





$ ssb-server invite.accept <-->
      
      



: , - .





@cel

@cel - git-ssb.





$ ssb-server publish --type contact --contact "@f/6sQ6d2CMxRUhLpspgGIulDxDCwYD7DzFzPNr7u5AU=.ed25519" --following
      
      



~/.ssb



1Gb - ( git-) , . , .





. :





web-

$ git-ssb-web
      
      



, issue . , , , , . activity log, - , GitHub.





git-ssbのGit-ssbリポジトリ
git-ssb git-ssb

web- (, , issue ) . , : , issue ... ssb-server ( ) .





$ mkdir my-new-repo
$ cd my-new-repo
$ git init
Initialized empty Git repository in /tmp/my-new-repo/.git/

$ git-ssb create ssb my-new-repo
Created repo: ssb://<hash-code>.sha256 (my-new-repo)
Added remote: ssb

$ git remote -v
ssb    ssb://<hash-code>.sha256 (fetch)
ssb    ssb://<hash-code>.sha256 (push)
      
      



git init



git-ssb create ssb my-new-repo



, my-new-repo



URL remote ssb



. remote .





ssb remote . .





: - SSB. .





$ git push ssb master
      
      



, . git-ssb pack- blob, 5Mb. . , , :





$ git push ssb master -o allow-big
      
      



(blob ), pack- , blob.





pack- - , git- pack- 5Mb.





git-ssb git-ssb. SSB DNS . ssb://%n92DiQh7ietE+R+X/I403LQoyf2DtR3WQfCkDKlheQU=.sha256



web-.





$ git clone ssb://%n92DiQh7ietE+R+X/I403LQoyf2DtR3WQfCkDKlheQU=.sha256 git-ssb
$ cd git-ssb
$ git remote -v
origin    ssb://%n92DiQh7ietE+R+X/I403LQoyf2DtR3WQfCkDKlheQU=.sha256 (fetch)
origin    ssb://%n92DiQh7ietE+R+X/I403LQoyf2DtR3WQfCkDKlheQU=.sha256 (push)
      
      



remote, SSB.





$ git-ssb fork my-fork
Created repo: ssb://<new-hash-code>.sha256 (git-ssb)
Added remote: my-fork
$ git remote -v
my-fork    ssb://<new-hash-code>.sha256 (fetch)
my-fork    ssb://<new-hash-code>.sha256 (push)
origin    ssb://%n92DiQh7ietE+R+X/I403LQoyf2DtR3WQfCkDKlheQU=.sha256 (fetch)
origin    ssb://%n92DiQh7ietE+R+X/I403LQoyf2DtR3WQfCkDKlheQU=.sha256 (push)
      
      



, remote.





-

.





$ git-ssb pull-request
      
      



, . , .





, . (git-ssb-intro), . @-/master



(git checkout -b @-/master



), (git push ssb



), - (git ssb pull-request



). master -.





, identity ( identity - . ) . git-ssb , . . identity, , . , , . , - , .





Identity ~/.$ssb_appname/secret



. ssb_appname



, identity (~/.ssb



). secret



, ssb-server .





permissionless , , identity.





, : - , , sudo make install



. , - . , , git pull



. , .





SSB.





?

git-ssb-intro: a guide to hacking together on the distributed web





git:





  • GitTorrent ( BitTorrent)





  • HyperGit ( Dat)





  • igis-remote ( IPFS)





  • ipld-remote ( IPFS)





  • GitCenter ( ZeroNet)





  • Mango (Ethereum + IPFS)





  • Radicle





  • Gitopia





最初の4つは、DanielAleksandersenの記事「Gitリポジトリ用の4つのP2P配布ツールの比較で詳細に分析されていますSSB開発者からのコメントがあります





ご清聴ありがとうございました。退屈すぎなかったといいのですが。気になる人への良い分散。





ヘッダーの画像は、myoctocat.comサービスを使用して生成されました








All Articles