प्रभावी सहयोग, विशेष रूप से ओपन सोर्स सॉफ्टवेयर डेवलपमेंट में, प्रभावी संगठन के साथ शुरू होता है। यह सुनिश्चित करने के लिए कि कुछ भी छूट न जाए, सामान्य नियम, "एक इश्यू, एक पुल रिक्वेस्ट" अंगूठे का एक अच्छा नियम है।
"डॉक्यूमेंटेशन में सभी टूटे हुए लिंक ठीक करें" जैसे बड़े दायरे वाले इश्यू खोलने के बजाय, ओपन सोर्स प्रोजेक्ट्स को कई छोटे और अधिक प्रबंधनीय इश्यू के साथ योगदानकर्ताओं को आकर्षित करने में अधिक सफलता मिलेगी।
पिछले उदाहरण में, आप टूटे हुए लिंक को सेक्शन या पेज के अनुसार दायरे में रख सकते हैं। यह अधिक योगदानकर्ताओं को कूदने और अपने समय की छोटी विंडो समर्पित करने की अनुमति देता है, बजाय एक व्यक्ति की प्रतीक्षा करने के जो एक बड़े और अधिक थकाऊ योगदान प्रयास को ले सके।
छोटे दायरे वाले इश्यू प्रोजेक्ट मेंटेनर्स को यह देखने में भी मदद करते हैं कि काम कहां पूरा हो चुका है और कहां नहीं। इससे संभावना कम हो जाती है कि इश्यू का कुछ हिस्सा छूट जाए, पूरा मान लिया जाए, और बाद में बग या सुरक्षा कमजोरियों का कारण बने।
यह सब ठीक है। लेकिन क्या होगा यदि आपने पहले से ही कई बड़े दायरे वाले इश्यू खोल रखे हैं, कुछ PR पहले ही सबमिट या मर्ज हो चुके हैं, और वर्तमान में आपको कोई अंदाजा नहीं है कि काम कहां शुरू हुआ या रुका?
आपके प्रोजेक्ट की स्थिति को वापस नियंत्रण में लाने के लिए थोड़ी छंटाई की आवश्यकता होगी। शुक्र है, कई कमांड लाइन टूल हैं जो आपको एक गड़बड़ रिपॉजिटरी को स्कैन, सॉर्ट और समझने में मदद करते हैं। यहां उनमें से एक छोटा चयन है जिनका मैं उपयोग करता हूं।
vim के साथ इंटरैक्टिव खोज और प्रतिस्थापन
आप Vim में एक फाइल खोल सकते हैं, फिर इंटरैक्टिव खोज और प्रतिस्थापन कर सकते हैं:
:%s/\/newword/gc
% वर्तमान फाइल की सभी लाइनों में देखने को इंगित करता है, s प्रतिस्थापन के लिए है, \ पूरे शब्द से मेल खाता है, और g "ग्लोबल" के लिए है जो हर घटना के लिए है। अंत में c आपको प्रत्येक परिवर्तन को किए जाने से पहले देखने और पुष्टि करने देगा। आप इसे c के बिना स्वचालित रूप से और बहुत तेजी से चला सकते हैं, लेकिन यदि आपने पैटर्न-मिलान त्रुटि की है तो आप चीजों को जटिल बनाने का जोखिम उठाते हैं।
नोड मॉड्यूल के साथ मार्कडाउन फाइलों में डेड लिंक खोजें
मार्कडाउन-लिंक-चेक नोड मॉड्यूल का एक बेहतरीन CLI साथी है।
मैं इसका इतनी बार उपयोग करता हूं कि मैंने इसे एक Bash एलियास फंक्शन में बदल दिया। ऐसा ही करने के लिए, इसे अपने .bashrc में जोड़ें:
# फोल्डर में मार्कडाउन लिंक चेक, रिकर्सिव
function mlc () {
find $1 -name \*.md -exec markdown-link-check -p {} \;
}
फिर mlc <filename> के साथ चलाएं।
find के साथ git रिपॉजिटरी के साथ या बिना सबडायरेक्टरी सूचीबद्ध करें
सभी सबडायरेक्टरी प्रिंट करें जो git रिपॉजिटरी हैं, या दूसरे शब्दों में, उनमें .git है:
find . -maxdepth 1 -type d -exec test -e '{}/.git' ';' -printf "is git repo: %p\n"
सभी सबडायरेक्टरी प्रिंट करने के लिए जो git रिपॉजिटरी नहीं हैं, ! के साथ टेस्ट को नकारें:
find . -maxdepth 1 -type d -exec test '!' -e '{}/.git' ';' -printf "not git repo: %p\n"
xargs के साथ सूची से कई git रिपॉजिटरी खींचें
मैंने शुरू में इसका उपयोग Bash स्क्रिप्ट के साथ अपने लैपटॉप को स्वचालित रूप से फिर से बनाने के हिस्से के रूप में किया था, लेकिन यह क्लाउड इंस्टेंस या Dockerfiles के साथ काम करते समय भी काफी उपयोगी है।
एक फाइल दी गई है, repos.txt जिसमें प्रत्येक लाइन पर एक रिपॉजिटरी का SSH लिंक है (और आपके SSH कुंजियाँ सेट अप हैं), चलाएं:
xargs -n1 git clone < repos.txt
यदि आप कई रिपॉजिटरी को खींचना और पुश करना चाहते हैं, तो मैंने पहले लिखा था कि अपने रिपॉजिटरी को प्रबंधित करने के लिए Bash वन-लाइनर का उपयोग कैसे करें।
jot के साथ नंबर द्वारा इश्यू सूचीबद्ध करें
मैं OWASP वेब सुरक्षा टेस्टिंग गाइड रिपॉजिटरी के लिए सह-लेखक और मेंटेनर हूं जहां मैंने हाल ही में एक बड़े इश्यू (यूप, यह "डॉक्यूमेंटेशन में सभी टूटे हुए लिंक ठीक करें" था - आपने कैसे अनुमान लगाया?) को लिया और इसे कई छोटे, अधिक प्रबंधनीय इश्यू में विभाजित किया। पूरे सैंतीस छोटे, अधिक प्रबंधनीय इश्यू।
मैं उन सभी इश्यू को गिनना चाहता था जो मूल एक बन गए, लेकिन सैंतीस इश्यू नंबर (#275 से #312) टाइप करने का विचार भयानक रूप से थकाऊ और समय लेने वाला लग रहा था। इसलिए, प्राकृतिक प्रोग्रामर फैशन में, मैंने उन सभी नंबरों को टाइप करने में लगने वाले समान समय को खर्च किया और इसे स्वचालित करने का एक तरीका तैयार किया।
jot यूटिलिटी (apt install athena-jot) एक छोटा सा टूल है जो तब बहुत मदद करता है जब आप कुछ नंबर प्रिंट करना चाहते हैं। बस इसे बताएं कि आप कितने चाहते हैं, और कहां शुरू और रुकना है।
# jot [ reps [ begin [ end ] ] ]
jot 37 275 312
यह 275 से 312 तक, समावेशी, प्रत्येक नंबर को एक नई लाइन पर प्रिंट करता है। इन्हें इश्यू नंबर नोटेशन में बनाने के लिए जो GitHub और कई अन्य प्लेटफॉर्म स्वचालित रूप से पहचानते हैं और लिंक में बदल देते हैं, आप आउटपुट को awk में पाइप कर सकते हैं।
jot 37 275 312 | awk '{printf "#"$0", "}'
#275, #276, #277, #278, #279, #280, #281, #282, #283, #284, #285, #286, #287, #288, #289, #290, #291, #292, #293, #295, #296, #297, #298, #299, #300, #301, #302, #303, #304, #305, #306, #307, #308, #309, #310, #311, #312
आप jot का उपयोग रैंडम या रिडंडेंट डेटा उत्पन्न करने के लिए भी कर सकते हैं, मुख्य रूप से डेवलपमेंट या टेस्टिंग उद्देश्यों के लिए।
CLI-संचालित ओपन सोर्स संगठन
एक अच्छी तरह से व्यवस्थित ओपन सोर्स रिपॉजिटरी एक अच्छी तरह से रखरखाव वाला ओपन सोर्स प्रोजेक्ट है। इस पोस्ट को आसान संदर्भ के लिए सेव करें, और अपने नए खोजे गए CLI सुपरपावर का उपयोग अच्छे के लिए करें!