Portál AbcLinuxu, 30. července 2025 19:37


Dotaz: EGIT merging za použití tagu

Barbucha.eu avatar 26.9.2010 23:24 Barbucha.eu | skóre: 23 | Chrást u Plzně
EGIT merging za použití tagu
Přečteno: 183×
Odpovědět | Admin
Dosud se mi nepodařilo zjistit, k čemu přesně slouží tagy. Plugin pro GIT v Eclipse umožňuje při mergingu vybrat jak větev, která se má sloučit, tak i tag. Jenže vyberu-li tag, hodí Eclipse internal error a pokud zavolám git commit, tak napíše error: Object 38...hash...a5 not a commit a pak větev už nejde vyčekovat ani zobrazit historii. Při bližším ohledání se ukázalo, že 38...hash...a5 je onen tag vybraný pro merge.

Hledám marně odpověď na otázku, proč to vypadá, že plugin do Eclipse sice píše v dialogu Select branch or tag..., ale samotný GIT umí jen branch, ovšem tag nikoliv.
Co Bůh rozbil, člověk neopravuj!

Řešení dotazu:


Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Řešení 1× (Barbucha.eu (tazatel))
Barbucha.eu avatar 27.9.2010 13:43 Barbucha.eu | skóre: 23 | Chrást u Plzně
Rozbalit Rozbalit vše Re: EGIT merging za použití tagu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Po delším bádání jsem došel k tomuto závěru:

Problém:

Pokud se provádí sloučení (merge) určité větve do jiné větve, slučuje se vlastně jedna verze do druhé. Na hlavní větvi se jedná o verzi poslední (LATEST v ClearCase nebo HEAD v GITu). Do ní se sloučí vybraná verze druhé větve. V GITu se verze označují jako commit. A sloučit lze do současné větve pouze jiný commit, nikoliv tag. Ovšem EGIT taguje vždy tzv. annotated tagy, což jsou plnohodnotné objekty asociované s určitým commitem. Při sloučení dojde k chybě, protože se do verze (commitu) slučuje cizorodý objekt (tag).

Řešení:

Nepoužívat annotaded tagy, ale tzv. lightweight tagy, které nejsou samostatnými objekty, jen zastupují vybraný commit. Pak se již správně do verze (commitu) sloučí jiná verze (commit) vybraný podle na něj odkazujícího tagu. A to je již bez problémů možné.

Příkazy označující HEAD-commit (současnou verzi) tagem:

Tag annotated: git tag -a aTagName -m 'Annotated tag'

Tag lightweight: git tag lwTagName

Příkazy označující commit (verzi) tagem:

Tag annotated: git tag -a aTagName 0f8...HASHCOMMITU...48a -m 'Annotated tag'

Tag lightweight: git tag lwTagName 0f8...HASHCOMMITU...48a

Co Bůh rozbil, člověk neopravuj!

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.