ব্যবহার করে শুধুমাত্র bash
, diff
, tput
, এবং less
, আমরা ঘনিষ্ঠভাবে আউটপুট অনুমান করতে পারে git diff
। diff
প্রোগ্রামারদের স্বল্পদৃষ্টির কারণে কিছু উল্লেখযোগ্য পার্থক্য থাকবে ।
নিম্নলিখিত বাশ ফাংশন সংজ্ঞাটি এমন কোনও ফাইলে রাখুন যা আপনার ব্যবহারকারীর অ্যাকাউন্ট থেকে স্বয়ংক্রিয়ভাবে উত্স হয়ে যায় এবং আপনি কমান্ড লাইন থেকে ফাংশনটি অ্যাক্সেস করতে সক্ষম হবেন:
function gdiff()
{
local REG=`tput op`
local GRP=`tput setaf 6`
local ADD=`tput setaf 2`
local REM=`tput setaf 1`
local NL=$'\n'
local GRP_LABEL="${GRP}@@ %df,%dn +%dF,%dN @@${REG}"
local UNCH_GRP_FMT=''
[[ "${1}" == '@full' ]] && {
UNCH_GRP_FMT="${GRP_LABEL}${NL}%="
shift
}
diff \
--new-line-format="${ADD}+%L${REG}" \
--old-line-format="${REM}-%L${REG}" \
--unchanged-line-format=" %L${REG}" \
--new-group-format="${GRP_LABEL}${NL}%>" \
--old-group-format="${GRP_LABEL}${NL}%<" \
--changed-group-format="${GRP_LABEL}${NL}%<%>" \
--unchanged-group-format="${UNCH_GRP_FMT}" \
"${@}" | less -FXR
}
এই ফাংশনটি নিম্নলিখিত হিসাবে কাজ করে:
- শেষ পর্যন্ত,
diff
ফাইলগুলির মধ্যে কীভাবে পরিবর্তনগুলি প্রদর্শিত হবে তা নির্দিষ্ট করতে বিভিন্ন ফর্ম্যাটিং বিকল্পের সাথে আহ্বান জানানো হয়।
tput
এই ফর্ম্যাটিং বিকল্পগুলিতে এএনএসআই রঙ কোড সন্নিবেশ করানোর জন্য ব্যবহৃত হয়। নোট যখন অ ANSI টার্মিনাল ব্যবহার করার মাধ্যমে আপনি প্রতিস্থাপন করতে থাকতে পারে tput setaf
সঙ্গে tput setf
।
- এর আউটপুট
diff
পাইপ করা হয় less
। -R
এএনএসআই রঙগুলি সংরক্ষণ করার অনুমতি দেয়। -X
বাইরে বেরোনোর less
পরে পর্দা সাফ করা থেকে বাধা দেয় । যদি পর্দার মধ্যে আউটপুট ফিট করে তবে পেজার হিসাবে অপারেটিং করা থেকে -F
বাধা দেয় less
।
- যদি প্রথম প্যারামিটার হয়
@full
তবে ফাংশনটি যুক্ত এবং সরানো রেখাগুলির পাশাপাশি সমস্ত অপরিবর্তিত রেখাগুলি প্রদর্শন করবে।
এই পদ্ধতির এবং এর মধ্যে নিম্নলিখিত পার্থক্যগুলি নোট করুন git diff
:
git diff
প্রতিটি পরিবর্তনের চারপাশে তিন লাইন প্রসঙ্গে রিপোর্ট করে। দুর্ভাগ্যক্রমে, diff
আপনি একই সাথে বিন্যাসের বিকল্পগুলি নির্দিষ্ট করার সাথে সাথে প্রসঙ্গের রেখার সংখ্যা উল্লেখ করতে চাইলে অভিযোগ এবং প্রস্থান করার বিষয়টি মনে হচ্ছে। (কমপক্ষে এটি ম্যাক ওএস এক্স জোসেমাইটে করে)। ধন্যবাদ diff
প্রোগ্রামাররা। অতএব, আপনি হয় প্রতিটি পরিবর্তনকে ঘিরে কোনও প্রসঙ্গের রেখাকে অনুরোধ করতে পারবেন না এটিই ডিফল্ট আচরণ, অথবা আপনি @full
প্রথম প্যারামিটার হিসাবে উল্লেখ করে ফাইলের মধ্যে থাকা সমস্ত অপরিবর্তিত রেখাগুলিরও প্রতিবেদন করার জন্য অনুরোধ করতে পারেন ।
- প্রসঙ্গের রেখাগুলি পৃথক হওয়ার কারণে
git diff
, এই ফাংশনটির দ্বারা প্রতিবেদন করা লাইন নম্বরগুলিও রিপোর্ট করা থেকে পৃথক হবে git diff
।
- আপনি রিপোর্ট করা একক-লাইন পরিবর্তনের উপস্থিতি দেখতে পাবেন যা সঠিক আচরণ, তবে বিরক্তিকর যখন আপনার পরিবর্তিত ফাইলে একক খালি লাইনের সন্নিবেশ থাকে। আমি মনে করি
git diff
এর প্রসঙ্গের লাইনের মাধ্যমে এটি আরও ভালভাবে ডিল করে। আপনি diff
যদি পছন্দ করেন তবে হোয়াইটস্পেসের সাথে আরও ভাল ব্যবহার করার জন্য আপনি বিভিন্ন বিকল্পগুলি পার করার চেষ্টা করতে পারেন।
newtext
মধ্যে/etc/colordiff
। আমি মনে করি গিট সবুজ ব্যবহার করে?