Zarar veren değişiklikleri kullanıma sunma kılavuzu

Sorun bildirin Kaynağı göster

Bazel'de zarar verici değişiklikler yapmamız kaçınılmazdır. Tasarımlarımızı değiştirmemiz ve düzgün çalışmayan şeyleri düzeltmemiz gerekecek. Yine de topluluk ve Bazel ekosisteminin aynı yoldan devam edebilmesini sağlamamız gerekiyor. Bu amaçla, Bazel projesi geriye dönük uyumluluk politikası benimsemiştir. Bu dokümanda, Bazel'e katkıda bulunanların bu politikaya uymak için Bazel'de zarar veren bir değişiklik yapması için gereken süreç açıklanmaktadır.

  1. Tasarım dokümanı politikasına uyun.

  2. GitHub sorunu bildirin.

  3. Değişikliği uygulayın.

  4. Etiketleri güncelleyin.

  5. Depoları güncelleyin.

  6. Uyumsuz işareti çevirin.

GitHub sorunu

Bazel deposunda bir GitHub sorunu bildirin. Örneği inceleyin.

Aşağıdakileri yapmanızı öneririz:

  • Başlık, işaretin adıyla başlar (bayrak adı incompatible_ ile başlar).

  • incompatible-change etiketini eklersiniz.

  • Açıklamada, değişiklikle ilgili bir açıklama ve ilgili tasarım belgelerinin bağlantısı yer alır.

  • Açıklama, kullanıcılara kodlarını nasıl güncellemeleri gerektiğini açıklayan bir taşıma tarifi içerir. İdeal olarak, değişiklik mekanik olduğunda bir taşıma aracının bağlantısını ekleyin.

  • Açıklamada, kullanıcıların taşıma işlemini gerçekleştirmemeleri halinde alacakları hata mesajıyla ilgili bir örnek yer alır. Bu, GitHub sorununu arama motorlarında daha kolay bulunabilir hale getirecektir. Hata mesajının faydalı olduğundan ve işlem yapılabilir olduğundan emin olun. Mümkün olduğunda, hata mesajı uyumlu olmayan işaretin adını içermelidir.

Taşıma aracı için Buildifier'a katkıda bulunabilirsiniz. BUILD, WORKSPACE ve .bzl dosyalarına otomatik düzeltmeler uygulayabilir. Uyarı da bildirebilir.

Uygulama

Bazel'de yeni bayrak oluşturun. Varsayılan değer false (yanlış) olmalıdır. Yardım metni, GitHub sorununun URL'sini içermelidir. İşaret adı incompatible_ ile başladığından meta veri etiketleri gerektirir:

      metadataTags = {
        OptionMetadataTag.INCOMPATIBLE_CHANGE,
      },

Kaydetme açıklamasına bayrağın kısa bir özetini ekleyin. Aşağıdaki formda RELNOTES: etiketini de ekleyin: RELNOTES: --incompatible_name_of_flag has been added. See #xyz for details

Kodun belgelerle tutarsız olduğu bir taahhüt penceresi olmaması için kaydetme, ilgili belgeleri de güncellemelidir. Belgelerimizin sürümü bulunduğundan, dokümanlarda yapılan değişiklikler yanlışlıkla erken yayınlanmayacaktır.

Etiketler

Kaydetme işlemi birleştirilip uyumlu olmayan değişiklik kullanıma hazır olduğunda GitHub sorununa migration-ready etiketini ekleyin.

Bayrakla ilgili bir sorun bulunursa ve kullanıcıların henüz taşınması beklenmiyorsa: migration-ready işaretlerini kaldırın.

Bir sonraki ana sürümde işareti değiştirmeyi planlıyorsanız soruna "breaking-change-X.0" etiketini ekleyin.

Kod depolarını güncelleme

Bazel CI, önemli projelerin bir listesini Bazel@HEAD + Downstream adresinde test eder. Bunların çoğu genellikle diğer Bazel projelerinin bağımlılığıdır. Bu nedenle, daha geniş bir topluluğa geçişin önündeki engelleri kaldırmak adına bunları taşımak önemlidir. Bu projelerin taşıma durumunu izlemek için bazelisk-plus-incompatible-flags ardışık düzenini kullanabilirsiniz. Bu ardışık düzenin nasıl çalıştığını buradan kontrol edebilirsiniz.

Geliştirici destek ekibimiz, migration-ready etiketini izler. GitHub sorununa etiket eklediğinizde şu işlemler gerçekleştirilir:

  1. Hataların ve taşınması gereken aşağı akış projelerinin listesini takip etmek için GitHub sorununda bir yorum oluşturun (Örneği inceleyin)

  2. Uyumsuz değişikliğinizden etkilenen her aşağı akış projesinin sahiplerini bilgilendirmek için GitHub sorunlarını bildirin (örneğe bakın)

  3. Hedeflenen yayın tarihinden önce tüm sorunların giderildiğinden emin olmak için takip edin

Aşağı akış ardışık düzeninde projeleri taşıma işlemi tamamen uyumsuz değişiklik yazarının sorumluluğu DEĞİLDİR. Ancak taşıma işlemini hızlandırmak ve hem Bazel kullanıcılarının hem de Bazel Yeşil Ekibi'nin hayatını kolaylaştırmak için aşağıdakileri yapabilirsiniz.

  1. Satışa dönük projeleri düzeltmek için halkla ilişkiler belgesi göndermek.

  2. Taşıma konusunda yardım almak için Bazel topluluğuna ulaşın (ör. Bazel Rules Authors SIG).

Bayrak ters dönüyor

İşaretin varsayılan değerini true olarak çevirmeden önce lütfen şunlardan emin olun:

  • Ekosistemdeki çekirdek depolar taşınır.

    bazelisk-plus-incompatible-flags ardışık düzeninde bayrak, The following flags didn't break any passing Bazel team owned/co-owned projects altında görünecektir.

  • Kontrol listesindeki tüm sorunlar düzeltildi/kapatıldı olarak işaretlenir.

  • Kullanıcı endişeleri ve soruları çözüldü.

İşaret Bazel'de açılmaya hazır olduğunda ancak Google'daki dahili taşıma işleminde engellendiğinde, bayrak çevirme engelini kaldırmak için dahili blazerc dosyasında bayrak değerini false olarak ayarlamayı lütfen düşünün. Bu sayede, mümkün olan en kısa sürede Bazel kullanıcılarının varsayılan olarak yeni davranışa güvenmesini sağlayabiliriz.

Varsayılan işareti "true" (doğru) olarak değiştirirken lütfen şunları yapın:

  • Taahhüt açıklamasında RELNOTES[INC] ifadesini aşağıdaki biçimde kullanın: RELNOTES[INC]: --incompatible_name_of_flag is flipped to true. See #xyz for details Taahhüt açıklamasının geri kalanına ek bilgiler ekleyebilirsiniz.
  • Kayıt birleştirildiğinde GitHub sorununun kapatılması için açıklamada Fixes #xyz kullanın.
  • Gerekirse belgeleri inceleyin ve güncelleyin.
  • Bayrağın kaldırılmasını takip etmek için yeni bir sorun #abc oluşturun.

Bayrak kaldırılıyor

İşaret HEAD konumunda ters çevrildikten sonra, nihayetinde Bazel'den kaldırılması gerekir. Uyumsuz işareti kaldırmayı planladığınızda:

  • Önemli bir uyumsuz değişiklik söz konusuysa, taşıma işlemi için kullanıcılara daha fazla zaman bırakabilirsiniz. İdeal olarak, işaret en az bir ana sürümde bulunmalıdır.
  • İşareti kaldıran kaydetme işleminde açıklamada Fixes #abc kullanın. Böylece kayıt birleştirildiğinde GitHub sorunu kapatılır.