مواد پر جائیں

کوڈ ہوسٹ جوڑیں

Control Center تین کوڈ ہوسٹس کے ساتھ کام کرتا ہے، جنہیں پوری ایپ میں forge کہا جاتا ہے: GitHub، GitLab اور Bitbucket Cloud۔ اِن میں سے کوئی بھی ڈیفالٹ نہیں ہوتا۔ ایک جوڑیں اور سب کچھ کام کرتا ہے؛ کئی جوڑیں تو ایک ہی ورک اسپیس ایک ساتھ اُن سب کے ریپوز رکھ سکتی ہے۔

forge ہر ریپو کی ایک خصوصیت ہے، جو آپ کے رجسٹر کرنے کے وقت اُس کے origin ریموٹ سے پڑھی جاتی ہے۔ آپ اسے کبھی خود منتخب نہیں کرتے، اور کوئی فی ورک اسپیس سیٹنگ ایسی نہیں جو غلط ہو سکے۔

  1. ترتیبات → ورک اسپیس → پروفائل اور شناخت کھولیں (/settings/workspace/profile)۔
  2. کوڈ ہوسٹنگ کارڈ تلاش کریں۔ ہر معاون forge یہاں درج ہے، جوڑا ہوا ہو یا نہ ہو۔
  3. اگر قطار یہ پیش کرتی ہو تو … سے سائن اِن دبائیں، ورنہ ٹوکن شامل کریں دبا کر ایک پیسٹ کریں۔

سائن اِن اُس forge کے لیے ظاہر ہوتا ہے جس کے لیے آپ کے سرور پر کوئی ایپ رجسٹرڈ ہو — آج یہ GitHub ہے، ڈیوائس فلو کے ذریعے (GitHub App بنائیں دیکھیں)۔ باقی سب کے لیے ٹوکن پیسٹ کرنا ہے، جو اُس بٹن سے زیادہ ایماندار راستہ ہے جو مکمل ہی نہ ہو سکے۔

کسی بھی صورت میں کریڈینشل آپ ہی کا ہے اور سرور پر رہتا ہے، جو آپ کی یوزر آئی ڈی سے منسلک ہوتا ہے: جس مشین پر آپ نے ٹائپ کیا اُس پر کوئی ٹوکن محفوظ نہیں ہوتا، جس بھی ڈیوائس سے آپ سائن اِن کریں وہی ایک استعمال کرتی ہے، اور کوئی دوسرا رکن اسے پڑھ نہیں سکتا۔ یہ اگلی درخواست پر مؤثر ہوتا ہے — ری اسٹارٹ کرنے کی کوئی چیز نہیں، اور کنکشن منقطع کرنے سے یہ فوراً بھیجنا بند ہو جاتا ہے۔

ہر قطار بتاتی ہے کہ اُس کا کریڈینشل کہاں سے آیا، کیونکہ فرق اِسی میں ہے — “میرا ٹوکن کام نہیں کر رہا” اور “کوئی دوسرا ٹوکن جواب دے رہا ہے”:

ذیلی عنوان مطلب
octocat کے طور پر سائن اِن آپ ہی کا کریڈینشل استعمال ہو رہا ہے
octocat کے طور پر سائن اِن · اس سرور کی ایپ کے ذریعے سرور کی ایپ شناخت جواب دے رہی ہے — آپ نے سائن اِن نہیں کیا
octocat کے طور پر سائن اِن · ماحول سے سرور کا ماحول ویری ایبل جواب دے رہا ہے، آپ کا کریڈینشل نہیں
منسلک نہیں اِس forge کے لیے آپ کے پاس کوئی کریڈینشل نہیں
forge ٹوکن کہاں بنائیں
GitHub کلاسک: repo اور read:org۔ فائن گرینڈ: Contents + Pull requests (read/write)، Checks + Actions (read) github.com → Settings → Developer settings → Tokens
GitLab api والا ذاتی رسائی ٹوکن gitlab.com → User settings → Access tokens
Bitbucket ایک Atlassian API ٹوکن، نیز آپ کے اکاؤنٹ کا ای میل id.atlassian.com → Security → API tokens

Bitbucket آپ کے اکاؤنٹ کے ای میل کو بطور صارف نام اور ٹوکن کو بطور پاس ورڈ استعمال کرتا ہے۔ سرور کے ماحول میں BITBUCKET_EMAIL مقرر کریں تاکہ اُسے معلوم ہو کہ ٹوکن کے ساتھ کون سا ای میل جوڑنا ہے۔

ہیڈ لیس یا CI انسٹالیشن کے لیے سرور یہ پڑھتا ہے:

  • GitHub — GITHUB_TOKEN، پھر GH_TOKEN
  • GitLab — GITLAB_TOKEN، پھر CI_JOB_TOKEN
  • Bitbucket — BITBUCKET_API_TOKEN، پھر BITBUCKET_TOKEN (BITBUCKET_EMAIL کے ساتھ)

یہ سرور کا کریڈینشل ہے، آپ کا نہیں، اور یہ فرق بنیادی اہمیت رکھتا ہے: آپ کی طرف سے کی گئی درخواست صرف آپ ہی کا کریڈینشل استعمال کرتی ہے، کوئی اور نہیں، چنانچہ ماحول کبھی خاموشی سے آپ کی جگہ نہیں لیتا۔ جس کام کے پیچھے کوئی انسان نہ ہو — ویب ہکس، PR پولنگ، ٹکٹ سنک — وہ پہلے سرور کی ایپ شناخت، پھر سرور کے مالک کا کریڈینشل، اور پھر ماحول حل کرتا ہے۔ ترتیب مقرر ہے تاکہ “میں نے سائن اِن کیا اور کچھ نہیں بدلا” کبھی قابلِ قبول نتیجہ نہ ہو۔

وہی انسان GitHub پر octocat ہے اور GitLab پر بالکل کچھ اور۔ Control Center آپ کی شناخت فی forge حل کرتا ہے اور ہر ریپو کے لیے موزوں شناخت استعمال کرتا ہے، اور اِسی سے ملی جلی ورک اسپیس میں “میرے جائزے کی ضرورت ہے”، “میرے بنائے ہوئے” اور “آپ نے اس کی منظوری دی” درست رہتے ہیں۔

اگر کسی forge کی شناخت حل نہ ہوئی ہو تو اُس کے ریپوز ان باکس میں کچھ شامل نہیں کرتے، بجائے اس کے کہ سب کچھ مماثل سمجھ لیں۔ ان باکس یہ بتا دیتا ہے، بجائے یہ دعویٰ کرنے کے کہ آپ سب کچھ دیکھ چکے ہیں۔

ان باکس اور PR قطار ورک اسپیس میں موجود ہر forge تک پھیل جاتے ہیں اور نتائج کو ایک ہی سلسلے میں مل دیتے ہیں — ایک GitHub pull request اور ایک Bitbucket pull request ساتھ ساتھ بیٹھتے ہیں، وقت کے حساب سے ترتیب پاتے ہیں، وینڈر کے لحاظ سے گروہ بند نہیں ہوتے۔

ناکامیاں الگ تھلگ رہتی ہیں۔ کوئی forge جو ڈاؤن ہو، ریٹ لِمٹ کا شکار ہو یا غیر منسلک ہو، کچھ شامل نہیں کرتا اور باقیوں کو چھوڑ دیتا ہے؛ وہ کبھی پورا ان باکس خالی نہیں کرتا۔ اُس کے اپنے ریپوز بحالی تک اپنی آخری معلوم حالت دکھاتے رہتے ہیں۔

ہر forge بنیادی چکر کی حمایت کرتا ہے: pull requests کی فہرست اور کھولنا، ڈف پڑھنا، اِن لائن اور اوپری سطح پر تبصرہ کرنا، ریویو، مرج اور بند کرنا۔ اِس کے علاوہ وہ واقعی مختلف ہیں، اور Control Center وہ چھپا دیتا ہے جو کوئی forge نہیں کر سکتا، بجائے ایسا کنٹرول دکھانے کے جو خاموشی سے ناکام ہو جائے۔

صلاحیت GitHub GitLab Bitbucket
بیچ کی شکل میں (زیر التوا) ریویوز ✓ ✓ —
تبدیلیاں طلب کریں ✓ ✓ ✓
فی فائل “دیکھا گیا” حالت کی ہم آہنگی ✓ — —
ایموجی ری ایکشنز ✓ ✓ —
ٹیم / گروپ ریویوورز ✓ ✓ —
تجویز کردہ ریویوورز ✓ — ✓
PR پر CI نتائج ✓ ✓ ✓
CI جاب کے مراحل/لاگز میں اترنا ✓ ✓ —
اسٹیکڈ pull requests ✓ — —
PR تفصیل کے ٹیمپلیٹس ✓ ✓ —
اطلاعات کی پولنگ ✓ — —
بھرپور صارف پروفائلز ✓ ✓ —
سرور سائیڈ PR head ref ✓ ✓ —

جہاں کوئی صلاحیت نہ ہو وہاں فیچر ایمانداری سے گر جاتا ہے:

  • دیکھی گئی حالت پھر بھی کام کرتی ہے، مگر صرف اُسی ڈیوائس پر جس پر آپ نے مقرر کی۔
  • Bitbucket پر بیچ ریویوز ایک ایک تبصرے کے طور پر شائع ہوتے ہیں، چنانچہ ریویوورز اُنہیں ایک ساتھ آنے کے بجائے الگ الگ آتے دیکھتے ہیں۔
  • Bitbucket پر PR head ref نہ ہونے کا مطلب ہے کہ pull request چیک آؤٹ کرنے پر اُس کی سورس برانچ نام سے لائی جاتی ہے، جو اُس برانچ کے حذف ہو جانے پر ناکام ہو جاتا ہے۔

GitLab pull request کو merge request کہتا ہے۔ Control Center اپنے پورے ماڈل میں “pull request” کہتا ہے، اور جہاں کسی forge کی بات ہو رہی ہو وہاں اُس forge کا اپنا اسم استعمال کرتا ہے۔

PR کی فہرست خالی ہے اور کہتی ہے کہ کوئی forge منسلک نہیں

سیکشن کا عنوان “PR کی فہرست خالی ہے اور کہتی ہے کہ کوئی forge منسلک نہیں”

اُس forge کے لیے آپ کے پاس کوئی کریڈینشل نہیں۔ ترتیبات → ورک اسپیس → پروفائل اور شناخت → کوڈ ہوسٹنگ میں سائن اِن کریں یا ٹوکن پیسٹ کریں۔ باقی forges کے ریپوز پر کوئی اثر نہیں پڑتا۔

میں نے forge جوڑا مگر اُس کے ریپوز پھر بھی کچھ نہیں دکھاتے

سیکشن کا عنوان “میں نے forge جوڑا مگر اُس کے ریپوز پھر بھی کچھ نہیں دکھاتے”

قطار کا ذیلی عنوان دیکھیں۔ اگر وہاں “اس سرور کی ایپ کے ذریعے” یا “ماحول سے” لکھا ہو تو جواب دینے والا کریڈینشل کوئی اور ہے، اُس سے مختلف جس کی آپ توقع کر رہے تھے — آپ کی مانگی ہوئی ہر چیز کے لیے آپ ہی کا کریڈینشل جیتتا ہے، چنانچہ اگر وہاں کچھ اور لکھا ہو تو آپ کا محفوظ نہیں ہوا۔

رجسٹریشن کے لیے تینوں چیزیں درکار ہیں: راستہ کسی git work tree کے اندر ہو، اُس کا کوئی origin ریموٹ ہو، اور وہ ریموٹ github.com، gitlab.com یا bitbucket.org کی طرف اشارہ کرے۔ ورک اسپیس میں ریپوز شامل کریں دیکھیں۔

بھاری استعمال کے بعد کچھ دیر کے لیے سب کچھ کام کرنا بند کر دیتا ہے

سیکشن کا عنوان “بھاری استعمال کے بعد کچھ دیر کے لیے سب کچھ کام کرنا بند کر دیتا ہے”

یہ ریٹ لِمٹ سرکٹ بریکر ہے۔ جب کوئی forge اپنی بنیادی حد کا اشارہ دیتا ہے تو کلائنٹ مزید درخواستیں مقامی طور پر، بغیر نیٹ ورک کال کے، ناکام کر دیتا ہے جب تک ونڈو گزر نہ جائے — چنانچہ دوبارہ کوششوں کا طوفان حد کو مزید گہرا نہیں کر سکتا۔ عارضی ناکامیاں ایکسپونینشل بیک آف کے ساتھ دوبارہ آزمائی جاتی ہیں۔