গিট 2.22 ( কিউ 2 2019) জেফ হোস্টেলারের দ্বারা প্রতিশ্রুতিবদ্ধ ee4512e এরtrace2
সাথে পরিচয় করিয়ে দিয়েছে :
trace2
: নতুন সম্মিলিত ট্রেস সুবিধা তৈরি করুন
গিটের জন্য একটি নতুন ইউনিফাইড ট্রেসিং সুবিধা তৈরি করুন।
পরিণামস্বরূপ অভিপ্রায় বর্তমান প্রতিস্থাপন করতে হয় trace_printf*
এবং trace_performance*
একটি ইউনিফাইড সেট দিয়ে রুটিন git_trace2*
রুটিন।
সাধারণ trace2
প্রিন্টফ -স্টাইলের এপিআই ছাড়াও, কাঠামোগত ডেটা লেখার অনুমতি দিয়ে স্থির ক্ষেত্রগুলি সহ উচ্চ স্তরের ইভেন্ট ক্রিয়াগুলি সরবরাহ করে।
এটি বাহ্যিক সরঞ্জামগুলির জন্য পোস্ট-প্রসেসিং এবং বিশ্লেষণকে আরও সহজ করে তোলে।
ট্রেস 2 3 আউটপুট লক্ষ্য নির্ধারণ করে।
এগুলি পরিবেশের ভেরিয়েবল " GIT_TR2
", " GIT_TR2_PERF
" এবং " GIT_TR2_EVENT
" ব্যবহার করে সেট করা আছে ।
এগুলি "1" বা একটি পরম পথের নাম (বর্তমানের মতো GIT_TRACE
) এ সেট করা যেতে পারে ।
দ্রষ্টব্য: পরিবেশের পরিবর্তনশীল নাম সম্পর্কিত, সর্বদা ব্যবহার করুন GIT_TRACExxx
, না GIT_TRxxx
।
সুতরাং আসলে GIT_TRACE2
, GIT_TRACE2_PERF
বা GIT_TRACE2_EVENT
।
পরে নীচে উল্লিখিত গিট ২.২২ নামটি দেখুন।
পুরানো পরিবেশের পরিবর্তনশীল নাম সহ এই নতুন ট্রেসিং বৈশিষ্ট্যের প্রাথমিক কাজটি যা অনুসরণ করবে :
GIT_TR2
হ'ল GIT_TRACE
কমান্ডের সংক্ষিপ্তসার ডেটার জন্য একটি প্রতিস্থাপন এবং লগ করা।
GIT_TR2_PERF
জন্য একটি প্রতিস্থাপন হিসাবে উদ্দেশ্যে করা হয় GIT_TRACE_PERFORMANCE
।
এটি কমান্ড প্রক্রিয়া, থ্রেড, রেপো, পরম এবং আপেক্ষিক বিচ্ছিন্ন সময়গুলির জন্য কলামগুলির সাথে আউটপুট প্রসারিত করে। এটি শিশু প্রক্রিয়া শুরু / স্টপ, থ্রেড স্টার্ট / স্টপ এবং প্রতি থ্রেড ফাংশন নেস্টিংয়ের ইভেন্টের প্রতিবেদন করে।
GIT_TR2_EVENT
একটি নতুন কাঠামোগত বিন্যাস। এটি JSON রেকর্ডগুলির একটি সিরিজ হিসাবে ইভেন্টের ডেটা লিখেছে।
ফাংশনগুলিতে ট্রেস করার জন্য কলগুলি ভিন্ন trace_printf*
বা trace_performance*
রুটিনগুলি কল করার প্রয়োজন ছাড়াই সক্ষম হওয়া 3 আউটপুট টার্গেটের যে কোনওটিতে লগইন করে ।
দেখুন কমিট a4d3a28 (21 মার্চ 2019) দ্বারা জোশ Steadmon ( steadmon
) ।
(দ্বারা একীভূত junio সি Hamano - gitster
- মধ্যে কমিট 1b40314 , 08 মে 2019)
trace2
: ডিরেক্টরি লক্ষ্য লিখুন
যখন কোনও ট্রেস 2 এনভায়রনমেন্ট ভেরিয়েবলের মান একটি বিদ্যমান ডিরেক্টরিকে নির্দেশ করে এমন এক পরম পথ, প্রদত্ত ডিরেক্টরিটির নীচে ফাইলগুলিতে আউটপুট লিখুন (প্রতিটি প্রক্রিয়াতে একটি)।
ট্রেস 2 এসআইডি-র চূড়ান্ত উপাদান অনুসারে ফাইলগুলির নামকরণ করা হবে, এরপরে সম্ভাব্য সংঘর্ষগুলি এড়াতে একটি কাউন্টার থাকবে।
এটি নিঃশর্তভাবে প্রাসঙ্গিক trace2
এনভভারকে একটি ধ্রুবক ডিরেক্টরি নামের নামে সেট করে প্রতিটি গিটের অনুরোধের জন্য ট্রেস সংগ্রহ করা আরও সুবিধাজনক করে তোলে ।
আরও দেখুন f672dee কমিট (29 এপ্রিল 2019), এবং 81567ca কমিট , 08881b9 কমিট , bad229a কমিট , 26c6f25 কমিট , bce9db6 কমিট , 800a7f9 কমিট , a7bc01e কমিট , 39f4317 কমিট , a089724 কমিট , কমিট 1703751 (15 এপ্রিল 2019) দ্বারা জেফ Hostetler (jeffhostetler
) ।
(দ্বারা একীভূত junio সি Hamano - gitster
- মধ্যে কমিট 5b2d1c0 , 13 মে 2019)
নতুন ডকুমেন্টেশন হিসাবে এখন কনফিগ সেটিংস যা শুধুমাত্র সিস্টেম এবং বিশ্বব্যাপী কনফিগ ফাইল থেকে পড়া হয় (অর্থাত সংগ্রহস্থলের স্থানীয় ও worktree কনফিগ ফাইল ও -c
কমান্ড লাইন আর্গুমেন্ট সম্মানিত করা হয় না।)
উদাহরণ :
$ git config --global trace2.normalTarget ~/log.normal
$ git version
git version 2.20.1.155.g426c96fcdb
উৎপাদনের
$ cat ~/log.normal
12:28:42.620009 common-main.c:38 version 2.20.1.155.g426c96fcdb
12:28:42.620989 common-main.c:39 start git version
12:28:42.621101 git.c:432 cmd_name version (version)
12:28:42.621215 git.c:662 exit elapsed:0.001227 code:0
12:28:42.621250 trace2/tr2_tgt_normal.c:124 atexit elapsed:0.001265 code:0
এবং জন্য কর্মক্ষমতা পরিমাপের জন্য :
$ git config --global trace2.perfTarget ~/log.perf
$ git version
git version 2.20.1.155.g426c96fcdb
উৎপাদনের
$ cat ~/log.perf
12:28:42.620675 common-main.c:38 | d0 | main | version | | | | | 2.20.1.155.g426c96fcdb
12:28:42.621001 common-main.c:39 | d0 | main | start | | 0.001173 | | | git version
12:28:42.621111 git.c:432 | d0 | main | cmd_name | | | | | version (version)
12:28:42.621225 git.c:662 | d0 | main | exit | | 0.001227 | | | code:0
12:28:42.621259 trace2/tr2_tgt_perf.c:211 | d0 | main | atexit | | 0.001265 | | | code:0
গিট 2.23 (কিউ 3 2019) তে নথিভুক্ত হিসাবে, ব্যবহারের জন্য পরিবেশের পরিবর্তনশীল GIT_TRACE2
।
দেখুন 6114a40 কমিট (26 জুন 2019) দ্বারা কার্লো মার্সেলো Arenas, Bélon ( carenas
) ।
দেখুন 3efa1c6 কমিট (12 জুন 2019) দ্বারা Ævar Arnfjörð Bjarmason ( avar
) ।
(দ্বারা একীভূত junio সি Hamano - gitster
- মধ্যে কমিট e9eaaa4 , 09 জুলাই 2019)
এটি গিট ২.২২ এ করা কাজ অনুসরণ করেছে: কমিট 4e0d3aa , কমেন্ট ই 4 বি 75 ডি 6 (19 মে 2019) এসজেডর গবার ( szeder
) দ্বারা ।
(দ্বারা একীভূত junio সি Hamano - gitster
- মধ্যে কমিট 463dca6 , 30 মে 2019)
trace2
: GIT_TRACE2 * এ এনভায়রনমেন্ট ভেরিয়েবলের নাম পরিবর্তন করুন
পরিবেশের পরিবর্তনের জন্য যা ব্যবহারকারীদের দ্বারা সেট করার কথা GIT_TR2*
এনভ ভার্সগুলি কেবল খুব অস্পষ্ট, অসঙ্গত এবং কুরুচিপূর্ণ u
প্রতিষ্ঠিত অধিকাংশই GIT_*
বিভিন্ন পরিবেশের বর্ণমালা ব্যবহার করবেন না, এবং কয়েক যে কি (ক্ষেত্রে GIT_DIR
, GIT_COMMON_DIR
, GIT_DIFF_OPTS
) এটা বেশ সুস্পষ্ট কি বর্ণমালা (এর DIR
এবং OPTS
) জন্য দাঁড়ানো।
তবে কী TR
দাঁড়াবে? ট্র্যাক, traditionalতিহ্যবাহী, ট্রেলার, লেনদেন, স্থানান্তর, রূপান্তর, রূপান্তর, অনুবাদ, ট্রান্সপ্ল্যান্ট, পরিবহন, ট্রভারসাল, ট্রি, ট্রিগার, ট্রাঙ্কেট, আস্থা, বা ... ?!
যার নামে '2' প্রত্যয়টি প্রমাণ করেছে, ট্রেস 2 সুবিধাটি শেষ পর্যন্ত গিটের মূল ট্রেস সুবিধাটিকে ছাড়িয়ে যাবে বলে মনে করা হচ্ছে।
সংশ্লিষ্ট পরিবেশের ভেরিয়েবলগুলি স্যুট অনুসরণ করে এবং মূল GIT_TRACE
ভেরিয়েবলগুলির পরে তাদের বলা হয় এটি প্রত্যাশা করা যুক্তিসঙ্গতGIT_TRACE2
; এমন কিছু নেই ' GIT_TR
'।
সমস্ত ট্রেস 2-নির্দিষ্ট কনফিগার ভেরিয়েবলগুলি খুব সংবেদনশীলভাবে, ' trace2
' বিভাগে রয়েছে, নাtr2
' তে নয়।
ওটিও, আমরা এই পরিবেশের ভেরিয়েবলের নামগুলি থেকে "ট্রেস" এর শেষ তিনটি অক্ষর বাদ দিয়ে কিছুতেই লাভ করি না ।
সুতরাং আসুন সমস্ত GIT_TR2*
পরিবেশের ভেরিয়েবলের নাম পরিবর্তন করে GIT_TRACE2*
তাদের স্থিতিশীল মুক্তির পথে নামার আগে।
গিট 2.24 (কিউ 3 2019) গিট সংগ্রহস্থল আরম্ভের উন্নতি করে।
দেখুন 22932d9 , প্রতিশ্রুতি 5732f2b , প্রতিশ্রুতি 58ebccb (06 আগস্ট 2019) জেফ কিং ( peff
) দ্বারা ।
(দ্বারা একীভূত junio সি Hamano - gitster
- মধ্যে b4a1eec কমিট , 09 সেপ্টেম্বর 2019)
সাধারণ-প্রধান: বিলম্ব ট্রেস 2 ইনিশিয়ালেশন
আমরা trace2
সিস্টেমটিকে সাধারণ প্রধান () ফাংশনে সূচনা করি যাতে সমস্ত প্রোগ্রাম (এমনকি যেগুলি বিল্টিনগুলি নয়) ট্র্যাসিং সক্ষম করে।
তবে trace2
স্টার্টআপটি তুলনামূলকভাবে ভারী ওজনযুক্ত, কারণ ট্রেস করবেন কিনা তা সিদ্ধান্ত নিতে আমাদের আসলে ডিস্ক কনফিগারেশনটি পড়তে হয়।
এটি অন্যান্য সাধারণ-প্রাথমিক সূচনার সাথে অপ্রত্যাশিত মিথস্ক্রিয়া ঘটাতে পারে। উদাহরণস্বরূপ, আমরা কল করার আগে কনফিগার কোডটি শেষ করব initialize_the_repository()
এবং সাধারণ আক্রমণকারী যা the_repository
কখনই নুল না তা ধরে রাখে না।
আসুন ধাক্কা trace2
শুধু আগে আমরা চালানো সাধারণ প্রধান আরম্ভের আরও নিচে, cmd_main()
।
গিট 2.24 (Q4 2019) এও নিশ্চিত করে যে trace2
সাবসিস্টেম থেকে আউটপুট এখন আরও সুন্দরভাবে ফর্ম্যাট করা হয়েছে।
দেখুন কমিট 742ed63 , e344305 কমিট , c2b890a কমিট (09 আগস্ট 2019) ad43e37 কমিট , 04f10d3 কমিট , da4589c কমিট (08 আগস্ট 2019), এবং 371df1b কমিট দ্বারা (31 জুলাই 2019) জেফ Hostetler ( jeffhostetler
) ।
(দ্বারা একীভূত junio সি Hamano - gitster
- মধ্যে কমিট 93fc876 , 30 সেপ্টেম্বর 2019)
এবং, এখনও গিট 2.24
দেখুন 87db61a কমিট , কমিট 83e57b0 (04 অক্টোবর 2019), এবং 2254101 কমিট , 3d4548e কমিট দ্বারা (03 অক্টোবর 2019) জোশ Steadmon ( steadmon
) ।
(দ্বারা একীভূত junio সি Hamano - gitster
- মধ্যে কমিট d0ce4d9 , 15 অক্টোবর 2019)
trace2
: টার্গেট ডিরেক্টরিতে যদি খুব বেশি ফাইল থাকে তবে নতুন ট্রেস ফেলে দিন
সাইন-অফ-বাই: জোশ স্টেডমন
trace2
একটি লক্ষ্য ডিরেক্টরিতে ফাইল লিখতে পারেন।
ভারী ব্যবহারের সাথে, এই ডিরেক্টরিটি ফাইলগুলি পূরণ করতে পারে, যার ফলে ট্রেস-প্রসেসিং সিস্টেমগুলির অসুবিধা হয়।
এই প্যাচটি trace2.maxFiles
সর্বাধিক সংখ্যক ফাইল সেট করতে একটি কনফিগারেশন বিকল্প ( ) যুক্ত করে যা trace2
লক্ষ্য ডিরেক্টরিতে লিখবে।
যখন maxFiles
ইতিবাচক পূর্ণসংখ্যকে সেট করা হয় তখন নিম্নলিখিত আচরণটি সক্ষম করা হয়:
ধারণাটি হ'ল একটি পৃথক ট্রেস-প্রসেসিং সিস্টেম উত্পন্ন ট্রেসগুলি নিয়ে কাজ করছে; এটি একবার প্রেরণকারী ফাইলটি প্রসেস করে এবং অপসারণ করে, আবার নতুন ট্রেস ফাইল তৈরি করা নিরাপদ হওয়া উচিত।
এর জন্য ডিফল্ট মান trace2.maxFiles
শূন্য যা ফাইল গণনা চেকটি অক্ষম করে।
কনফিগারেশনে একটি নতুন পরিবেশের পরিবর্তনশীল: ওভাররাইড করা যায় GIT_TRACE2_MAX_FILES
।
এবং গিট 2.24 (Q4 2019) git push
পর্যায় সম্পর্কে ট্রেস 2 শিখায় ।
প্রতিশ্রুতিবদ্ধ 25e4b80 দেখুন , প্রতিশ্রুতিবদ্ধ 5fc3118 (02 অক্টোবর 2019) জোশ স্টেডমনের ( steadmon
) দ্বারা ।
(দ্বারা একীভূত junio সি Hamano - gitster
- মধ্যে কমিট 3b9ec27 , 15 অক্টোবর 2019)
push
: ট্রেস 2 উপকরণ যুক্ত করুন
সাইন-অফ-বাই: জোশ স্টেডমন
মধ্যে trace2 অঞ্চলে যোগ করুন transport.c
এবং builtin/push.c
ভাল ট্র্যাক সময় ঠেলাঠেলি বিভিন্ন পর্যায়ক্রমে অতিবাহিত হবে:
- তালিকা রেফারেন্স
- সাবমডিউলগুলি পরীক্ষা করা হচ্ছে
- সাবমডিউল পুশ করছে
- পুশিং রেফ
গিট 2.25 (কিউ 12020) এর সাথে কিছুটির Documentation/technical
শিরোনামে স্থানান্তরিত হয়*.h
ফাইলগুলিতে ।
দেখুন কমিট 6c51cb5 , d95a77d কমিট , bbcfa30 কমিট , f1ecbe0 কমিট , 4c4066d কমিট , 7db0305 কমিট , f3b9055 কমিট , 971b1f2 কমিট , 13aa9c8 কমিট , c0be43f কমিট , 19ef3dd কমিট , 301d595 কমিট , 3a1b341 কমিট , 126c1cc কমিট , d27eb35 কমিট , 405c6b1 কমিট , কমিট d3d7172 , প্রতিশ্রুতিবদ্ধ 3f1480b , প্রতিশ্রুতি 266f03e , 13c4d7e কমিট(17 নভেম্বর 2019) দ্বারা হেবা ওয়ালি ( HebaWaly
) দ্বারা ।
(দ্বারা একীভূত junio সি Hamano - gitster
- মধ্যে 26c816a কমিট , 16 ডিসেম্বর 2019)
trace2
: ডক সরান trace2.h
সাইন-অফ-বাই: হেবা ওয়ালি
থেকে ফাংশন ডকুমেন্টেশন সরান Documentation/technical/api-trace2.txt
করতে trace2.h
যেমন ডেভেলপারদের পরিবর্তে অন্য ডক ফাইলে এটা খুঁজছেন কোড পাশে ব্যবহারের তথ্য খুঁজে পায় তার জন্য সহজ।
Documentation/technical/api-trace2.txt
ফাইলটি বিশদ পূর্ণ হওয়ায় কেবল ফাংশন ডকুমেন্টেশন বিভাগটি অপসারণ করা হবে যা ট্রেস 2.h এ যুক্ত হওয়া ডক ফাইলের লিঙ্কের সাথে পৃথক ডক ফাইল হিসাবে থাকা আরও উপযুক্ত বলে মনে হয়। এছাড়াও ফাংশন ডকটি রিন্ডানড্যান্ড তথ্য এড়ানোর জন্য সরানো হয়েছে যা শিরোনাম ফাইলে ডকুমেন্টেশনের সাথে সিঙ্ক্রোনাইজ করা শক্ত হবে।
(যদিও যে পুনর্গঠনের অন্য কমান্ড উপর একটি পার্শ্ব প্রতিক্রিয়া ছিল, ব্যাখ্যা এবং মধ্যে Git 2.25.2 (মার্চ 2020) সঙ্গে সংশোধন করা হয়েছে cc4f2eb কমিট (14 ফেব্রুয়ারী 2020) দ্বারা জেফ কিং ( peff
) ।
(দ্বারা একীভূত junio সি Hamano - gitster
- মধ্যে কমিট 1235384 , 17 ফেব্রুয়ারী 2020) )
গিট 2.27 (কিউ 22020) সহ: পরিবেশের ভেরিয়েবলের লগিংয়ের জন্য ট্রেস 2 বর্ধন ।
দেখুন কমিট 3d3adaa দ্বারা (20 মার্চ 2020) জোশ Steadmon ( steadmon
) ।
(দ্বারা একীভূত junio সি Hamano - gitster
- মধ্যে কমিট 810dc64 , 22 এপ্রিল 2020)
trace2
: পরিবেশগত ভেরিয়েবল লগ করতে গিটকে শিক্ষা দিন
সাইন-অফ-বাই: জোশ স্টেডমন
আকিড-বাই: জেফ হোস্টেলার
ট্রেস 2 এর মাধ্যমে, গিট ইতিমধ্যে আকর্ষণীয় কনফিগার পরামিতিগুলি লগ করতে পারে ( trace2_cmd_list_config()
ফাংশনটি দেখুন)। তবে এটি একটি অসম্পূর্ণ চিত্র মঞ্জুর করতে পারে কারণ অনেকগুলি কনফিগার প্যারামিটারগুলি পরিবেশের ভেরিয়েবলের মাধ্যমে ওভাররাইডের অনুমতি দেয় allow
আরও সম্পূর্ণ লগগুলির জন্য অনুমতি দেওয়ার জন্য, আমরা একটি নতুন trace2_cmd_list_env_vars()
ফাংশন এবং সমর্থন বাস্তবায়ন যুক্ত করি, প্রাক-বিদ্যমান কনফিগারেশন প্যারাম লগিং প্রয়োগের পরে মডেল করা।
গিট 2.27 (কিউ 22020) দিয়ে, কোডপথগুলি শিখুন যা প্রগতি মিটার দেখায় start_progress()
এবং stop_progress()
কলগুলি একটি " region
" হিসাবে চিহ্নিত করার জন্যও ব্যবহার করতে পারে use
দেখুন কমিট 98a1364 (12 মে 2020) দ্বারা এমিলি Shaffer ( nasamuffin
) ।
(দ্বারা একীভূত junio সি Hamano - gitster
- মধ্যে d98abce কমিট , 14 মে 2020)
trace2
: লগ প্রগতি সময় এবং মাধ্যমে আউটপুট
সাইন-অফ-বাই: এমিলি শেফার
' git fetch
' এর মতো কেবল একটি অপারেশন শেখানোর পরিবর্তে কীভাবে ট্রেসগুলিতে থ্রুপুট লিখতে হয়, আমরা প্রগতি লাইব্রেরিতে নিজেই টুলিং যুক্ত করে ধীরে ধীরে ব্যবহারকারীর ক্রিয়াকলাপ সম্পর্কে শিখতে পারি ।
অপারেশনগুলি যা অগ্রগতি দেখায় সম্ভবত ধীরগতিতে চলমান এবং যেভাবেই আমরা পারফরম্যান্সের জন্য নজর রাখতে চাই।
অবজেক্টের গণনা এবং ডেটা ট্রান্সফার আকার দেখিয়ে, অপারেশনগুলি আমাদের প্রত্যাশা অনুযায়ী স্কেল করছে কিনা তা নিশ্চিত করতে আমাদের কিছু উত্কৃষ্ট পরিমাপ করা সম্ভব হবে able
এবং:
গিট 2.27 (কিউ 22020) সহ, আমাদের সাম্প্রতিক পরিবর্তনের জন্য শেষ মুহূর্তের ফিক্সটি ট্রেসযোগ্য অঞ্চল হিসাবে অগ্রগতি এপিআই ব্যবহার করতে দেয়।
দেখুন 3af029c কমিট দ্বারা (15 মে 2020) ডেরিক Stolee ( derrickstolee
) ।
(দ্বারা একীভূত junio সি Hamano - gitster
- মধ্যে কমিট 85d6e28 , 20 মে 2020)
progress
: কল করার trace2_region_leave()
পরে কল করুন_enter()
সাইন-অফ-বাই: ডেরিক স্টোলি
অগ্রগতি এপিআইয়ের একজন ব্যবহারকারী start_progress()
শর্তযুক্তভাবে কল করে display_progress()
এবং stop_progress()
যখন start_progress()
ডাকা হয় নি তখন নো-ওপেন হয়ে ওঠার জন্য এবং ফাংশনগুলির উপর নির্ভর করে ।
আমরা এতে একটি কল যুক্ত করার সাথে trace2_region_enter()
সাথে start_progress()
, অগ্রগতি এপিআই ফাংশনগুলি থেকে অন্যান্য ট্রেস 2 এপিআই কলগুলিতে কলগুলি অবশ্যই নিশ্চিত করতে হবে যে যখন start_progress()
অগ্রগতি কাঠামোর দিকে কল করা হয়নি তখন এই ট্রেস 2 কলগুলি এড়িয়ে গেছে ।
বিশেষত, যখন আমরা কল trace2_region_leave()
করিনি stop_progress()
তখন থেকে কল করবেন না start_progress()
, যা ম্যাচটিকে বলে trace2_region_enter()
।
GIT_CURL_VERBOSE
, আপনার কাছে গিট 2.9.x / 2.10 থাকবেGIT_TRACE_CURL
। দেখুন নিচের আমার উত্তর ।