public bool Run(TfsTask task, Request req, Response resp) { VersionedAssetList statAssets = new VersionedAssetList(); try { for (int i = 0; i < req.Assets.Count; i++) { var firstAsset = req.Assets[i]; var srcPath = firstAsset.GetPath(); ++i; if (i >= req.Assets.Count) { req.Conn.ErrorLine("No destination path while moving source path " + srcPath); break; } var dstPath = req.Assets[i].GetPath(); task.Workspace.PendRename(srcPath, dstPath, task.ShouldLock(firstAsset) ? task.GetLockLevel() : LockLevel.None, true, true); statAssets.Add(req.Assets[i]); } } catch (Exception e) { req.Conn.ErrorLine(e.Message); } task.GetStatus(statAssets, resp.Assets, false, true); resp.Write(); return(true); }
void ToVersionedAssetList(ExtendedItem[][] items, VersionedAssetList result) { foreach (var item in items) { foreach (var eachItem in item) { VersionedAsset asset = ToVersionedAsset(eachItem); result.Add(asset); } } }
internal void GetStatus(string[] assets, VersionedAssetList result, bool recursive, bool queryRemote) { var timer = new Stopwatch(); timer.Start(); var time = DateTime.Now; // if we are not connected to tfs if (this.Workspace == null) { return; } if (recursive) { if (assets.Length == 0) { // Empty means all in recursive mode var status = GetProjectExtendedStatus(); tfsFileStatusCache.RefreshExtendedStatus(status, Workspace, time); ToVersionedAssetList(status, result); } else { var status = GetProjectExtendedStatus(assets, true); tfsFileStatusCache.RefreshExtendedStatus(status, Workspace, time); ToVersionedAssetList(status, result); } } else { if (assets.Length != 0) { var status = GetProjectExtendedStatus(assets, false); tfsFileStatusCache.RefreshExtendedStatus(status, Workspace, time); ToVersionedAssetList(status, result); } } // Make sure that we have status for local only assets as well foreach (var i in assets) { if (i.Contains("*")) { continue; } if (!result.Any(each => each.GetPath().Equals(i, StringComparison.CurrentCultureIgnoreCase))) { result.Add(new VersionedAsset(i, State.kLocal, "0")); } } timer.Restart(); MergeInMoreDetailedPendingChanges(result, recursive); if (IsPartiallyOffline) { MergeInWorkLocalStatus(result); } }