উত্তর:
জেরিটের জন্য ডকুমেন্টেশন, বিশেষত "পুশ পরিবর্তনগুলি" বিভাগটি ব্যাখ্যা করে যে আপনি " refs/for/'branch'
কোনও গিট ক্লায়েন্ট সরঞ্জাম ব্যবহার করে জাদুকরী রেফ " এ চাপছেন ।
নিম্নলিখিত চিত্রটি ইন্ট্রো থেকে জেরিটে নেওয়া হয়েছে । আপনি যখন Gerrit ধাক্কা, আপনি কি git push gerrit HEAD:refs/for/<BRANCH>
। এটি আপনার পরিবর্তনগুলিকে স্টেজিং এরিয়ায় ধাক্কা দেয় (চিত্রটিতে "মুলতুবি পরিবর্তনগুলি")। জেরিটের আসলে কোনও শাখা নেই <BRANCH>
; এটি গিট ক্লায়েন্টের কাছে রয়েছে।
অভ্যন্তরীণভাবে, গিরিটের গিট এবং এসএসএইচ স্ট্যাকের জন্য নিজস্ব প্রয়োগ রয়েছে। এটি এটিকে "জাদুকরী" refs/for/<BRANCH>
রেফগুলি সরবরাহ করতে দেয়।
এর মধ্যে কোনও একটি নেমস্পেসে রেফ তৈরি করার জন্য যখন একটি পুশ অনুরোধ পাওয়া যায় তখন জেরিট ডাটাবেস আপডেট করার জন্য তার নিজস্ব যুক্তি সম্পাদন করে এবং তারপরে অপারেশনের ফলাফল সম্পর্কে ক্লায়েন্টের কাছে মিথ্যা থাকে। একটি সফল ফলাফল ক্লায়েন্টকে বিশ্বাস করতে বাধ্য করে যে জেরিট রেফ তৈরি করেছে, কিন্তু বাস্তবে জেরিট এ রেফ তৈরি করেনি। [ লিঙ্ক - গেরিট, "গ্রেটি ডিটেলস" ]।
একটি সফল প্যাচ (অর্থাত্, প্যাচটি গেরিটের দিকে ঠেলে দেওয়া হয়েছে, [এটিকে "মুলতুবি পরিবর্তনগুলি" স্টেজিং এরিয়াতে রেখে দেওয়া হয়েছে], পর্যালোচনা করা হয়েছে, এবং পর্যালোচনাটি পাস হয়েছে), গেরিট "মুলতুবি পরিবর্তনগুলি" থেকে পরিবর্তনটিকে " অথোরিটিভেটিভ রিপোজিটরি ", আপনি যখন ঠেলাঠেলি করেছিলেন তখন যাদুবিদ্যার ভিত্তিতে কোন শাখাটিকে এটিকে ঠেলে দেওয়ার গণনা করা হচ্ছে refs/for/<BRANCH>
। এইভাবে, সফলভাবে পর্যালোচনা করা প্যাচগুলি সরাসরি এর সঠিক শাখা থেকে টানা যেতে পারে Authoritative Repository
।
গিট পুশ কমান্ডটি সম্পূর্ণরূপে নির্দিষ্ট করা এড়াতে আপনি বিকল্পভাবে আপনার গিট কনফিগারেশন ফাইলটি সংশোধন করতে পারেন:
[remote "gerrit"]
url = https://your.gerrit.repo:44444/repo
fetch = +refs/heads/master:refs/remotes/origin/master
push = refs/heads/master:refs/for/master
এখন আপনি কেবল:
git fetch gerrit
git push gerrit
এটি জেরিট অনুসারে
remote.origin.push
এটি প্রতিবার এটি টাইপ / পেস্ট করার পরিবর্তে আমার পক্ষে এই হার্ড-কোডড থাকার উপায়টি খুব সুন্দর !
git fetch
এবং করি git push
।