private static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); string[] args = Environment.GetCommandLineArgs(); FormSplash.Show("Load settings"); Settings.LoadSettings(); if (Settings.RunningOnWindows()) { //Quick HOME check: FormSplash.SetAction("Check home path"); FormFixHome.CheckHomePath(); } //Register plugins FormSplash.SetAction("Load plugins"); PluginLoader.LoadAsync(); if (string.IsNullOrEmpty(Settings.Translation)) { using (var formChoose = new FormChooseTranslation()) { formChoose.ShowDialog(); } } try { if (Application.UserAppDataRegistry == null || Application.UserAppDataRegistry.GetValue("checksettings") == null || !Application.UserAppDataRegistry.GetValue("checksettings").ToString().Equals("false", StringComparison.OrdinalIgnoreCase) || string.IsNullOrEmpty(Settings.GitCommand)) { FormSplash.SetAction("Check settings"); using (var settings = new FormSettings()) { if (!settings.CheckSettings()) { FormSettings.AutoSolveAllSettings(); GitUICommands.Instance.StartSettingsDialog(); } } } } catch { // TODO: remove catch-all } if (args.Length >= 3) { if (Directory.Exists(args[2])) { Settings.WorkingDir = args[2]; } if (string.IsNullOrEmpty(Settings.WorkingDir)) { if (args[2].Contains(Settings.PathSeparator.ToString())) { Settings.WorkingDir = args[2].Substring(0, args[2].LastIndexOf(Settings.PathSeparator)); } } if (Settings.ValidWorkingDir()) { Repositories.RepositoryHistory.AddMostRecentRepository(Settings.WorkingDir); } } if (string.IsNullOrEmpty(Settings.WorkingDir)) { string findWorkingDir = GitCommandHelpers.FindGitWorkingDir(Directory.GetCurrentDirectory()); if (Settings.ValidWorkingDir(findWorkingDir)) { Settings.WorkingDir = findWorkingDir; } } FormSplash.Hide(); if (args.Length <= 1) { GitUICommands.Instance.StartBrowseDialog(); } else // if we are here args.Length > 1 { RunCommand(args); } Settings.SaveSettings(); }