منصوبے کے بارے میں

go-whatchanged ایک کمانڈ لائن ٹول ہے جو Go ماڈیول کے عوامی API میں دو ورژنز کے درمیان ہونے والی تبدیلیوں کا جائزہ لیتا ہے۔ یہ base اور head کے پہلوؤں کا موازنہ کرتا ہے، جہاں ہر پہلو working tree، مقامی checkout، git revision، branch، tag، یا شائع شدہ ماڈیول ورژن جیسے github.com/x/m@v1.2.0 ہو سکتا ہے۔ ڈیفالٹ happy path کو صرف پڑھنے کے قابل (read-only) ڈیزائن کیا گیا ہے: یہ عارضی ڈائریکٹریز، git clones، worktrees، اور repository writes سے گریز کرتا ہے، اور جب ریموٹ پیکجز پہلے سے cache میں نہ ہوں تو صرف go کمانڈز استعمال کرتا ہے۔ --fsreadonly فلیگ مکمل طور پر غیر تحریری عمل کے لیے ماڈیول-cache ڈاؤن لوڈ کے راستے کو بھی غیر فعال کر دیتا ہے۔ یہ ٹول فی پیکج شامل، حذف شدہ، اور تبدیل شدہ exported symbols کی رپورٹ کرتا ہے، اور compatible بمقابلہ incompatible تبدیلیوں کا خلاصہ پیش کرتا ہے۔ یہ مطلوبہ semantic version bump بھی تجویز کرتا ہے، جیسے MAJOR، MINOR، یا PATCH، اور --exit-fail=major، minor، یا patch کے ذریعے exit codes استعمال کرتے ہوئے compatibility gates نافذ کر سکتا ہے۔ Filters آؤٹ پٹ کو breaking changes، public packages، internal packages، main packages، import changes، go.mod changes، یا test changes تک محدود کرنے کی اجازت دیتے ہیں۔ بڑے ماڈیولز اور monorepos کے لیے package include اور exclude patterns کی سہولت موجود ہے۔ workflows میں انضمام کے لیے، go-whatchanged text، Markdown، اور JSON آؤٹ پٹ فارمیٹس کی حمایت کرتا ہے۔ Markdown آؤٹ پٹ pull request تبصروں اور job summaries کے لیے ہے، جبکہ JSON آؤٹ پٹ scripts اور bots کے لیے ہے۔ API diffs کو pull request تبصروں اور job summaries کے طور پر پوسٹ کرنے کے لیے ایک GitHub Action فراہم کیا گیا ہے۔ README میں محدودیتوں کا ذکر ہے جن میں فی رن ایک پلیٹ فارم، go.work/vendor/GOPATH کی عدم حمایت، go 1.16 یا اس سے پرانے ورژن کا اعلان کرنے والے ماڈیولز کا diff نہ کر پانا، اور dependencies کے بجائے صرف main module کا موازنہ شامل ہیں۔