গিট - গিট টান সহ পোস্ট-রিসিভ হুক "একটি বৈধ গিট ডিরেক্টরি খুঁজে পেতে ব্যর্থ"


17

এটি খুব অদ্ভুত তবে গিট সংগ্রহস্থল স্থাপন করার সাথে এবং পোস্ট-রিসিভ হুক তৈরি করার সাথে:

echo "--initializing hook--"
cd ~/websites/testing
echo "--prepare update--"
git pull
echo "--update completed--"

হুক সত্যই চলমান, তবে এটি কখনই গিট পুলকে সঠিকভাবে চালানোর জন্য পরিচালনা করে না:

6bfa32c..71c3d2a  master -> master
--initializing hook--
--prepare update--
fatal: Not a git repository: '.'
Failed to find a valid git directory.
--update completed--

সুতরাং আমি এখনই নিজেকে জিজ্ঞাসা করছি, পোস্ট-রিসিভের মাধ্যমে হুক আপডেট কীভাবে করা সম্ভব?

এক্ষেত্রে প্রক্রিয়াগুলি ব্যবহারকারীর ব্যবহারকারী একই রকম এবং ব্যবহারকারী ফোল্ডারের ভিতরে থাকা সমস্ত কিছুই তাই আমি সত্যিই বুঝতে পারি না ... কারণ যদি আমি নিজে হাতে প্রবেশ করি তবে

cd ~/websites/testing
git pull

এটি কোনও সমস্যা ছাড়াই কাজ করে ...

যে কোনও সহায়তা প্রশংসনীয় প্রশংসা হবে

অনেক ধন্যবাদ

উত্তর:


25

হুক চলমান থাকাকালীন GIT_DIRএবং (যদি ওয়ার্কট্রি স্পষ্টভাবে সংজ্ঞায়িত করা থাকে) GIT_WORK_TREEসেট করা থাকে। তার মানে আপনার টানটি আপনি যে ডিরেক্টরিটিতে বদলেছেন সেটির দ্বিতীয় সংগ্রহস্থলের সাথে চলবে না।

চেষ্টা করুন git --git-dir ~/websites/testing/.git --work-tree ~/websites/testing pull; বা এর সাথে গিটের রেপো-স্থানীয় পরিবেশটি আনসেট করুন:

unset $(git rev-parse --local-env-vars)

এই পরিবেশে পরিবর্তনশীল সম্পর্কে আরও তথ্য 1 গিট


1
টোবুর জন্য অনেক ধন্যবাদ, এটি সত্যিই কাজ করে, আমি এ সম্পর্কে আরও তথ্যও পরীক্ষা করে দেখব। চিয়ার্স
জ্যানোনা

6

একটি জিনিস আমি অনুভব করেছি যে post-updateহুক '--git-dir' ব্যবহার করে দুর্দান্ত কাজ করেছে কিন্তু গিটটি এখনও একটি গায়েব গাছের গাছের বিষয়ে অভিযোগ করছে ('- ওয়ার্ক-ট্রি' ব্যবহার করেও)

সংক্ষেপে, এটি কার্যকর হয়নি:

git --git-dir /path/to/websites/testing/.git --work-tree /path/to/websites/testing pull

যদিও এটি কাজ করেছে:

cd /path/to/websites/testing
git --git-dir /path/to/websites/testing/.git pull


1

এই কাজ করে না?

cd /home/smb/websites/testing
env -i git pull

সম্পাদিত

এখনও ভাল

cd /home/smb/websites/testing
unset GIT_DIR
git pull

0

আপনি কি path এর পরিবর্তে পুরো পথ দিয়ে চেষ্টা করেছেন?

cd /home/smb/websites/testing
git pull

0

স্ক্রিপ্টটি সম্ভবত এর সাথে আহ্বান করা হয়েছে /bin/sh, যা বুঝতে পারে না ~~পরিবর্তে পুরো পথ দিয়ে চেষ্টা করে দেখুন ।


0

প্রথম প্রস্তাবিত উত্তরটি সঠিক - কোনও হুক যখন GIT_DIR ইত্যাদি চলমান থাকে তখন সেট করা থাকে। তবে, আপনি যদি অন্য কোনও সংগ্রহস্থলে স্ক্রিপ্টটি ব্যবহার করতে সক্ষম হতে চান তবে সেই পদ্ধতিটি ত্রুটিযুক্ত কারণ এটি GIT_DIR পুনরায় সেট করার জন্য হার্ড-কোডগুলি। যেমনটি তারা বোঝাচ্ছিল, অন্য উপায়টি হ'ল env ব্যবহার করে ভেরিয়েবলটি মুছে ফেলা হবে: env -i গিট রিসেট - অবশ্যই আপনি সেখানে যে কমান্ডটি চালাচ্ছেন তা আপনার হাতে রয়েছে - এটি কেবল 'এনভি-আই' বিট যা গুরুত্বপূর্ণ বিট ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.