سؤال

ما يعجبني حفرية هو أنه يستخدم sqlite القديم العادي لتخزين التغييرات والملفات ، وما إلى ذلك. يمكنني استخدام أداة سطر الأوامر الخاصة به للاستعلام عن المستودع ، ولكن إذا كنت أريد شيئًا غير مدعوم به ، فيمكنني الاحتفاظ بكتابة استعلام SQL.

الزئبق والجيت أكثر نضجًا ، ولديهما المزيد من المكتبات ، والمزيد من الزخم ، لكنهم يستخدمون تنسيق المستودع الخاص بهم. أتساءل عما إذا كان من الممكن أن يكون لديك SQLite كواجهة خلفية مستودع. (أعرف أن هناك أدوات للاستعلام عن ريبو ميركوريال أو غيت مباشرة ، ولكن يبدو أن SQL أسهل.)

هل كانت مفيدة؟

المحلول

مع GIT ، يعد تنسيق المستودع جزءًا أساسيًا من الطريقة التي يعمل بها كل شيء. يجب عليك القيام بالكثير من العمل لتغيير ذلك.

لم أقرأ أي من مصدر Mercurial ، لكنني أتصور أن الموقف لا يختلف كثيرًا.

كما اقترحت في تعليقي ، لست متأكدًا حقًا لماذا تريد القيام بذلك. لكي تظل GIT قادرة على الحصول على جميع مزاياها ، يجب عليك تخزين كائنات GIT في قاعدة بيانات SQLite الخاصة بك. كنت لا تزال بحاجة إلى جميع أدوات GIT ذات المستوى المنخفض للوصول إليها والتلاعب بها - فلن تبحث فقط عن النقط والأشجار من قبل SHA1s والقيام بكل العمل بنفسك. (وحتى لو كنت تريد ذلك لسبب ما ، يمكنك القيام بذلك بسهولة بنفس السهولة من خلال النظر في دليل كائنات GIT.)

سيكون اقتراحي هو أنه إذا وجدت أن هناك عمليات تريد القيام بها في Git غير مدعومة ، فأنت تعرف على بعض أوامر السباكة ومعرفة كيفية كتابتها كنصوص. GIT حقا يعرض إلى حد كبير أدنى مستوى من العمليات التي قد تريدها.

ملاحظة: إذا كان عليك أن تجد عملية محددة غير مدعومة تريد القيام بها ، وتواجه مشكلة في العثور على السباكة التي تحتاجها لأداءها ، أو مع البرمجة النصية اللازمة لتنفيذها ، قم بنشر سؤال هنا! لا يوجد سبب للتعليق لمجرد أنه لا يمكنك استخدام SQL.

نصائح أخرى

كما يكتب Jefromi ، يستخدم Mercurial أيضًا تنسيقًا مخصصًا لتحقيق ضغط عالي والوصول السريع إلى أي مراجعة. هذا ال تنسيق Revlog وهو بنية بيانات إلحاح فقط تستفيد من عدم قابلية التغييرات في Mercurial.

ومع ذلك ، من الممكن بالطبع استبدال تنسيق التخزين هذا بآخر إذا أردت. فعلت Google هذا عندما وضعوا Mercurial على Bigtable ل code.google.com. إحدى النتائج المضحكة لهم باستخدام تنسيق الواجهة الخلفية الخاصة بهم هي أنك لا ترى أي أرقام مراجعة في واجهة الويب الخاصة بهم. في الزئبق العادي ، فإن أرقام المراجعة (عدد صحيح محلي فقط يمكنك استخدامه بدلاً من تجزئة التغييرات الكاملة) هي فهرس التغييرات في Revlog. عندما لا يتم تخزين changesets في Revlogs ، لا يوجد فهرس طبيعي وبالتالي لا يوضح لك Google أي أرقام مراجعة.

من الممكن مع الخلفية Libgit2:https://github.com/libgit2/libgit2-backends/blob/master/sqlite/sqlite.c

لم أقم بأي قياس ، ولكن يجب أن يعاني الأداء قليلاً. ومع ذلك ، فهو أيضًا أكثر ملاءمة (ملف واحد لتاريخ الريبو بأكمله ، لغة استعلام SQL الكلاسيكية .. ETC ..)

في حديثه عن GIT ، لا يمكنك استخدام الواجهة الخلفية المختلفة مع الثنائيات الرسمية. ومع ذلك ، يتيح لك مشروع LIBGIT2 استخدام الخلفية المختلفة لتخزين قاعدة البيانات. ومع ذلك ، سيتعين عليك بناء جميع الثنائيات التي ترغب في استخدامها للالتزام ، والاندماج ، والضغط ، والسحب ، والتشويش ، وما إلى ذلك أيضًا ، لن تتمكن من تعديل مستودعك مع الثنائيات الرسمية. سيكون عليك دفعه إلى إعادة الريبو القياسية أولاً.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top