সমস্ত বর্তমান এবং ভবিষ্যতের ভাণ্ডারে গিট পোস্ট কমিট হুক প্রয়োগ করা


275

আমি একটি গিট পোস্ট কমিট হুক লিখেছি এবং এটি সঠিকভাবে কাজ করে। তবে, আমি কাজ করছি এমন সমস্ত বর্তমান (এবং ভবিষ্যত) গিট সংগ্রহস্থলগুলিতে প্রয়োগ করতে এই হুকটি যুক্ত করতে চাই। আমি ~/.git/hooks/প্রকল্প ডিরেক্টরিতে হুক ডিরেক্টরিটির পরিবর্তে আমার সাথে হুক যুক্ত করার চেষ্টা করেছি , তবে এটি কাজ করছে বলে মনে হয় না।

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


3
গিট ২.৯-এর হিসাবে এটির পক্ষে এই সর্বোত্তম পদ্ধতির পরিবর্তন হয়েছে: ভনসির উত্তরটি আরও ভাল বাজি। stackoverflow.com/a/37293198/2741954
সাইমন ব্রাহান

উত্তর:


192

আমি কাজ করছি এমন সমস্ত বর্তমান (এবং ভবিষ্যত) গিট সংগ্রহস্থলগুলিতে প্রয়োগ করতে আমি এই হুকটি যুক্ত করতে চাই

গিট 2.9+ (জুন ২০১)) সহ, আপনি যা করবেন তা হ'ল:

git config --global core.hooksPath /path/to/my/centralized/hooks

" ডিফল্ট গিট হুক পরিবর্তন করুন " দেখুন : এটি কেন্দ্রীভূত হুকগুলি পরিচালনা করার জন্য করা হয়েছে।


যদি আমার কাছে একটি বিদ্যমান রেপো থাকে এবং অন্য সমস্ত দেব যারা চান যে পরিবর্তনগুলি টানতে চান একটি হালনাগাদ প্রাক-কমিট হুক রাখুন উদাহরণস্বরূপ আমি কীভাবে এটি করব? আপনাকে ধন্যবাদ
রিচলুইস

@Richlewis গড় আপনাকে যা stackoverflow.com/a/40550555/6309 সম্পূর্ণরূপে পরিষ্কার করা হয়নি?
ভোনসি

@ রিচলুইস আপনার নিজের স্থানীয় কনফিগারেশনে রেফারেন্স দেওয়ার জন্য আপনাকে সমস্ত ডিভ দ্বারা অ্যাক্সেসযোগ্য একটি ভাগ করা ফোল্ডার সেটআপ করতে হবে।
ভোনসি

দুর্ভাগ্যক্রমে আমি এখনও এটি যথেষ্ট না। রেপোর মধ্যে /.git/hooks/pre_commitআমি কি এটি ইঙ্গিত করতে পারি?
রিচলুইস

@ রিচলেউইস আমি আপনার মূল প্রশ্নের উত্তর দিয়েছি।
ভনসি

290

গিট 1.7.1 হিসাবে, আপনি টেমপ্লেটগুলি কোথায় সন্ধান করবেন তা গিটকে বলতে আপনার gitconfig এ init.templatedir সেট করতে পারেন ।

এটি সেট করুন:

git config --global init.templatedir '~/.git_template'

এরপরে, আপনি তৈরি বা ক্লোন করা নতুন ভাণ্ডারগুলি টেমপ্লেটগুলির জন্য এই ডিরেক্টরিটি ব্যবহার করবে। আপনি চাইছেন হুক রাখুন ~/.git_template/hooks। বিদ্যমান git initডিরেক্টরিতে চালিত করে সঠিক টেমপ্লেটগুলির সাথে পুনরায় পুনঃনির্মাণ করা যেতে পারে .gitin

১..1.১ এর চেয়ে পুরানো গিট সংস্করণগুলির জন্য, git init --template ~/.git_templateআপনি যদি আমার মতো হন এবং এখনও আপনার .git_templateবাকী ডট ফাইলের সাথে আপনার দির পরিচালনা করতে চান তবে চলমান কাজ করবে । আপনার টেম্পলেট ডিরেক্টরিটি কোথায় $GIT_TEMPLATE_DIRতা আপনি পরিবেশ ব্যবহার করতে পারেন cangit init


51
দুর্দান্ত উত্তর। যদি অন্য কেহ বিস্ময়ের পুনরায় চলমান যদি git initএকটি বিদ্যমান রেপো তে এটি টিস্যু - এটা না , দেখুন: stackoverflow.com/questions/5149694/...
kontur

আমার জন্য এটি বিদ্যমান রেপোজিটরিগুলিতে git init ব্যবহার করে ফাইলগুলি অনুলিপি করার জন্য গিট টেম্পলেট ফোল্ডারের আপেক্ষিক পথে কাজ করে না। পরিবর্তে আমি পুরো পথটি ব্যবহার করেছি।
ব্যবহারকারী 847988

1
কোটেশন ছাড়াই উইন্ডোগুলিতে: `গিট কনফিগারেশন - গ্লোবাল ডি.এম্প্প্লেটিয়ার ডি: it গিট \ .git_template \`
ভ্লাদিমির ভুকানাক

1
টিপ: টেমপ্লেট হুকগুলি অনুলিপি করা হয়েছে। আপনি যদি একসাথে বিশ্বব্যাপী হুক আপডেট করতে সক্ষম হতে চান তবে হুকটি অন্য কোথাও রাখুন এবং টেম্পলেট ডিরেক্টরিতে (লিনাক্সে) একটি প্রতীকী লিঙ্ক যুক্ত করুন। লিঙ্ক পাথটি নিখুঁত কিনা তা নিশ্চিত করুন।
টিম অ্যালক্লেয়ার

1
দৌড়ানো git initআসলে আমার জন্য হুক আপডেট করে নি। মনে হচ্ছে এটি ইতিমধ্যে থাকা ফাইলগুলিকে ওভাররাইট করবে না। stackoverflow.com/questions/10791486/ । পরিবর্তে আপনাকে প্রথমে পুরানো হুক ফাইলগুলি সরিয়ে ফেলতে হবে।
ফিল আর

69

যদি আপনি এগুলি আপনার সিস্টেমে সর্বত্র চান (আপনার পাশাপাশি ব্যবহারকারীরাও যোগ করেন) তবে আপনি ইনস্টল করা টেম্পলেট ডিরেক্টরিটির বিষয়বস্তুগুলি সংশোধন করতে পারেন - সেগুলিতে রয়েছে $PREFIX/share/git-core/templates/hooksযেখানে $PREFIXসম্ভবত রয়েছে /usr/localবা আছে /usr

আপনি যদি এটি কেবল আপনার জন্যই চান তবে হ্যাঁ, সবচেয়ে সহজ জিনিসটি হবে --templateগিট-ইন-এর বিকল্প। আপনি সহজেই একটি ব্যক্তিগত টেম্পলেট ডিরেক্টরি রাখতে পারেন যা আপনি রাখতে চান এমন ডিফল্টগুলির ইনস্টলড সংস্করণটিতে (স্বতন্ত্র হুকস, তথ্য ডিরেক্টরি ...) এবং তারপরে আপনার নিজস্ব সামগ্রী hooks/post-commitএবং অন্যায়িত আপনার পছন্দসই কিছু থাকতে পারে sy


11
ধন্যবাদ, এটি ভাল কাজ করেছে। এবং এটি আমার বিদ্যমান প্রকল্পগুলিতে পূর্ববর্তীভাবে প্রয়োগ করতে আমি git initআবার দৌড়ে এসেছি এবং এটি আমার নতুন হুক যুক্ত করেছে।
সোয়ানসন

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

2
ওএস এক্স-এ সোর্সট্রি-এর এম্বেড গিটের জন্য তারা /Applications/SourceTree.app/Contents/Resources/git_local/share/git-core/templates/hooks
এগুলিতে

1
উইন্ডোজের জন্য এই অধীনে ডিরেক্টরির ইনস্টল Git পাওয়া যায় mingw64\share\templates\hooks(অথবা জন্য mingw32 32-বিট)
nerdherd

1
@nerdherd এটি এখন mingw64\share\git-core\templates\hooks(gfw 2.25)
আরজেফালকোনার

7

একটি git_hooks/প্রকল্পের জন্য আপনি যে হুকগুলি লিখেছেন তা ট্র্যাক করার জন্য আপনার সংগ্রহস্থলে একটি ডিরেক্টরি তৈরি করা , এটি এ-তে উল্লেখ করে ভবিষ্যতের ব্যবহারকারীদের নজরে আনুন READMEএবং তারা ক্লোন করার পরে সঠিক কাজটি করার জন্য তাদের উপর নির্ভর করুন। আমি কিছুক্ষণের জন্য এটিতে কৌগলিত হয়েছি এবং একটি বর্ধিত পদ্ধতি বেছে নিয়েছি। রাস্তার নিচে আমি গিট-হুকের মতো একটি সরঞ্জাম ব্যবহার করার বিষয়টি বিবেচনা করব ।


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