GIT-تحميل حزمة: القيادة لم يتم العثور على استنساخ عندما الريبو بوابة البعيد
-
03-07-2019 - |
سؤال
ولقد تم استخدام بوابة للحفاظ على نسختين من مشروعي متزامنة، واحد هو بلدي مربع المحلية، وغيرها من خادم الاختبار. هذا هو الموضوع الذي يحدث عندما الدخول على موقعنا على بعد الملقم التطوير باستخدام غطاء المني؛
git clone me@me.mydevbox.com:/home/chris/myproject
Initialized empty Git repository in /tmp/myproject/.git/
Password:
bash: git-upload-pack: command not found
fatal: The remote end hung up unexpectedly
fetch-pack from 'me@me.mydevbox.com:/home/chris/myproject' failed.
و(تم تغيير أسماء الملفات لحماية مذنب ...!)
وكلا صناديق تشغيل سولاريس 10 AMD. وقد فعلت بعض الحفر، إذا أضيف --upload-pack=$(which git-upload-pack)
يعمل الأمر، (ويثبت أن $PATH
يحتوي على مسار 'GIT-تحميل حزمة "وفقا لحل RTFM)، ولكن هذا أمر مزعج حقا، بالإضافة إلى' دفع بوابة 'لا العمل، لأنني لا أعتقد أن هناك خيار --unpack=
.
وبالمناسبة، كافة الأوامر بوابة تعمل بشكل جيد من وجهة نظري مربع المحلي، هو نفس الإصدار من البرنامج (1.5.4.2)، مثبتة على نفس NFS جبل في /usr/local/bin
.
وأي شخص يمكن أن تساعد؟
المحلول
تأكد من git-upload-pack
تسير على الطريق من قذيفة غير تسجيل الدخول. (على الجهاز الخاص بي انها في /usr/bin
).
لنرى ما يبدو المسار الخاص بك مثل على الجهاز البعيد من قذيفة غير لتسجيل الدخول، حاول هذا:
ssh you@remotemachine echo \$PATH
(وهذا يعمل في باش، Zsh، وإلى tcsh، وقذائف ربما غيرها أيضا).
إذا المسار الذي يعيد لا يتضمن الدليل الذي يحتوي git-upload-pack
، تحتاج إلى إصلاح ذلك عن طريق وضع في .bashrc
(لباش)، .zshenv
(لZsh)، .cshrc
(بالنسبة إلى tcsh) أو ما يعادلها لقذيفة الخاص بك .
وسوف تحتاج إلى إجراء هذا التغيير على الجهاز البعيد.
إذا لم تكن متأكدا من المسار الذي تحتاج إلى إضافة إلى PATH
جهاز التحكم عن بعد، يمكنك العثور عليها مع هذا الأمر (تحتاج إلى تشغيل هذا على الجهاز البعيد):
وwhich git-upload-pack
في الجهاز الخاص بي الذي يطبع /usr/bin/git-upload-pack
. حتى في هذه الحالة، /usr/bin
هو الطريق تحتاج إلى التأكد من عدم وفي جهاز التحكم عن بعد غير تسجيل الدخول قذيفة PATH
.
نصائح أخرى
ويمكنك أيضا استخدام الخيار "-u" لتحديد المسار. أجد أن هذا مفيدة على الأجهزة التي لا تحصل على مصدرها بلدي .bashrc في جلسات غير التفاعلية. على سبيل المثال،
git clone -u /home/you/bin/git-upload-pack you@machine:code
وبناء على بريان الإجابة ، يمكن تعيين مسار تحميل حزمة بشكل دائم عن طريق تشغيل الأوامر التالية بعد الاستنساخ، مما يلغي الحاجة ل--upload-pack
على سحب لاحقا / جلب الطلبات. وبالمثل، وضع تلقي حزمة يلغي الحاجة ل--receive-pack
على طلبات الدفع.
git config remote.origin.uploadpack /path/to/git-upload-pack
git config remote.origin.receivepack /path/to/git-receive-pack
وهذه الأوامر هما أي ما يعادل إضافة الأسطر التالية إلى .git/config
الريبو ل.
[remote "origin"]
uploadpack = /path/to/git-upload-pack
receivepack = /path/to/git-receive-pack
والمستخدمين المتكرر للclone -u
قد تكون مهتمة في الأسماء المستعارة التالية. myclone يجب أن تكون واضحة بذاتها. myfetch / mypull / mypush يمكن استخدامها على اتفاقيات إعادة الشراء التي لم يتم تعديل كما هو موضح أعلاه باستبدال git push
مع git mypush
، وهلم جرا التكوين.
[alias]
myclone = clone --upload-pack /path/to/git-upload-pack
myfetch = fetch --upload-pack /path/to/git-upload-pack
mypull = pull --upload-pack /path/to/git-upload-pack
mypush = push --receive-pack /path/to/git-receive-pack
ولقد وجدت والمستخدمة (بنجاح) هذا الإصلاح:
# Fix it with symlinks in /usr/bin
$ cd /usr/bin/
$ sudo ln -s /[path/to/git]/bin/git* .
وماك OS X وبعض من Unixes أخرى على الأقل لديهم المسار المستخدم تجميعها في سشد لأسباب أمنية حتى أولئك منا أن تثبيت بوابة ع ش / البيرة / المحلية / بوابة / {بن، ليب ...} يمكن تشغيل في ورطة كما التنفيذية بوابة ليست في مسار المترجمة مسبقا. لتجاوز هذا انا افضل لتحرير بلدي / الخ / sshd_config تغيير:
#PermitUserEnvironment no
إلى
PermitUserEnvironment yes
ثم قم بإنشاء ~ / .ssh / البيئة الملفات حسب الحاجة. بلدي مستخدمي بوابة ويلي في ملف ~ / .ssh / بيئتهم:
PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/git/bin
ملاحظة التوسع متغير لا يحدث عند قراءة ملف ~ / .ssh / البيئة بحيث:
PATH=$PATH:/usr/local/git/bin
ولن ينجح.
لباش، فإنه يحتاج إلى أن توضع موضع .bashrc لا .bash_profile (.bash_profile هو أيضا فقط لقذائف تسجيل الدخول).
وحل مات لم تنجح بالنسبة لي على OS X، ولكن بول فعلت.
والنص القصير من ارتباط بول هو:
ومكون /usr/local/bin/ssh_session
بالنص التالي:
#!/bin/bash
export SSH_SESSION=1
if [ -z "$SSH_ORIGINAL_COMMAND" ] ; then
export SSH_LOGIN=1
exec login -fp "$USER"
else
export SSH_LOGIN=
[ -r /etc/profile ] && source /etc/profile
[ -r ~/.profile ] && source ~/.profile
eval exec "$SSH_ORIGINAL_COMMAND"
fi
وتنفيذ:
<اقتباس فقرة> وchmod +x /usr/local/bin/ssh_session
إضافة ما يلي إلى /etc/sshd_config
:
وForceCommand / البيرة / المحلية / بن / ssh_session
اقتباس فقرة>وحصلت هذه الأخطاء مع الإصدار MsysGit.
وبعد اتباع جميع النصائح يمكن أن تجد لي هنا وفي أماكن أخرى، وانتهى بي الأمر:
<اقتباس فقرة>وتثبيت الإصدار سيغوين من بوابة
اقتباس فقرة>وعلى الخادم (وين XP مع سيغوين SSHD)، وهذا في النهاية ثابتة.
وأنا لا تزال تستخدم النسخة العميل MsysGit
<اقتباس فقرة>و.. في الواقع، هذه هي الطريقة الوحيدة التي يعمل بالنسبة لي، لأنني على أخطاء POSIX مع سحب سيغوين جيت من أن نفس الخادم سشد
اقتباس فقرة>وأظن بعض الأعمال لا تزال هناك حاجة هذا الجانب من بوابة استخدام .. (سه + سهولة سحب / دفع في نظام التشغيل Windows)
ومثل أشار يوهان خارج عدة مرات .bashrc لها ما هو مطلوب:
وقانون الجنسية -s .bash_profile .bashrc
ويجب إضافة
export PATH=/opt/git/bin:$PATH
وقبل هذا الخط في .bashrc:
# If not running interactively, don't do anything
[ -z "$PS1" ] && return
وإلا لن يتم تنفيذ جميع البيانات التصدير (<لأ href = "https://stackoverflow.com/questions/940533/how-do-i-set-path-such-that-ssh-userhost-command-works / 941995 # 941995 "> نرى هنا ).
لzsh تحتاج لوضعها في هذا الملف: ~ / .zshenv
وعلى سبيل المثال، على OS X باستخدام حزمة بوابة النواة من MacPorts:
و$ صدى "PATH تصدير = / اختيار / المحلية / دليل: / الأراضي الفلسطينية المحتلة / المحلية / بن: $ PATH '> ~ / .zshenv
ولقد كان وجود قضايا الاتصال إلى Gitolite الريبو باستخدام SSH من ويندوز، واتضح أن مشكلتي كانت طقطقة! احتفظ تسألني عن كلمة السر، إلا أن سه gitolite @ [المضيف] إرجاع قائمة الريبو غرامة.
وتحقق متغير البيئة الخاصة بك: GIT_SSH. إذا تم تعيين لطقطقة، ثم حاول من دون أي قيمة ( "مجموعة GIT_SSH =") ونرى ما اذا كان يعمل.
وإضافة موقع git-upload-pack
لملف .bashrc المستخدم بوابة البعيد.