গিট ক্লোন - শংসাপত্রগুলির জন্য অনুরোধ করার পরিবর্তে ব্যর্থ


14

স্বয়ংক্রিয় সরঞ্জামগুলিতে গিট সংগ্রহস্থলগুলি ক্লোনিং করার সময় - ওয়েব ফ্রন্ট শেষ, সিআই সিস্টেম, কখনও কখনও গিট ক্লোন অনুরোধ ব্যবহারকারীর নাম এবং পাসওয়ার্ড জিজ্ঞাসা করার জন্য একটি প্রম্পট খোলে (উদাহরণস্বরূপ, অস্তিত্বহীন গিথুব রেপো ক্লোনিং করার সময় বা নতুন নোডে হারিয়ে যাওয়া এসএসএস কীগুলি )।

সার্ভার প্রক্রিয়াটি ব্যবহারকারীর নাম এবং পাসওয়ার্ড দেওয়ার অপেক্ষা না করে আমি কীভাবে গিটকে কেবল ব্যর্থ (পছন্দসই ত্রুটি বার্তা এবং প্রস্থান কোড সহ) ব্যর্থ করব?


আমাদের একটি মাল্টি-সার্ভার জেনকিনস সেট আপ হয়েছে, যা ক্ষুব্ধ হয়ে প্রম্পটের জন্য অপেক্ষা করে বসে থাকে যদি এটি নতুন সার্ভারে চালিত হয় তবে এসএস কীগুলি হারিয়ে যায় - এটি একটি কনফিগার করার উপায় যে এটি কোনও বার্তা এবং শূন্য-বহির্গমন কোডের সাহায্যে ব্যর্থ হবে would দরকারী হতে।
ড্যানি স্ট্যাপল

যদি কোনও ক্যাচ সমস্ত "ব্যাচ" মোড হোস্ট কীগুলির জন্য অনুরোধ জানাতেও অস্বীকার করতে ব্যবহৃত হয় - এটি আদর্শ হবে be
ড্যানি স্ট্যাপল

- একসঙ্গে তাদের টুকরা বের করার চেষ্টা - এই উভয় সম্পর্কিত serverfault.com/questions/61915/... , stackoverflow.com/questions/7772190/...
ড্যানি স্ট্যাপল

উত্তর:


15

গিট সংস্করণ ২.৩ এ একটি পরিবেশ পরিবর্তনশীল রয়েছে GIT_TERMINAL_PROMPTযা সেট হয়ে গেলে 0শংসাপত্রগুলির জন্য অনুরোধ জানানো অক্ষম করে will

আপনি man git(গিট সংস্করণে আপডেট করার পরে 2.3) বা গিথুবের এই ব্লগ পোস্টে এটি সম্পর্কে আরও তথ্য পেতে পারেন ।

উদাহরণ:

  • git clone https://github.com/some/non-existing-repo ব্যবহারকারীর নাম এবং পাসওয়ার্ডের জন্য অনুরোধ জানাবে
  • GIT_TERMINAL_PROMPT=0 git clone https://github.com/some/non-existing-repo ব্যবহারকারীর নাম এবং পাসওয়ার্ডের জন্য অনুরোধ না করে ব্যর্থ হবে

হিট হতাশার সাথে এখানে ফিরে আসার জন্য একটি https গিট ক্লোন, গিট 1.8 সহ একটি এল 7 সার্ভারে। অন্যান্য রেপো থেকে ২.০ এ আপডেট করা কিনা তা যাচাই করা তার পক্ষে বিকল্প।
ড্যানি স্ট্যাপল

0

আপনি যদি ssh প্রমাণীকরণ এবং লিনাক্স ব্যবহার করে থাকেন তবে এটি অক্ষম করতে আপনি ssh কমান্ড প্রতিস্থাপন তৈরি করতে পারেন।

এর সাথে "sshnoprompt.sh" নামে একটি ফাইল তৈরি করুন:

ssh -oBatchMode=yes $@

এই ফাইলটি দিয়ে সম্পাদনযোগ্য করুন Make chmod +x sshnoprompt.sh

তারপর গিট শুরু করার সময়:

GIT_SSH="sshnoprompt.sh" git clone foo@dummyserver:not_a_repo

এবং এটি কোনও ইন্টারেক্টিভ গিট প্রম্পট বা প্রশ্নের অনুমতি দেবে না - এটি ব্যবহারকারীকে কোনও কিছুর জন্য জিজ্ঞাসা করতে সক্ষম হবে না।


0

গিট সংস্করণ 1.8.3.1 থেকে কাজ করা;

git clone -c core.askPass $echo url/or/path/to/git/repo

কনফিগারেশনটি core.askPassপূর্বোক্ত প্রোগ্রামটিতে শংসাপত্রগুলি পরিচালনা করার নিয়ন্ত্রণ দিয়ে কাজ করে। তবে যেহেতু $echoআউটপুট ব্যতীত কিছুই করা যায় না, তাই ক্লোন প্রচেষ্টা তত্ক্ষণাত ব্যর্থ হয় এবং সম্পর্কিত বাশ পুনঃনির্দেশ প্রয়োগ হয়। এই কোডটি কেবলমাত্র গিট সংগ্রহস্থলটি ব্যক্তিগত বলে মনে হয় এবং নির্দিষ্ট ভান্ডারটির জন্য প্রমাণীকরণ ব্যর্থ হয়েছে উল্লেখ করে ত্রুটি আউটপুটটি পাইপ করে। আপনি এটি https://github.com/git/gitসম্পর্কে জানেন এমন একটি ব্যক্তিগত সংগ্রহস্থলের বিরুদ্ধে সর্বজনীন সংগ্রহস্থলের বিরুদ্ধে এটি পরীক্ষা করতে পারেন ।

চুক্তিটি মিষ্টি করতে, আপনাকে এমনকি echoপ্রথম স্থানের মতো কোনও প্রোগ্রামের উল্লেখ করতে হবে না । -c core.askPassকোনও নিম্নলিখিত ইনপুট না দিয়ে কেবল গিট কনফিগারেশনটি পাস করার পরেও যদি ইভেন্টটি সংগ্রহস্থলটি ব্যক্তিগত হিসাবে ঘটে থাকে তবে কোডটি শংসাপত্রের হ্যান্ডলিংয়ে অফলোড কী প্রোগ্রাম তা জানতে পারে না failure যদিও এটি এখানে উল্লিখিত অন্যদের তুলনায় অবশ্যই একটি পুরানো এবং সহজ পদ্ধতি, আমি জানি না যে গিটারের পুরানো সংস্করণগুলিতে এটি একই প্রভাব ফেলবে কিনা।


খুব ভুল হওয়ার সময় আপনি কিছুটা সঠিক। প্রথমত, আপনার ক্ষেত্রে $echoএকটি পরিবর্তনশীল রেফারেন্স যা (সেট না থাকা) খালি স্ট্রিংয়ে প্রসারিত হয়, সুতরাং এটি সম্পূর্ণ অর্থহীন। আপনি যদি echoসেখানে রাখেন (ডলারের চিহ্ন ছাড়াই) তবে এটিও ভুল হবে কারণ এটি সংগ্রহস্থলের অবস্থান হিসাবে ব্যাখ্যা করা হবে। এটা হতে হবে -c core.askPass=echo
মাইকেল গার্নি

-1

আপনি কীভাবে গিটটি চালাচ্ছেন তার উপর নির্ভর করে স্টিডিন বা স্টডআউটকে পুনর্নির্দেশ করা যাতে তারা টার্মিনালের সাথে সংযুক্ত না থাকে তবে বিশদটি বিশদটি জিজ্ঞাসা করা থেকে গিটটি থামবে এবং কেবল এটিকে ত্রুটির কারণ হতে পারে।

এটি আপনাকে ওয়েব সার্ভিসে ত্রুটিগুলি (বা কমপক্ষে লগগুলি) সজ্জিত করার অনুমতি দেবে।


আমি ঠিক কীভাবে এটি করতে যাব? প্রথম ব্যাশ এই সাধন করার চেষ্টা, উভয় </dev/nullএবং nohup .. &কাজ বলে মনে হচ্ছে না।
টিন Tvrtković

কীভাবে এটি অর্জন করা যায় তার নির্দিষ্ট উদাহরণ ছাড়াই এই উত্তর সহায়ক নয়। বিশেষত যে উপরে বর্ণিত হিসাবে 'সুস্পষ্ট' পদ্ধতিগুলি কাজ করে না।
মিশা গার্নি

@ মাইচাগার্নি আমি কয়েক বছর আগে ওপিএসের প্রশ্নটি দেখিনি, তবে প্রশ্নের উত্তর দিতে সক্ষম হওয়ার মতো প্রশ্নের (ওএস, টুলসেট) পর্যাপ্ত তথ্য নেই। পুনর্নির্দেশ stdin এবং stdout। Git অনেক কিছুরই পরিবর্তন হয়েছে যেহেতু প্রশ্ন জিজ্ঞাসা করা হল (উদাহরণস্বরূপ Windows এ, এটা পরিচয়পত্র জন্য বহিরাগত ডায়ালগ পপ আপ যদি আপনি নভোনীল DevOps সাথে সংযোগ করা হয়) এনভায়রনমেন্ট ভেরিয়েবল শীর্ষ উত্তর তালিকাভুক্ত ব্যবহার বন্ধ যাতে আপনি ভালো আছেন
ম্যাথু Steeples
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.