I’ve been burned with these many times already, so I wanted to hear back from epic developers on this.
When you try to find what’s changed on certain feature that’s not working properly or just want to see what is changed, you go and find the related commit from related source files history, only to come across with something like this:
Yes, that is 2,438 changed files with 20,222 additions and 24 deletions, in a single commit. Not only github can’t handle it (you need some other git gui application to even check what’s there), but you’ll never be able to see what files have actually been changed on the thing you wanted to take a look at. Doing things this way partially ruins the benefit of having proper version control as you loose control over single changes.
I’m guessing this is done this way to minimize the work needed to do on branch merge conflicts but couldn’t you automate this so that some bot would still push the changes per feature as separete commits when it finally puts them into github repo?
The commits that you are seeing are unfortunately a side effect of our internal switch to using streams in Perforce for our source control. Prior to using streams, our engineers would commit changes directly into the Master branch, and those commits would be reflected on GitHub. This process would occasionally create situations where a large number of our engineers were unable to work on the Engine while blocking bugs were identified and corrected.
In order to alleviate those situations, we started using streams in Perforce. Streams allow our engineer teams to work on isolated versions of the Engine, then merge their changes into the Master branch once their stream is in a stable state. Any blocking issues will only affect the engineers involved in finding and correcting those issues, which results in the Master branch being in a generally more stable state than it would have been before we started using streams (it is still untested, so we don’t recommend using the Master branch for development work).
The drawback to using streams is that only the Master branch, and any version specific branches used to prepare for a new version release, are mirrored over to GitHub. Changes made in a stream are not visible on GitHub until the stream is merged into the Master branch, which results in the bulk commit that you were referring to. We do want to mirror all of the development streams over to GitHub, but have not yet been able to focus on making that happen.
Unfortunately there has not been much progress on this yet. While it is something that we want to do, we have not yet had an opportunity to devote any time to that task specifically. We do have a ticket in for this to be done, and you can see its status here.
I tried to check the issue but apparently it has been removed? I’m really curious about this as it’s getting more tedious to work with UE4 codebase year after year, we really could use at least those development streams. Any updates on that?
I noticed that we briefly got access to those through Marsh’s unrealengine fork but I’m not sure if it was some experiment as those have been long gone now. Wonder why that wasn’t continued? It clearly worked so you had technical means to make it happen. This taken into account, it now feels that Epic is deliberately preventing this from happening.
I really hope Epic will do something about this as current approach leaves people working with custom engines into really bad position: we can’t cherry-pick bugfixes and individual changes, it’s pretty much impossible as we can’t guess what is relevant to the issue at hands from those multi-thousand change commits. So, please Epic, can you make your git repo usable again for people who do engine development and maintenance?