private void createNew_clicked(object sender, RoutedEventArgs e) { if (!checkBeforeExit()) { return; } try { NewScenario newscen = new NewScenario(); if (newscen.ShowDialog() == true) { currentScenario = new Scenario( newscen.NameOfScenario, System.IO.Path.Combine(dirOfScenaries, newscen.NameOfScenario + ".xml") ); if (!currentScenario.exportScenario2XML(dirOfScenaries)) { MessageBox.Show( "Не удалось экспортировать сценарий в XML. Однако, вы можете продолжать работать с ним.", "Ошибка экспорта сценария", MessageBoxButton.OK, MessageBoxImage.Warning ); } gitRepo.Clear(); lb_paths.Items.Clear(); activateWindow(true); changeSavedStatus(true); } } catch (Exception ex) { MessageBox.Show( "Ошибка при создании файла сценария. " + ex.Message, "Ошибка создания нового сценария", MessageBoxButton.OK, MessageBoxImage.Error ); } }
private void doTheShit(Scenario currentScenario, CancellationToken cancellationToken) { int max = currentScenario.paths2servers.Count; this.Dispatcher.Invoke(DispatcherPriority.Normal, new Action(() => { pb_updating.Value = 0; pb_updating.Maximum = max; } )); try { foreach (string path2update in currentScenario.paths2servers) { string path = path2update.TrimEnd('\\'); // [debug] //Thread.Sleep(1500); // получить из центрального репозитория последнюю инфу using (Process proc = new Process { StartInfo = new ProcessStartInfo { FileName = "git.exe", Arguments = string.Format("--git-dir=\"{0}\" --work-tree=\"{1}\" fetch --all", System.IO.Path.Combine(path, ".git"), path ), UseShellExecute = false, RedirectStandardOutput = true, CreateNoWindow = true } }) { proc.Start(); while (!proc.HasExited) { } } // выкатить в репозиторий свежую ветку using (Process proc = new Process { StartInfo = new ProcessStartInfo { FileName = "git.exe", Arguments = string.Format("--git-dir=\"{0}\" --work-tree=\"{1}\" reset --hard {2}", System.IO.Path.Combine(path, ".git"), path, currentScenario.gitBranch ), UseShellExecute = false, RedirectStandardOutput = true, CreateNoWindow = true } }) { proc.Start(); while (!proc.HasExited) { } } // прогресс this.Dispatcher.Invoke(DispatcherPriority.Normal, new Action(() => { pb_updating.Value++; } )); // проверяем, не был ли процесс отменён cancellationToken.ThrowIfCancellationRequested(); } } catch (Exception ex) { this.Dispatcher.Invoke(DispatcherPriority.Normal, new Action(() => { MessageBox.Show( "Во время обновления произошла ошибка. Перехваченное исключение: " + ex.Message, "Ошибка обновления репозиториев на серверах", MessageBoxButton.OK, MessageBoxImage.Error ); } )); } }
public void loadScenario(string path) { try { currentScenario = new Scenario(path); } catch (Exception ex) { MessageBox.Show( "Ошибка при открытии сценария. Возможно, этот файл не является сценарием для обновления. Перехваченное исключение: " + ex.Message, "Не удалось открыть сценарий", MessageBoxButton.OK, MessageBoxImage.Error ); return; } crntScenName.Content = currentScenario.name; gitRepo.Text = currentScenario.gitLink; tb_localRepo.Text = currentScenario.gitLocal; tb_branch.Text = currentScenario.gitBranch; lb_paths.Items.Clear(); foreach (string p2s in currentScenario.paths2servers) { lb_paths.Items.Add(p2s); } activateWindow(true); // if (!isActive) { activateWindow(true); } changeSavedStatus(true); }