बेज़ल में नुकसान पहुंचाने वाले बदलाव करना ज़रूरी है. हमें यह करना पड़ेगा हमारे डिज़ाइन बदल सकते हैं और उन चीज़ों को ठीक कर सकते हैं जो बिलकुल काम नहीं करतीं. हालांकि, हमें ताकि कम्यूनिटी और बेज़ल नेटवर्क हमारी नीतियों का पालन कर सकें. इसके चलते, Basel प्रोजेक्ट ने पुराने सिस्टम के साथ काम करने से जुड़ी नीति. इस दस्तावेज़ में, बेज़ल योगदान देने वालों के लिए, अपनी खबर को में बदलाव कर लिया है, ताकि इस नीति का पालन हो सके.
दस्तावेज़ डिज़ाइन करने से जुड़ी नीति का पालन करें.
GitHub से जुड़ी समस्या
GitHub से जुड़ी समस्या दर्ज करें बेज़ल रिपॉज़िटरी में. उदाहरण देखें.
हमारा सुझाव है कि:
शीर्षक झंडे के नाम से शुरू होता है (झंडे का नाम इससे शुरू होगा
incompatible_
).जब आप लेबल जोड़ें
incompatible-change
.ब्यौरे में बदलाव की जानकारी और इससे जुड़ा लिंक होता है डिज़ाइन से जुड़े दस्तावेज़ तैयार करता है.
ब्यौरे में माइग्रेशन की रेसिपी शामिल होती है. इससे लोगों को यह पता चलता है कि उन्हें अपना कोड अपडेट करना होगा. आम तौर पर, जब बदलाव मकैनिकल हो, तो उसके साथ माइग्रेशन टूल.
ब्यौरे में गड़बड़ी के उस मैसेज का उदाहरण शामिल होता है जो उपयोगकर्ताओं को तब मिलेगा, जब वे माइग्रेट नहीं होते. ऐसा करने पर, GitHub की समस्या को आसानी से खोजा जा सकेगा खोज इंजन. पक्का करें कि गड़बड़ी का मैसेज मददगार हो और उस पर कार्रवाई की जा सके. जब संभव हो, तब गड़बड़ी के मैसेज में उस सेवा का नाम शामिल होना चाहिए जो काम नहीं करती फ़्लैग करें.
माइग्रेशन टूल के लिए, इसमें योगदान दें
बिल्डिफ़ायर.
यह BUILD
, WORKSPACE
, और .bzl
फ़ाइलों में अपने-आप होने वाले सुधार लागू कर सकता है.
यह चेतावनियों की भी रिपोर्ट कर सकता है.
लागू करना
बेज़ेल में नया फ़्लैग बनाएं. डिफ़ॉल्ट मान गलत होना चाहिए. सहायता टेक्स्ट
इसमें GitHub की समस्या का यूआरएल शामिल होना चाहिए. झंडे का नाम इससे शुरू होता है
incompatible_
, इसे मेटाडेटा टैग की ज़रूरत है:
metadataTags = {
OptionMetadataTag.INCOMPATIBLE_CHANGE,
},
तय की गई जानकारी में, फ़्लैग के बारे में कम शब्दों में खास जानकारी दें.
साथ ही, इस फ़ॉर्म में RELNOTES:
भी जोड़ें:
RELNOTES: --incompatible_name_of_flag has been added. See #xyz for details
कमेंट को संबंधित दस्तावेज़ भी अपडेट करना चाहिए, ताकि कमिट की विंडो में मौजूद होता है, जिसमें कोड और दस्तावेज़ के साथ असंगत होता है. हमारे दस्तावेज़ का वर्शन है, दस्तावेज़ में किए गए बदलाव अनजाने में नहीं होंगे समय से पहले रिलीज़ किया जाता है.
लेबल
कमिटमेंट को मर्ज करने और काम न करने वाले बदलाव को लागू करने के लिए तैयार करने के बाद, लेबल जोड़ें
migration-ready
समस्या को हल करने में मदद मिलेगी.
अगर फ़्लैग में कोई समस्या मिलती है और उपयोगकर्ताओं को अभी माइग्रेट करने की उम्मीद नहीं है, तो:
migration-ready
फ़्लैग हटाएं.
अगर आपको अगली बड़ी रिलीज़ में फ़्लैग को फ़्लिप करना है, तो `breaking-change-X.0" लेबल जोड़ें समस्या हल करने में मदद मिलती है.
डेटा स्टोर करने की जगहें अपडेट की जा रही हैं
Basel CI, अहम प्रोजेक्ट की सूची का टेस्ट करती है
Bazz@HEAD + डाउनस्ट्रीम. इनमें से ज़्यादातर लोग अक्सर
इसलिए, ज़रूरी है कि अन्य Ba बैंक के प्रोजेक्ट की डिपेंडेंसी हो, ताकि पूरी कम्यूनिटी के लिए माइग्रेशन की प्रोसेस को अनब्लॉक किया जा सके. इन प्रोजेक्ट के माइग्रेशन स्टेटस पर नज़र रखने के लिए, bazelisk-plus-incompatible-flags
पाइपलाइन का इस्तेमाल किया जा सकता है.
यहां देखें कि यह पाइपलाइन कैसे काम करती है.
हमारी डेवलपर सहायता टीम migration-ready
लेबल पर नज़र रखती है. इस लेबल को GitHub की समस्या में जोड़ने के बाद, ये इन चीज़ों को हैंडल करेंगे:
GitHub की समस्या में एक टिप्पणी करके, माइग्रेट किए जाने वाले फ़ेलियर और डाउनस्ट्रीम प्रोजेक्ट की सूची ट्रैक करें (उदाहरण देखें)
GitHub से जुड़ी समस्याओं को फ़ाइल करें, ताकि जिन डाउनस्ट्रीम प्रोजेक्ट में बदलाव नहीं हुआ है उनके मालिकों को इसकी जानकारी दी जा सके. (उदाहरण देखें)
फ़ॉलो अप करें, ताकि यह पक्का किया जा सके कि सभी समस्याओं को, टारगेट रिलीज़ की तारीख से पहले हल कर लिया गया है
डाउनस्ट्रीम पाइपलाइन में मौजूद प्रोजेक्ट माइग्रेट करने की पूरी ज़िम्मेदारी, असंगत न होने वाले बदलाव लेखक की नहीं है, लेकिन माइग्रेशन में तेज़ी लाने और बेज़ेल उपयोगकर्ताओं और बेज़ल ग्रीन टीम दोनों का जीवन आसान बनाने के लिए आप नीचे दिए गए काम कर सकते हैं.
डाउनस्ट्रीम प्रोजेक्ट ठीक करने के लिए, पीआर से जुड़ी अनुमतियां भेजें.
माइग्रेशन में मदद पाने के लिए, Bagel कम्यूनिटी से संपर्क करें. उदाहरण के लिए, Bagel Rules Authors SIG.
फ़्लैग फ़्लिप करना
फ़्लैग की डिफ़ॉल्ट वैल्यू को 'सही' पर सेट करने से पहले, कृपया यह पक्का करें कि:
नेटवर्क में डेटा स्टोर करने की मुख्य जगहों को माइग्रेट कर दिया गया है.
bazelisk-plus-incompatible-flags
पाइपलाइन पर, फ़्लैगThe following flags didn't break any passing Bazel team owned/co-owned projects
के नीचे दिखना चाहिए.चेकलिस्ट में मौजूद सभी समस्याओं को 'ठीक की गई'/'बंद है' के तौर पर मार्क किया जाता है.
उपयोगकर्ता की चिंताओं और सवालों का समाधान कर दिया गया है.
जब फ़्लैग बेज़ल में फ़्लिप होने के लिए तैयार हो, लेकिन Google में इंटरनल माइग्रेशन के दौरान ब्लॉक हो जाए, तो फ़्लैग फ़्लिप को अनब्लॉक करने के लिए, कृपया इंटरनल blazerc
फ़ाइल में फ़्लैग की वैल्यू को 'गलत' पर सेट करें. ऐसा करके, हम यह पक्का कर सकते हैं कि Basel के उपयोगकर्ता, जल्द से जल्द डिफ़ॉल्ट रूप से नए तरीके का पालन करें.
फ़्लैग को डिफ़ॉल्ट तौर पर 'सही' पर सेट करते समय, कृपया:
- तय किए गए ब्यौरे में
RELNOTES[INC]
का इस्तेमाल करें. ऐसा करने के लिए, निम्न प्रारूप:RELNOTES[INC]: --incompatible_name_of_flag is flipped to true. See #xyz for details
तय की गई अन्य जानकारी में, अतिरिक्त जानकारी शामिल की जा सकती है. - ब्यौरे में
Fixes #xyz
का इस्तेमाल करें, ताकि GitHub की समस्या बंद हो सके जब कमिट को मर्ज किया जाता है. - अगर ज़रूरी हो, तो दस्तावेज़ पढ़ें और अपडेट करें.
- फ़्लैग हटाने के अनुरोध को ट्रैक करने के लिए, नई समस्या
#abc
दर्ज करें.
फ़्लैग हटाया जा रहा है
फ़्लैग को HEAD पर फ़्लिप करने के बाद, इसे बाद में Basel से हटा दिया जाना चाहिए. अगर आपको ऐसे फ़्लैग को हटाना है जो काम नहीं करता, तो:
- अगर यह बदलाव बड़े पैमाने पर काम नहीं करता है, तो उपयोगकर्ताओं को माइग्रेट करने के लिए ज़्यादा समय दें. आम तौर पर, फ़्लैग कम से कम एक मुख्य रिलीज़ में उपलब्ध होना चाहिए.
- फ़्लैग को हटाने वाली प्रतिबद्धता के लिए, ब्यौरे में
Fixes #abc
का इस्तेमाल करें ताकि कमिट को मर्ज किए जाने पर, GitHub की समस्या बंद हो जाए.