- कुछ प्रोजेक्ट्स को GitHub से Codeberg पर ले जाते हुए, कम-से-कम मेहनत में माइग्रेशन शुरू करने का तरीका संक्षेप में बताया गया है
- Codeberg की repository import feature के जरिए issues, PRs, और releases समेत पूरा माइग्रेशन संभव है, और UI तथा workflow, GitHub से मिलते-जुलते हैं
- static page hosting के लिए
codeberg.page का विकल्प इस्तेमाल किया जा सकता है, और grebedoc.dev या statichost.eu जैसे विकल्प भी मौजूद हैं
- सबसे बड़ी कठिनाई CI environment सेटअप है, क्योंकि GitHub के macOS runners और free execution quota को छोड़ना पड़ता है; इसके बदले Forgejo Actions या Woodpecker CI इस्तेमाल किए जा सकते हैं
- माइग्रेशन के बाद GitHub repository को read-only archive की तरह रखा जा सकता है या mirror किया जा सकता है, ताकि open source ecosystem से जुड़ाव पूरी तरह न टूटे
GitHub से Codeberg पर माइग्रेशन की प्रक्रिया
- कुछ repositories को GitHub से Codeberg पर माइग्रेट करना शुरू करने के अनुभव के आधार पर, वास्तविक migration process की कठिनाई और सुविधा का वर्णन किया गया है
- अब तक यह सोचकर टालते रहे कि Codeberg अभी पर्याप्त रूप से तैयार नहीं है, लेकिन project के अनुसार migration उम्मीद से कहीं आसान हो सकता है
- लक्ष्य एकदम परफेक्ट सेटअप नहीं, बल्कि माइग्रेशन शुरू करने का सबसे आसान तरीका ढूँढना है
-
repository और issue migration
- Codeberg, GitHub repository import feature देता है, जिसके जरिए issues, PRs, releases और उनके artifacts भी साथ में माइग्रेट किए जा सकते हैं
- इस प्रक्रिया में issue numbers, labels, और author information जस-का-तस बने रहते हैं
- Codeberg का UI लगभग GitHub जैसा ही है, और किसी दूसरे issue tracker से GitHub पर जाने में लगने वाली जटिल प्रक्रिया की तुलना में यह कहीं अधिक सरल अनुभव देता है
-
static page hosting
- अगर आप GitHub Pages इस्तेमाल कर रहे थे, तो उसके विकल्प के रूप में codeberg.page इस्तेमाल किया जा सकता है
- आधिकारिक availability guarantee (SLO) नहीं है, लेकिन व्यवहार में downtime का अनुभव नहीं हुआ, ऐसा बताया गया है
- HTML को branch में push करने के तरीके पर आधारित है, यानी GitHub Pages जैसी संरचना
- विकल्प के तौर पर grebedoc.dev या statichost.eu भी इस्तेमाल किए जा सकते हैं
-
CI (continuous integration) environment की चुनौतियाँ
- migration के दौरान सबसे मुश्किल हिस्सा CI environment सेटअप है
- GitHub free macOS runners और public repositories के लिए unlimited execution quota देता है, लेकिन Codeberg पर यह छोड़ना पड़ता है
- समाधान के रूप में language-specific cross compilation और Forgejo Actions runners की self-hosting का उपयोग किया जा सकता है
-
Forgejo Actions vs Woodpecker CI
- Codeberg पर Woodpecker CI ज़्यादा स्थिर है, लेकिन Forgejo Actions, GitHub Actions उपयोगकर्ताओं के लिए अधिक परिचित अनुभव देता है
- UI और YAML syntax लगभग एक जैसे हैं, और मौजूदा GitHub Actions workflows में से अधिकांश बिना बदलाव के चल जाते हैं
- उदाहरण के लिए, GitHub Actions में
uses: dtolnay/rust-toolchain इस्तेमाल किया गया हो, तो
Forgejo Actions में उसे uses: https://github.com/dtolnay/rust-toolchain में बदलना होगा
- फिलहाल Codeberg का Forgejo Actions documentation अप-टू-डेट नहीं है, और इस संबंध में एक PR मौजूद है
-
जब macOS runners की ज़रूरत हो
- अगर macOS build वास्तव में ज़रूरी है, तो GitHub Actions का उपयोग जारी रखा जा सकता है, और Codeberg repository से GitHub पर commits mirror किए जा सकते हैं
- Forgejo Actions को GitHub API poll करने और CI status को Codeberg के साथ sync करने के लिए कॉन्फ़िगर किया जा सकता है
- macOS builds देने वाली दूसरी CI services भी आज़माई गईं, लेकिन Codeberg के साथ उनका integration, GitHub Actions जितना सरल नहीं था
-
GitHub repository को कैसे संभालें
- migration के बाद GitHub repository में README बदलकर उसे archive किया जा सकता है
- Codeberg से GitHub पर commits push करने के लिए सेटअप किया जा सकता है, लेकिन इस स्थिति में उपयोगकर्ता अब भी PR बना सकते हैं और issue comments छोड़ सकते हैं
- कुछ लोग GitHub repository की issues feature disable कर देते हैं, लेकिन तब सभी issues 404 में गायब हो जाते हैं और PRs को disable नहीं किया जा सकता
- उदाहरण के तौर पर
libvirt/libvirt repository सभी PRs को अपने-आप बंद करने वाला GitHub Action इस्तेमाल करती है
- इस तरह का तरीका self-hosting और पूरे open source ecosystem पर नकारात्मक असर डाल सकता है
- उपयोगकर्ताओं की build optimization या release files download frequency सुधारने की प्रेरणा कम हो सकती है
- संक्रमण काल में read-only mirror बनाए रखना या GitHub Pages और Actions को साथ में इस्तेमाल करना भी एक विकल्प हो सकता है
1 टिप्पणियां
Hacker News की राय
मुझे Codeberg से खुद कोई दिक्कत नहीं है, लेकिन यह GitHub का पूरा विकल्प नहीं है
व्यक्तिगत code repository या experimental scripts अपलोड करने में कई सीमाएँ हैं, और private repository 100MB तक सीमित है
GitHub Pages की तरह homepage host भी नहीं किया जा सकता। ऐसे उपयोग के लिए Forgejo को self-host करना एक व्यावहारिक विकल्प है
इससे जुड़ी जानकारी Codeberg FAQ में अच्छी तरह दी गई है
मैं OSS project GitHub पर इसलिए डालता हूँ क्योंकि community वहीं है
अगर सिर्फ code अपलोड करना हो, तो मैं सीधे SSH या SFTP से host करता हूँ
मैं तो सिर्फ अपने personal Gitea instance पर डालता हूँ, और stars या promotion की परवाह नहीं करता
मैं Forgejo self-hosting से अपने सारे personal projects संभाल रहा हूँ। GitHub बिल्कुल याद नहीं आता
Tailscale से access सीमित करके AI crawler block भी किए जा सकते हैं
आगे GitHub विकल्पों का मूल्यांकन करना और महत्वपूर्ण होता जाएगा
लेकिन GitHub ने CI और multi-architecture build का standard जैसा बना दिया है, इसलिए community-driven विकल्पों के लिए प्रतिस्पर्धा करना मुश्किल है
GitHub बहुत कुछ “मुफ़्त” देता है, लेकिन बदले में उसका data collection और training में इस्तेमाल होने की संभावना बहुत अधिक है
Codeberg private repository support नहीं करता, इसलिए Copilot को public repository scrape करने से रोका भी नहीं जा सकता
Codeberg FAQ के अनुसार, अगर private project चाहिए तो Forgejo self-hosting की सिफारिश की जाती है
हमारी company ने GitHub से GitLab self-hosting पर पूरी तरह migration कर लिया है
इसे Tailscale के पीछे रखा है, इसलिए SSO का झंझट नहीं है, और CI runner EKS और GPU cluster पर चलते हैं। ऐसा migration सोच रहे लोगों की मदद कर सकता हूँ
सिर्फ “GitHub को replace करें” कहना पर्याप्त नहीं है। नई आदतें और value proposition चाहिए
जिस तरह GitHub ने SourceForge को replace किया था, उसी तरह अगली पीढ़ी के platform को code writing और collaboration को real time में जोड़ना होगा
उदाहरण के लिए, Google Docs की तरह हर prompt पर commit बन जाने वाली संरचना हो सकती है
Codeberg आदर्शवादी लगता है, लेकिन व्यवहार में stability issues काफ़ी हैं
Cloudflare के बिना चलने की वजह से यह DDoS attack के प्रति संवेदनशील है, और downtime भी काफ़ी होता है। development के दौरान remote repository तक पहुँच न हो तो बहुत निराशा होती है
Microsoft के अधिग्रहण के बाद से मैं GitHub लगभग इस्तेमाल नहीं करता। Sourcehut का सरल email-आधारित workflow मुझे ज़्यादा पसंद है
CI भी मेरे हिसाब से बस ऐसा command-based system होना चाहिए जो local पर चल सके
code repository मूल रूप से distributed और federated structure होनी चाहिए
git की cryptographic signing system (GPG/SSH) की वजह से repository trust और commit trust को अलग किया जा सकता है
केंद्र में सिर्फ key server और namespace management रखें, बाकी सब distributed हो सकता है