isomorphic-git 、node.jsとブラウザーjavascript環境の両方で機能するgitの純粋なJavaScriptの再実装です。 GITリポジトリを読み取り、書き込み、Git Remotes(GitHubなど)から取得して、すべてネイティブC ++モジュールの依存関係なしでプッシュできます。
同型GITは、標準的なGIT実装との100%の相互運用性を目的としています。これは、慣れ親しんでいるGitと同様に、「.git」ディレクトリでファイルを変更することにより、すべての操作を行うことを意味します。含まれているisogit CLIは、デスクトップまたはサーバーのGITリポジトリで動作できます。
このライブラリは、組み立てが必要ない完全なソリューションになることを目指しています。 APIは、RollupやWebpackなどの最新のツールを念頭に置いて設計されています。個々の関数として機能を提供することにより、コードバンドラーは、アプリケーションが使用する機能のみを含めることにより、より小さなバンドルを生成できます。
このプロジェクトにはタイプ定義が含まれているため、VSコードやCodeSandboxなどのエディターで静的タイプチェックとインテリジェントコードの完了を楽しむことができます。
プロジェクトの元の著者(ビリー・ヒルトン)はプロジェクトを去りましたが、プロジェクトはまだ2人のボランティアによって維持されています。
しかし、彼らは多くのコードを書きません、主にコードレビューを行い、問題やギッターで答えようとします、彼らはプロジェクトを死にたくありません。したがって、このプロジェクトはコミュニティ駆動型であると言うことができます(Jcubicが常に問題に返信します)。つまり、機能を実装したい場合は、自分でこれを行うか、コードを書いてくれる人を見つける必要があります。このプロジェクトには、Opencollectiveにいくらかのお金があり、いくつかのドルと引き換えにコーディングする意思のある体を見つける場合(それはあなたかもしれませんが)、私たちはそれを何らかの開発に費やすことができますが、私たちにはあまりありませんので、完全なサラリーを期待しないでください。
このプロジェクトを支援したい場合は、大歓迎です。
次の環境はCIでテストされており、次の壊れたバージョンまで引き続きサポートされます。
ノード10 | クロム79 | エッジ79 | Firefox 72 | サファリ13 | Android 10 | iOS 13 |
Githubの完全なリリースノートとリリースブログ投稿をご覧ください。
NPMからインストールできます。
npm install --save isomorphic-git
isomorphic-gitの「同型」は、同じコードがサーバーまたはブラウザのいずれかで実行されることを意味します。 Gitはファイルシステムを使用し、HTTP要求を行うため、これは難しいです。ブラウザにはfsモジュールがありません。また、ノードとブラウザには、HTTPリクエストを作成するためのAPIが異なります!
したがって、 fsおよびhttpモジュールに依存するのではなく、 isomorphic-git使用すると、独自のファイルシステムとHTTPクライアントをもたらすことができます。
ノードでisomorphic-gitを使用している場合、ネイティブfsモジュールと提供されたノードHTTPクライアントを使用します。
// node.js example
const path = require ( 'path' )
const git = require ( 'isomorphic-git' )
const http = require ( 'isomorphic-git/http/node' )
const fs = require ( 'fs' )
const dir = path . join ( process . cwd ( ) , 'test-clone' )
git . clone ( { fs , http , dir , url : 'https://github.com/isomorphic-git/lightning-fs' } ) . then ( console . log )ブラウザでisomorphic-gitを使用している場合、 fs APIをエミュレートするものが必要です。セットアップが最も簡単で、最もパフォーマンスの高いライブラリは、同じ著者によって書かれ、維持されており、 isomorphic-gitスイートの一部であるLightningFSです。 LightningFSが要件を満たしていない場合、Isomorphic-GitはBrowserfsおよびFilerでも動作する必要があります。 isomorphic-git/http/nodeの代わりに今回はisomorphic-git/http/webをインポートします:
< script src =" https://unpkg.com/@isomorphic-git/lightning-fs " > </ script >
< script src =" https://unpkg.com/isomorphic-git " > </ script >
< script type =" module " >
import http from 'https://unpkg.com/isomorphic-git@beta/http/web/index.js'
const fs = new LightningFS ( 'fs' )
const dir = '/test-clone'
git . clone ( { fs , http , dir , url : 'https://github.com/isomorphic-git/lightning-fs' , corsProxy : 'https://cors.isomorphic-git.org' } ) . then ( console . log )
</ script >ESモジュール構文を使用している場合は、バンドラーを使用している場合は、デフォルトのインポートを使用して、またはバンドラーを使用している場合はツリーシェーキングの恩恵を受けるために名前が付けられたインポートのいずれかを使用できます。
import git from 'isomorphic-git'
// or
import * as git from 'isomorphic-git'
// or
import { plugins , clone , commit , push } from 'isomorphic-git'Docs Webサイトで完全に開始ガイドをご覧ください。
次に、コミュニティによって書かれたさらに多くのサンプルコードを含む便利なスニペットページをご覧ください!
残念ながら、デフォルトでは同種のポリシーによりisomorphic-git実行中のWebページと同じ起源からのみクローンできます。これは、すべての実用的な目的のためにクローン化され、リポジがプロキシを通じて行われなければならないことを意味するため、これは非常に不便です。
この目的のために、 @Isomorphic-Git/Cors-Proxyが存在し、クローンまたはnpm installができます。テストまたは小規模プロジェクトには、https://cors.isomorphic-git.orgを使用することもできます。
CORSヘッダーをすべての主要なGITホスティングプラットフォームに追加したいと考えています。
| サービス | CORSリクエストをサポートします |
|---|---|
| ゴグ(自己ホスト) | ✔ |
| Gitea(自己ホスト) | ✔ |
| Azure DevOps | ✔(使用状況注:認証が必要) |
| gitlab | 私のPRは拒否されましたが、問題はまだ開いています! |
| Bitbucket | |
| github |
CORSヘッダーを追加するのは文字通りわずか2行のコードです!!簡単なもの。確かにそれは起こります。
isogit Cli Isomorphic-gitには、 isomorphic-gitタイプするのに非常に多くあるため、 isogitという名前のシンプルなCLIツールが付属しています。コマンドライン引数を同等のJS APIコマンドに変換するのは、実際には単なる薄いシェルです。したがって、CLIを使用して現在または将来の同型GITコマンドを実行できるはずです。
常に現在の作業ディレクトリがgitルートであるという仮定から始まります。例{ dir: '.' } 。
minimistedコマンドラインオプションを解析し、同等のJSコマンドを印刷し、出力JSONをプリティプリントします。
CLIはisomorphic-git迅速にテストするための方がひばりのようなものであり、 git CLIの置換としては実際には意味がありません。
このプロジェクトはセマンティックバージョンに続くため、APIの変更を引き続き行う可能性がありますが、メジャーバージョンのバンプがない限り、常に後方に互換性があります。
あなたの質問やアイデアを私たちと共有してください!私たちはそれが大好きです。 Gitter Chatroomで私たちを見つけるか、Githubで問題を作成するだけです!また、Twitterで@isomorphicgitです。
isomorphic-gitに貢献しています開発セットアップは、大規模なWebアプリケーションのセットアップに似ています。主な違いは、テストに関与するとんでもない量のハッキングです。 FacebookのJestを使用してテストに使用します。これにより、TDDを迅速かつ楽しくすることができますが、カスタムハックも使用して、Karma経由でJasmineを使用して同じテストもブラウザで実行されます。 GITリポジトリテストフィクスチャを提供するための独自のモックサーバーもあります!
node.jsがインストールされる必要がありますが、他のすべては開発者です。
git clone https://github.com/isomorphic-git/isomorphic-git
cd isomorphic-git
npm install
npm testその他の指示については、 CONTRIBUTINGドキュメントをご覧ください。
同型ギットは、@creationixと @chrisdickinsonによる先駆的な仕事なしでは不可能でした。 Gitはトリッキーなバイナリの混乱であり、その例(およびそのモジュール!)がなければ、これを終了することさえできなかったでしょう。彼らは彼らの時代よりも先に天才です。
クロスブラウザーデバイステストは、次のように提供されます。

これらの素晴らしい人々に感謝します(絵文字キー):
ウィリアム・ヒルトン ? ? | wdhtig ? | マーク・マクラウド ? ? | ブレット・ザミール ? | ダン・アレン ? ? | TomášHübelbauer ? | フアン・カンパ ? |
イラミラー ? | Rhys Arkins | ショーン・ラーキン | ダニエル・ルフ | Bokuweb | ヒロキ・オサム | Jakub Jankiewicz ? |
howardgod ? | Burningtyger ? | メルビン・カルヴァリョ | アカジェス | ディマサバニン ? | Koutaro Chikuba ? | HubertSablonnière |
デビッド・ドゥアルテ | トーマス・パトレスキ ? | Vadim Markovtsev ? | 清いYu ? | ダンリンチ | ジェフリー・ウェスコット ? | Zebzhao |
タイラー・スミス ? | Bram Borggreve ? | ステファン・グギスバーグ ? | カタリンpirvu | ニコラス・ネルソン | アンナ・ヘニングセン | ファビアン・ヘネケ ? |
djencks ? | クレメンス・ウルフ | ソジンパーク | エドワード・フォークナー | khải ? | Corbin Crutchley | ライスボール・リー |
Lin onetwo | 林法鑫 ? | ストットします | セス・ニッケル ? | アレックス・タイタレンコ | ミシャ・カレツキー | リチャード・C・ズルチ |
Mkizka | ryotak ? | ノア・フンメル | マイク・ルイス | Sam Verskueren | Vitor Luiz Cavalcanti | シェーン・マクラフリン |
ショーン・ポールター ? | アラクナスト | ラファエル・ラーブ | ルカシュ・セズナー | 行き止まり | バリー | アリレザ・ミリアン |
ダニルカザノフ | eyal hisco ? | sebastien | Yaroslav Halchenko | アレックス・ビジャレアル | ベン・モロー | ジェイリー |
ルーカス・マーティン・セグラド ? | レオン・カウチャー | ギリ・ショハット | ハビブ | ヴィンツェント |
このプロジェクトは、全委員会の仕様に従います。あらゆる種類の貢献を歓迎します!
すべての支援者に感謝します! [支援者になる]
スポンサーになることにより、このプロジェクトをサポートします。あなたのロゴは、あなたのウェブサイトへのリンクでここに表示されます。 [スポンサーになる]
この作業は、MITライセンスの下でリリースされます