예제 #1
0
        public async Task LoadRepoAsync()
        {
            Timing t = new Timing();

            using (await refreshLock.LockAsync())
            {
                Log.Debug("Loading repository ...");

                using (progress.ShowDialog("Loading branch view ..."))
                {
                    bool isCached = await repositoryService.LoadCachedRepositoryAsync(workingFolder);

                    t.Log("Read cached repository");

                    if (!isCached)
                    {
                        Log.Debug("Could not load cached repo, loading fresh repo");
                        Dispatcher.CurrentDispatcher.Delay(TimeSpan.FromMilliseconds(2000),
                                                           () => progress.SetText("Loading branch view (first time) ..."));
                        await repositoryService.LoadFreshRepositoryAsync(workingFolder);

                        t.Log("Read fresh repository");
                    }

                    LoadViewModel();
                    t.Log("Updated view model after cached/fresh");
                }

                Track.Info($"MainWindow - Loaded first view {t.ElapsedMs} ms");

                // isValidUri = gitInfoService.IsSupportedRemoteUrl(workingFolder);

                using (progress.ShowBusy())
                {
                    if (repositoryService.Repository.MRepository.IsCached)
                    {
                        await repositoryService.CheckLocalRepositoryAsync();

                        t.Log("Read current local repository");
                    }

                    if (commandLine.IsCommit)
                    {
                        await commitsService.CommitChangesAsync();
                    }

                    await repositoryService.CheckRemoteChangesAsync(true);

                    t.Log("Checked remote");
                }

                Track.Info($"MainWindow - Loaded after remote changes {t.ElapsedMs} ms");
                await repositoryService.CheckBranchTipCommitsAsync();
            }
        }