Aracılığıyla paylaş


Git platformlar arası uyumluluk

Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022

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 harf duyarlılığı
  • Dosya ve klasör adlarında kısıtlamalar
  • Yol uzunluğu kısıtlamaları

Büyük/küçük harf duyarlılığı

Windows ve macOS dosya sistemleri varsayılan olarak büyük/küçük harfe duyarlı değildir (ancak büyük/küçük harfi korur). 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 kontrol etmek, ikinci dosyanın birincisinin üzerine yazılması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 veri deposunun düzeltilmesinin iki yolu vardır.

  • Büyük/küçük harfe duyarlı bir ortamda depoları kontrol edin. 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 bu tür ortamlardan biridir.
  • 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.

Başlangıçta büyük ve küçük harf uyuşmazlıkları oluşturmaktan kaçınmak iyidir. Azure Repos, bu duruma yol açacak gönderimleri önlemek için bir büyük/küçük harf duyarlılığı 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 harf duyarlılığı sağladığından, bu yaklaşımlar Git'in iç yapısının dosya sisteminin kullandığı büyük-küçük harflerin aynısını görmesini sağlar.

Dal ve etiket adları

Yalnızca harflerin büyük/küçük olması bakımından farklılık gösteren 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 çekmeler 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. Şubeye 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 commit'e 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 macOS Linux
Dosya adı kısıtlamaları Rezerve edilmiş dosya adları: CON, PRN, AUX, NUL, COM1-COM9, LPT1-LPT9

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

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

Boşluk veya . ile 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

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ü.