Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        void ToVersionedAssetList(ExtendedItem[][] items, VersionedAssetList result)
        {
            foreach (var item in items)
            {
                foreach (var eachItem in item)
                {
                    VersionedAsset asset = ToVersionedAsset(eachItem);

                    result.Add(asset);
                }
            }
        }
Esempio n. 3
0
        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);
            }
        }