Reviewpatch – bir kod inceleme aracı

0
30

Reviewpatch – bir kod inceleme aracı

Herhangi bir şey için bize bir e-posta göndermekten çekinmeyin: merhaba AT Reviewpatch.org

Herkese açık olarak iletişim kurmak için lütfen GitHub Sorunlarını ve Tartışmalarını kullanın.

Tanıtım

Reviewpatch, yama iş akışına dayalı bir kod inceleme aracıdır. Reviewpatch, düz metin e-postalara güvenmek yerine, geliştiricilerin birbirleriyle işbirliği yapmaları için Web tabanlı bir kullanıcı arabirimi sağlar. Kaputun altında, neredeyse tüm mevcut git kurulumlarıyla uyumlu olmak için git-format-patch ve git-am gibi komutları kullanmaya devam ediyor.

Yama iş akışı, muhtemelen daha popüler olan çekme isteği iş akışından birçok açıdan önemli ölçüde farklıdır. Aşağıdaki karşılaştırmalara bakın.

Yama İş Akışı Çekme Talebi İş Akışı Bir dizi yama, bir yama seti oluşturur. Yamalar, yama setinin yeni bir sürümündeki iyileştirmelerle değiştirilmiştir. Takip taahhütlerine iyileştirmeler eklendi. Mevcut taahhütler değişmeden kalır. Merkezi bir git sunucusuna dayanmaz. Katkıda bulunanlar için salt okunur erişim yeterlidir. Katkıda bulunanlara verilen yazma izinlerine sahip merkezi bir git sunucusu gerektirir. İşlem hattı benzeri bir geliştirme modelini destekler ve kendi kendine birleştirme çakışmalarını azaltır. Bir konu dalı ile bir çekme talebi arasında esnek olmayan 1:1 yazışma. Yamaları yerel olarak işlemek için git olmayan araçlarla olası uyumluluk. Git gibi belirli bir sürüm kontrol aracına bağlı.

Aşağıdaki şema, inceleme eki kullanıcılarıyla ilgili veri akışını göstermektedir.

rp, inceleme ekinin bir parçası olarak sağlanan bir komut satırı aracıdır. Yamaları yönetmenize ve bunları sunucu tarafıyla senkronize etmenize yardımcı olur.

Katkıda bulunanlar, ana depodan en son değişiklikleri alır ve yerel değişiklikleri en üstte yeniden temel alır. rp create, HEAD ile mevcut dalın yukarı akış dalı (git branch -u aracılığıyla ayarlanır) arasındaki taahhütleri otomatik olarak bulur ve git-format-patch çıktılarını gözden geçirme sunucusuna yükler. Eş geliştiriciler, tarayıcıda yüklenen yama setlerini gözden geçirebilir. Açık onaylar, hakemler tarafından Web arayüzü üzerinden verilecektir. Bir yama seti onaylandıktan sonra, bir bakımcı onu yerel olarak uygulayabilir ve yukarı akışa itebilir. Katılımcı tekrar çektiğinde, ilerideki taahhütler git tarafından otomatik olarak yeniden temellendirilir ve mevcut dal temiz olur. Başlamak için İstemci Kurulumu, Sunucu Kurulumu ve/veya Hızlı Başlangıç ​​bölümünü okuyun.

sistem gereksinimleri

Hem istemci hem de sunucu, Fedora veya Ubuntu’nun yeni bir sürümünü gerektirir. macOS ikili dosyaları istek üzerine sağlanır ancak şimdilik desteklenmemektedir. Çalışma zamanında ikili dosyalar bazı dinamik kitaplıklar gerektirir. Ayrıca git’in $PATH içinde olmasını gerektirir.

Çalışma zamanı bağımlılıklarını Fedora’ya yüklemek için:

# dnf güncellemesi # dnf kurulumu git openssl-libs zlib

Çalışma zamanı bağımlılıklarını Ubuntu’ya kurmak için:

# apt-get güncelleme && apt-get kurulumu git libssl1.1 zlib1g

Reviewpatch, durum kalıcılığı için harici bir veritabanına ihtiyaç duymaz.

İstemci Kurulumu

Sürümler dizininden rpcli_${os_label}.tar.gz dosyasını indirin. Tarball’ın içinde rpcli adında bir yürütülebilir dosya var.

Sistem yöneticisiyseniz ve tüm kullanıcılar için yüklemek istiyorsanız, /usr/local/bin dizinine kopyalamanız yeterlidir:

% sudo cp rpcli /usr/local/bin/rp

Kendiniz için kuruyorsanız, yeniden adlandırın ve ~/.local/bin/rp olarak kopyalayın ve $PATH dosyanızda olduğundan emin olun.

Sunucu Kurulumu

Sürümler dizininden rpsrv_${os_label}.tar.gz dosyasını indirin. Tarball’ı, inceleme yama sunucusunu çalıştırmaya ayrılmış bir dizine çıkarın. Örnek olarak, çalışma dizini olarak /opt/reviewpatch kullanıyoruz. Ek olarak, lütfen sunucuyu çalıştırmak için özel bir kullanıcı (örn. rpsrv) oluşturun. Sunucunun kök izinlerine ihtiyacı yoktur.

% tar xvf rpsrv_${os_label}.tar.gz -C /opt/reviewpatch

Test modu

Fazla kurulum yapmadan denemek için, seçilen çalışma dizininden çalıştırmanız yeterlidir:

% cd /opt/reviewpatch % ./rpsrv –test-mode Varsayılan olarak localhost’a bağlanır ve 9999 numaralı bağlantı noktasını dinler. Nasıl göründüğünü görmek için http://localhost:9999’u açın. Ayrıca bunu .rpconfig.json’da uç nokta olarak kullanın.

Üretim Modu

Güvenlik nedeniyle, inceleme yama sunucusu üretim modunda bir ters proxy’nin arkasına yerleştirilmelidir. Kullanıcı kimlik doğrulaması, ters proxy’ye devredilir ve inceleme yama sunucusu, geçerli kullanıcı adı olarak bir HTTP başlığının değerini alır. Örneğin:

% ./rpsrv –username-header “X-Remote-User” Benzer şekilde, TLS şifrelemesi (örn. HTTPS) ve diğer pek çok şey de ters proxy tarafından işlenmelidir. Ters proxy olarak Apache HTTP Sunucusunu (yani httpd) kullanmanızı öneririz, ancak NGINX’i de kullanabilirsiniz. İşte httpd için örnek bir yapılandırma dosyası.

Ayrıca inceleme yama sunucusunu bir systemd hizmeti olarak yönetmek için systemd kullanmanızı öneririz. Aşağıdaki içeriklerle /etc/systemd/system/rpsrv.service adresinde bir dosya oluşturun:

[Unit]

Açıklama=reviewpatch sunucusu Requires=network.target

[Service]
Type=basit ExecStart=/opt/reviewpatch/rpsrv –username-header “X-Remote-User” User=rpsrv WorkingDirectory=/opt/reviewpatch

[Install]
WantedBy=multi-user.target /opt/reviewpatch/reqlog.json adresinde bir veri dosyası oluşturulur. Başka bir yere kaydetmek için yukarıdaki WorkingDirectory yapılandırmasını değiştirin.

Hızlı başlangıç

Projenizin git deposunun https://siteniz/repo.git konumunda olduğunu ve onu $HOME içine klonladığınızı varsayalım:

% cd ~ % git klon https://siteniz/repo.git projem && cd projem % git durumu Şube yöneticisinde Şubeniz ‘origin/master’ ile güncel. taahhüt edilecek bir şey yok, ağaç temiz çalışıyor Lütfen vurgulanan satıra dikkat edin: git klonu zaten sizin için yukarı akış izlemeyi ayarladı. Bir şey üzerinde çalışmaya başlamak için, şununla bir konu dalı oluşturun: % git checkout -tb benim-konu kaynağım/master Konu dalında, git taahhütleri her zamanki gibi oluşturulabilir, düzenlenebilir ve özenle seçilebilir. Örneğin: % echo Merhaba > merhaba % git ekle merhaba % git commit -m “merhaba dosyasını ekle” % git status Şubede my-topic Şubeniz 1 taahhüt ile ‘origin/master’ önünde.

İstemci Yapılandırması

Reviewpatch ile herhangi bir şey yapmadan önce, rp komutunun Reviewpatch sunucusunun nerede olduğunu bilmesi için projenin yerel olarak yapılandırılması gerekiyor. Proje kök dizini altında bir JSON dosyası oluşturmanız yeterlidir:

% echo ‘{“endpoint”:”http://address:port”}’ > .rpconfig.json Uygun uç nokta bilgilerini almak için lütfen sistem yöneticinize ulaşın. Sunucuyu test modunda çalıştırmak için Sunucu Kurulumunu izlediyseniz, uç nokta olarak http://localhost:9999 kullanın.

kimlik doğrulama

Üretim modunda, inceleme yama sunucusunun Web arabirimi, ters proxy tarafından korunur. Test modunda, Web arayüzü korumasızdır ve geçerli kimliği doğrulanmış kullanıcı, test kullanıcısı olarak kodlanmıştır.

Her iki modda da, rp komut satırı arabirimi, kimlik doğrulama için API anahtarlarını kullanır. Bir anahtar çifti oluşturmak için aşağıdaki komutu çalıştırın:

% rp keygen kullanıcıadı Komut, gözden geçirme yama sunucusunun Web arayüzü aracılığıyla genel anahtarı kaydetmenizi ister. Hangi kullanıcı adını kullanacağınızdan emin değilseniz sistem yöneticinize sorun. Sunucuyu test modunda çalıştırmak için Sunucu Kurulumunu izlediyseniz, kullanıcı adı olarak testuser kullanın.

Kurulumunuzu doğrulamak için aşağıdaki komutu çalıştırın:

% rp whoami kullanıcı adı

Kod İnceleme Oluşturma

Konu dalındaki yamalar hazır olduğunda, aşağıdakilerle bir kod incelemesi oluşturun:

% rp create Oluşturulan kod incelemesi https://……/cr/42/1/1 Komut, bu konu dalının yukarı akışında olmayan git taahhütlerini arar ve bunları bir dizi yama olarak gönderir (örn. Bir patchset) sunucuya. Sunucu, kod incelemesi için sayısal bir kimlik (örn. 42) döndürür. Kod inceleme URL’leri, cr/x/y/z biçiminde dizeler içerir; burada x sayısal kimliktir, y yama seti sürümüdür ve z yama dizinidir.

rp komutu hakkında daha fazla bilgi edinmek için şunu çalıştırın:

% rp — yardım

Sürüm notları

Sürüm numaralarının önemli anlamları yoktur. Yalnızca çeşitli geliştirme yinelemelerini ayırt etmek için kullanılırlar. Örneğin, 1.0’ı Linux çekirdeği 1.0’da olduğu gibi düşünün; bu, herhangi bir kararlılık veya kalite garantisi anlamına gelmez. Mevcut veri dosyalarının her zaman yeni sürümler altında çalıştığından emin olmak için elimizden gelenin en iyisini yapıyoruz, böylece sistem yöneticilerinin yükseltmeler ve geçişler hakkında çok fazla endişelenmesine gerek kalmıyor.

1.0

5 Ekim 2021

Bu, Reviewpatch’in yayınlanan ilk sürümüdür. Birkaç aydır onu test ediyoruz ve ihtiyaçlarımızı karşılayacak kadar iyi çalışıyor gibi görünüyor. CI ve statik analiz ile ilgili iyileştirmeler hazır olduklarında yayınlanacaktır.

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz