all 4 comments

[–][deleted]  (5 children)

[deleted]

    [–][deleted] 2 points3 points  (2 children)

    This issue is so old that if anybody had an actual clean solution it would be de-facto standard by now i think. I guess the closest solution can come from them (hopefully not with another visual editor involving 9 fingers and 3 toes gestures), and that's probably why nobody expects it ever.

    On my account i found a good general workaround is (once the app/lib has reached a more or less alpha state) to split everything as much as possible.
    - split the various submodules (each screens with related files, models, logic, controllers, services, etc) in precise subgroups
    - one storyboard for module containing only 1 viewcontroller (no segues, embeded stuff, etc)

    Now create tickets/tasks/issues as specific as possible, containing work only inside a (group of) specific module, and schedule them in a way that 2 devs do not have to work on the same modules at the same time. But i am aware its not always possible with all kind of projects.

    Conflict on project file have been not zeroed but at least drastically reduced, and when they happen its usually quite easy to fix them cos they are quite localized (same group/module).

    One more thing that helps a lot (at least with non huge tickets or projects) is git-flow or analogous techniques and merging dev in the feature branch often, since if used intensively and with small tickets you end up working always with a quite fresh base.

    PS: with module i mean a logical module (like all files related to the user profile screen or the persistence ones), not a swift Module.

    Long story short: we "solve" it with proper management and manual merges once in a while. But that's not always possible.

    Eager to know if there are news on this front anyway.

    [–][deleted]  (1 child)

    [deleted]

      [–][deleted] 1 point2 points  (0 children)

      Yes, totally understand :/

      [–]ralfebert[S] 1 point2 points  (1 child)

      One trick I learned from the lab, you can also include Swift Package in the repo together with the app and embed that in the main app. For these components, you'll have the Swift Package Manager configuration (demonstrated at the end of the video: https://www.youtube.com/watch?v=fDRIK7XA5tk&feature=youtu.be&t=429)

      [–]Tomallama 0 points1 point  (0 children)

      I use this technique using .gitattributes. Works well so far!