کوڈ ہوسٹ جوڑیں
Control Center تین کوڈ ہوسٹس کے ساتھ کام کرتا ہے، جنہیں پوری ایپ میں forge کہا جاتا ہے: GitHub، GitLab اور Bitbucket Cloud۔ اِن میں سے کوئی بھی ڈیفالٹ نہیں ہوتا۔ ایک جوڑیں اور سب کچھ کام کرتا ہے؛ کئی جوڑیں تو ایک ہی ورک اسپیس ایک ساتھ اُن سب کے ریپوز رکھ سکتی ہے۔
forge ہر ریپو کی ایک خصوصیت ہے، جو آپ کے رجسٹر کرنے کے وقت اُس کے origin ریموٹ سے پڑھی جاتی ہے۔ آپ اسے کبھی خود منتخب نہیں کرتے، اور کوئی فی ورک اسپیس سیٹنگ ایسی نہیں جو غلط ہو سکے۔
forge جوڑیں
سیکشن کا عنوان “forge جوڑیں”- ترتیبات → ورک اسپیس → پروفائل اور شناخت کھولیں (
/settings/workspace/profile)۔ - کوڈ ہوسٹنگ کارڈ تلاش کریں۔ ہر معاون forge یہاں درج ہے، جوڑا ہوا ہو یا نہ ہو۔
- اگر قطار یہ پیش کرتی ہو تو … سے سائن اِن دبائیں، ورنہ ٹوکن شامل کریں دبا کر ایک پیسٹ کریں۔
سائن اِن اُس forge کے لیے ظاہر ہوتا ہے جس کے لیے آپ کے سرور پر کوئی ایپ رجسٹرڈ ہو — آج یہ GitHub ہے، ڈیوائس فلو کے ذریعے (GitHub App بنائیں دیکھیں)۔ باقی سب کے لیے ٹوکن پیسٹ کرنا ہے، جو اُس بٹن سے زیادہ ایماندار راستہ ہے جو مکمل ہی نہ ہو سکے۔
کسی بھی صورت میں کریڈینشل آپ ہی کا ہے اور سرور پر رہتا ہے، جو آپ کی یوزر آئی ڈی سے منسلک ہوتا ہے: جس مشین پر آپ نے ٹائپ کیا اُس پر کوئی ٹوکن محفوظ نہیں ہوتا، جس بھی ڈیوائس سے آپ سائن اِن کریں وہی ایک استعمال کرتی ہے، اور کوئی دوسرا رکن اسے پڑھ نہیں سکتا۔ یہ اگلی درخواست پر مؤثر ہوتا ہے — ری اسٹارٹ کرنے کی کوئی چیز نہیں، اور کنکشن منقطع کرنے سے یہ فوراً بھیجنا بند ہو جاتا ہے۔
ہر قطار بتاتی ہے کہ اُس کا کریڈینشل کہاں سے آیا، کیونکہ فرق اِسی میں ہے — “میرا ٹوکن کام نہیں کر رہا” اور “کوئی دوسرا ٹوکن جواب دے رہا ہے”:
| ذیلی عنوان | مطلب |
|---|---|
octocat کے طور پر سائن اِن |
آپ ہی کا کریڈینشل استعمال ہو رہا ہے |
octocat کے طور پر سائن اِن · اس سرور کی ایپ کے ذریعے |
سرور کی ایپ شناخت جواب دے رہی ہے — آپ نے سائن اِن نہیں کیا |
octocat کے طور پر سائن اِن · ماحول سے |
سرور کا ماحول ویری ایبل جواب دے رہا ہے، آپ کا کریڈینشل نہیں |
منسلک نہیں |
اِس forge کے لیے آپ کے پاس کوئی کریڈینشل نہیں |
ہر forge کون سا ٹوکن چاہتا ہے
سیکشن کا عنوان “ہر 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 پولنگ، ٹکٹ سنک — وہ پہلے سرور کی ایپ شناخت، پھر سرور کے مالک کا کریڈینشل، اور پھر ماحول حل کرتا ہے۔ ترتیب مقرر ہے تاکہ “میں نے سائن اِن کیا اور کچھ نہیں بدلا” کبھی قابلِ قبول نتیجہ نہ ہو۔
آپ ہر forge پر ایک مختلف شخص ہیں
سیکشن کا عنوان “آپ ہر forge پر ایک مختلف شخص ہیں”وہی انسان GitHub پر octocat ہے اور GitLab پر بالکل کچھ اور۔ Control Center آپ کی شناخت فی forge حل کرتا ہے اور ہر ریپو کے لیے موزوں شناخت استعمال کرتا ہے، اور اِسی سے ملی جلی ورک اسپیس میں “میرے جائزے کی ضرورت ہے”، “میرے بنائے ہوئے” اور “آپ نے اس کی منظوری دی” درست رہتے ہیں۔
اگر کسی forge کی شناخت حل نہ ہوئی ہو تو اُس کے ریپوز ان باکس میں کچھ شامل نہیں کرتے، بجائے اس کے کہ سب کچھ مماثل سمجھ لیں۔ ان باکس یہ بتا دیتا ہے، بجائے یہ دعویٰ کرنے کے کہ آپ سب کچھ دیکھ چکے ہیں۔
ایک ان باکس، ہر forge
سیکشن کا عنوان “ایک ان باکس، ہر forge”ان باکس اور PR قطار ورک اسپیس میں موجود ہر forge تک پھیل جاتے ہیں اور نتائج کو ایک ہی سلسلے میں مل دیتے ہیں — ایک GitHub pull request اور ایک Bitbucket pull request ساتھ ساتھ بیٹھتے ہیں، وقت کے حساب سے ترتیب پاتے ہیں، وینڈر کے لحاظ سے گروہ بند نہیں ہوتے۔
ناکامیاں الگ تھلگ رہتی ہیں۔ کوئی forge جو ڈاؤن ہو، ریٹ لِمٹ کا شکار ہو یا غیر منسلک ہو، کچھ شامل نہیں کرتا اور باقیوں کو چھوڑ دیتا ہے؛ وہ کبھی پورا ان باکس خالی نہیں کرتا۔ اُس کے اپنے ریپوز بحالی تک اپنی آخری معلوم حالت دکھاتے رہتے ہیں۔
ہر forge کیا کر سکتا ہے
سیکشن کا عنوان “ہر 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 اپنی بنیادی حد کا اشارہ دیتا ہے تو کلائنٹ مزید درخواستیں مقامی طور پر، بغیر نیٹ ورک کال کے، ناکام کر دیتا ہے جب تک ونڈو گزر نہ جائے — چنانچہ دوبارہ کوششوں کا طوفان حد کو مزید گہرا نہیں کر سکتا۔ عارضی ناکامیاں ایکسپونینشل بیک آف کے ساتھ دوبارہ آزمائی جاتی ہیں۔