iOS - rozwiązywanie konfliktów w plikach project.pbxproj

0

Cześć,

Jestem nowy w iOS developmencie. Zauważyłem, że w trakcie pracy nad projektem, Xcode tworzy automatycznie plik project.pbxproj . Nie można dodać tego pliku do .gitignore, ponieważ jest on niezbędny do załadowania projektu w Xcode i zbudowania go. No i teraz moje pytanie brzmi: jak radzić sobie z rozwiązywaniem konfliktów w tym pliku? Np. wykonywałem zmiany na 2 branchach w gicie, w obu branchach Xcode zmodyfikował plik project.pbxproj. No i teraz jakbym chciał te zmiany zmergować do kupy, to są konflikty w automatycznie wygenerowanym pliku project.pbxproj. Próbowałem rozwiązać je ręcznie uwzględniając wszystkie zmiany z jednego i drugiego brancha jednocześnie, ale wtedy projekt się nie ładuje w Xcode. W tym konkretnym przypadku, mogę rozwiązać ten problem "na chama", tzn. mergując jednego bracha do developa, kopiując zmiany z drugiego brancha do osobnych plików poza repo, a następnie nanosząc na to wszystko zmiany ręcznie i pozwolić Xcode na ponowne wygenerowanie pliku project.pbxproj . Pół biedy, że te 2 branche były zrobione przeze mnie. Gdyby nad branchami pracowały 2 osoby, problem byłby większy. Obawiam się, że w przyszłości takie problemy mogą występować i wtedy będzie to znacznie większy problem.

Jak powinno się prawidłowo rozwiązywać konflikty w pliku project.pbxproj gdy pracujemy na kilku branchach lub wiele osób pracuje nad projektem?

0

Ok, dowiedziałem się, że dodając plik .gitattributes z zawartością:

*.pbxproj merge=union

mogę rozwiązać część standardowych problemów tego typu, ale nie wszystkie.

2

wieki temu, znalazłem skrypt, który mergował ten plik automatycznie.
Poinstruowałem git-a by dla tego pliku używał tego tool-a do merge i działało to dobrze.
teraz nie jetem wstanie znaleźć togo skryptu, był gdzieś na github.
Sam poszukaj, może będziesz miał więcej szczęścia.

Teraz używam cmake (którego merge'owanie jest proste), wiec ten plik po prostu mi się sam generuje.

3

@wiciu: Polecam wprowadzić xcodegen - narzędzie tworzy xcproj z plików w repo i yml przez co każdy developer ma swój lokalny setup ale na remote nie ma już potrzeby dodawania xcproj do MR/PR przez co nie będzie konfliktów

1 użytkowników online, w tym zalogowanych: 0, gości: 1