Bir projeyi ağ üzerinden paylaşmak Xcode'u taşımaz, çünkü uygulama Mac'inizde çalışmaya devam eder ve sunucudan proje verilerini istemeye devam eder. Xcode'u uzak Mac'te çalıştırıp ekranını görüntülemek başka bir düzenlemedir; uygulama ve dosyaları bir arada kalır, bağlantı yalnızca görüntüyü ve girdinizi taşır. Hangisini istediğinize herhangi bir şeyi yapılandırmadan önce karar vermek, sonraki karışıklığın çoğunu çözer.

Üç düzenleme olağan durumları kapsar ve çalışma alanının nerede yaşadığı ile hangi makinenin derlediği bakımından farklılaşır. Devam etmeden önce bu iki noktaya ilişkin yanıtınızı yazın.

Xcode'u çalıştıran makineyi adlandırın

İlk düzenlemede her şey yereldir: çalışma kopyası, dizin ve derleme Mac'inizde yaşar ve ağ yalnızca depo ile bağımlılık trafiğini taşır. İkincisinde proje Xcode ile birlikte uzak Mac'te kalır, bu yüzden dizinleme ve derleme dosyaların yanında gerçekleşirken bağlantı ekran içeriğini ve tuş vuruşlarını taşır. Üçüncüsünde düzenleme yerel olarak yapılır ve açık bir kaynak devrinden sonra derleme uzak bir ana makinede çalışır. Tablo her birinin neyi taşıdığını adlandırır.

ArrangementWhere the source livesWhat crosses the link
Everything localLocal diskRepository and dependency traffic
Remote Xcode, screen sharedRemote diskDisplay frames and input events
Local edit, remote buildBoth, with a handoffSource transfer, then build output

Önce orta sütunu okuyun, çünkü arızaların nerede görüneceğine o karar verir. Kaynağı uzak olan bir iş akışı bağlantı yavaş olduğunda başarısız olur, uzak derleyicisi olan bir iş akışı ise devir belirsiz olduğunda başarısız olur. Sizi her ikisinden sorumlu kılan yalnızca üçüncüsüdür.

Megabaytları değil, gidiş dönüşleri sayın

Bir düzenleyici ve bir dizinleyici çok sayıda küçük dosya işlemi yayımlar ve dosya sistemi uzak olduğunda her biri bir gidiş dönüşe dönüşür. Bu, bağlanmış bir çalışma alanını tek büyük bir kopyanın olmadığı biçimde gecikmeye duyarlı kılar, bu yüzden bir dosya aktarımının süresini ölçmek iş akışının nasıl hissettirdiği hakkında neredeyse hiçbir şey söylemez. Uzak görüntüleme ters profile sahiptir: sürekli bir akış taşır ve aktarım hızını gecikmeden daha iyi tolere eder. İkisini tek bir sayıyla karşılaştırmak kendinden emin ve yanlış bir yanıt üretir.

Hiçbir düzenleme doğası gereği en hızlı değildir. Doğru seçim gerçekte yaptığınız işe bağlıdır, bu yüzden sonraki adım bir kıyaslama testi değil o işi denemektir.

Kaynak devrini açık hale getirin

Her iki makinede de bir çalışma kopyası olduğunda, hangisinin yetkili olduğuna ve uzak derlemenin hangi revizyonu kullandığına karar verin. Bir commit, tek bir bağlanmış çalışma ağacını düzenleyen iki araçtan daha açık bir devirdir, çünkü commit'in bir kimliği vardır, bağlamanın yoktur. Üretilen çıktı ve dizin verileri de bir sahibe ihtiyaç duyar, çünkü kaynaktan yeniden oluşturulurlar ve kaynakmış gibi dolaşmamalıdırlar. Çakışma kuralları olmayan iki yönlü bir ayna iş akışı değildir, bir yarıştır.

Uzaktan derleme ayrıca uzak ana makinenin doğru araç zincirine sahip olmasını gerektirir ve özel bağımlılıklar için kimlik bilgilerini gerektirir. Ana makineye ulaşmanızı sağlayan bir VPN, hesap erişiminizi oraya ödünç vermez ve oraya Xcode kurmaz.

Bir iş akışına bağlanmadan önce yolu denetleyin

Uzak ana makineyi çevresinde bir şey tasarlamadan önce doğrulayın, sonra bağlantıyı iş akışının gerçekte gerçekleştireceği işlemlerle ölçün. Aşağıdaki komutlar araç zincirini, etkin geliştirici dizinini ve uzak çalışma alanlarını sancılı kılan dosya gözlem maliyetini denetler. Sonuncusunu yerel olarak değil ağ yolu üzerinden çalıştırın.

xcode-select -p
xcodebuild -version
ssh mac-builder 'xcodebuild -version'
time git status --porcelain

Tam bir Xcode kurulumu olmayan bir ana makine xcodebuild'den hata döndürür, bu bir ağ değil araç zinciri sorunudur. Geliştirici dizini derlemenin hangi Xcode'u kullanacağını gösterir ve yalnızca komut satırı araçlarına işaret eden bir yol, uygulamanın kurulu olmadığı anlamına gelir. Depo durumu komutunun süresini bağlanmış paylaşım üzerinden ölçmek gidiş dönüş maliyetini doğrudan ortaya çıkarır ve yerel bir çalıştırmayla karşılaştırmak önemli olan sayıyı verir. Bu fark zaten rahatsız ediciyse, bağlanmış çalışma alanı iş akışı gerçek bir düzenleyici altında daha kötü olacaktır.

Hangi düzenlemeyi seçtiğinizi, kaynağa hangi makinenin sahip olduğunu ve devrin nasıl işlediğini kaydedin. Bu not, bir sonraki işe alıştırmayı veya dizüstü bilgisayar değişimini bir soruşturma yerine yapılandırma görevine dönüştürür.

İlgili makaleler