Git-zlúčenie Vo verejných holé repo obchody

0

Otázka

Stránky, ako GitHub a GitLab poskytuje spôsoby na zlúčenie pobočiek priamo v ich webové rozhranie. Vzhľadom na to, že tieto stránky uložiť len holé repo obchody, ako sa vykonávajú tieto zlúči? Môže tá istá vec sa deje na príkazový riadok v holé klon? Našiel som to ako možná odpoveď pomocou inštalačných príkazy.

git github gitlab merge
2021-11-23 22:52:54
1

Najlepšiu odpoveď

3

Pretože GitHub je uzavretý, nemôžeme s istotou povedať, ako presne ich slovník rukoväte zlúčiť operácie. Avšak, GitLab je Open Source a môžeme nahliadnuť na vykonávanie údaje, ktoré sa zmenili v priebehu času.

Ako GitLab to

Dnes, väčšina git-súvisiace prvky, ktoré sú upravené v používateľskom rozhraní, vrátane anthy, zlúči na GitLab spracujú gitaly súčasťou GitLab, ktorý spolupracuje s fyzickou skladovanie repozitáre git. Je primárne používa svoje závislé knižnica, git2go, realizáciu skutočného git operácie.

Pozrieme bližšie na zdrojový kód gitalynajlepšie hodnotenie môžem urobiť je, že gitaly v skutočnosti sa vo veľkej miere využívajú pracovné stromy pre git operácie, vrátane pre korešpondenciu. Archívy a pracovných stromy sú vo všeobecnosti otvorené a klonovanie na "karantény" adresárov, ktoré sú len temp adresárov vyrobené on-the-fly a úložiska pracovných strom je klonovanie do adresári temp. (pozri karantény.ísť#L40-58, volali z korešpondencie.ísť#L53).

ako sa vykonávajú tieto zlúči?

Takže, odpoveď na vašu otázku: aspoň s GitLab, pracovné stromy použité pre korešpondenciu (okrem iných činností) a nie sú vykonávané v holé úložísk. Si len nechcem ich vidieť, pretože dočasné adresáre sa používajú skôr, než oni sa zaviazali skutočného archívu cestu.

Môžeme možno predpokladať, že GitHub robí niečo podobné, ale to je nemožné vedieť, pre istotu.

Môžete to urobiť?

Môže tá istá vec sa deje na príkazový riadok v holé klon?

Budete upozornení na jeden príklad, že sa zdá, že na prácu bez odhlasovanie pracovných strom? Ale funguje to písomne sa strom (pomocou git write-tree), ktoré na praktickej úrovni sa nezdá mať žiadnu výhodu oproti, povedzme klonovanie z holé repo a kontrolu mimo pracovného stromu a pomocou git operácií sa zvyčajne. Pre výkon (predvídať možné námietky), môžete použiť tempfs alebo niektoré iné pamäťové-mapované lokality.

Tiež som si nie ste istí, že spojené odpoveď by byť dostatočné na vykonávanie rôznych zlúčiť stratégie používané git merge.

Takže, o technickú záležitosť, možno? Odpoveď vám prepojené zdá, že odpoveď na túto otázku dobre. Na praktickej úrovni, ktoré by boli užitočné, nie, to nezdá tak.

2021-11-24 00:59:11

Vďaka za sledovanie dole tie útržky kódu. Oni vyzerajú ako dôkaz pre throwaway, non-holé klon. Je zaujímavé, že tieto riadky vyzerajú, ako by sa možno pokúša zdieľať objekty z holé repo v klon, možno pre výkon. To mi pripomína git clone --shared.
Jim

@Jim hmmm. Nie som si 100% istý. Na základe mojich čítanie, vyzerá to, že relativePath v tomto prípade je dočasný adresár, ktorý je vytvorený relatívna na repo na disku. To vyzerá ako klonovanie repo, potom vyššieho objektu cesta (quarantinedRepo.GitObjectDirectory = relativePath) v quarantineRepo objekt bodu na tempdirßrg (ako protiklad toho, čo predpokladám je predvolená hodnota skutočná repo objekty miesto vrátil z clone metóda).
sytech

V iných jazykoch

Táto stránka je v iných jazykoch

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................