ব্যবহার git gui blameস্ক্রিপ্ট-এ ব্যবহার করতে কঠিন, এবং যখন git log -Gএবং git log --pickaxeপ্রতিটি আপনি প্রদর্শন করতে পারবে পদ্ধতি সংজ্ঞা হাজির বা অদৃশ্য, আমি তাদের তৈরি করা সমস্ত পরিবর্তন তালিকা তৈরি জন্য কোনো উপায় খুঁজে পেলাম না শরীর আপনার পদ্ধতির।
তবে, আপনি ব্যবহার করতে পারেন gitattributesএবং textconvসম্পত্তিটি একসাথে সমাধান করতে পারেন যা কেবল এটি করে। যদিও এই বৈশিষ্ট্যগুলি মূলত আপনাকে বাইনারি ফাইলগুলির সাথে কাজ করতে সহায়তা করার উদ্দেশ্যে তৈরি করা হয়েছিল, তারা এখানে ঠিক তেমন কাজ করে।
কোনও আলাদা অপারেশন করার আগে আপনার আগ্রহী ফাইলগুলি বাদে গিটটি ফাইল থেকে সমস্ত লাইন অপসারণ করা কীটি হ'ল। তারপরে git log, git diffইত্যাদি কেবলমাত্র আপনার আগ্রহী সেই অঞ্চলটিই দেখতে পাবেন।
আমি অন্য ভাষায় যা করি তার রূপরেখা এখানে দেওয়া হয়; আপনি আপনার নিজের প্রয়োজনের জন্য এটি টুইট করতে পারেন।
একটি শর্ট শেল স্ক্রিপ্ট (বা অন্যান্য প্রোগ্রাম) লিখুন যা একটি যুক্তি গ্রহণ করে - একটি উত্স ফাইলের নাম - এবং কেবলমাত্র সেই ফাইলটির আকর্ষণীয় অংশকে আউটপুট করে (বা এটির কোনওটি আকর্ষণীয় না হলে কিছুই নয়)। উদাহরণস্বরূপ, আপনি sedনিম্নলিখিত হিসাবে ব্যবহার করতে পারেন :
#!/bin/sh
sed -n -e '/^int my_func(/,/^}/ p' "$1"
textconvআপনার নতুন স্ক্রিপ্টের জন্য একটি গিট ফিল্টার সংজ্ঞায়িত করুন । ( gitattributesআরও তথ্যের জন্য ম্যান পৃষ্ঠাটি দেখুন )) ফিল্টারটির নাম এবং কমান্ডের অবস্থান আপনার পছন্দ মতো কিছু হতে পারে।
$ git config diff.my_filter.textconv /path/to/my_script
প্রশ্নের মধ্যে থাকা ফাইলটির জন্য পৃথক্ গণনা করার আগে গিটকে সেই ফিল্টারটি ব্যবহার করতে বলুন।
$ echo "my_file diff=my_filter" >> .gitattributes
এখন, আপনি যদি আপনার ফিল্টার প্রয়োগ করা হয় তখন দৃশ্যমান পরিবর্তনগুলি ঘটাতে পারে এমন সমস্ত কমিটের তালিকা তৈরির জন্য -G.(নোটটি .) ব্যবহার করেন , আপনার আগ্রহী হবেন ঠিক সেই রকম কমিটগুলি। আপনি গিটের আলাদা রুটিন ব্যবহার করেন এমন অন্য কোনও বিকল্প যেমন --patch, এছাড়াও এই সীমাবদ্ধ দৃষ্টিভঙ্গি পান।
$ git log -G. --patch my_file
ভয়েল!
একটি কার্যকর উন্নতি আপনি করতে চাইতে পারেন আপনার ফিল্টার স্ক্রিপ্টটির কোনও পদ্ধতির নামটিকে প্রথম আর্গুমেন্ট হিসাবে (এবং ফাইলটিকে দ্বিতীয় হিসাবে) গ্রহণ করা। এটি আপনাকে git configআপনার স্ক্রিপ্টটি সম্পাদনা না করে কেবল কল করে আগ্রহের একটি নতুন পদ্ধতি নির্দিষ্ট করতে দেয় । উদাহরণস্বরূপ, আপনি বলতে পারেন:
$ git config diff.my_filter.textconv "/path/to/my_command other_func"
অবশ্যই, ফিল্টার স্ক্রিপ্ট আপনার পছন্দমতো কিছু করতে পারে, আরও যুক্তি গ্রহণ করতে পারে বা যাই হোক না কেন: আমি এখানে যা দেখিয়েছি তার চেয়ে অনেক বেশি নমনীয়তা রয়েছে।