public bool Delete(IEnumerable <string> assets, OperationMode mode = OperationMode.Force) { return(HandleExceptions(() => { var beforeStatus = StoreCurrentStatus(assets); if (!OnOperationStarting(OperationType.Delete, beforeStatus)) { return false; } bool filesOSDeleted = false; var deleteAssets = new List <string>(); foreach (string assetIt in assets) { var metaAsset = assetIt + VCCAddMetaFiles.metaStr; if (GetAssetStatus(assetIt).fileStatus != VCFileStatus.Unversioned) { deleteAssets.Add(metaAsset); deleteAssets.Add(assetIt); } else { if (File.Exists(metaAsset)) { File.SetAttributes(metaAsset, FileAttributes.Normal); File.Delete(metaAsset); filesOSDeleted = true; } if (File.Exists(assetIt)) { File.SetAttributes(assetIt, FileAttributes.Normal); File.Delete(assetIt); filesOSDeleted = true; } if (Directory.Exists(assetIt)) { foreach (var subDirFile in Directory.GetFiles(assetIt, "*", SearchOption.AllDirectories)) { File.SetAttributes(subDirFile, FileAttributes.Normal); File.Delete(subDirFile); } Directory.Delete(assetIt, true); filesOSDeleted = true; } } } bool result = vcc.Delete(deleteAssets, mode); AssetDatabaseRefreshManager.RequestAssetDatabaseRefresh(); if (filesOSDeleted) { AssetDatabaseRefreshManager.RefreshAssetDatabase(); } var afterStatus = StoreCurrentStatus(assets); OnOperationCompleted(OperationType.Delete, beforeStatus, afterStatus, result || filesOSDeleted); return result; })); }
public void AddAndRemoveFile() { const string fileA = "fileA.txt"; var fs = File.Create(workingDirectoryForSVNTests + "\\" + fileA, 10); fs.Close(); vcc.Status(StatusLevel.Local, DetailLevel.Normal); var status = vcc.GetAssetStatus(fileA); Assert.IsTrue(status.assetPath.Compose() == fileA, "AssetPath mismatch: " + status.assetPath.Compose() + "!=" + fileA); Assert.IsTrue(status.fileStatus == VCFileStatus.Unversioned, "Unversioned"); vcc.Add(new[] { fileA }); vcc.Status(StatusLevel.Local, DetailLevel.Normal); status = vcc.GetAssetStatus(fileA); Assert.IsTrue(status.fileStatus == VCFileStatus.Added, "Added"); vcc.Commit(new[] { fileA }, "AddFile Test 1/2"); vcc.Status(StatusLevel.Local, DetailLevel.Normal); status = vcc.GetAssetStatus(fileA); Assert.IsTrue(status.fileStatus == VCFileStatus.Normal, "Normal"); var basePath = vcc.GetBasePath(fileA); Assert.That(File.Exists(basePath), Is.True, "Base path exist: " + basePath); vcc.Delete(new[] { fileA }, OperationMode.Normal); vcc.Status(StatusLevel.Local, DetailLevel.Normal); status = vcc.GetAssetStatus(fileA); Assert.IsTrue(status.fileStatus == VCFileStatus.Deleted, "Deleted"); vcc.Commit(new[] { fileA }, "AddFile Test 2/2"); vcc.Status(StatusLevel.Local, DetailLevel.Normal); status = vcc.GetAssetStatus(fileA); Assert.That(status.Reflected, Is.False, "fileA is not present in repo"); Assert.IsTrue(!File.Exists(workingDirectoryForSVNTests + "\\" + fileA), "File removed again"); }
public virtual bool Delete(IEnumerable <string> assets, OperationMode mode) { return(vcc.Delete(assets, mode)); }