नियम के साथ काम करने से जुड़ा नियम

समस्या की शिकायत करें सोर्स देखें

इन दो स्थितियों में, Basel Starlark के नियम, Baze LTS रिलीज़ के साथ काम करने में रुकावट डाल सकते हैं:

  1. यह नियम, आने वाले समय में होने वाली एलटीएस रिलीज़ के साथ काम करने की सुविधा पर काम नहीं करता. इसकी वजह यह है कि यह जिस सुविधा पर निर्भर है उसे HEAD पर बैज से हटा दिया गया है.
  2. इस नियम के हिसाब से, मौजूदा या पुरानी एलटीएस रिलीज़ के साथ काम करने की सुविधा पर असर पड़ता है. इसकी वजह यह है कि इस सुविधा पर निर्भर करता है कि यह सिर्फ़ नई Baज़ल एलटीएस रिलीज़ में ही उपलब्ध है.

हालांकि, यह नियम उनके उपयोगकर्ताओं के लिए असंगत बदलावों को भी भेज सकता है. जब Baज़ल में होने वाले नुकसान पहुंचा सकने वाले बदलावों के साथ-साथ, नियम और बेज़ल वर्शन को अपग्रेड करना, तो अक्सर बेज़ल वर्शन इस्तेमाल करने वालों को परेशानी हो सकती है. इस पेज पर बताया गया है कि किस तरह नियम बनाने वाले लोगों को Basel के साथ नियमों को काम करते रहने देना चाहिए, ताकि उपयोगकर्ता आसानी से Basel और नियमों को अपग्रेड कर सकें.

माइग्रेशन की प्रोसेस को मैनेज किया जा सकता है

हालांकि, बेज़ल के हर वर्शन और नियम के हर वर्शन के बीच काम करने की गारंटी देना मुमकिन नहीं है, लेकिन हमारा मकसद यह पक्का करना है कि Basel के उपयोगकर्ता, माइग्रेशन की प्रोसेस को मैनेज कर सकें. मैनेज की जा सकने वाली माइग्रेशन प्रोसेस ऐसी प्रोसेस है जिसमें उपयोगकर्ताओं को नियम के मेजर वर्शन और बेज़ेल के मेजर वर्शन को एक साथ अपग्रेड करने के लिए मजबूर नहीं किया जाता है. इससे उपयोगकर्ता, एक समय में एक ही सोर्स से काम न करने वाले बदलावों को मैनेज कर सकते हैं.

उदाहरण के लिए, नीचे दिए गए कंपैटबिलिटी मैट्रिक्स के साथ:

  • segment_foo 1.x + Bagel 4.x से criteria_foo 2.x + Basel 5.x पर माइग्रेट करना मैनेज करने लायक नहीं माना जाता है. इसकी वजह यह है कि उपयोगकर्ताओं को एक ही समय में, नियमों_foo और Basel के मेजर वर्शन को अपग्रेड करना होगा.
  • रूल_foo 2.x + Bagel 5.x से legal_foo 3.x + Basel 6.x पर माइग्रेट करना मैनेज करने लायक माना जाता है, क्योंकि उपयोगकर्ता सबसे पहले नियमों_foo को 2.x से 3.x में अपग्रेड कर सकते हैं. इसके लिए, वे मेजर वर्शन में बदलाव नहीं कर सकेंगे. इसके बाद, Basel को 5.x से 6.x में अपग्रेड कर सकेंगे.
रूल_फ़ूट 1.x रूल_फ़ूट 2.x रूल_foo 3.x HEAD
बेज़ल 4.x
बेज़ल 5.x
बेज़ल 6.x
HEAD

❌: मेजर नियम वाले वर्शन का कोई भी वर्शन, Basel LTS की रिलीज़ के साथ काम नहीं करता है.

✅: नियम का कम से कम एक वर्शन, बैजल एलटीएस रिलीज़ के नए वर्शन के साथ काम करता है.

सबसे सही तरीके

Basel के नियम लेखक हैं, इसलिए इन सबसे सही तरीकों को अपनाकर, उपयोगकर्ताओं के लिए माइग्रेशन प्रोसेस को मैनेज किया जा सकता है.

  1. नियम सेमैंटिक वर्शन के हिसाब से होना चाहिए: एक ही मेजर वर्शन के माइनर वर्शन, पुराने सिस्टम के साथ काम करते हैं.
  2. HEAD पर मौजूद नियम, Baज़र के नए एलटीएस रिलीज़ के साथ काम करना चाहिए.
  3. HEAD पर मौजूद नियम, HEAD पर Baज़र के साथ काम करना चाहिए. इसके लिए, आप ये काम करें
    • HEAD पर, Babel के साथ खुद का सीआई टेस्टिंग सेट अप करें
    • अपने प्रोजेक्ट को Basel डाउनस्ट्रीम टेस्टिंग में जोड़ें. अगर Baze में बदलाव करने पर भी आपके प्रोजेक्ट पर असर पड़ता है, तो Basel टीम आपके प्रोजेक्ट में समस्याएं दर्ज करती है. साथ ही, समस्याओं को समय पर हल करने के लिए, आपको हमारी डाउनस्ट्रीम प्रोजेक्ट नीतियों का पालन करना होगा.
  4. नियम का नया मेजर वर्शन, बैजल एलटीएस के नए वर्शन के साथ काम करना चाहिए.
  5. नियम का नया मेजर वर्शन, पिछले Baज़ल एलटीएस रिलीज़ के साथ काम करना चाहिए. साथ ही, नियम के पिछले मेजर वर्शन के साथ काम करना चाहिए.

2. और 3. हासिल करना सबसे अहम टास्क है, क्योंकि इससे 4. और 5 हासिल करना आसान हो जाता है. सकता है.

HEAD में बैज और हाल ही में रिलीज़ किए गए बैजल एलटीएस, दोनों के साथ आसानी से काम करने के लिए, नियम लिखने वाले लोग ये काम कर सकते हैं:

  • पुराने सिस्टम के साथ काम करने वाली सुविधाओं को एलटीएस नए वर्शन पर ले जाने का अनुरोध करें. ज़्यादा जानकारी के लिए, रिलीज़ की प्रोसेस देखें.
  • बेज़ल सुविधा की पहचान करने के लिए, bazel_features का इस्तेमाल करें.

आम तौर पर, सुझाए गए तरीकों से नियमों को ऐसा होना चाहिए कि वे Basel के साथ काम न करने वाले बदलावों के लिए माइग्रेट हो जाएं और HEAD पर नई सुविधाओं का इस्तेमाल कर पाएं. साथ ही, उन्हें बेज़ल एलटीएस के सबसे नए वर्शन के साथ काम करने की सुविधा न मिले.