GNU সাজান এবং গিট দোষ blame


2

আজ আমি ভেবেছিলাম আমি একটি সাধারণ অপারেশন করছি:

git blame file | sort -k 3

fileতারিখ অনুসারে বাছাই করা সমস্ত লাইন পেতে যে তারিখে তারা সর্বশেষ পরিবর্তন হয়েছিল। দুর্ভাগ্যক্রমে এটি সঠিকভাবে বাছাই করা মনে হচ্ছে না। আমি নিম্নলিখিতটি করলে এটি কাজ করে :

git blame file | cut -c 20- | sort

যা কেবল লাইনের প্রথম অংশটি বন্ধ করে দেয় এবং তারপরে বাছাই করে। এই কমান্ড সাফল্যের যে আমার কাছে ইঙ্গিত sort করতে আসলে অপারেশন আমি চেষ্টা ছিল না। কেন কাজ হয়নি?

এখানে আউটপুট থেকে একটি উদাহরণ লাইন git blame file:

35d8e9eb (username 2007-01-17 03:58:04 +0000 155) Some text on line 155

সম্পাদনা করুন: 3মূল কমান্ড লাইনের পাশাপাশি যে কোনও যুক্তিসঙ্গত সংখ্যা ব্যবহার করা ভাল মনে হচ্ছে - আমি হ্যাশ (ক্ষেত্র 1), ব্যবহারকারীর নাম (ক্ষেত্র 2), দিনের সময় (ক্ষেত্র 4) বা লাইন নম্বর (ক্ষেত্র) অনুসারে বাছাই করতে পারি )), তবে তারিখ (ক্ষেত্র 3) কাজ করে না - এটি আসলে কী অর্ডারে শেষ হয় তা আমি সনাক্ত করতে পারি না ...

সম্পাদনা 2: আমি একটি স্যানিটাইজড ইনপুট ফাইল তৈরি করেছি যা একই সমস্যা দেখায়। এখানে cleaned.txt:

cb7bb041 (eeeeeee  2010-12-14 19:41:18 +0000  42)
35d8e9eb (cccccccc 2007-01-17 03:58:04 +0000 135)
d7377fa9 (hhhhhhhh 2010-01-30 04:26:28 +0000 178)

এবং আউটপুট থেকে sort -k 3 cleaned.txt:

$ sort -k 3 cleaned.txt 
cb7bb041 (eeeeeee  2010-12-14 19:41:18 +0000  42)
35d8e9eb (cccccccc 2007-01-17 03:58:04 +0000 135)
d7377fa9 (hhhhhhhh 2010-01-30 04:26:28 +0000 178)

আপনি দেখতে পাচ্ছেন যে তারিখের ক্ষেত্রের বাছাই মোটেও ঘটেছিল না। এখানে থেকে আউটপুট cut -c 20- cleaned.txt | sort:

$ cut -c 20- cleaned.txt | sort
2007-01-17 03:58:04 +0000 135)
2010-01-30 04:26:28 +0000 178)
2010-12-14 19:41:18 +0000  42)

সেক্ষেত্রে তারিখে বাছাই করা ভাল কাজ করে! কোনও পরামর্শ?

উত্তর:


4

আমি মাত্র এইটি বের করলাম। সংক্ষিপ্ত নাম ব্যবহারকারীর eeeeeeeঅর্থ তারিখের ক্ষেত্রের আগে অতিরিক্ত জায়গা রয়েছে। যেহেতু ক্ষেত্রের বিভাজকটি sortখালি স্থানান্তর থেকে ফাঁকা স্থানান্তর হয় তাই সংক্ষিপ্ত ব্যবহারকারীর নামের লাইনের জন্য তারিখের ক্ষেত্রটি মূল ক্ষেত্রের অংশ হিসাবে সেই স্থান থাকে এবং প্রথমে বাছাই হয়। সাধারণ ফিক্স:

git blame file | sort -b -k 3

2
আপনাকে লেখকের নামের জন্যও নজর রাখতে হবে যার মধ্যে বিভিন্ন সংখ্যক স্পেস রয়েছে। আপনার উদাহরণগুলির মধ্যে একক-শব্দের লেখকের নাম রয়েছে ( eeeeeee, ccccccccএবং এবং hhhhhhhh), তবে আসল নামগুলি প্রায়শই পরিবর্তিত হয় (উদাহরণস্বরূপ git.git এর লেখকের নাম রয়েছে যত কম এক এবং পাঁচটি পর্যন্ত পৃথক "শব্দ")। ব্যবহার -eসাহায্য করতে পারে; এটি প্রদর্শিত ইমেল ঠিকানাগুলির কোনও স্পেস থাকার সম্ভাবনা খুব কম।
ক্রিস জনসন

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