ゼファーネットのロゴ

Git3 –最初のアルファリリース

日付:

Jacek VarkyHacker正午のプロフィール写真

@ジャセックジャセク・バーキー

興味深い問題に取り組み、いくつかの興味深いテクノロジーを探求することを楽しんでいるブロックチェーンソフトウェア開発者。

2020年XNUMX月、私はEthOnlineハッカソンに参加し、分散型Githubバージョンに取り組みました。 ハッカソン中に、私は単純なPoCを作成し、Gitリポジトリをスマートコントラクトで表すことができ、ファイル/オブジェクトをIPFSに保存できることを示しました。 私のプロジェクトに興味を示している人々からメッセージを受け取りました。 そのため、このプロジェクトに取り組み続けることにしました。

それで、現在の段階は何ですか? 私は最初のアルファ版をリリースすることができました。 スマートコントラクトを書き直してPolygonにデプロイし、git3クライアントを修正する必要があったため、ここに到達するまでに少し時間がかかりました。 ただし、この記事では、Git3クライアントの使用方法、リポジトリの作成方法、およびコンテンツのプッシュ方法に関するステップバイステップガイドを提供したいと思います。

これはアルファ段階であり、バグが含まれていることに注意してください。 スマートコントラクトはPolygonTestnetにデプロイされているので、必要なだけテストしてください。

ターミナル内でPython11.2.3を使用して、macOS BigSurバージョン3.8でコードをテストしました。 別のOSでテストする場合は、別のOSでテストする機会がなかったので、お知らせください。

それ以上の苦労なしに、それに取り掛かりましょう

Git3クライアントのインストール

Git3クライアントはPython3で記述されており、pipを使用してインストールできます。 git3クライアントをインストールするには、ターミナルで次のコマンドを実行します。

pip install git3Client==0.1.2

ターミナルでgit3を実行すると、コマンドが必要であるという小さなメッセージを受け取ることができるはずです。

秘密鍵

作成するリポジトリはスマートコントラクトで表されるため、トランザクションに署名する必要があります。 このためには、ssh-keygenツールを使用して作成する秘密鍵が必要です。 次のコマンドを実行して、ターミナルに新しいキーを作成します。

ssh-keygen -t ecdsa -b 256 -m pem

ssh-keygenで提案された標準のファイル名を使用するか、独自の名前を入力できます。 いずれの場合も、秘密鍵が保存されているパスをコピーします。

秘密鍵をエクスポートしてMetaMaskにインポートする場合を除いて、他に何もする必要はありません。 その場合は、ターミナルで次のコマンドを実行します。

openssl ec -outform der -in [path_to_private_key] | hd

出力は次のようになります。

00000000 30 77 02 01 01 04 20 XX XX XX XX XX XX XX XX XX
00000010 XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX
00000020 XX XX XX XX XX XX XX a0 0a 06 08 2a 86 48 ce 3d

位置0の20x6は、次のデータの長さが32バイトであることを示しています。 これが新しく作成された秘密鍵であり、XXで表されます。 このキーをMetaMaskにコピーするだけで、準備は完了です。

Better tooling is required 😉

リポジトリの作成

新しいリポジトリを初期化するには、実行するだけです。

git3 init [name]

このステップバイステップガイドでは、 git3AlphaRepo 私の希望する名前として。 したがって、次のコマンドを取得します。

git3 init git3AlphaRepo

成功すると、次のメッセージが表示されます。

Initialized empty Git3 repository in:
[path]

ファイルをリポジトリに追加してコミットします

次に、最初のファイルをリポジトリに追加します。 新しく作成されたリポジトリに移動し、ファイルを作成します。 次の図に示すように、README.mdファイルを作成し、そこに文を書き込みます。 ファイルを保存します。

次に、ファイルをインデックスに追加します。 したがって、

git3 add README.md

コマンド。 ファイルを追加したら、コミットします。 を実行します

git3 commit -m “First commit message”

コマンド。 設定ファイルが見つからないというエラーメッセージが表示されます。 それでは、最初に設定ファイルを作成してから、commitコマンドをやり直します。

設定ファイルの作成

現在、設定ファイルを作成するにはXNUMXつの可能性があります。

  1. 最初のアプローチは、グローバル構成ファイルを作成することです
  2. XNUMX番目のアプローチは、gitリポジトリ関連の構成ファイルを用意することです。 これは、各gitリポジトリが独自の構成ファイルを持つことができることを意味します

XNUMX番目のアプローチを取ります。 リポジトリの.gitディレクトリにconfigという名前の新しいファイルを作成し、その中に次のように記述します。

[user] email = <[email protected]> name = <your name> IdentityFile = <path to your private key. Take path from the Private Key section.>

構成ファイルはかなり自明です。 あなたがしなければならないことは他に何もありません、そしてあなたはコミットする準備ができています。 git3 commit -m「最初のコミットメッセージ」を再度実行すると、今回は機能します。

財布をいっぱいにする

初めてなので、git3AlphaRepoリポジトリを作成しています。これはローカルにのみ存在します。 リポジトリの状態をリモートで保存するには、情報を保存するスマートコントラクトを作成する必要があります。 スマートコントラクトを作成するには、いくつかのトークンが必要です…

Well, let’s just get some 😉

ポリゴンテストネットを使用しているので、蛇口に行ってウォレットにトークンを入れるだけです。 リポジトリ内で、git3get-addressコマンドを実行します。 これにより、トークンをリクエストできるようにウォレットアドレスが印刷されます。

ターミナルに印刷されているアドレスを使用して、次の図のようにサイトに入力し、[送信して確認]をクリックします。 その後すぐに、いくつかのトークンがウォレットに正常に転送されたというメッセージが表示されます。

リモートリポジトリを作成する時間です。

チェーン上にリポジトリを作成する

いくつかのトークンができたので、状態を保存するスマートコントラクトを作成する準備が整いました。 新しいスマートコントラクトを作成するには、実行するだけです

git3 create

リポジトリgit3AlphaRepoが作成されたというメッセージを待ちます。

プッシュ

スマートコントラクトが作成されたので、リポジトリの状態をプッシュできるようになりました。 実行するだけ

そして、次々にファイルがIPFSにプッシュされる方法と、マスターCIDがスマートコントラクトに送信されて保存される方法を確認します。

よくできました。ローカルリポジトリを初期化してプッシュしました。

クローン

発生するXNUMXつの質問は、私たちまたは他の誰かがどのように私たちのクローンを作成できるかということです
リポジトリ? クローンを作成するには、ウォレットのアドレスと
リポジトリ名。 これらのXNUMXつの情報があれば、リポジトリのクローンを作成できます。
ここでどのようには、次のとおりです。

git3 clone [wallet address]/[repository name] 

ウォレットアドレスとリポジトリ名はスラッシュで結合されます。 それを忘れないでください。 ローカルマシンの別の場所にリポジトリのクローンを作成する場合は、.gitフォルダーに構成ファイルを追加することを忘れないでください。

プル

リポジトリのクローンを作成することはできましたが、更新されており、クローンされたリポジトリは同期していません。 リモートリポジトリからニュースの変更を取得するには、プルする必要があります。 git3pullはあなたがしなければならないすべてです。 これを示すために、次の図に示すように、最初のリポジトリのREADME.mdファイルに別の文を追加して更新しました。

次に、クローンリポジトリに移動し、git3pullコマンドを実行します。 クローンリポジトリのREADME.mdファイルは、追加された文で更新されています。

マージ

リポジトリの最初のコピーでいくつかの作業を行い、それをプッシュしたが、XNUMX番目のコピーでもいくつかの変更を行った場合はどうなりますか?
(次の図に示すように)最初のリポジトリのREADME.mdファイルに別の行を追加してプッシュしたとしましょう。

その後、リポジトリのXNUMX番目のクローンに移動し、README.mdファイルの最後に別のテキストを追加してプッシュしてみます。

プッシュしようとすると、エラーメッセージが表示されます。

Remote repository is ahead. Fetch and merge the changes first

了解しました。最初にフェッチしましょう。

git3 fetch

フェッチ後、マージします。

git3 merge

マージコマンドは現在、フェッチされた変更のみをローカルファイルとマージします。 現在、ブランチなどをマージすることはできません。

マージの競合がある場合は、マージしたらすぐにファイルを調べてください。 ある場合は、それを解決し、ファイルを追加し、適切なメッセージでコミットして、プッシュします。

これで、リポジトリの状態が最新になりました。

まとめ

ご覧のとおり、git3クライアントでいくつかの基本的なgitコマンドを実行することができます。 まだ解決しなければならないバグが含まれています。

ご意見がございましたら、お気軽にお問い合わせください。 これについてのあなたの考えを私と自由に共有してください、あるいはおそらくあなたは他のいくつかの問題を見つけましたか?

あなたはgit3プロジェクトが好きですか? リポジトリをチェックしてください: https://github.com/varkiwi

Gitcoinの助成金もチェックしてください: https://gitcoin.co/grants/1712/git3

免責事項: 作成者は、このコードとソフトウェアを「現状のまま」提供します。
特定の目的への適合性および非侵害を含むがこれに限定されない、明示または黙示を問わず、あらゆる種類の保証。 いかなる場合も
著者は、ここに提供されているソフトウェアまたはコードに関連する請求、損害、またはその他の責任について責任を負います。

by ジャセク・バーキー @ジャセック. 興味深い問題に取り組み、いくつかの興味深いテクノロジーを探求することを楽しんでいるブロックチェーンソフトウェア開発者。私の話を読む

タグ

ハッカー正午に参加

無料のアカウントを作成して、カスタムの読書体験のロックを解除します。

コインスマート。 BesteBitcoin-ヨーロッパのBörse
ソース:https://hackernoon.com/git3-first-alpha-release-co1n32ix?source = rss

スポット画像

最新のインテリジェンス

スポット画像