in src/net/sourceforge/transparent/Checkin/CCaseCheckinEnvironment.java [137:188]
public List<VcsException> commit(List<Change> changes,
String comment,
@NotNull NullableFunction<Object, Object> parametersHolder,
Set<String> feedback)
{
List<VcsException> errors = new ArrayList<>();
HashSet<FilePath> processedFiles = new HashSet<>();
if (! SystemInfo.isWindows) {
comment = comment.replace( "\"", "\\\"");
}
clearTemporaryStatuses( changes );
storeChangeListName( changes );
adjustChangesWithRenamedParentFolders( changes );
try
{
initProgress( changes.size() );
// Committing of renamed folders must be performed first since they
// affect all other checkings under them (except those having status
// "ADDED") since:
// - if modified file is checked in before renamed folder checkin then
// we need to checkin from (yet) nonexisting file into (already) non-
// existing space. It is too tricky to recreate the old folders
// structure and commit from out of there.
// - if modified file is checked AFTER the renamed folder has been
// checked in, we just have to checkin in into the necessary place,
// just get the warning that we checking in file which was checked out
// from another location. Supress it.
commitRenamedFolders( changes, comment, errors );
commitDeleted( changes, comment, errors );
// IMPORTANT!
// Committment of the changed files must be performed first because of
// specially processed exceptions described in the ChangeProvider.
commitChanged( changes, comment, processedFiles, errors );
commitNew( changes, comment, processedFiles, errors );
}
catch( ProcessCanceledException e )
{
// Nothing to do, just refresh the files which have been already committed.
}
checkForUnchangedFolders(changes, errors, comment);
VfsUtil.markDirtyAndRefresh(true, true, false, map2Array(processedFiles, VirtualFile.class, FilePath::getVirtualFile));
VcsDirtyScopeManager.getInstance(project).filesDirty(map(processedFiles, FilePath::getVirtualFile), null);
return errors;
}