Portál AbcLinuxu, 2. července 2025 00:20
Při mergování běžně narážím na problém s projektovými soubory Xcode, které jsou sice textové, ale automaticky se příliš mergovat nedají a ručně je to nereálné, protože jde o stovky řádek XML. Naštěstí se většinou dá jednoduše použít verze z novější větve. Chvilku jsem musel hledat, než jsem zjistil, jak při merge konfliktu přijmout celý soubor z mergované větve:
$ git merge spawner-rewrite … Auto-merging Source/Paperworks.xcodeproj/zoul.mode1v3 CONFLICT (content): Merge conflict in Source/Paperworks.xcodeproj/zoul.mode1v3 Auto-merging Source/Paperworks.xcodeproj/zoul.pbxuser CONFLICT (content): Merge conflict in Source/Paperworks.xcodeproj/zoul.pbxuser Automatic merge failed; fix conflicts and then commit the result. $ git checkout --theirs Source/Paperworks.xcodeproj/zoul.{mode1v3,pbxuser} $ git add Source/Paperworks.xcodeproj/zoul.{mode1v3,pbxuser} $ git commit -m "A je to."
Stejně by ale bylo pěkné, kdyby byl k dispozici nějaký specializovaný merge skript pro soubory Xcode.
Tiskni
Sdílej:
A proč by se necommitovaly? Pak přijde nový vývojář a bude si zakládat projekt v IDE znovu a vytvářet znova všechno nastavení? Např. Netbeans mají ve svém projektovém adresáři složku private – ta se do společného úložiště nedává, ale všechno ostatní tam patří. Jsou to celkem důležitá metadata k projektu.
Okrem toho systémy ako cmake umožňujú jednoducho vygenerovať súbory pre IDE. Takto nikto v teame nie je nikým obmedzovaný / diskriminovaný len pre to, že mu vyhovuje niečo iné.
Pokud má být práce v týmu efektivní, tak moc prostoru pro individualismus v těhle věcech není – je potřeba dodržovat společné konvence – a ty jdou ještě dál, než nastavení projektu: často je potřeba i jednotné nastavení IDE – např. aby všichni používali stejné odsazování a formátování kódu.
Ad „Minimum konfliktov“: nebudu dávat do společného úložiště změny, které mají smysl jen pro mne. Naopak ale mohou nastat mezilidské konflikty, kdy se lidi nebudou schopni dohodnout, co se má jak dělat a každý bude chtít používat svoje nastavení a konvence, na které je zvyklý.
*.pbxuser
, *.mode1v3
) a četnost konfliktů výrazně klesla. Teď jsem ještě zvědavý, jak snadno se bude mergovat hlavní projektový soubor. Opět je to XML asi na dva tisíce řádek, ale pokud jen přidám nový soubor do projektu, nemuselo by to být tak zlé.
Nestačí tohle?
http://shanesbrain.net/2008/7/9/using-xcode-with-git
První odkaz při Googlování: xcode git
git-attributes
se u merge
píše:
Unset – take the version from the current branch as the tentative merge result, and declare that the merge has conflicts. This is suitable for binary files that does not have a well-defined merge semantics.Čili je to přesně naopak, než bych potřeboval – já bych chtěl vzít verzi z mergované větve.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.