isomorphic-git عبارة عن إعادة تنفيذ JavaScript النقي لـ Git التي تعمل في كل من Node.js و Browser JavaScript. يمكنه القراءة والكتابة إلى مستودعات GIT ، ويحصل عليها ودفعها إلى أجهزة التحكم عن بعد (مثل github) ، كل ذلك بدون أي تبعيات من وحدة C ++ الأصلية.
تهدف Isomorphic-git لـ 100 ٪ من قابلية التشغيل البيني بنسبة 100 ٪ مع تنفيذ GIT الكنسي. هذا يعني أنها تقوم بجميع عملياتها عن طريق تعديل الملفات في دليل ".git" تمامًا مثل البوزة التي اعتدت عليها. يمكن لـ isogit CLI العمل أن يعمل على مستودعات GIT على سطح المكتب أو الخادم.
تهدف هذه المكتبة إلى أن تكون حلاً كاملاً بدون تجميع مطلوب. تم تصميم API مع أدوات حديثة مثل Rollup و WebPack في الاعتبار. من خلال توفير الوظائف كوظائف فردية ، يمكن لحزم الكود إنتاج حزم أصغر من خلال تضمين الوظائف التي يستخدمها التطبيق فقط.
يتضمن المشروع تعريفات النوع حتى تتمكن من الاستمتاع بإنجاز الرمز الثابت والرمز الذكي في محررين مثل VS Code و CodesandBox.
غادر المؤلف الأصلي للمشروع (بيلي هيلتون) المشروع ، لكن المشروع لا يزال يحتفظ به اثنين من المتطوعين:
لكنهم لا يكتبون الكثير من التعليمات البرمجية ، بشكل رئيسي يقومون بمراجعة التعليمات البرمجية ويحاولون الإجابة على القضايا وعلى Gitter ، لا يريدون فقط أن يموت المشروع. لذلك يمكنك القول أن هذا المشروع مدفوع بالمجتمع (كما يرد JCubic دائمًا على القضايا). مما يعني أنه إذا كنت تريد تنفيذ ميزة ، فيجب عليك القيام بذلك بنفسك أو العثور على شخص مستعد لكتابة الرمز لك. يتمتع المشروع ببعض الأموال على OpenCollective ويمكننا إنفاقه على بعض التطوير ، إذا وجدت سوموين مستعدًا للرمز في مقابل بعض الدولارات (قد تكون أنت) ، لكن ليس لدينا الكثير ، لذا لا نتوقع أن يكون لدينا كامل.
إذا كنت ترغب في مساعدة هذا المشروع ، فأنت أكثر من مرحبًا به للقيام بذلك.
يتم اختبار البيئات التالية في CI وستستمر في دعمها حتى الإصدار المقترح التالي:
العقدة 10 | Chrome 79 | الحافة 79 | Firefox 72 | سفاري 13 | Android 10 | iOS 13 |
راجع ملاحظات الإصدار الكاملة على Github و Post Post Post.
يمكنك تثبيته من NPM:
npm install --save isomorphic-git
يعني "isomorphic" في isomorphic-git أن نفس الكود يعمل في الخادم أو المتصفح. من الصعب القيام بذلك نظرًا لأن GIT يستخدم نظام الملفات ويقوم بتقديم طلبات HTTP. المتصفحات ليس لديها وحدة fs . والعقدة والمتصفحات لديها واجهات برمجة التطبيقات المختلفة لاتخاذ طلبات HTTP!
لذا بدلاً من الاعتماد على وحدات 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 . الأسهل في الإعداد ومعظم مكتبة الأداء هو Lightningfs التي كتبها وصيانتها من قبل المؤلف نفسه وهي جزء من جناح isomorphic-git . إذا لم تفي 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 ، فيمكنك استخدام إما الاستيراد الافتراضي للراحة ، أو الاستيرادات المسماة للاستفادة من تهز الأشجار إذا كنت تستخدم Bundler:
import git from 'isomorphic-git'
// or
import * as git from 'isomorphic-git'
// or
import { plugins , clone , commit , push } from 'isomorphic-git'عرض دليل البدء الكامل على موقع المستندات.
ثم تحقق من صفحة المقتطفات المفيدة ، والتي تتضمن المزيد من رمز العينة الذي كتبه المجتمع!
لسوء الحظ ، نظرًا لسياسة الأصل نفسه بشكل افتراضي ، لا يمكن أن يستنسخ isomorphic-git إلا من نفس الأصل مثل صفحة الويب التي تعمل عليها. هذا غير مريح بشكل رهيب ، لأنه يعني لجميع الأغراض العملية الاستنساخ ودفع إعادة الشراء من خلال وكيل.
لهذا الغرض @isomorphic-git/cors-proxy موجود يمكنك استنساخه أو npm install . للاختبار أو المشاريع الصغيرة ، يمكنك أيضًا استخدام https://cors.isomorphic-git.org - وكيل مجاني برعاية Clever Cloud.
آمل أن تضيف رؤوس CORS إلى جميع منصات استضافة GIT الرئيسية في النهاية ، وسأدرج تقدمي هنا:
| خدمة | يدعم طلبات CORS |
|---|---|
| نظارات (مستضافة ذاتي) | ✔ |
| جيتيا (مستضافة ذاتي) | ✔ |
| Azure devops | ✔ (ملاحظة الاستخدام: يتطلب المصادقة) |
| جيتلاب | تم رفض العلاقات العامة الخاصة بي ، لكن القضية لا تزال مفتوحة! |
| Bitbucket | |
| جيثب |
إنه حرفيًا فقط سطرين من التعليمات البرمجية لإضافة رؤوس CORS !! أشياء سهلة. بالتأكيد سوف يحدث.
isogit cli يأتي Isomorphic-git مع أداة CLI بسيطة ، تدعى isogit لأن isomorphic-git هو الكثير من الكتابة. إنها في الحقيقة مجرد قذيفة رقيقة تترجم وسيطات سطر الأوامر إلى أوامر API JS المكافئة. لذلك يجب أن تكون قادرًا على تشغيل أي أوامر متماثلة حالية أو مستقبلية باستخدام CLI.
يبدأ دائمًا بافتراض أن دليل العمل الحالي هو جذر GIT. على سبيل المثال { dir: '.' } .
يستخدم minimisted من خيارات سطر الأوامر وسيقوم بطباعة أمر JS المكافئ ومطبوعة جميلة JSON.
يعد CLI أكثر من lark للاختبار السريع isomorphic-git ولا يُقصد به حقًا بديلاً git cli.
يتبع هذا المشروع الإصدار الدلالي ، لذلك قد أستمر في إجراء تغييرات على واجهة برمجة التطبيقات ، لكنها ستكون دائمًا متوافقة مع الوراء ما لم يكن هناك عثرة إصدار رئيسية.
شارك أسئلتك وأفكارك معنا! نحن نحب ذلك. يمكنك أن تجدنا في غرفة الدردشة المذهلة أو مجرد إنشاء مشكلة هنا على Github! نحن أيضا isomorphicgit على تويتر.
isomorphic-gitيشبه إعداد التطوير تطبيق ويب كبير. الفرق الرئيسي هو كمية سخيفة من الاختراقات المشاركة في الاختبارات. نستخدم Jest Facebook للاختبار ، مما يجعل القيام بـ TDD سريعًا وممتعًا ، لكننا استخدمنا أيضًا اختراقات مخصصة بحيث يتم إجراء نفس الاختبارات أيضًا في المتصفح باستخدام الياسمين عبر Karma. لدينا حتى خادم وهمية خاصة بنا لخدمة تركيبات اختبار مستودع GIT!
ستحتاج إلى تثبيت node.js ، ولكن كل شيء آخر هو devDependency.
git clone https://github.com/isomorphic-git/isomorphic-git
cd isomorphic-git
npm install
npm test تحقق من المستند CONTRIBUTING لمزيد من التعليمات.
لن يكون Isomorphic-git ممكنًا بدون العمل الرائد بواسطة creationix و chrisdickinson. Git هي فوضى ثنائية صعبة ، وبدون أمثلة (ووحداتها!) لم أتمكن من الاقتراب من الانتهاء من هذا. هم العباقرة قبل وقتهم.
يتم توفير اختبار أجهزة المتصفح عبر:

شكراً لهؤلاء الأشخاص الرائعين (مفتاح الرموز التعبيرية):
وليام هيلتون ؟ ؟ | wdhtig ؟ | مارك ماكلويد ؟ ؟ | بريت زمير ؟ | دان ألين ؟ ؟ | توماس هوبيلباور ؟ | خوان كامبا ؟ |
إيرا ميلر ؟ | ريس أركنز | شون لاركين | دانييل روف | بوكوب | هيروكي أوسم | جاكوب Jankiewicz ؟ |
هواردجود ؟ | Burningtyger ؟ | ميلفين كارفالهو | AKAJES | ديما سابانين ؟ | كوتارو تشيكوبا ؟ | هوبرت سبلونيير |
ديفيد دوارتي | توماس بيتلسكي ؟ | فاديم ماركوفتسيف ؟ | يو شيمورا ؟ | دان لينش | جيفري ويسكوت ؟ | زيبزاو |
تايلر سميث ؟ | برام بورغريف ؟ | ستيفان جوجسبرغ ؟ | كاتالين بيرفو | نيكولاس نيلسون | آنا هينينغسن | فابيان هينكي ؟ |
djencks ؟ | كليمنس وولف | سوجين بارك | إدوارد فولكنر | khải ؟ | كوربن كراتشلي | رايسول لي |
لين onetwo | 林法鑫 ؟ | ويل ستوت | سيث نيكل ؟ | أليكس تيتارينكو | ميشا كاليتسكي | ريتشارد س. زولش |
mkizka | ريوتاك ؟ | نوح هامل | مايك لويس | سام فيرسشويرين | فيتور لويز كافالكانتي | شين ماكلولين |
شون بولتر ؟ | أراكناست | رافائيل راب | Lukáš Cezner | طريق مسدود | باري | ألريزا ميريان |
دانلكازانوف | إيال هيكو ؟ | سيباستيان | ياروسلاف هالشينكو | أليكس فياريال | بن مورو | جايري |
لوكاس مارتن سيجرادو ؟ | ليون كوشر | جيلي شوهات | حبيب | فينزنت |
يتبع هذا المشروع مواصفات جميع المساهمين. مساهمات من أي نوع ترحيب!
شكرا لجميع مؤيدينا! [كن مؤيدًا]
دعم هذا المشروع من خلال أن يصبح راعياً. سيظهر شعارك هنا مع رابط لموقع الويب الخاص بك. [كن راعياً]
تم إصدار هذا العمل بموجب ترخيص معهد ماساتشوستس للتكنولوجيا