Aracılığıyla paylaş


Git platformlar arası uyumluluk

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Windows, macOS ve Linux dosya sistemleri, bir veya daha fazla platformda her zaman desteklenmeyen sınırlamalara ve davranışlara sahiptir. Git platformlar arası bir teknoloji olduğundan, bir platformdaki bir geliştiricinin başka bir platformun dosya sistemiyle uyumsuz adlara sahip dosya veya klasörler içeren bir işleme yapması mümkündür. Diğer platformlardaki geliştiriciler desteklenmeyen dosya veya yol adları nedeniyle çalışma dizinlerini bozan bir işlemeyi farkında olmadan kullanıma alabildiğinden deponuzu bu uyumsuzluğa karşı korumak önemlidir.

Azure Repos, deponuzu bir veya daha fazla platformla uyumlu olmayan işlemeleri gönderen kişilerden korumaya yardımcı olan üç platformlar arası uyumluluk ayarı sunar. Bu ayarlar, dosya sistemleriyle ilgili aşağıdaki sınırlamalarla ilgilidir:

  • Büyük/küçük harfe duyarlı
  • Dosya ve klasör adlarında kısıtlamalar
  • Yol uzunluğu kısıtlamaları

Büyük/küçük harfe duyarlı

Windows ve macOS dosya sistemleri varsayılan olarak büyük/küçük harfe duyarlı değildir (ancak büyük/küçük harf koruma). Linux dosya sistemlerinin çoğu büyük/küçük harfe duyarlıdır. Git, başlangıçta Linux çekirdeğinin sürüm denetim sistemi olacak şekilde oluşturulmuş olduğundan büyük/küçük harfe duyarlıdır.

Windows için Git büyük/küçük harfe duyarlı olmayan bir işletim sistemiyle ilgili sorunların çoğunu çözse de, birkaç tuhaflık kalır.

Dosya ve klasör adları

Linux'ta hem File.txt hem de file.txt içeren bir Git deposunu kontrol etmek sorun değildir. Bunlar ayrı dosya adlarıdır. Windows ve macOS'ta her iki dosyayı da kullanıma almak, ikincinin ilkinin üzerine yazmasına neden olur. İki klasör yalnızca büyük/küçük harfe göre farklılık gösteriyorsa, büyük/küçük harfe duyarlı olmayan dosya sistemlerinde içerikleri birlikte karıştırılır.

Büyük/küçük harf çakışmaları olan bir deponun düzeltilmesi için iki yol vardır:

  • Büyük/küçük harfe duyarlı bir ortamda depoya göz atın. Artık çakışmaması için dosya ve klasörleri yeniden adlandırın ve ardından bu değişiklikleri depoya gönderin. Linux için Windows Alt Sistemi böyle bir ortamdır.
  • Her çakışma için komutunu git mv -f <conflicting name> <non-conflicting name> kullanın. Her iki dosya adı için de tam büyük harf kullanımına dikkat edin.

İlk etapta büyük/küçük harf çakışmaları oluşturmaktan kaçınmak iyidir. Azure Repos, bu duruma yol açacak gönderimleri önlemek için bir büyük/küçük harf zorlama ayarı sunar. Geliştiriciler için, dosyaları işlemek için sekme tamamlama kullanma alışkanlığını benimsemek de yardımcı olacaktır. Hem Windows hem de macOS büyük/küçük harf koruma sağladığından, bu yaklaşımlar Git'in iç bileşenlerinin dosya sisteminin kullandığı büyük/küçük harfle tam olarak aynı büyük/küçük harfle görmesini sağlar.

Dal ve etiket adları

Yalnızca büyük/küçük harf bakımından farklı olan iki dal veya etiket (refs olarak bilinir) oluşturabilirsiniz. Git'in iç işlevleri, Azure DevOps Services ve Azure DevOps Server ile birlikte bunları iki ayrı refs olarak ele alır. Git, bir kullanıcının makinesinde refs depolamak için dosya sistemini kullanır. Belirsizlik nedeniyle getirmeler ve diğer işlemler başarısız olur.

Küçük bir dosya her başvuru dosyasını temsil eder. Başv adı eğik çizgi (/) karakterleri içeriyorsa, klasörler son eğik çizgiden önceki bölümleri gösterir.

Sorunlardan kaçınmanın basit bir yolu, her zaman küçük harfli dal ve etiket adlarını kullanmaktır. Bu sorunla ilgili iki dal veya etiket oluşturduysanız, bunları Azure Repos web kullanıcı arabiriminde düzeltebilirsiniz.

Dal adlarını düzeltmek için:

  1. Dallar sayfasında ilgili işlemeye gidin.
  2. Kısayol menüsünde Yeni dal'ı seçin.
  3. Dala büyük/küçük harf çakışması olmayan yeni bir ad verin.
  4. Dallar için sayfaya dönün ve çakışan dalı silin.

Etiket adlarını düzeltmek için:

  1. Etiketlerin sayfasında etiketli işlemeye gidin.
  2. Kısayol menüsünde Etiket oluştur'u seçin.
  3. Etikete büyük/küçük harf çakışması olmayan yeni bir ad verin.
  4. Etiketler için sayfaya dönün ve çakışan etiketi silin.

Yol ve dosya adı kısıtlamaları

Windows, macOS ve Linux işletim sistemlerinin dosya adları ve yolları için çeşitli sınırlamaları vardır. Bu sınırlamalar, birden çok platformda Git kullanan ekipler için sorun oluşturabilecek dosya veya klasörleri adlandırabileceklerini kısıtlar.

Örneğin, bir platformdaki bir geliştiricinin, başka bir platformda geçersiz olan bir dosya adı veya yol uzunluğu içeren paylaşılan depoda değişiklik işlediğini düşünün. Daha sonra, başka bir geliştirici içeriğin geçersiz olduğu bir platformda bu işlemeyi kullanıma almaya çalışır. Bu durum, bozuk verilerle deponuza zarar verme potansiyeline sahip bozuk bir çalışma dizinine neden olur.

Azure Repos, aşağıdaki sınırlamalardan birini veya daha fazlasını ihlal eden işlemeleri içeren gönderimleri engelleyen depo ayarları sunar.

Dosya adları ve yolları için başvuru tablosu

Kısıtlamalar/Platformlar Windows Mac OS Linux
Dosya adı kısıtlamaları Ayrılmış dosya adları: CON, PRN, AUX, NUL, COM1-COM9, LPT1-LPT9

Ayrılmış dosya adları ve ardından .

Ayrılmış karakterler: \ / : * ? " < >

Boşlukla veya boşlukla . biten dosya adları
Ile biten dosya adları / Ile biten dosya adları /
Yol uzunluğu kısıtlamaları Windows'taki yolların uzunluğu en fazla 260 karakterdir (null sonlandırıcı dahil).

.NET içeren dizinler için, tam dosya adı 260 karakterden az ve dizin adı 248 karakterden az olmalıdır.
Dosya adları 255 karakterle sınırlıdır.

HFS+ dilinde yol üst sınırı sınırsız olarak belgelenir, ancak bazı macOS sürümleri yolları 1.016 karakterle kaplar. Bazı dosya sistemleri yol üst sınırı olarak 1.016'yı destekler.
Dosya adları 255 karakterle sınırlıdır.

Yol üst sınırı 4096'dır.

Kodlama desteği

Not

Bu bölümde açıklanan kodlama desteği Azure DevOps Server 2019.1 ve sonraki sürümlerde desteklenir.

Microsoft, web anında iletme uç noktası aracılığıyla UTF-16 ve UTF-32 kodlama desteği ekledi. Bu destek, dosyalarınızı UTF-8 olarak yeniden yazmanız gerekmeyecek şekilde kodlama türünü koruduğumuz anlamına gelir. Web üzerinden utf kodlaması olmayan bir dosyayı kaydetmeye çalıştığınızda da bir uyarı görürsünüz (yalnızca UTF kodlamasını destekler).

Aşağıdaki ekran görüntüsünde, web gönderimi kullanarak kodlama değişiklikleri eklediğinizde görüntülenen iletişim kutusu örneği gösterilmektedir.

Web gönderimi aracılığıyla kodlama değişikliklerinin tanıtılmasıyla ilgili iletişim kutusunu gösteren ekran görüntüsü.