示例#1
0
        /// <summary>
        /// The list of merge targets
        /// </summary>
        public IEnumerable <ITfsBranch> GetPossibleMergeTargetBranches(ITfsBranch sourceBranch, BranchSearchOptions searchOptions = BranchSearchOptions.Both)
        {
            if (sourceBranch.IsSubBranch)
            {
                return(sourceBranch.ChildBranches.AsEnumerable());
            }

            var result = new ObservableCollection <ITfsBranch>();

            var listOfForeignBranchesReferencingSourceBranch
                = (searchOptions == BranchSearchOptions.Both || searchOptions == BranchSearchOptions.Upwards)
                    ? CompleteBranchList
                  .Where(item => item.ChildBranchNames.Any(cb => cb == sourceBranch.Name))
                    : Enumerable.Empty <ITfsBranch>();

            var listOfSourceBranchChildren
                = (searchOptions == BranchSearchOptions.Both || searchOptions == BranchSearchOptions.Downwards)
                    ? sourceBranch.ChildBranchNames
                  .Select(cb => CompleteBranchList.Where(item => item.Name == cb).FirstOrDefault())
                    : Enumerable.Empty <ITfsBranch>();

            return(listOfForeignBranchesReferencingSourceBranch
                   .Union(listOfSourceBranchChildren)
                   .Where(item => item != null)
                   .OrderBy(item => item.Name));
        }
示例#2
0
        private ITfsBranch GetSpecificSubBranch(string serverPath)
        {
            ITfsBranch    subBranch = null;
            WeakReference cachedSubBranchWeak;

            lock (_locker)
            {
                if (CachedSubBranches.TryGetValue(serverPath, out cachedSubBranchWeak))
                {
                    // Intentionally null?
                    if (cachedSubBranchWeak == null)
                    {
                        return(null);
                    }
                    subBranch = cachedSubBranchWeak.Target as ITfsBranch;
                }
            }
            if (subBranch != null)
            {
                return(subBranch);
            }

            subBranch = CompleteBranchList.FirstOrDefault(cb => cb.ServerPath == serverPath);
            if (subBranch == null)
            {
                subBranch = new TfsBranch(VersionControlServer, serverPath, true);
                if (subBranch.ChildBranches.Count == 0)
                {
                    subBranch = null;
                }
            }

            cachedSubBranchWeak = subBranch != null ? new WeakReference(subBranch) : null;
            lock (_locker)
            {
                if (false == CachedSubBranches.ContainsKey(serverPath))
                {
                    CachedSubBranches[serverPath] = cachedSubBranchWeak;
                }
            }
            return(subBranch);
        }