সংগ্রহস্থলের অংশ হিসাবে গিট কনফিগারেশন সংরক্ষণ করা


147

আমি এখানে বর্ণিত চেকআউট চলাকালীন ফাইলগুলিকে ম্যাংলে ফিল্টার ব্যবহার করছি । এখন সমস্যাটি হ'ল ফিল্টার সংজ্ঞাটি কেবলমাত্র আমার স্থানীয় কনফিগারেশন ফাইলে সংরক্ষণ করা হয়েছে:

$ cat .git/config
....
[filter "dater"]
        smudge = /home/.../expand_date
        clean = perl -pe \"s/\\\\\\$Date[^\\\\\\$]*\\\\\\$/\\\\\\$Date\\\\\\$/\"

আমার সহকর্মীরা যদি এই Dateসম্প্রসারণটি থেকে উপকৃত হতে চান তবে তাদের আমার ফিল্টার সংজ্ঞাটি অনুলিপি করতে হবে। এবং যদি আমি এটি পরিবর্তন করি তবে আমার এগুলিকে অবহিত করা দরকার ইত্যাদি ..

সুতরাং আমি কি এই ফিল্টার সংজ্ঞা অংশটি .git/configসংগ্রহস্থলে সঞ্চয় করতে পারি এবং গিটটি ব্যবহার করতে পারি?


টিম-ব্যাপী কনফিগারেশনটি স্বয়ংক্রিয়ভাবে ভাগ করতে আপনি এই লিঙ্কটিকে দরকারী বলে মনে করতে পারেন।
mljrg

উত্তর:


163

.gitconfigফাইলটির 3 টি সমর্থিত স্কোপ রয়েছে :--system, --global, --local। আপনি একটি কাস্টম কনফিগারেশন ফাইলও তৈরি করতে পারেন এবং এটি সমর্থিত ফাইলগুলির মধ্যে একটিতে অন্তর্ভুক্ত করতে পারেন।

আপনার প্রয়োজনের জন্য কাস্টম - সঠিক পছন্দ। আপনার ফিল্টারটি লেখার পরিবর্তে আপনার .git/configএটিকে .gitconfigআপনার সংগ্রহস্থলের মূলের ফাইলে সংরক্ষণ করতে হবে :

your-repo/
│
├── .git/
│   ├── config
│
├── .gitconfig
│

.gitconfigআপনার ফিল্টারটি দিয়ে তৈরি করুন এবং পরিবর্তনগুলি প্রতিশ্রুতিবদ্ধ করুন। তারপরে আপনার সহকর্মীরা সর্বদা এটি আপডেট রাখবে - তবে তাদের এটি ম্যানুয়ালি অন্তর্ভুক্ত করতে হবে। আপনার কাস্টম কনফিগারেশন ফাইলটি স্বয়ংক্রিয়ভাবে অন্তর্ভুক্ত করা সম্ভব নয়একা গিটের মাধ্যমে নয়, কারণ এটি সুরক্ষার দুর্বলতা তৈরি করে।

একক সংগ্রহস্থলের জন্য এই কনফিগারেশনটি প্রয়োগ করতে প্রতিটি ব্যবহারকারীরকে নিম্নলিখিত কমান্ডটি চালাতে হবে your-repo/:

git config --local include.path ../.gitconfig

কাস্টম ব্যক্তিগত ডেটা জমা করতে না সতর্ক থাকুন .gitconfig, মত user.*, আপনার বিশ্বব্যাপী ঐ রাখা .gitconfig


40
আমি প্রতিটি সম্ভাব্য ব্যবহারকারী এটি রেপো এর অন্তর্ভুক্ত করা দরকার বিজ্ঞাপিত এড়াতে চান .gitconfigতার মধ্যে ~/.gitconfig। কেউ এটা মনে রাখবে না। রেপো পড়তে সর্বদা গিট করার কোনও উপায় আছে কি .gitconfig?
জার হাই

9
@ জারহাই: আমি অনুমান করছি না, কারণ এটি বিপজ্জনক হবে। (কল্পনা করুন এমন কোনও রেপোকে ক্লোনিং করা হয়েছে যা "আকর্ষণীয়" কিছু দিয়ে কমান্ডকে আলাদা করে রাখে, যেমন আপনার বাড়ির দিরের সামগ্রী রফতানি করে)। যদি আপনার কাছে কোনও configureস্ক্রিপ্ট বা এর মতো কিছু পাওয়া যায় যা ব্যবহারকারীদের অবশ্যই চালিত হয়, তবে আপনি সেগুলি অন্তর্ভুক্ত (অথবা ব্যবহারকারীকে প্রম্পট করতে) সেট করতে পারেন।
হস্তুরকুন

4
@ হেনরিব্লাইথ সেখানে একটি --fileবিকল্প বলে মনে হচ্ছে আপনি git configতারপরে এটি রেপোতে সেট করতে পারেন .gitconfig। আমি এটি এখনও পরীক্ষা করি নি, তবে মনে হয় এটি আপনার প্রশ্নের উত্তর দিয়েছে। আপনি এটি ডক্সে পড়তে পারেন। git-scm.com/docs/git-config#FILES
দ্য

12
গিট যদি ধরে না নেয় যে আপনি আপনার org এর বাইরে বিতরণ কোড লিখেছেন যেখানে আপনাকে সুরক্ষা হুমকির বিষয়ে যত্ন নিতে হবে great কখনও কখনও সিস্টেমের ব্যবহারযোগ্যতা এবং অটোমেশনের সুরক্ষার চেয়ে বেশি অগ্রাধিকার থাকে।
জর্ডি

2
আপনার দলটি নিয়মিতভাবে কোনও টাস্কে কমান্ড যুক্ত করতে পারেন (ধরে নেওয়া যাক আপনি কোনও টাস্ক রানার ব্যবহার করছেন)।
মিয়াজকো

19

আপনি .gitconfigডিফল্টরূপে গিট সংগ্রহস্থলে ফাইল ব্যবহার করতে পারবেন না তবে আপনি এটির সাথে লিঙ্ক করতে পারেন যাতে গিট কনফিগারেশনের সংস্করণ হবে।

আপনি এটির সাথে লিঙ্ক করতে পারেন:

[include]
  path = ../.gitconfig

আমি একটি সাধারণ স্ক্রিপ্ট তৈরি করেছি gitconfig.shযা এটি আপনার জন্য করে (অনুলিপি করার চেয়ে অনেক দ্রুত) + সাধারণ .gitconfigফাইল তাই আপনি যদি চান তবে এই রেপোটি দেখুন https://github.com/HoBi/dotfiles


সম্পাদনা : আমি ফাইলটি মুছে ফেলেছি, তবে আপনি এটি এখানে পাবেন https://github.com/tenhobi/dotfiles/blob/7e4376c006c508370b82bc7bd37173fab51dbd01/git/.gitconfig.sh


@XMLmXMLmX স্থির। :-)
টেনহোবি

@ হোবিবি দেখে মনে হচ্ছে আপনি এখন গিটহাব থেকে আপনার gitconfig.sh মুছে ফেলেছেন, যে কারণে আপনি আর চান না কেন?
নভেসি সি

1
আপনি যদি চান তবে @ নভিকিসি ফাইল আছে। github.com/HoBi/dotfiles/blob/… আমি বিশ্বাস করে এসেছি, আপনি গিট প্রকল্পে .gitconfig বা gitconfig.sh সংরক্ষণ করবেন না - এগুলি ব্যক্তিগত সেটিংস এবং ~/ফোল্ডারে আপনার বিশ্বব্যাপী সেটিংসে সংরক্ষণ করা উচিত । এবং প্রত্যেকেরই আলাদা প্রয়োজন হতে পারে, তাই গিট রেপোতে আপনার কনফিগারেশনের মাধ্যমে কেন সবাইকে বিরক্ত করবেন। :-)
টেনহোবি

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