গিট লগে সমস্ত ট্যাগ প্রদর্শন করুন


100

git log --decorateপ্রতি কমিট প্রতি একাধিক ট্যাগ প্রদর্শন করে না কেন ?

সম্পাদনা : চার্লস বেইলি উত্তরটি নিয়ে এসেছেন (কমপক্ষে আমার ক্ষেত্রে)
মূলত, আমার একটি ট্যাগ ছিল যা অন্য ট্যাগের প্রতি নির্দেশ করেছিল যা প্রতিশ্রুতিতে নির্দেশ করে। ইন্ডিয়ারেশনের এই অতিরিক্ত স্তরটির কারণে, লগটিতে ট্যাগটি প্রদর্শিত হচ্ছে না। আমাকে এটি ঠিক করতে হবে, সঠিকভাবে ট্যাগ করতে আমাদের ট্যাগ স্ক্রিপ্টটি সংশোধন করে, বা কোনও শেল স্ক্রিপ্ট ভুডু দ্বারা ট্যাগগুলি বারবার অনুসরণ করতে। যাইহোক, আমি এই প্রশ্নটি কেবল রেফারেন্সের জন্য রেখে দেব যদি কেউ এটি চায় তবে। (আমি ওভারফ্লো স্ট্যাক করার জন্য নতুন, তবে আমি অনুমান করি যে এটিই সঠিক প্রোটোকল?)

... আসল প্রশ্নটি ...

ব্যাকস্টোরি: আমরা উত্স নিয়ন্ত্রণের জন্য কাজের সময়ে জিআইটি ব্যবহার করি এবং আমাদের মোতায়েন করার সময় আমাদের কাছে সর্বদা কমিট ট্যাগ করার নীতি থাকে policy (এটি আসলে একটি স্ক্রিপ্ট যা ট্যাগগুলি করে এবং তারপরে সার্ভারে ট্যাগটি টান দেয়)। যেহেতু এটি পৃথক স্টেজিং এবং প্রোডাকশন সার্ভার সহ একটি ওয়েব অ্যাপ্লিকেশন, তাই আমরা প্রায়শই স্টেজিং (পরীক্ষার জন্য বা যাই হোক না কেন) এর জন্য একটি রিলিজ ট্যাগ করি এবং তারপরে উত্পাদনের জন্য একই প্রতিশ্রুতি ট্যাগ করি।

সুতরাং এটি আসলে খুব প্রায়ই যে আমাদের একই প্রতিশ্রুতি একাধিক ট্যাগ আছে। এটি পাঠ্য লগে দেখতে পারা খুব সুন্দর হবে তবে এটি এটি সমর্থন করে বলে মনে হয় না। আমি বর্তমানে যে ট্যাগটি আমি খুঁজছি তা ম্যানুয়ালি পরীক্ষা করে বা গুলি চালিয়ে এই সমস্যাটি নিয়ে কাজ করছি gitk। যদিও এই উভয় সমাধানই কাজ করে, আমার কাছে মনে হয় এটি git log --decorateকেবলমাত্র ডিফল্টরূপে প্রতিশ্রুতি প্রতি একটি ট্যাগ সমর্থন করার জন্য অদ্ভুত ।

আমি আশেপাশে কিছু গুগল করেছিলাম, কিন্তু খুব একটা পাইনি। আমি কি স্পষ্ট কিছু মিস করছি?

পিএস (আমি %dম্যান পেজ এবং কিছু দ্রুত পরীক্ষাগুলি অনুসারে কাস্টম ফর্ম্যাট স্ট্রিংটি ব্যবহার করি এটি এর সমতুল্য --decorate)


12
আপনি কি 'গিট লগ --decorate = পূর্ণ' (বিয়োগ কোটস) চেষ্টা করেছেন?
আরডিএল

4
আপনি গিটের কোন সংস্করণ ব্যবহার করছেন? আমি একাধিক ট্যাগ দেখতে পাই fine
ক্যাসকেবেল

@ আরডিএল: পূর্ণ এটি এফ / হেডস / বা রেফস / ট্যাগগুলি / যথাযথ হিসাবে প্রিন্ট করে? কম বা কম রেফারেন্স নয়।
ক্যাসাবেল

9
তাত্ক্ষণিক প্রশ্ন, আপনি ট্যাগগুলি ট্যাগ করেন, বা আপনি প্রতিশ্রুতি ট্যাগ করেন? (ট্যাগগুলি শৃঙ্খলা তৈরি করতে পারে, আমার পরীক্ষাগুলিতে সজ্জিত ট্যাগগুলির দিকে তাকানো ট্যাগগুলিকে সজ্জায় সজ্জিত করা হয় এবং ট্যাগগুলি কোনও প্রতিশ্রুতিতে একটি ট্যাগের দিকে ইশারা করে তবে এর চেয়ে বেশি আর কোনও কিছু হয় না)))
সিবি বেইলি

4
@ চার্লস বেইলি আমি মনে করি আপনি হয়ত সমস্যাটি খুঁজে পেয়েছেন। আমি কর্মক্ষেত্রে একটি সহজ পরীক্ষা চেষ্টা করেছি (গিট সংস্করণ ১.6.৩.৩), এবং এটি ঠিক আছে বলে মনে হচ্ছে। সুতরাং এটি কোনও সংস্করণ সমস্যা নয়। আমি আরও পরে তদন্ত করব। অন্তর্দৃষ্টি জন্য ধন্যবাদ!
জোনাথন

উত্তর:


17

চার্লস বেইলি মন্তব্যটিতে সঠিকভাবে উল্লেখ করার সাথে সাথে ট্যাগ (ট্যাগ ট্যাগ) ট্যাগ সম্পর্কে নোট, যা আপনার ইস্যুটির মূল অংশে রয়েছে :

নিশ্চিত করুন যে আপনি এই থ্রেডটি অধ্যয়ন করেছেন , কারণ একটি স্বাক্ষরিত ট্যাগকে ওভাররাইড করা এতটা সহজ নয়:

  • আপনি যদি ইতিমধ্যে কোনও ট্যাগ ঠেলে দেন তবে git tagম্যান পেজgit tag -f B একটি ট্যাগের নাম " A" প্রতিস্থাপনের জন্য সাধারণের বিরুদ্ধে গুরুতরভাবে পরামর্শ দিয়েছে
  • সাইনড ট্যাগটি পুনরায় তৈরি করার চেষ্টা করবেন না git tag -f(নীচে থ্রেডের নির্যাসটি দেখুন)

    (এটি একটি কোণার ক্ষেত্রে, তবে সাধারণভাবে ট্যাগ সম্পর্কে বেশ শিক্ষণীয় এবং এটি অন্য এসও অবদানকারী জাকুব নারাবস্কির কাছ থেকে আসে ):

দয়া করে নোট করুন যে ট্যাগের নাম (হেভিওয়েট ট্যাগ, অর্থাৎ ট্যাগ অবজেক্ট) দুটি জায়গায় সঞ্চয় করা থাকে:

  • 'TAG' শিরোনামের একটি বিষয়বস্তু যেমন ট্যাগ বস্তুর নিজেই (আপনি এর "আউটপুটে দেখতে পারেন git show <tag>" এবং আউটপুট মধ্যে " git cat-file -p <tag>", যেখানে <tag>হেভিওয়েট ট্যাগ, হয় যেমন v1.6.3মধ্যে git.gitসংগ্রহস্থল),
  • এবং ট্যাগ রেফারেন্সের ডিফল্ট নাম (" refs/tags/*" স্পেসে রেফারেন্স ) কোনও ট্যাগ অবজেক্টের দিকে নির্দেশ করে।
    লক্ষ্য করুন যে ট্যাগ রেফারেন্স (" refs/tags/*" নেমস্পেসে যথাযথ রেফারেন্স ) খাঁটি স্থানীয় বিষয়; একটি সংগ্রহস্থল ' refs/tags/v0.1.3' এ কী রয়েছে, অন্যের refs/tags/sub/v0.1.3উদাহরণস্বরূপ ' ' তে থাকতে পারে ।

সুতরাং যখন আপনি স্বাক্ষরিত ট্যাগ ' A' তৈরি করেন , আপনার নিম্নলিখিত পরিস্থিতি থাকে (ধরে নেওয়া যায় এটি কোনও প্রতিশ্রুতিতে নির্দেশ করে)

  35805ce   <--- 5b7b4ead  <=== refs/tags/A
  (commit)       tag A
                 (tag)

দয়া করে মনে রাখবেন যে " git tag -f A A" (এটিকে টীকায়িত ট্যাগ হিসাবে জোর করে বিকল্পগুলির অনুপস্থিতিটি লক্ষ্য করুন) একটি নूप - এটি পরিস্থিতি পরিবর্তন করে না।

যদি আপনি " git tag -f -s A A" করেন: নোট করুন যে আপনি একটি ট্যাগের উপর owwriting জোর করেছেন (সুতরাং গিট অনুমান করে আপনি কী করছেন তা আপনি জানেন), এবং যে কোনও একটি -s/ -a/ -mবিকল্প এনটেটেড ট্যাগকে জোর করার জন্য ব্যবহৃত হয় (ট্যাগ অবজেক্টের সৃষ্টি), আপনি পাবেন নিম্নলিখিত পরিস্থিতি

  35805ce   <--- 5b7b4ea  <--- ada8ddc  <=== refs/tags/A
  (commit)       tag A         tag A
                 (tag)         (tag)

এছাড়াও নোট করুন যে " git show A" সম্পূর্ণ চেইনটি নন-ট্যাগ অবজেক্টের নিচে দেখিয়ে দেবে ...


90
git log --no-walk --tags --pretty="%h %d %s" --decorate=full

এই সংস্করণটি প্রতিশ্রুতি বার্তাটিও প্রিন্ট করবে:

 $ git log --no-walk --tags --pretty="%h %d %s" --decorate=full
3713f3f  (tag: refs/tags/1.0.0, tag: refs/tags/0.6.0, refs/remotes/origin/master, refs/heads/master) SP-144/ISP-177: Updating the package.json with 0.6.0 version and the README.md.
00a3762  (tag: refs/tags/0.5.0) ISP-144/ISP-205: Update logger to save files with optional port number if defined/passed: Version 0.5.0
d8db998  (tag: refs/tags/0.4.2) ISP-141/ISP-184/ISP-187: Fixing the bug when loading the app with Gulp and Grunt for 0.4.2
3652484  (tag: refs/tags/0.4.1) ISP-141/ISP-184: Missing the package.json and README.md updates with the 0.4.1 version
c55eee7  (tag: refs/tags/0.4.0) ISP-141/ISP-184/ISP-187: Updating the README.md file with the latest 1.3.0 version.
6963d0b  (tag: refs/tags/0.3.0) ISP-141/ISP-184: Add support for custom serializers: README update
4afdbbe  (tag: refs/tags/0.2.0) ISP-141/ISP-143/ISP-144: Fixing a bug with the creation of the logs
e1513f1  (tag: refs/tags/0.1.0) ISP-141/ISP-143: Betterr refactoring of the Loggers, no dependencies, self-configuration for missing settings.

4
এমনকি এটির জন্য একটি উপনাম তৈরি করা আরও ভাল :) গিট কনফিগারেশন - গ্লোবাল ওরফে.ট্যাগস "! গিট লগ - নো-ওয়াক - ট্যাগস - ব্যাখ্যা = '% এইচ% ডি% এস' --ডেকোর্ট = পূর্ণ"
গক্সআর 3 পিএলএস

4
ধন্যবাদ @ GOXR3PLUS আমার করণীয় ছিল: গিট কনফিগার - গ্লোবাল ওরফে.ট্যাগস "লগ - না-ওয়াক - ট্যাগস - ব্যাখ্যা = '% এইচ% ডি% এস' --ডেকোরেট = পূর্ণ"
আজহ 158

8

দ্রষ্টব্য: 5e1361c কমিট থেকে ব্রায়ান মি। কার্লসন ( bk2204) (git 1.9 / 2.0 Q1 2014 এর জন্য) ট্যাগ সহ লগ সাজানোর ক্ষেত্রে একটি বিশেষ কেস নিয়ে কাজ করে:

লগ: শৃঙ্খলযুক্ত ট্যাগ সহ সজ্জা হ্যান্ডেল করুন

git logযখন কোনও ট্যাগ অবজেক্ট অন্য ট্যাগ অবজেক্টের রেফারেন্স দেয় তখন সঠিকভাবে সজ্জাগুলি পরিচালনা করে না যেমন দ্বিতীয় ট্যাগটি মোছার সময়
প্রতিশ্রুতিটি সঠিকভাবে সাজানো হবে না কারণ parse_objectদ্বিতীয় ট্যাগটিতে কল করা হয়নি এবং সুতরাং এর ট্যাগযুক্ত ক্ষেত্রটি পূরণ করা হয়নি, ফলস্বরূপ ট্যাগগুলির মধ্যে কোনওটিই সম্পর্কিত কমিটির সাথে যুক্ত নয়।

parse_objectঅনুপস্থিত থাকলে এই ক্ষেত্রটি পূরণ করার জন্য কল করুন যাতে ট্যাগগুলির চেইনটি সম্মানজনক হতে পারে এবং প্রতিশ্রুতিটি সঠিকভাবে সজ্জিত করা যায়।
ভবিষ্যতের সংঘাতগুলি প্রতিরোধের জন্য পরীক্ষাগুলিও অন্তর্ভুক্ত করুন।

উদাহরণ:

git tag -a tag1 -m tag1 &&
git tag -a tag2 -m tag2 tag1 &&
git tag -d tag1 &&
git commit --amend -m shorter &&
git log --no-walk --tags --pretty="%H %d" --decorate=full
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.