গিট ব্যবহার করে চেঞ্জলগ পরিচালনা করার ভাল উপায়?


214

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

যাই হোক না কেন, আমরা কিছুটা গতি তৈরির কাজ শুরু করছি, আমি ভেবেছিলাম শেষ প্রকাশের পর থেকে কী পরিবর্তন হয়েছে তা মানুষকে দেখাতে সক্ষম হওয়া ভাল হবে good সমস্যাটি হ'ল, আমি চেঞ্জলগটি বজায় রাখছি না কারণ এটি সম্পর্কে কীভাবে যেতে হবে সে সম্পর্কে আমার ভাল ধারণা নেই। এই নির্দিষ্ট সময়ের জন্য, আমি লগের মাধ্যমে চালাতে এবং ম্যানুয়ালি একটি তৈরি করতে পারি, তবে এটি খুব ক্লান্তিকর হয়ে উঠবে।

আমি "গিট চেঞ্জলগ" এবং "গিট ম্যানেজ চেঞ্জলগ" গুগল করার চেষ্টা করেছি কিন্তু কোড পরিবর্তনের কর্মপ্রবাহ সম্পর্কে কী সত্যই কথা বলেছিল এবং কীভাবে সেই চেঞ্জলগের সাথে মিলে যায় এমন কিছুই আমি পাইনি। আমরা বর্তমানে রেন হেনরিচের বিকাশের ওয়ার্কফ্লো অনুসরণ করছি এবং আমি এমন কিছু পছন্দ করব যা এর সাথে চলেছিল।

আমি কি অনুপস্থিত, এমন কোনও মানক পদ্ধতি আছে বা এটি এমন একটি অঞ্চল যেখানে প্রত্যেকে নিজেরাই নিজের কাজটি করে?

আপনার মন্তব্য / জবাবের জন্য অনেক ধন্যবাদ!

উত্তর:


181

এটি প্রায় ৩-৪ বছর আগে ছিল, তবে ভবিষ্যতের সন্ধানকারীদের পক্ষে, এখন এগুলি দিয়ে চমত্কার লগগুলি তৈরি করা সম্ভব:

git log --oneline --decorate

অথবা, আপনি যদি এটি আরও সুন্দর চান (টার্মিনালের জন্য রঙ সহ):

git log --oneline --decorate --color

চেঞ্জলগে সেই আউটপুটটি পাইপ করা হ'ল আমি বর্তমানে আমার সমস্ত প্রকল্পে এটি ব্যবহার করি এটি আশ্চর্যজনক।


4
আর একটি দরকারী ট্যাগ হ'ল --graph, যা আপনাকে দৃশ্যমানভাবে দেখায় যে কমিটগুলি কী শাখাগুলি চলছে।
ইরানান্ট


4
চেঞ্জলগে git logআউটপুট অনুলিপি করার কোনও বুদ্ধি নেই। পঠনযোগ্য চেঞ্জলগ রাখতে আপনার ফিল্টারিং এবং সম্পাদনার কাজ করা দরকার, অন্যথায়, কেন আপনি এমনকি একটি চেঞ্জলগেরও প্রয়োজন হবে? আমি মনে করি আপনি একটি পরিবর্তন এর প্রজন্মকে স্বয়ংক্রিয় করতে পারেন তবে দয়া করে এর কাঁচা অনুলিপি করবেন না git log!
vaab

19
এটির সাথে সমস্যাটি এমন কি ধরে নেওয়াও যে আপনার প্রকল্পের প্রতিটি অবদানকারী স্পষ্ট এবং পঠনযোগ্য প্রতিশ্রুতিগুলি বার্তা লিখেছেন, আপনি এখনও টনস শব্দ সহ একটি "চেঞ্জলগ" তৈরি করবেন gene রিলিজগুলির মধ্যে প্রাসঙ্গিকভাবে উল্লেখযোগ্য পরিবর্তনগুলি প্রজেক্টের ব্যবহারকারীদের কাছে ব্যাখ্যা করার লক্ষ্য নিয়ে চেঞ্জলগগুলি লেখা উচিত , যদিও প্রতিশ্রুতিবদ্ধ বার্তাগুলি কোডে কী কী উন্নতি করে সেগুলি বিকাশকারীদের বোঝাতে মনোনিবেশ করা উচিত । কখনও কখনও সেখানে ওভারল্যাপ হয়, তবে সবসময় হয় না।
আজেদী 32

7
অথবা, আরও কিছুটা কংক্রিট করার জন্য, এই পদ্ধতিটি "জেডমডিউলে ফুমেথডের ফিক্সড স্পেলিং" এবং "এক্সওয়াইএলিবেরির নতুন সংস্করণ ব্যবহারের জন্য রিফ্যাক্টর এক্সমোডুল" এর মতো প্রচুর এন্ট্রি সম্বলিত একটি "পরিবর্তন লগ" তৈরি করবে। আপনার ব্যবহারকারীদের এটি সম্পর্কে যত্ন নেই । তারা জানতে চান যে ব্যবহারকারী হিসাবে তাদের দৃষ্টিকোণ থেকে কী পরিবর্তন হয়েছিল , বিকাশকারী হিসাবে আপনার দৃষ্টিকোণ নয়। এবং এটি এমনকি "xdev / foo থেকে PR # 123 মার্জ" এবং "ওপসগুলি, স্থির করা নতুন ফিচারের মতো জিনিসগুলিকেও উপেক্ষা করছে যাতে এটি আসলে কাজ করে" টাইপ জিনিসগুলি যা কোনও বাস্তব-বিশ্বের রেপোতে উপস্থিত থাকার সম্ভাবনা রয়েছে।
আজেদী 32

60

আপনাকে সহায়তা করতে আপনি গিট লগের কিছু স্বাদ ব্যবহার করতে পারেন:

git log --pretty=%s                 # only print the subject

যদি আপনি নিজের শাখাগুলির নাম সুন্দর করে রাখেন, যাতে মাস্টারকে মার্জ করে "মার্জড ব্রাঞ্চ ফিচার-ফুবার" এর মতো কিছু দেখা যায়, আপনি কেবল সেই বার্তাটি দেখিয়ে জিনিসগুলি সংক্ষিপ্ত করতে পারেন, এবং আপনি যে সংশ্লেষিত করেছিলেন সেই সমস্ত ছোট্ট অঙ্গীকার নয় যা মিলিতভাবে গঠন করে বৈশিষ্ট্য:

git log --pretty=%s --first-parent  # only follow first parent of merges

আপনি এটিকে নিজের স্ক্রিপ্টের সাহায্যে বাড়াতে সক্ষম হতে পারেন যা "মার্জড ব্রাঞ্চ" বিটগুলি ফেলা, ফর্ম্যাটকে স্বাভাবিককরণ ইত্যাদির মতো কাজ করতে পারে। কিছু সময় আপনাকে অবশ্যই এটি লিখতে হবে অবশ্যই, অবশ্যই।

তারপরে আপনি প্রতি সংস্করণে একবার চেঞ্জলগের জন্য একটি নতুন বিভাগ তৈরি করতে পারেন:

git log [opts] vX.X.X..vX.X.Y | helper-script > changelogs/X.X.Y

এবং এটি আপনার সংস্করণে প্রকাশের প্রতিশ্রুতিবদ্ধ প্রতিশ্রুতিবদ্ধ।

যদি আপনার সমস্যাটি হয় যে এই প্রতিশ্রুতিবদ্ধ বিষয়গুলি আপনি কোনও পরিবর্তনলগ রাখতে চান তেমন কিছু না হয় তবে আপনার কাছে দুটি বিকল্প থাকে: ম্যানুয়ালি সব কিছু করা চালিয়ে যান (এবং ক্যাচ- খেলার পরিবর্তে আরও নিয়মিত এটি চালিয়ে যাওয়ার চেষ্টা করুন) প্রকাশের সময় আপ) বা আপনার প্রতিশ্রুতিবদ্ধ বার্তা শৈলী ঠিক করুন। একটি বিকল্প, যদি বিষয়গুলি আপনার পক্ষে এটি না করে, আপনার প্রতিশ্রুতি বার্তাগুলির মুখ্যগুলিতে "পরিবর্তন: অ্যাড ফিচার ফুবার" এর মতো লাইন স্থাপন করা হবে, যাতে পরবর্তীতে আপনি git log --pretty=%B | grep ^change:কেবল সেই সুপারগুলিকে ধরার মতো কিছু করতে পারেন বার্তাগুলির গুরুত্বপূর্ণ বিট।

আমি সম্পূর্ণরূপে নিশ্চিত নই যে এই গিটের চেয়ে আরও কত বেশি সত্যই আপনাকে আপনার পরিবর্তনগুলি তৈরি করতে সহায়তা করতে পারে। "ম্যানেজ" বলতে আপনার অর্থ কি আমি ভুল ব্যাখ্যা করেছি?


2
এটি অবশ্যই একটি দুর্দান্ত শুরু এবং আমি শরীরে কোনও সংশোধক যুক্ত করার কথা ভাবিনি যে আমি এটি পরে গ্রেপ করতে পারি। আমি যা করছিলাম তা হতে পারে। সাহায্য করার জন্য ধন্যবাদ! পরের দিন বা তার মধ্যে আরও কোনও উত্তর না
টোফার ফ্যাঙ্গিও

60

অস্বীকৃতি: আমি গিটচেনলগের লেখক যার মধ্যে আমি নীচে কথা বলব।

টিএল; ডিআর: আপনি গিচচেনলগের নিজস্ব চেঞ্জলগ বা পূর্ববর্তীটি তৈরি করেছে এমন এসকিআই আউটপুট পরীক্ষা করতে পারেন ।

আপনি যদি আপনার গিটের ইতিহাস থেকে একটি পরিবর্তন আনতে চান তবে আপনাকে সম্ভবত বিবেচনা করতে হবে:

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

Ptionচ্ছিক আপনি কিছু শ্রেণিবদ্ধকরণ (নতুন জিনিস, পরিবর্তন, বাগফিক্স) চাইতে পারেন ...

এই সমস্ত বিষয় মাথায় রেখে, আমি গিটিচেনলগ তৈরি এবং ব্যবহার করেছি । এটি পূর্ববর্তী সমস্ত লক্ষ্য অর্জনের জন্য গিট কমিট বার্তা কনভেনশনকে উত্তোলন করা ।

একটি সুন্দর চেঞ্জলগ তৈরি করা (ব্যবহার করা বা ব্যবহার না করে gitchangelog) তৈরি করার জন্য একটি প্রতিশ্রুতিবদ্ধ বার্তা সম্মেলন করা বাধ্যতামূলক ।

বার্তা সম্মেলন প্রতিশ্রুতিবদ্ধ

আপনার প্রতিশ্রুতিবদ্ধ বার্তাগুলি যুক্ত করার বিষয়ে ভাবতে কী কী কার্যকর হতে পারে তার পরামর্শ নীচে দেওয়া হয়েছে।

আপনি আপনার প্রতিশ্রুতিগুলি মোটামুটি বড় বিভাগে আলাদা করতে চাইতে পারেন:

  • অভিপ্রায় দ্বারা (উদাহরণস্বরূপ: নতুন, সংশোধন, পরিবর্তন ...)
  • বস্তু দ্বারা (উদাহরণস্বরূপ: ডক, প্যাকেজিং, কোড ...)
  • শ্রোতা দ্বারা (উদাহরণস্বরূপ: দেব, পরীক্ষক, ব্যবহারকারী ...)

অতিরিক্তভাবে, আপনি কিছু কমিট ট্যাগ করতে চাইবেন:

  • "নাবালক" কমিট হিসাবে যেটি আপনার চেঞ্জলগে আউটপুট হওয়া উচিত নয় (প্রসাধনী পরিবর্তন, মন্তব্যে ছোট টাইপো ...)
  • "রিফ্যাক্টর" হিসাবে যদি আপনার সত্যিকারের কোনও তাত্পর্যপূর্ণ বৈশিষ্ট্য পরিবর্তন না হয়। সুতরাং এটি চূড়ান্ত ব্যবহারকারীর কাছে উদাহরণস্বরূপ প্রদর্শিত চেঞ্জলগের অংশও হওয়া উচিত নয়, তবে আপনার যদি বিকাশকারী চেঞ্জলগ থাকে তবে কিছুটা আগ্রহ থাকতে পারে।
  • আপনি এপিআই পরিবর্তনগুলি বা নতুন এপিআই স্টাফ চিহ্নিত করতে "এপিআই" দিয়ে ট্যাগ করতে পারেন ...
  • ... ইত্যাদি ...

আপনার প্রতিশ্রুতি বার্তাটি যত দ্রুত সম্ভব ব্যবহারকারীদের (কার্যকারিতা) লক্ষ্য করে লেখার চেষ্টা করুন।

উদাহরণ

এই git log --onelineতথ্যগুলি কীভাবে সংরক্ষণ করা যেতে পারে তা দেখানোর জন্য এটি স্ট্যান্ডার্ড :

* 5a39f73 fix: encoding issues with non-ascii chars.
* a60d77a new: pkg: added ``.travis.yml`` for automated tests. 
* 57129ba new: much greater performance on big repository by issuing only one shell command for all the commits. (fixes #7)
* 6b4b267 chg: dev: refactored out the formatting characters from GIT.
* 197b069 new: dev: reverse ``natural`` order to get reverse chronological order by default. !refactor 
* 6b891bc new: add utf-8 encoding declaration !minor 

সুতরাং আপনি যদি খেয়াল করেন তবে আমি যে ফর্ম্যাটটি বেছে নিয়েছি তা হ'ল:

{new|chg|fix}: [{dev|pkg}:] COMMIT_MESSAGE [!{minor|refactor} ... ]

আসল আউটপুট ফলাফলটি দেখতে, আপনি গিচচেনলগের পাইপিআই পৃষ্ঠার শেষ দিকে দেখতে পারেন

আমার প্রতিশ্রুতিবদ্ধ বার্তা কনভেনশনটির একটি সম্পূর্ণ ডকুমেন্টেশন দেখতে আপনি রেফারেন্স ফাইলটি দেখতে পাবেন gitchangelog.rc.references

এ থেকে কীভাবে এক্সক্লুসিভ চেঞ্জলগ তৈরি করা যায়

তারপরে, সম্পূর্ণ চেঞ্জলগ তৈরি করা বেশ সহজ। আপনি নিজের স্ক্রিপ্টটি খুব দ্রুত তৈরি করতে পারেন, বা ব্যবহার করতে পারেন gitchangelog

gitchangelogএকটি সম্পূর্ণ চেঞ্জলগ উত্পন্ন করবে (হিসাবে বিভাগীয় সমর্থন সহ New, Fix...), এবং আপনার নিজস্ব প্রতিশ্রুতিবদ্ধ কনভেনশনগুলির পক্ষে যুক্তিসঙ্গতভাবে কনফিগারযোগ্য। এটা মাধ্যমে টেমপ্লেট আউটপুট ধন্যবাদ কোন প্রকার সমর্থন Mustache, Mako templatingএবং একটি ডিফল্ট উত্তরাধিকার ইঞ্জিন কাঁচা পাইথন লেখা আছে; সমস্ত বর্তমান 3 ইঞ্জিনে কীভাবে সেগুলি ব্যবহার করতে হয় তার উদাহরণ রয়েছে এবং গিটচেনলগের পাইপিআই পৃষ্ঠায় প্রদর্শিত পরিবর্তন হিসাবে এর আউটপুট নিতে পারে।

আমি নিশ্চিত আপনি জানেন অন্য প্রচুর আছে git logকরতে changelogসেখানে আউট সরঞ্জাম।


1
এটি দুর্দান্ত, আমি ঠিক যা খুঁজছিলাম। আমি এটি চেষ্টা করে দেখুন, আপনাকে অনেক ধন্যবাদ!
জেফ কিিজা


23

gitlog-to-changelogস্ক্রিপ্ট উপকারে আসে একটি গনুহ ধাঁচের জেনারেট করতে ChangeLog

দ্বারা প্রদর্শিত হিসাবে gitlog-to-changelog --help, আপনি ChangeLogবিকল্পটি ব্যবহার করে একটি ফাইল তৈরি করতে ব্যবহৃত কমিটগুলি নির্বাচন করতে পারেন --since:

gitlog-to-changelog --since=2008-01-01 > ChangeLog

বা পরে অতিরিক্ত যুক্তিগুলি --পাস করার মাধ্যমে, যা এতে প্রবেশ করা হবে git-log(অভ্যন্তরীণভাবে বলা হয় gitlog-to-changelog):

gitlog-to-changelog -- -n 5 foo > last-5-commits-to-branch-foo

উদাহরণস্বরূপ, আমি Makefile.amআমার প্রকল্পগুলির একটিতে শীর্ষ স্তরে নিম্নলিখিত নিয়মটি ব্যবহার করছি :

.PHONY: update-ChangeLog
update-ChangeLog:
    if test -d $(srcdir)/.git; then                         \
       $(srcdir)/build-aux/gitlog-to-changelog              \
          --format='%s%n%n%b%n' --no-cluster                \
          --strip-tab --strip-cherry-pick                   \
          -- $$(cat $(srcdir)/.last-cl-gen)..               \
        >ChangeLog.tmp                                      \
      && git rev-list -n 1 HEAD >.last-cl-gen.tmp           \
      && (echo; cat $(srcdir)/ChangeLog) >>ChangeLog.tmp    \
      && mv -f ChangeLog.tmp $(srcdir)/ChangeLog            \
      && mv -f .last-cl-gen.tmp $(srcdir)/.last-cl-gen      \
      && rm -f ChangeLog.tmp;                               \
    fi

EXTRA_DIST += .last-cl-gen

এই বিধি প্রকাশের সময় ChangeLogসর্বশেষে না-রেকর্ড করা কমিট বার্তাগুলি আপডেট করার জন্য ব্যবহৃত হয় । ফাইলটিতে .last-cl-genরেকর্ড করা সর্বশেষ প্রতিশ্রুতিটির SHA1 সনাক্তকারী রয়েছে ChangeLogএবং এটি গিট সংগ্রহস্থলে সংরক্ষিত রয়েছে। ChangeLogভান্ডারটিতেও রেকর্ড করা হয়, যাতে কমিট বার্তাগুলি পরিবর্তন না করে এটি সম্পাদনা করা যায় (যেমন টাইপস সংশোধন করা)।


জিসিসি mklog স্ক্রিপ্ট এও হতে পারে আকর্ষণীয়: stackoverflow.com/a/31606865/895245
সিরো Santilli郝海东冠状病六四事件法轮功

এটিই হবে বিজয়ী প্রকল্প! আপনি এটি গিথুবে রাখেন না কেন?
ওমর দাগান

20

যেহেতু প্রতি সংস্করণে ট্যাগ তৈরি করা সর্বোত্তম অনুশীলন, আপনি প্রতি সংস্করণে আপনার চেঞ্জলগটি ভাগ করতে পারেন। সেক্ষেত্রে এই আদেশটি আপনাকে সহায়তা করতে পারে:

git log YOUR_LAST_VERSION_TAG..HEAD --no-merges --format=%B

15

জন্য GitHub প্রকল্প এটা দরকারী হতে পারে: GitHub-পরিবর্তণের-জেনারেটর

এটি ট্যাগ বন্ধ হওয়া সমস্যাগুলি থেকে চেঞ্জলগ উত্পন্ন করে এবং পুল-অনুরোধগুলিকে একীভূত করে।

এই CHANGELOG.md এই স্ক্রিপ্ট দ্বারা উত্পাদিত হয়েছিল।

উদাহরণ:

পরিবর্তণের

1.2.5 (2015-01-15)

সম্পূর্ণ পরিবর্তন

প্রয়োগকৃত বর্ধিতকরণ:

  • কোন সংস্করণ বাগটি ঠিক করা হয়েছে তা নির্দিষ্ট করতে মাইলফলক ব্যবহার করুন # 22

স্থির বাগসমূহ:

  • ট্যাগ # 32 ছাড়াই রেপোর জন্য লগ তৈরি করার চেষ্টা করার সময় ত্রুটি

মার্জ টানার অনুরোধগুলি:

  • প্রিটটিপ্রিন্ট ক্লাসটি ছোট হাতের 'পিপি' # 43 ( স্কুউইং ) ব্যবহার করে অন্তর্ভুক্ত করা হয়েছে

  • কমান্ড লাইন বিকল্পগুলির মাধ্যমে এন্টারপ্রাইজ গিথুবকে সমর্থন করুন # 42 ( গ্লেনলভেট )


এই জাতীয় প্রকল্পগুলি সবচেয়ে ভাল :) এটি করার জন্য আপনার অনুপ্রেরণা কী ছিল? এছাড়াও আপনার অনুপ্রেরণার জন্য ধন্যবাদ আমি একটি অবিস্মরণীয় সরঞ্জাম তৈরি করেছি, যা লেবেল ছাড়াই কাজ করে, যোগ / পরিবর্তিত / স্থির / সরানোতে বিভক্ত হয় এবং পিএইচপি (আমার "নেটিভ" ভাষা) এ থাকে: github.com/Symplif/ChangelogLinker আপনি কি চ্যাংলোগগুলি সম্পর্কে পোস্ট লেখেন? ? আমি সেগুলি পড়তে চাই
টম ভোটারুবা

1
@ টমভোটরুবা উষ্ণ কথার জন্য ধন্যবাদ। এটা শুধু আমার শখ। আমি খুব একটা পোস্ট করিনি। তবে আমি এটি মূল্যবান বলে মনে করি। শুভ কামনা!
স্কাইওয়ান্ডার

10

আমি এটির জন্য একটি গ্রন্থাগারও তৈরি করেছিলাম। এটি গোঁফ টেম্পলেট সহ পুরোপুরি কনফিগারযোগ্য। এটা হতে পারে:

আমিও তৈরি করেছি:

গিথুব সম্পর্কে আরও বিশদ: https://github.com/tomasbjerre/git-changelog-lib

কমান্ড লাইন থেকে:

npx git-changelog-command-line -std -tec "
# Changelog

Changelog for {{ownerName}} {{repoName}}.

{{#tags}}
## {{name}}
 {{#issues}}
  {{#hasIssue}}
   {{#hasLink}}
### {{name}} [{{issue}}]({{link}}) {{title}} {{#hasIssueType}} *{{issueType}}* {{/hasIssueType}} {{#hasLabels}} {{#labels}} *{{.}}* {{/labels}} {{/hasLabels}}
   {{/hasLink}}
   {{^hasLink}}
### {{name}} {{issue}} {{title}} {{#hasIssueType}} *{{issueType}}* {{/hasIssueType}} {{#hasLabels}} {{#labels}} *{{.}}* {{/labels}} {{/hasLabels}}
   {{/hasLink}}
  {{/hasIssue}}
  {{^hasIssue}}
### {{name}}
  {{/hasIssue}}

  {{#commits}}
**{{{messageTitle}}}**

{{#messageBodyItems}}
 * {{.}} 
{{/messageBodyItems}}

[{{hash}}](https://github.com/{{ownerName}}/{{repoName}}/commit/{{hash}}) {{authorName}} *{{commitTime}}*

  {{/commits}}

 {{/issues}}
{{/tags}}
"

বা জেনকিন্সে:

এখানে চিত্র বর্ণনা লিখুন


3
git log --oneline --no-merges `git describe --abbrev=0 --tags`..HEAD | cut -c 9- | sort

আমি ব্যবহার করতে চাই কি। এটি সর্বশেষ ট্যাগ থেকে সমস্ত কমিটস পায়। cutকমিট হ্যাশ পরিত্রাণ পায়। আপনি যদি প্রতিশ্রুতিবদ্ধ বার্তাগুলির শুরুতে টিকিট নম্বর ব্যবহার করেন তবে সেগুলি গোষ্ঠীভুক্ত করা হবে sort। এছাড়াও বাছাই করতে সাহায্য করে যদি আপনার সাথে নির্দিষ্ট করে পূর্বে ভী fix, typoইত্যাদি


3

আমি সিআই সার্ভারটি CHANGELOGপ্রতিটি নতুন রিলিজের জন্য নামের একটি ফাইলের সাথে নীচে রিলিজ-ফাইলনামে সেট করার তারিখটি পাইপ করতে দিলাম:

>git log --graph --all --date=relative --pretty=format:"%x09 %ad %d %s (%aN)"

2

একটি জন্য গনুহ শৈলী পরিবর্তণের , আমি ফাংশন রান্না করেছি

gnuc() {
  {
    printf "$(date "+%Y-%m-%d")  John Doe  <john.doe@gmail.com>\n\n"
    git diff-tree --no-commit-id --name-only -r HEAD | sed 's/^/\t* /'
  } | tee /dev/tty | xsel -b
}

এর সাথে:

  • চেঞ্জলগে চূড়ান্ত সম্পাদনা করার আগে আমি পর্যায়ক্রমে আমার পরিবর্তনগুলি ব্যাকআপ করতে এবং সেগুলি পুনরায় চালু করতে প্রতিশ্রুতিবদ্ধ
  • তারপরে চালান: gnuc

এবং এখন আমার ক্লিপবোর্ডে এমন কিছু রয়েছে:

2015-07-24  John Doe  <john.doe@gmail.com>

        * gdb/python/py-linetable.c (): .
        * gdb/python/py-symtab.c (): .

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

এটা নিখুঁত নয় (যেমন ফাইল, তাদের পরিবর্তণের পথে আপেক্ষিক হওয়া উচিত, যাতে python/py-symtab.cছাড়া gdb/যেহেতু আমি সম্পাদনা করতে হবে gdb/ChangeLog), কিন্তু একটি ভাল প্রথম ধাপ।

আরও উন্নত স্ক্রিপ্ট:

যদিও ট্রোমির সাথে আমার একমত হতে হবে: চেঞ্জলগে গিট কমিটের ডেটা ডুপ্লিকেট করা অকেজো।

আপনি যদি একটি চেঞ্জলগ তৈরি করতে যাচ্ছেন তবে এটি কী চলছে তার একটি ভাল সংক্ষিপ্তসার তৈরি করুন, সম্ভবত http://keepachangelog.com/ এ উল্লিখিত হিসাবে


2

বিটাভোকের উপর ভিত্তি করে , এটি last tagঅবধি তালিকাবদ্ধ করে HEAD। তবে আমি 2 ট্যাগের মধ্যে লগগুলি তালিকাভুক্ত করার আশা করি।

// 2 or 3 dots between `YOUR_LAST_VERSION_TAG` and `HEAD`
git log YOUR_LAST_VERSION_TAG..HEAD --no-merges --format=%B

2 ট্যাগের মধ্যে লগ তালিকাভুক্ত।

// 2 or 3 dots between 2 tags
git log FROM_TAG...TO_TAG

উদাহরণস্বরূপ, এটি থেকে লগগুলি তালিকা প্রস্তুত করা যাবে v1.0.0থেকে v1.0.1

git log v1.0.0...v1.0.1 --oneline --decorate

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