예제 #1
0
        public static bool CheckSettings()
        {
            var settings = MySettingsManager.GetSettings <TfsSettings>();

            if (string.IsNullOrEmpty(settings.ProjectName) || string.IsNullOrEmpty(settings.WorkItemType))
            {
                return(false);
            }

            var uri = new Uri(settings.ProjectCollectionUri);

            try
            {
                var project      = TfsHelper.GetProject(settings.ProjectCollectionUri, settings.ProjectName);
                var workItemType = project.WorkItemTypes[settings.WorkItemType];
                if (workItemType == null)
                {
                    return(false);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Failed to connect to TFS", MessageBoxButton.OK, MessageBoxImage.Error);
                return(false);
            }

            var registered = RegisteredTfsConnections.GetProjectCollection(uri);

            if (registered == null)
            {
                RegisteredTfsConnections.RegisterProjectCollection(new TfsTeamProjectCollection(uri));
            }
            return(true);
        }
예제 #2
0
        public static bool TryGetTeamProjectCollection(string localPath, ref Uri tfsName, out string tfsFolder)
        {
            tfsFolder = null;

            if (tfsName == null)
            {
                var projectCollections = RegisteredTfsConnections.GetProjectCollections();
                if (projectCollections != null && projectCollections.Length == 1)
                {
                    tfsName = projectCollections[0].Uri;
                }
                else
                {
                    using (var dlg = new TeamProjectPicker(TeamProjectPickerMode.NoProject, false)) {
                        dlg.AcceptButtonText = "Select";
                        if (dlg.ShowDialog() != DialogResult.OK)
                        {
                            return(false);
                        }
                        tfsName = dlg.SelectedTeamProjectCollection.Uri;
                    }
                }
            }

            var workspace = GetWorkspace(tfsName, localPath);

            if (workspace == null || !workspace.IsLocalPathMapped(localPath))
            {
                return(false);
            }

            tfsFolder = workspace.GetServerItemForLocalItem(localPath);
            return(true);
        }
예제 #3
0
        public static List <ProjectItem> GetPendingChanges()
        {
            var projectItems       = new List <ProjectItem>();
            var dte                = (DTE)Package.GetGlobalService(typeof(SDTE));
            var projectCollections = new List <RegisteredProjectCollection>(RegisteredTfsConnections.GetProjectCollections());

            foreach (var registeredProjectCollection in projectCollections)
            {
                var projectCollection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(registeredProjectCollection);
                var versionControl    = projectCollection.GetService <VersionControlServer>();
                var workspace         = versionControl.GetWorkspace(dte.Solution.FileName);

                foreach (var pendingChange in workspace.GetPendingChangesEnumerable())
                {
                    if (pendingChange.FileName != null && (pendingChange.FileName.EndsWith(".cs") || pendingChange.FileName.EndsWith(".config")))
                    {
                        var projectItem = dte.Solution.FindProjectItem(pendingChange.FileName);
                        if (projectItem != null)
                        {
                            projectItems.Add(projectItem);
                        }
                    }
                }
            }
            return(projectItems);
        }
예제 #4
0
        public override void EnsureAuthenticated()
        {
            if (string.IsNullOrEmpty(Url))
            {
                _server = null;
            }
            else
            {
                Uri uri;
                if (!Uri.IsWellFormedUriString(Url, UriKind.Absolute))
                {
                    // maybe it is not an Uri but instance name
                    var servers    = RegisteredTfsConnections.GetConfigurationServers();
                    var registered = servers.FirstOrDefault(s => String.Compare(s.Name, Url, StringComparison.OrdinalIgnoreCase) == 0);
                    if (registered == null)
                    {
                        throw new GitTfsException("Given tfs name is not correct URI and not found as a registered TFS instance");
                    }
                    uri = registered.Uri;
                }
                else
                {
                    uri = new Uri(Url);
                }

                _server = HasCredentials ?
                          new TfsTeamProjectCollection(uri, GetCredential(), new UICredentialsProvider()) :
                          new TfsTeamProjectCollection(uri, new UICredentialsProvider());

                _server.EnsureAuthenticated();
            }
        }
예제 #5
0
 /// <summary>
 ///if no connection is estblished, connect to the first registered server
 /// </summary>
 public void ConnectToFirstServerInList()
 {
     RegisteredProjectCollection[] tfsList = RegisteredTfsConnections.GetProjectCollections();
     if (tfsList.Length > 0)
     {
         var tfsUri = tfsList[0].Uri;
         ConnectToTfsServer(tfsUri);
     }
 }
 private MainWindowViewModel()
 {
     this.AvailableTeamProjectCollectionUrls = RegisteredTfsConnections.GetProjectCollections().Select(c => c.Uri.ToString()).OrderBy(u => u).ToArray();
     this.TeamProjectCollectionUrl           = this.AvailableTeamProjectCollectionUrls.FirstOrDefault();
     this.Nodes = new ObservableCollection <StorageTreeNode>();
     this.RefreshContainersCommand     = new RelayCommand(RefreshContainers, CanRefreshContainers);
     this.DownloadSelectedFilesCommand = new RelayCommand(DownloadSelectedFiles, CanDownloadSelectedFiles);
     this.StatusText = "Ready";
 }
예제 #7
0
        /// <inheritdoc/>
        protected override void DoProcessRecord()
        {
            if (Server.Equals("localhost", StringComparison.OrdinalIgnoreCase) || Server.Equals("."))
            {
                Server = Environment.MachineName;
            }

            WriteObject(RegisteredTfsConnections.GetConfigurationServers().Where(s => s.Name.IsLike(Server)), true);
        }
 private void RefreshTeamProjectCollections(string selectedTeamProjectCollectionName)
 {
     try
     {
         this.TeamProjectCollections        = RegisteredTfsConnections.GetProjectCollections().Select(c => new TeamProjectCollectionInfo(c.Name, c.Uri));
         this.SelectedTeamProjectCollection = this.TeamProjectCollections.FirstOrDefault(t => t.Name == selectedTeamProjectCollectionName);
     }
     catch (Exception exc)
     {
         Logger.Log("An unexpected exception occurred while retrieving the Team Project Collections", exc);
     }
 }
 private void AddTeamProjectCollection(object argument)
 {
     using (var dialog = new TeamProjectPicker(TeamProjectPickerMode.NoProject, false))
     {
         var result = dialog.ShowDialog(Application.Current.MainWindow.GetIWin32Window());
         if (result == System.Windows.Forms.DialogResult.OK)
         {
             var projectCollection = dialog.SelectedTeamProjectCollection;
             RegisteredTfsConnections.RegisterProjectCollection(projectCollection);
             RefreshTeamProjectCollections(projectCollection.Name);
         }
     }
 }
 public MainWindowViewModel()
 {
     this.GetAllEventSubscriptionsCommand         = new RelayCommand(GetAllEventSubscriptions, CanGetAllEventSubscriptions);
     this.DeleteSelectedEventSubscriptionsCommand = new RelayCommand(DeleteSelectedEventSubscriptions, CanDeleteSelectedEventSubscriptions);
     this.GetEventJobHistoryCommand          = new RelayCommand(GetEventJobHistory, CanGetEventJobHistory);
     this.GetNotificationJobLogLevelCommand  = new RelayCommand(GetNotificationJobLogLevel, CanGetNotificationJobLogLevel);
     this.SetNotificationJobLogLevelCommand  = new RelayCommand(SetNotificationJobLogLevel, CanSetNotificationJobLogLevel);
     this.AvailableTeamProjectCollectionUrls = RegisteredTfsConnections.GetProjectCollections().Select(c => c.Uri.ToString()).OrderBy(u => u).ToArray();
     this.TeamProjectCollectionUrl           = this.AvailableTeamProjectCollectionUrls.FirstOrDefault();
     this.EventSubscriptions     = new ObservableCollection <Subscription>();
     this.EventJobHistoryEntries = new ObservableCollection <TeamFoundationJobHistoryEntry>();
     SetStatus(string.Format(CultureInfo.CurrentCulture, "Discovered {0} registered Team Project Collection(s).", this.AvailableTeamProjectCollectionUrls.Count));
 }
        //public static WorkspaceInfo GetWorkspaceInfo()
        //{
        //    //// Get Project Collections
        //    //var pc = RegisteredTfsConnections.GetProjectCollections();
        //    //result.AppendLine("Registered Projects");
        //    //foreach (var item in pc)
        //    //{
        //    //    result.AppendLine(String.Format("Name: {0}, Uri: {1}, Offline: {2}",
        //    //        item.DisplayName, item.Uri.ToString(), item.Offline));
        //    //}
        //    try
        //    {
        //        var info = Workstation.Current.GetAllLocalWorkspaceInfo();
        //        if (info.Any())
        //            return info.FirstOrDefault();
        //    }
        //    catch (Exception)
        //    {

        //    }
        //    return null;
        //}

        public static IEnumerable <RegisteredProjectCollection> GetProjectCollections()
        {
            try {
                // Get Project Collections
                var pc = RegisteredTfsConnections.GetProjectCollections();
                return(pc.ToList());
            }
            catch (Exception ex)
            {
            }

            return(null);
        }
예제 #12
0
        private static Workspace GetWorkspace(string slnDir)
        {
            if (_table.Contains(slnDir))
            {
                return(_table[slnDir] as Workspace);
            }
            var projectCollections = new List <RegisteredProjectCollection>((RegisteredTfsConnections.GetProjectCollections()));
            var onlineCollections  = projectCollections.Where(c => c.Offline == false);

            // fail if there are no registered collections that are currently on-line
            if (!onlineCollections.Any())
            {
                _table.Add(slnDir, null);
                return(null);
            }
            Workspace workspace = null;

            // find a project collection with at least one team project
            foreach (var registeredProjectCollection in onlineCollections)
            {
                var projectCollection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(registeredProjectCollection);

                var versionControl = (VersionControlServer)projectCollection.GetService(typeof(VersionControlServer));

                var teamProjects = new List <TeamProject>(versionControl.GetAllTeamProjects(false));

                // if there are no team projects in this collection, skip it
                if (teamProjects.Count < 1)
                {
                    continue;
                }

                var dir = new DirectoryInfo(slnDir);
                while (workspace == null)
                {
                    workspace = versionControl.TryGetWorkspace(dir.FullName);
                    if (dir.Parent == null)
                    {
                        break;
                    }
                    dir = dir.Parent;
                }

                if (workspace != null && workspace.HasUsePermission)
                {
                    break;
                }
            }
            _table.Add(slnDir, workspace);
            return(workspace);
        }
        public override DataTable GetDataSources()
        {
            var dataTable = new DataTable();

            dataTable.Columns.Add("ServerName", typeof(string));
            dataTable.Columns.Add("InstanceName", typeof(string));
            var projectCollections = RegisteredTfsConnections.GetProjectCollections();

            foreach (var projectCollection in projectCollections)
            {
                dataTable.Rows.Add(new object[]
                {
                    projectCollection.Uri,
                    null
                });
            }

            return(dataTable);
        }
예제 #14
0
        private void RefreshTfsServers()
        {
            //// TODO: [VM] Allow user to enter custom server URI

            this.ServerMenu.Items.Clear();

            var tfsCollections = RegisteredTfsConnections
                                 .GetProjectCollections()
                                 .OrderBy(item => item.Name, StringComparer.OrdinalIgnoreCase)
                                 .ThenBy(item => item.Uri)
                                 .ToList();

            MenuItem firstItem = null;

            foreach (var tfsCollection in tfsCollections)
            {
                var serverItem = new MenuItem
                {
                    Header      = tfsCollection.Name,
                    ToolTip     = tfsCollection.Uri.AbsoluteUri,
                    IsCheckable = false,  // Should not be checked/unchecked automatically
                    Tag         = new TfsServerInfo(tfsCollection)
                };

                serverItem.Click += this.ServerItem_Click;

                firstItem = firstItem ?? serverItem;

                this.ServerMenu.Items.Add(serverItem);
            }

            SelectServer(firstItem);

            if (!this.ServerMenu.HasItems)
            {
                this.ServerMenu.Items.Add(
                    new MenuItem
                {
                    Header    = "No registered servers found.",
                    IsEnabled = false
                });
            }
        }
예제 #15
0
 private void LoadServerList()
 {
     this.cboTfsServer.DataSource    = RegisteredTfsConnections.GetProjectCollections();
     this.cboTfsServer.DisplayMember = "Uri";
 }
예제 #16
0
 /// <summary>
 /// Performs the actual long running work
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 void _background_DoWork(object sender, DoWorkEventArgs e)
 {
     RegisteredProjectCollection[] collections = RegisteredTfsConnections.GetProjectCollections();
     e.Result = collections;
 }
예제 #17
0
        public RegisteredProjectCollection[] GetRegisteredProjectCollections()
        {
            this.Logger().Trace("GetRegisteredProjectCollections");

            return(RegisteredTfsConnections.GetProjectCollections());
        }