Developer Notes

See also UE-43603 to cover handling this case fully correctly, cloned from this issue which is specifically to avoid the crash.

Description

A UDN user found a crash in the merge tool when using SVN.

https://udn.unrealengine.com/questions/265740/crashbug-with-svn-merging.html

The failing check() crash occurs in LoadBaseRev (Merge.cpp):

 TSharedPtr<ISourceControlRevision, ESPMode::ThreadSafe> Revision = SourceControlState.GetBaseRevForMerge();
 check(Revision.IsValid()); /// <- This fails

This is because SourceControlState.GetBaseRevForMerge() returns a null ISourceControlrevision. Which is because FSubversionSourceControlState::PendingMergeBaseFileRevNumber is not a valid revision for the particular file that is merging. The PendingMergeBaseFileRevNumber revision appears to be "head - 1" but the revision history array may not contain an entry for this as there may be gaps in the revision sequence for a particular file.

Steps to Reproduce

Perform a merge on a Blueprint that has gaps in its revision sequence in its history.

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-22428 in the post.

0
Login to Vote

Fixed
Fix Commit3377950
Main Commit3380073
Release Commit3390270
CreatedOct 21, 2015
ResolvedApr 4, 2017
UpdatedDec 12, 2023