public override void MoveDirectory(FilePath sourcePath, FilePath destPath)
{
ProgressMonitor monitor = new ProgressMonitor();
Repository srcRepo = GetRepository(sourcePath);
Repository dstRepo = GetRepository(destPath);
if (dstRepo.CanMoveFilesFrom(srcRepo, sourcePath, destPath))
{
Task.Run(async() => {
Monitor.TryEnter(moveDirectoryLock);
try {
await srcRepo.MoveDirectoryAsync(sourcePath, destPath, true, monitor);
} catch (OperationCanceledException) {
return;
} catch (Exception e) {
LoggingService.LogError("Error while moving directory.", e);
} finally {
Monitor.Exit(moveDirectoryLock);
}
});
}
else
{
CopyDirectory(sourcePath, destPath);
srcRepo.DeleteDirectory(sourcePath, true, monitor, false);
}
}