What are the differences between PreBuildMerge and MergeWithSCMExtention and how the race condition solves by using hash?