Git platformfüggetlen kompatibilitás

Azure DevOps Services | Azure DevOps Server 2022 – Azure DevOps Server 2019

A Windows, a macOS és a Linux fájlrendszerek olyan korlátozásokkal és viselkedésekkel rendelkeznek, amelyeket egy vagy több más platform nem mindig támogat. Mivel a Git platformfüggetlen technológia, lehetséges, hogy egy fejlesztő egy platformon olyan véglegesítést hajt végre, amely olyan fájlokat vagy mappákat tartalmaz, amelyek nem kompatibilis neveket tartalmaznak egy másik platform fájlrendszerével. Az adattár védelme az inkompatibilitás ellen azért fontos, mert más platformokon a fejlesztők tudatlanul is megnézhetnek egy véglegesítést, amely a nem támogatott fájl- vagy elérésiút-nevek miatt rontja a munkakönyvtárakat.

Az Azure Repos három platformfüggetlen kompatibilitási beállítást kínál, amelyek segítenek megvédeni az adattárat azoktól, akik egy vagy több platformmal nem kompatibilis véglegesítéseket küldnek. Ezek a beállítások a fájlrendszerekre vonatkozó alábbi korlátozásokhoz kapcsolódnak:

  • Kis- és nagybetűk érzékenysége
  • A fájl- és mappanevek korlátozásai
  • Útvonalhossz-korlátozások

Kis- és nagybetűk érzékenysége

A Windows és a macOS fájlrendszerek alapértelmezés szerint nem érzékenyek a kis- és nagybetűkre (de a kis- és nagybetűk megőrzésére). A linuxos fájlrendszerek többsége megkülönbözteti a kis- és nagybetűket. A Git eredetileg a Linux kernel verziókövetési rendszerének készült, így a kis- és nagybetűk megkülönböztetik.

Bár a Windows Git a kis- és nagybetűket nem érzékező operációs rendszerekkel kapcsolatos problémák nagy részét kezeli, néhány eltérés továbbra is fennáll.

Fájl- és mappanevek

Linuxon a File.txt és file.txt is tartalmazó Git-adattár kivétele nem jelent problémát. Ezek különböző fájlnevek. Windows és macOS rendszeren a két fájl kivétele miatt a második felülírja az elsőt. Ha két mappa csak esetenként különbözik, a rendszer a kis- és nagybetűket érzéketlen fájlrendszerekbe keveri.

A kis- és nagybetűk ütközésével rendelkező adattárak kétféleképpen javíthatóak:

  • Tekintse meg az adattárat egy kis- és nagybetűkre érzékeny környezetben. Nevezze át a fájlokat és mappákat, hogy ne ütközhessenek többé, majd küldje el ezeket a módosításokat az adattárba. Linuxos Windows-alrendszer egy ilyen környezet.
  • Minden ütközéshez használja a parancsot git mv -f <conflicting name> <non-conflicting name> . Ügyeljen arra, hogy mindkét fájlnéven pontos nagybetűket használjon.

Először is érdemes elkerülni az esetütközések létrehozását. Az Azure Repos egy esetkényszerítési beállítást kínál, amely megakadályozza az ehhez a helyzethez vezető leküldéseket. A fejlesztők számára a tabulátorkiegészítés használatának szokása a fájlok véglegesítéséhez is segít. Mivel a Windows és a macOS is esetmegőrző, ezek a megközelítések biztosítják, hogy a Git belső elemei pontosan ugyanazt a burkolatot lássák, mint amelyet a fájlrendszer használ.

Ág- és címkenevek

Létrehozhat két ágat vagy címkét (más néven refs), amelyek csak a burkolatban különböznek. A Git belső szolgáltatásai, valamint az Azure DevOps Services és az Azure DevOps Server két különálló refként kezeli őket. Egy felhasználó számítógépén a Git a fájlrendszerrel tárolja a fájlokat. A lekérések és más műveletek a kétértelműség miatt meghiúsulnak.

Egy kis fájl jelöli az egyes fájlokat. Ha a ref név perjel (/) karaktereket tartalmaz, a mappák az utolsó perjel előtti részeket jelölik.

A problémák elkerülésének egyik egyszerű módja, ha mindig kisbetűs ágat és címkeneveket használ. Ha már létrehozott két olyan ágat vagy címkét, amelyeknél ez a probléma jelentkezik, az Azure Repos webes felhasználói felületén kijavíthatja őket.

Ágnevek javítása:

  1. Az ágak oldalán lépjen a kapcsolódó véglegesítésre.
  2. A helyi menüben válassza az Új ág lehetőséget.
  3. Adjon egy új nevet az ágnak, amely nem ütközik esetütközéssel.
  4. Térjen vissza az ágak lapjára, és törölje az ütköző ágat.

Címkenevek javítása:

  1. A címkék oldalán lépjen a címkézett véglegesítésre.
  2. A helyi menüben válassza a Címke létrehozása lehetőséget.
  3. Adjon meg egy új nevet a címkének, amely nem ütközik esetütközéssel.
  4. Térjen vissza a címkék lapjára, és törölje az ütköző címkét.

Elérésiút- és fájlnévkorlátozások

A Windows, macOS és Linux operációs rendszerek különböző korlátozásokkal rendelkeznek a fájlnevekre és az elérési utakra vonatkozóan. Ezek a korlátozások korlátozzák, hogy mit nevezhet el fájloknak vagy mappáknak, ami problémákat okozhat a Gitet több platformon használó csapatok számára.

Tegyük fel például, hogy az egyik platform fejlesztője módosítást hajt végre a megosztott adattárban, amely egy másik platformon érvénytelen fájlnevet vagy elérési utat tartalmaz. Később egy másik fejlesztő megpróbálja ellenőrizni a véglegesítést egy olyan platformon, ahol a tartalom érvénytelen. Ez a helyzet egy sérült munkakönyvtárat eredményez, amely károsíthatja az adattárat sérült adatokkal.

Az Azure Repos olyan adattárbeállításokat kínál, amelyek letiltják azokat a véglegesítéseket tartalmazó leküldéseket, amelyek megsértik az alábbi korlátozások egy vagy többét.

Hivatkozástábla fájlnevekhez és elérési utakhoz

Korlátozások/platformok Windows macOS Linux
Fájlnévkorlátozások Fenntartott fájlnevek: CON, PRN, AUX, NUL, COM1-COM9, LPT1-LPT9

Fenntartott fájlnevek, majd .

Fenntartott karakterek: \ / : * ? " < >

Fájlnevek, amelyek a szóközben vagy a szóközben . végződnek
A végződésű fájlnevek / A végződésű fájlnevek /
Útvonalhossz-korlátozások A Windows elérési útjai legfeljebb 260 karakter hosszúságúak (beleértve a null terminátort is).

A .NET-et tartalmazó könyvtárak esetében a teljes fájlnévnek 260 karakternél kevesebbnek kell lennie, a címtár nevének pedig 248 karakternél kevesebbnek kell lennie.
A fájlnevek legfeljebb 255 karakter hosszúságúak.

A HFS+ elérési útjai korlátlanként vannak dokumentálva, bár egyes macOS-verziók 1016 karakter hosszúságúak. Egyes fájlrendszerek legfeljebb 1016-ot támogatnak.
A fájlnevek legfeljebb 255 karakter hosszúságúak.

Az elérési út maximális száma 4096.

Kódolás támogatása

Feljegyzés

Az ebben a szakaszban ismertetett kódolási támogatás az Azure DevOps Server 2019.1-es és újabb verzióiban támogatott.

A Microsoft támogatja az UTF-16 és az UTF-32 kódolást a webes leküldéses végponton keresztül. Ez a támogatás azt jelenti, hogy megőrizzük a kódolás típusát, így nem kell újraírnia a fájlokat UTF-8 formátumban. Figyelmeztetés jelenik meg akkor is, ha olyan fájlt próbál menteni, amely nem UTF-kódolt a weben (amely csak az UTF kódolást támogatja).

Az alábbi képernyőképen egy példa látható arra a párbeszédpanelre, amely a kódolási módosítások webes leküldéssel történő bevezetésekor jelenik meg.

Képernyőkép a kódolási módosítások webes leküldéses bevezetésével történő bevezetéséről szóló párbeszédpanelen.