سؤال

هل هناك طريقة لتنزيل ملف واحد بشكل برمجي من مستودع GIT عن بُعد ، في Java؟

  1. أنا أفضل حلًا يستخدم عرض النطاق الترددي القليل قدر الإمكان ، ويفضل فقط تنزيل هذا الملف الفردي. لست بحاجة إلى تصفح المستودع ، لدي بالفعل مسار الملف.
  2. أفضل حل لا يعتمد على التطبيقات الأخرى (على سبيل المثال تثبيت عميل GIT آخر على الجهاز). مكتبة Java التي تحتوي على تنفيذ عميل GIT بحد ذاتها ستكون مثالية.

تمكنت من القيام بشيء مماثل باستخدام التخريب باستخدام svnkit وقد رأيت أن هناك تطبيق جافا نقي لـ GIT (Eclipse's JGIT) والتي قد تكون قادرة على القيام بشيء مماثل ، لذلك آمل أن يكون هناك إجابة إيجابية ؛ على الرغم من ما أفهمه حول كيفية عمل GIT - السماح بالتحديثات فقط من المستودعات المحلية - فقد يكون هذا مشكلة.

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

المحلول

GIT غير مصمم حقًا للوصول إلى الملفات الفردية من مستودع عن بُعد ولكن يمكنك إساءة استخدامه git archive لهذا. الجانب السلبي هو أنه يتعين عليك تنزيل "شجرة" بدلاً من مجرد النقطة التي تحتاجها.

على سبيل المثال

git archive --remote=url://to.git.repo branch path/to/dir | tar -x file

كبديل ، إذا كان لديك GITWEB تم إعداده على المستودع البعيد ، فيمكنك استخدام أمر SITION CURL أو WGET لتنزيل أي ملف بتنسيق "RAW".

نصائح أخرى

أي نوع من الوصول إلى المستودع عن بُعد؟ هل هو عبر SSH ، هل يمكنك الاتصال بالأوامر؟ إذا كان الأمر كذلك ، يمكنك فقط الاحتجاج git show HEAD:$ path_to_file.

إذا لم تتمكن من استدعاء الأوامر على هذا الجهاز ، فلا يزال من الممكن تمامًا القيام بذلك ، ولكن عليك أن تفهم تنسيق مستودع GIT. (هذا أقل مخيفًا مما يبدو ، لأنه بسيط للغاية حسب التصميم. على عكس Eg. Subversion ، فإن تنسيق المستودع غير المقصود بمثابة صندوق أسود.)

Quoth git-clone (1):

-عمق العمق

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

وبالتالي فإن التفاصيل الدقيقة هي دليل ولكن يمكنك الحد من تاريخ المراجعة.

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