İçeriğe geç

Merql

Saf PHP üç yönlü veritabanı birleştirmesi ve sütun düzeyinde çakışma çözümü. Git tarzı birleştirme anlamları MySQL ve SQLite tablolarına uygulanır.

Terminal
composer require merql/merql

En son sürüm v0.4.1 MIT PHP 8.2+

Uygulamada

Birleştirme, kaydedilmiş üç anlık görüntüyü okur ve yazılacak işlemlerle çözülecek çakışmaları döndürür.

Üç anlık görüntüyü birleştirin

İki kopya ayrılmadan önce base anlık görüntüsünü alın, ardından her tarafın (örneğin canlı veritabanı ile korumalı alan kopyasının) anlık görüntüsünü alın. ThreeWayMerge, her iki tarafı base ile karşılaştırır ve iki değişiklik kümesini birleştirir.

Sonuç sekmesinde ours content, theirs ise aynı satırın title ve status alanlarını düzenledi; bu nedenle birleştirme, çakışma olmadan üç düzenlemeyi de korur.

PHP
use Merql\Merge\ThreeWayMerge;

$merge = new ThreeWayMerge();
$result = $merge->merge($base, $ours, $theirs);

echo $result->operationCount(); // resolved operations
echo $result->conflictCount();  // unresolved conflicts

Üç Yönlü Birleştirme

Taban, bizimki, onlarınki. Metin satırları yerine anahtarlı veritabanı satırları ve sütunları üzerinde git tarzı üç yönlü birleştirme. İki dal arasındaki ekleme, güncelleme ve silmeleri algılar.

Sütun Düzeyinde Çözüm

Her iki taraf da aynı satırı değiştirdiğinde merql sütunları tek tek karşılaştırır. Yalnızca aynı sütun farklı değerlere değiştirildiyse çakışma bildirir.

İsteğe Bağlı Hücre Birleştirme

ThreeWayMerge'e bir CellMergeConfig geçirin; TEXT sütunlar Myers diff ile satır satır, JSON sütunlar anahtar anahtar birleştirilir. Merql facade ve CLI bunu etkinleştirmez.

Çoklu Veritabanı

Takılabilir bağlantı bağdaştırıcıları ve lehçe sürücüleri; yerleşik olarak MySQL ve SQLite ile.

Çakışma Algılama

Güncellemeye karşı güncelleme, güncellemeye karşı silme, silmeye karşı güncelleme ve eklemeye karşı ekleme; her biri tablo ve satır bilgisiyle bildirilir. Güncellemeye karşı güncelleme çakışmalarında sütun adı da belirtilir.

SQL Oluşturma

FK sıralamasıyla parametreli INSERT, UPDATE, DELETE ifadeleri. Deneme çalıştırması önizlemesi veya işlem içinde uygulama.

CLI

Komut satırından anlık görüntü alma, fark bulma ve birleştirme. Ortam değişkenleri aracılığıyla MySQL ve SQLite desteği sunar.

Test Edildi

Elle yazılmış beklentiler içeren 32 regresyon senaryosu (composer test:oracle). CI, 231 birim ve entegrasyon testlerini ve PHPStan düzey 10'u çalıştırır.

Merql neden tercih edilmeli

Anlık görüntüler dosyadır

Her anlık görüntü, makineler arasında kopyalayabileceğiniz veya sürüm denetimine kaydedebileceğiniz tek bir JSON dosyasıdır. Fark bulma ve birleştirme bu dosyaları okuduğundan veritabanı bağlantısı olmadan çalışır.

Yazmadan önce gözden geçirin

Birleştirme planı, her işleme ve değişiklik grubuna sabit bir kimlik verir ve base, ours, theirs ile sonuç satırlarını korur. İstediğiniz grupları seçip yalnızca bunları uygulayın.

Eskimiş planlar durdurulur

Korumalı uygulama yalnızca gözden geçirdiğiniz anlık görüntüyle eşleşen satırlara yazar. Bir ifade sıfır satırı etkilerse işlem geri alınır ve sonuç hata bilgisini içerir.

Sapma denetimiyle geri alma

Yazma işleminden hemen önceki canlı satırlardan bir geri alma planı oluşturun ve bunu JSON olarak saklayın. Geri almadan önce sapma denetimi satır parmak izlerini karşılaştırır ve o zamandan beri değişen satırların işlemlerini döndürür.

Karşılaştırma

Merql, üç anlık görüntüdeki satır verilerini birleştirir. Bu araçlar veritabanlarını sürümler, eşitler veya taşır; bunlar benzer amaçlı işlerdir.

Merql ile diğer araçların karşılaştırması
Dolt Şu konularda başarılıDolt, çatallayabileceğiniz, klonlayabileceğiniz, dallara ayırabileceğiniz, birleştirebileceğiniz, gönderebileceğiniz ve çekebileceğiniz bir SQL veritabanıdır; tıpkı bir Git deposunda olduğu gibi. Herhangi bir MySQL veritabanına bağlandığınız gibi buna da bağlanırsınız ve her hücrenin kökenini izler. Merql ile farkıMerql, zaten çalıştırdığınız MySQL veya SQLite veritabanını korur. Tabloları JSON anlık görüntü dosyaları olarak kaydeder ve base anlık görüntüsünü sizin seçtiğiniz üç dosyayı birleştirir.
pt-table-sync Şu konularda başarılıpt-table-sync, MySQL tabloları arasındaki farkları tek yönde veya sunucular arasında iki yönde bulup giderir. Bir çoğaltıcıyı eşitlerken değişiklikleri çoğaltma kaynağında yapar. Merql ile farkıİki yönlü eşitlemede pt-table-sync, çakışma sütununa göre kazanan satırı seçer ve değerlerini kopyalar. Merql ise her iki tarafı ortak bir base ile karşılaştırır, aynı satırın farklı sütunlarındaki düzenlemeleri birleştirir ve uyumsuz değişiklikleri çözmeniz için çakışma olarak bildirir.
sqldiff Şu konularda başarılısqldiff, iki SQLite veritabanını karşılaştırır ve ilkini ikinciye dönüştüren bir SQL betiği yazdırır. Ayrıca SQLite oturum uzantısı için ikili değişiklik kümesi yazabilir veya tablo başına değişen satırları özetleyebilir. Merql ile farkıİki yönlü fark, bir tarafın satır ekleyip eklemediğini veya diğer tarafın silip silmediğini belirleyemez. Merql bunu yanıtlamak için bir base anlık görüntüsü ekler, iki değişiklik kümesini birleştirir ve MySQL ile de çalışır.
Doctrine Migrations Şu konularda başarılıDoctrine Migrations, veritabanı şemanızı sürümleyerek şema değişikliklerinin üretime alınmadan önce gözden geçirilip test edilmesini sağlar. Merql ile farkıMerql bir şema taşıma aracı değildir. Satır verilerini birleştirir ve anlık görüntüler arasında eklenen veya kaldırılan sütunları bildirir; şema değişikliğini size bırakır.

Sorular ve yanıtlar

Merql dokümantasyonundan kısa yanıtlar.

İlk anlık görüntünüzden birleştirme planlarına, korumalı uygulamaya ve geri almaya kadar kılavuzu izleyin.