গিট / গিট-শেল সম্পর্কিত সমস্যাগুলি কীভাবে আমি ডিবাগ করতে পারি?


148

গিট / গিট-শেল সম্পর্কিত কীভাবে আমার কিছু ডিবাগ তথ্য থাকতে পারে?

আমার একটি সমস্যা ছিল, যা user1সমস্যা ছাড়াই একটি সংগ্রহস্থল ক্লোন করতে পারে, যখন user2কেবল একটি খালি ক্লোন করতে পারে। আমি সেট করেছিলাম GIT_TRACE=1, কিন্তু দরকারী কিছুই বলা হয়নি।

অবশেষে, দীর্ঘ পরীক্ষার এবং ত্রুটির পরে, দেখা গেল যে এটি কোনও ফাইলের অনুমতি সমস্যা problem একটি উপযুক্ত ত্রুটি বার্তা এই সমস্যার শর্ট সার্কিট করতে পারে।


দ্রষ্টব্য: এছাড়াও GIT_CURL_VERBOSE, আপনার কাছে গিট 2.9.x / 2.10 থাকবে GIT_TRACE_CURL। দেখুন নিচের আমার উত্তর
ভনসি

এবং (Q2 2019, তিন বছর পরে GIT_TRACE_CURL), আপনার এখন রয়েছে trace2। উদাহরণ: git config --global trace2.normalTarget ~/log.normal। দেখুন আমার (নতুন) নিচে উত্তর
ভোনসি

উত্তর:


212

আরও ভার্বোজ আউটপুট ব্যবহারের জন্য নিম্নলিখিত:

GIT_CURL_VERBOSE=1 GIT_TRACE=1 git pull origin master


53
মূলটি ছাড়িয়ে কয়েকটি GIT_TRACE বিকল্প রয়েছে। এখানে über-verbose বিকল্পটি রয়েছে:set -x; GIT_TRACE=2 GIT_CURL_VERBOSE=2 GIT_TRACE_PERFORMANCE=2 GIT_TRACE_PACK_ACCESS=2 GIT_TRACE_PACKET=2 GIT_TRACE_PACKFILE=2 GIT_TRACE_SETUP=2 GIT_TRACE_SHALLOW=2 git pull origin master -v -v; set +x
পল আইরিশ

2
কিভাবে এবং কোথায় এই ভেরিয়েবল সেট করতে?
হুনসু

এটি কেবলমাত্র একটি সম্পূর্ণ লাইন আপনি নিজের টার্মিনালে পেস্ট করতে পারেন। আপনি git pull origin masterযে আদেশটি সম্পাদন করতে চান তার সাথে অংশটি প্রতিস্থাপন করা উচিত ।
আইওলুন

1
এটি কোন প্ল্যাটফর্মগুলিতে কাজ করে? অবশ্যই উইন্ডোজ না।
কাপলিনেটর

8
উইন্ডোজে আপনি এই ভেরিয়েবলগুলি সেট করতে পারেন, একবারে একবারে (প্রতি লাইনে একটি), set GIT_CURL_VERBOSE=1 set GIT_TRACE=1 git pull origin master
এটির

85

ডিবাগ

গিটটিতে এম্বেড থাকা চিহ্নগুলির মোটামুটি সম্পূর্ণ সেট রয়েছে যা আপনি নিজের গিট সমস্যাগুলি ডিবাগ করতে ব্যবহার করতে পারেন।

এগুলি চালু করতে, আপনি নিম্নলিখিত ভেরিয়েবলগুলি সংজ্ঞায়িত করতে পারেন:

  • GIT_TRACE সাধারণ ট্রেস জন্য,
  • GIT_TRACE_PACK_ACCESS প্যাকফাইলে অ্যাক্সেসের সন্ধানের জন্য,
  • GIT_TRACE_PACKET নেটওয়ার্ক অপারেশনগুলির জন্য প্যাকেট-স্তরীয় ট্রেসিংয়ের জন্য,
  • GIT_TRACE_PERFORMANCE পারফরম্যান্স ডেটা লগ করার জন্য,
  • GIT_TRACE_SETUP সংগ্রহস্থল এবং পরিবেশ এটির সাথে যোগাযোগ করে তা আবিষ্কার সম্পর্কে তথ্যের জন্য,
  • GIT_MERGE_VERBOSITY ডিবাগিং পুনরাবৃত্ত মার্জ কৌশল (মান: 0-5),
  • GIT_CURL_VERBOSEসমস্ত কার্ল বার্তা (সমতুল্য curl -v) লগ করার জন্য ,
  • GIT_TRACE_SHALLOW অগভীর সংগ্রহস্থলগুলির ডিবাগিং / ক্লোনিংয়ের জন্য।

সম্ভাব্য মানগুলির মধ্যে অন্তর্ভুক্ত থাকতে পারে:

  • true, 1বা 2স্ট্যাডারকে লিখতে,
  • /নির্দিষ্ট ফাইলটিতে আউটপুট ট্রেস করতে শুরু করে একটি পরম পথ ।

আরও বিশদের জন্য দেখুন: গিট অভ্যন্তরীণ - পরিবেশগত পরিবর্তনশীল ables


, SSH

এসএসএইচ ইস্যুগুলির জন্য, নিম্নলিখিত কমান্ডগুলি ব্যবহার করে দেখুন:

echo 'ssh -vvv "$*"' > ssh && chmod +x ssh
GIT_SSH="$PWD/ssh" git pull origin master

অথবা sshআপনার শংসাপত্রগুলি বৈধ করার জন্য ব্যবহার করুন , যেমন

ssh -vvvT git@github.com

বা এইচটিটিপিএস পোর্টের উপরে:

ssh -vvvT -p 443 git@ssh.github.com

দ্রষ্টব্য: -vভার্বোসিটি স্তর হ্রাস করতে সংখ্যা হ্রাস করুন।


উদাহরণ

$ GIT_TRACE=1 git status
20:11:39.565701 git.c:350               trace: built-in: git 'status'

$ GIT_TRACE_PERFORMANCE=$PWD/gc.log git gc
Counting objects: 143760, done.
...
$ head gc.log 
20:12:37.214410 trace.c:420             performance: 0.090286000 s: git command: 'git' 'pack-refs' '--all' '--prune'
20:12:37.378101 trace.c:420             performance: 0.156971000 s: git command: 'git' 'reflog' 'expire' '--all'
...

$ GIT_TRACE_PACKET=true git pull origin master
20:16:53.062183 pkt-line.c:80           packet:        fetch< 93eb028c6b2f8b1d694d1173a4ddf32b48e371ce HEAD\0multi_ack thin-pack side-band side-band-64k ofs-delta shallow no-progress include-tag multi_ack_detailed symref=HEAD:refs/heads/master agent=git/2:2.6.5~update-ref-initial-update-1494-g76b680d
...

2
পরিবর্তন echo 'ssh -vvv $*' > ssh && chmod +x sshকরার জন্য echo 'ssh -vvv "$@"' > ssh && chmod +x sshপ্রান্ত কেস যেখানে একটি একক প্যারামিটার এটি একটি স্থান আছে নিরাপদ হওয়া উচিত।
আলেকজান্ডার বার্ড


40

যদি এটি SSH এর ওপরে থাকে তবে আপনি নিম্নলিখিতগুলি ব্যবহার করতে পারেন:

উচ্চতর ডিবাগ স্তরের জন্য টাইপ -vv বা -vvv ডিবাগ স্তর 2 এবং 3 এর জন্য যথাক্রমে:

# Debug level 1
GIT_SSH_COMMAND="ssh -v" git clone <repositoryurl>

# Debug level 2
GIT_SSH_COMMAND="ssh -vv" git clone <repositoryurl>

# Debug level 3
GIT_SSH_COMMAND="ssh -vvv" git clone <repositoryurl>

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


হ্যাঁ, এটি নিখুঁত কাজ করে। অন্যের চেয়ে ভাল। হ্যাঁ, এটি নিখুঁত কাজ করে। অন্যের চেয়ে ভাল।
BMW

এটি এখন সবচেয়ে কার্যকর হবে কারণ আমাকে এখনই একটি মূল সমস্যা সমাধান করতে হবে তবে এটি আমার জন্য গিট 1.8.3.1 এবং ওপেনএসএসএইচ_6.6.1p1, ওপেনএসএসএল 1.0.1e-fips 11 ফেব্রুয়ারী 2013 সেন্টোস লিনাক্স 7.2.1511 প্রকাশ করেছে (মূল). :(
গ্রেগ দুবিকি

@ গ্রেগডুবিকি স্ট্রেঞ্জ আপনার জন্য কী কাজ করে তা আমাকে জানাতে যাতে আমি উত্তরটি আপডেট করতে পারি।
বাসিল মুসা

1
উইন্ডোজ ব্যবহারে set GIT_SSH_COMMAND=ssh -v(কোনও উদ্ধৃতি নেই)।
জানসোহান

18

গিট 2.9.x / 2.10 (Q3 2016) আরেকটি ডিবাগ বিকল্প যুক্ত করেছে: GIT_TRACE_CURL

দেখুন 73e57aa কমিট , কমিট 74c682d (মে 23 2016) দ্বারা এলিয়া পিন্টো ( devzero2000)
সাহায্যপ্রাপ্ত: টর্স্টেন বাগেরসৌসেন ( tboegi) , র্যামসে জোন্স, জুনিও সি হামানো ( gitster) , এরিক সানশাইন ( sunshineco) , এবং জেফ কিং ( peff)
(দ্বারা একীভূত junio সি Hamano - gitster- মধ্যে কমিট 2f84df2 , 06 জুলাই 2016)

http.c: GIT_TRACE_CURLপরিবেশ পরিবর্তনশীল বাস্তবায়ন

বাস্তবায়ন GIT_TRACE_CURLএর বিস্তারিত অধিক ডিগ্রী করার অনুমতি এনভায়রনমেন্ট ভেরিয়েবল GIT_CURL_VERBOSEবিশেষ করে সম্পূর্ণ পরিবহন হেডার এবং সমস্ত ডেটা পেলোড বিনিময় করেন।
এটি কার্যকর হতে পারে যদি কোনও নির্দিষ্ট পরিস্থিতির জন্য আরও পুরোপুরি ডিবাগিং বিশ্লেষণের প্রয়োজন হতে পারে।

ডকুমেন্টেশনটি উল্লেখ করবে:

GIT_TRACE_CURL

গিট ট্রান্সপোর্ট প্রোটোকলের বর্ণনামূলক তথ্য সহ সমস্ত ইনকামিং এবং আউটগোয়িং ডেটার একটি কার্ল পূর্ণ ট্রেস ডাম্প সক্ষম করে।
এটি curl --trace-asciiকমান্ড লাইনে করার অনুরূপ ।

এই বিকল্পটি GIT_CURL_VERBOSEপরিবেশের পরিবর্তনশীল সেট করে ওভাররাইড করে ।


আপনি এই উত্তরে ব্যবহৃত সেই নতুন বিকল্পটি দেখতে পাচ্ছেন , তবে গিট 2.11 (Q4 2016) পরীক্ষায়ও:

কমিট 14e2411 দেখুন , কমিট 81590bf , কমিটমেন্ট 4527aa1 , কমিট করুন 4eee6c6 (07 সেপ্টেম্বর 2016) এলিয়া পিন্টো ( devzero2000) এর মাধ্যমে
(দ্বারা একীভূত junio সি Hamano - gitster- মধ্যে কমিট 930b67e , 12 সেপ্টেম্বর 2016)

নতুন ব্যবহার করুন GIT_TRACE_CURLপরিবর্তে এনভায়রনমেন্ট ভেরিয়েবল অবচিত GIT_CURL_VERBOSE

GIT_TRACE_CURL=true git clone --quiet $HTTPD_URL/smart/repo.git

এই বৈশিষ্ট্যটি দুর্দান্ত! একমাত্র পয়েন্ট হ'ল ASCII আউটপুট (যেখানে তারা (ch >= 0x20) && (ch < 0x80)ডট হিসাবে নয় এমন সবগুলি মুদ্রণ করে .) এবং HTTP ডেটার জন্য হেক্স আউটপুটের কোনও উপায় নেই।
কিনোর্নিরওয়ানা

8

গিট 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কোনও লক্ষ্য ডিরেক্টরিতে কোনও ফাইল লিখবে, প্রথমে এটি চিহ্নগুলি ফেলে দেওয়া হবে কিনা তা পরীক্ষা করে দেখুন। ট্রেসগুলি বাতিল করতে হবে যদি:

    • সেখানে অনেকগুলি ফাইল রয়েছে বলে ঘোষণা করে একটি সেন্ডিনেল ফাইল রয়েছে
    • বা, ফাইল সংখ্যা অতিক্রম করে trace2.maxFiles
      পরবর্তী ক্ষেত্রে, আমরা git-trace2-discardভবিষ্যতের চেকগুলির গতি বাড়ানোর জন্য একটি সেন্ডিনেল ফাইল তৈরি করি ।

ধারণাটি হ'ল একটি পৃথক ট্রেস-প্রসেসিং সিস্টেম উত্পন্ন ট্রেসগুলি নিয়ে কাজ করছে; এটি একবার প্রেরণকারী ফাইলটি প্রসেস করে এবং অপসারণ করে, আবার নতুন ট্রেস ফাইল তৈরি করা নিরাপদ হওয়া উচিত।

এর জন্য ডিফল্ট মান 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()


4

-vআপনি ক্লোন করার সময় কি ভার্বোজ ( ) অপারেটর যুক্ত করার চেষ্টা করেছেন ?

git clone -v git://git.kernel.org/pub/scm/.../linux-2.6 my2.6


2

পুরানো গিট সংস্করণগুলির জন্য (1.8 এবং তার আগে)

পুরানো গিট এবং এসএসএস সংস্করণগুলিতে এসএসএইচ ডিবাগিং সক্ষম করার জন্য আমি কোনও উপযুক্ত উপায় খুঁজে পাইনি । আমি ব্যবহার করে পরিবেশের পরিবর্তনশীলগুলির সন্ধান করলামltrace -e getenv ... এবং GIT_TRACE বা SSH_DEBUG ভেরিয়েবলগুলির কোনও সংমিশ্রণ খুঁজে পাই না work

পরিবর্তে এখানে গিট-> এসএসএস অনুক্রমের জন্য 'ssh -v' সাময়িকভাবে ইনজেকশনের একটি রেসিপি দেওয়া হয়েছে:

$ echo '/usr/bin/ssh -v ${@}' >/tmp/ssh
$ chmod +x /tmp/ssh
$ PATH=/tmp:${PATH} git clone ...
$ rm -f /tmp/ssh

এখানে এসআইএস সংস্করণ ওপেনএসএসএইচ_৩.৩ পিপি, ওপেনএসএসএল 1.0.1e-fips 11 ফেব্রুয়ারী 2013 গিথুব রেপো ক্লোনিং সহ গিট সংস্করণ 1.8.3 থেকে আউটপুট রয়েছে :

$ (echo '/usr/bin/ssh -v ${@}' >/tmp/ssh; chmod +x /tmp/ssh; PATH=/tmp:${PATH} \
   GIT_TRACE=1 git clone https://github.com/qneill/cliff.git; \
   rm -f /tmp/ssh) 2>&1 | tee log
trace: built-in: git 'clone' 'https://github.com/qneill/cliff.git'
trace: run_command: 'git-remote-https' 'origin' 'https://github.com/qneill/cliff.git'
Cloning into 'cliff'...
OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013
debug1: Reading configuration data /home/q.neill/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug1: Connecting to github.com ...
...
Transferred: sent 4120, received 724232 bytes, in 0.2 seconds
Bytes per second: sent 21590.6, received 3795287.2
debug1: Exit status 0
trace: run_command: 'rev-list' '--objects' '--stdin' '--not' '--all'
trace: exec: 'git' 'rev-list' '--objects' '--stdin' '--not' '--all'
trace: built-in: git 'rev-list' '--objects' '--stdin' '--not' '--all'
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.