GIT-تحميل حزمة: القيادة لم يتم العثور على استنساخ عندما الريبو بوابة البعيد

StackOverflow https://stackoverflow.com/questions/225291

  •  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 المستخدم بوابة البعيد.

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