Portál AbcLinuxu, 2. května 2025 04:43
Microsoft na svém blogu věnovaném vývojářům představil GVFS (Git Virtual File System). Cílem tohoto virtuálního souborového systému je urychlit práci s Git repozitáři. Soubory jsou stahovány až při jejich prvním otevírání. Microsoft uvádí, že například klonování obrovského repozitáře díky GVFS netrvá více než 12 hodin, ale pouze několik minut. Zdrojové kódy klienta jsou k dispozici na GitHubu pod licencí MIT.
Tiskni
Sdílej:
Pro příležitostné nahlédnutí do gitu projektu, se kterým člověk rutinně nepracuje a ani to nemá v úmyslu, by to smysl mít mohlo. Jinak samozřejmě bude narážet na to, že se rychlý jednorázový clone na začátku mnohonásobně vrátí ve výrazně pomalejších běžných operacích při vlastní práci.
U toho use case, který tam popisují (kompletní codebase Windows, 3.5 milionu souborů, 270 GB) mi ale připadá, že zásadní chyba je už v tom, že to potřebují mít všechno v jednom repozitáři. Vždyť i kernel, firefox nebo libreoffice jsou počtem souborů i velikostí o dva řády níž (kromě počtu souborů u firefoxu, tam je to jen o jeden).
git submodule
repo(1)
urobil first-class aplikáciu, aby sa dala použiť na integráciu Git repozitárov vo všeobecnosti, a najmä, aby ju bolo možné používať bez Gerrit-u.
Ano, v různých garážovkách mají ve zdrojácích zadrátované cesty jako C:\Dev\Produkt\…
a běda kdyby sis chtěl dát zdrojáky jinam, nebude ti to fungovat. V MS asi dělají něco podobného.
Pro příležitostné nahlédnutí do gitu projektu, se kterým člověk rutinně nepracuje a ani to nemá v úmyslu, by to smysl mít mohlo.
Na občasné nahlédnutí jsou různé webové UI – které ti navíc můžou nabídnout i rychlé hledání (což s tím FS nepůjde, protože by se muselo všechno postahovat k tobě).
Jinak samozřejmě bude narážet na to, že se rychlý jednorázový clone na začátku mnohonásobně vrátí ve výrazně pomalejších běžných operacích při vlastní práci.
Tohle je jedna z velkých výhod distribuovaných verzovacích systémů a MS se tak vrací o víc než deset let zpátky.
U toho use case, který tam popisují (kompletní codebase Windows, 3.5 milionu souborů, 270 GB) mi ale připadá, že zásadní chyba je už v tom, že to potřebují mít všechno v jednom repozitáři.
+1 je to pořádný hnůj. Tohle mělo být jednoznačně modularizované a rozdělené do více malých repozitářů.
Na občasné nahlédnutí jsou různé webové UI – které ti navíc můžou nabídnout i rychlé hledání (což s tím FS nepůjde, protože by se muselo všechno postahovat k tobě).
Tam jsem ale omezen tím, co to webové UI nabízí. Nevzpomínám si třeba, že bych viděl webové UI ke gitu, které by umělo ekvivalent "git blame
".
Tohle mělo být jednoznačně modularizované a rozdělené do více malých repozitářů.
Nebo aspoň do více velkých. :-)
Tam jsem ale omezen tím, co to webové UI nabízí. Nevzpomínám si třeba, že bych viděl webové UI ke gitu, které by umělo ekvivalent "git blame".
Měl jsem za to, že tohle je běžná vlastnost. Mercurial to umí v základu (to výchozí webové rozhraní resp. server), jmenuje se to annotate. U gitu používám Kallitheu a tam je taky funkce Show Annotation.
Nevzpomínám si třeba, že bych viděl webové UI ke gitu, které by umělo ekvivalent "git blame
".
Příklad: https://gitlab.com/gitlab-org/gitlab-ce/blame/1e97a6df24f66f70811fdd4b1412432e40ab8ebe/README.md
git worktree
znám, ale tenhle projekt používá Mercurial. Nicméně, i kdyby to byl git, je vytvoření worktree stejně levné jako klon v ZFS? Klon 2GB hg repo je se ZFS vytvořen téměř instantně.
Další výhoda ZFS/Btrfs jsou snapshoty, např. vždy, než dělám nějakej složitější rebase, nejprv vytovřim snapshot, takže když ten rebase nějak zvořu nebo se něco nějak pokazí, můžu rollbackovat (opět téměř instantní operace) na stav před.
git reset
.
Je ještě levnější, protože object store není sdílený přes COW, ale přímo, takže repack a pull nevytváří nové kopie.Object store mě nijak netrápí, úzké hrdlo je vytvoření novýho pracovního adresáře. Pokud tomu dobře rozumim,
git worktree add
musí udělat checkout repo do novýho adresáře - v podstatě tam vytvořit celý adresářový strom a nakopírovat všechny data. Děkuji, nechci.
Rollback rebase se dělá pomocí git reset.Tak jasný, ono to obvykle stačí, ale když dělám nad repo něco divočejšího, je fajn mít to zajištěno na jiné vrstvě.
#dnf list | grep -i gvfs | wc -l 18...tak doufam, ze se to bude jmenovat jinak, nez to Poeterring zacleni do systemd :/
git clone --depth 1
. Pokud je potřeba práce s velkými soubory, máme LFS.
Nas tym pracuje na prototypu bytecode-based operacniho systemu, kde krome VM zpracovavajici MSIL nebude zadny nativni kod.Nechtěli tohle udělat ve Vistách?
že trvá dlouho přijímání patchů do kernelu
Záleží na subsystému (resp. maintainerovi). :-)
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.