Ejemplo n.º 1
0
 private CommonLogic()
 {
     // For translation only
     Module = null !;
     RepoDistSettingsSet   = null !;
     ConfigFileSettingsSet = null !;
 }
Ejemplo n.º 2
0
        public CommonLogic(GitModule aModule)
        {
            Module = aModule;

            if (aModule != null)
            {
                var repoDistGlobalSettings    = RepoDistSettings.CreateGlobal(false);
                var repoDistPulledSettings    = RepoDistSettings.CreateDistributed(Module, false);
                var repoDistLocalSettings     = RepoDistSettings.CreateLocal(Module, false);
                var repoDistEffectiveSettings = new RepoDistSettings(
                    new RepoDistSettings(repoDistGlobalSettings, repoDistPulledSettings.SettingsCache),
                    repoDistLocalSettings.SettingsCache);

                var configFileGlobalSettings    = ConfigFileSettings.CreateGlobal(false);
                var configFileLocalSettings     = ConfigFileSettings.CreateLocal(Module, false);
                var configFileEffectiveSettings = new ConfigFileSettings(configFileGlobalSettings, configFileLocalSettings.SettingsCache);

                RepoDistSettingsSet = new RepoDistSettingsSet(
                    repoDistEffectiveSettings,
                    repoDistLocalSettings,
                    repoDistPulledSettings,
                    repoDistGlobalSettings);

                ConfigFileSettingsSet = new ConfigFileSettingsSet(
                    configFileEffectiveSettings,
                    configFileLocalSettings,
                    configFileGlobalSettings);
            }
        }
Ejemplo n.º 3
0
        public static string FindDiffToolFullPath(ConfigFileSettingsSet settings, string difftoolText, out string exeName)
        {
            string diffTool = difftoolText.ToLowerInvariant();

            exeName = GetDiffToolExeFile(difftoolText);
            switch (diffTool)
            {
            case "beyondcompare3":
                return(FindDiffToolFullPath(settings, exeName, "difftool.beyondcompare3.path",
                                            @"Beyond Compare 3 (x86)\",
                                            @"Beyond Compare 3\"));

            case "beyondcompare4":
                return(FindDiffToolFullPath(settings, exeName, "difftool.beyondcompare4.path",
                                            @"Beyond Compare 4 (x86)\",
                                            @"Beyond Compare 4\"));

            case "diffmerge":
                return(FindDiffToolFullPath(settings, exeName, "difftool.diffmerge.path",
                                            @"SourceGear\Common\DiffMerge\", @"SourceGear\DiffMerge\"));

            case "kdiff3":
                string regkdiff3path = GetRegistryValue(Registry.LocalMachine, "SOFTWARE\\KDiff3", "") + "\\kdiff3.exe";
                return(FindDiffToolFullPath(settings, exeName, "difftool.kdiff3.path", @"KDiff3\", regkdiff3path));

            case "p4merge":
                return(FindDiffToolFullPath(settings, exeName, "difftool.p4merge.path", @"Perforce\"));

            case "meld":
                return(FindDiffToolFullPath(settings, exeName, "difftool.meld.path", @"Meld\", @"Meld (x86)\"));

            case "semanticdiff":
                string folder = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
                folder = Path.Combine(folder, @"PlasticSCM4\semanticmerge\");
                return(FindFileInFolders(exeName, folder));

            case "tmerge":
                string difftoolPath = FindFileInFolders(exeName, @"TortoiseGit\bin\");
                if (string.IsNullOrEmpty(difftoolPath))
                {
                    // TortoiseGit <1.8 (2013), TortoiseSVN
                    exeName      = "TortoiseMerge.exe";
                    difftoolPath = FindFileInFolders(exeName, @"TortoiseGit\bin\", @"TortoiseSVN\bin\");
                }

                return(difftoolPath);

            case "winmerge":
                return(FindDiffToolFullPath(settings, exeName, "difftool.winmerge.path", @"WinMerge\"));

            case "vsdiffmerge":
                return(FindDiffToolFullPath(settings, exeName, "difftool.vsdiffmerge.path", GetVsDiffMergePath()));

            case "vscode":
                return(FindDiffToolFullPath(settings, exeName, "difftool.vscode.path", @"Microsoft VS Code"));
            }

            exeName = difftoolText + ".exe";
            return(GetFullPath(exeName));
        }
Ejemplo n.º 4
0
        public CommonLogic(GitModule module)
        {
            Requires.NotNull(module, nameof(module));

            Module = module;

            var repoDistGlobalSettings    = RepoDistSettings.CreateGlobal(false);
            var repoDistPulledSettings    = RepoDistSettings.CreateDistributed(module, false);
            var repoDistLocalSettings     = RepoDistSettings.CreateLocal(module, false);
            var repoDistEffectiveSettings = new RepoDistSettings(
                new RepoDistSettings(repoDistGlobalSettings, repoDistPulledSettings.SettingsCache, SettingLevel.Distributed),
                repoDistLocalSettings.SettingsCache,
                SettingLevel.Effective);

            var configFileGlobalSettings    = ConfigFileSettings.CreateGlobal(false);
            var configFileLocalSettings     = ConfigFileSettings.CreateLocal(module, false);
            var configFileEffectiveSettings = new ConfigFileSettings(
                configFileGlobalSettings, configFileLocalSettings.SettingsCache, SettingLevel.Effective);

            RepoDistSettingsSet = new RepoDistSettingsSet(
                repoDistEffectiveSettings,
                repoDistLocalSettings,
                repoDistPulledSettings,
                repoDistGlobalSettings);

            ConfigFileSettingsSet = new ConfigFileSettingsSet(
                configFileEffectiveSettings,
                configFileLocalSettings,
                configFileGlobalSettings);
        }
Ejemplo n.º 5
0
        public CommonLogic(GitModule aModule)
        {
            Module = aModule;

            if (aModule != null)
            {
                var repoDistGlobalSettings = RepoDistSettings.CreateGlobal(false);
                var repoDistPulledSettings = RepoDistSettings.CreateDistributed(Module, false);
                var repoDistLocalSettings = RepoDistSettings.CreateLocal(Module, false);
                var repoDistEffectiveSettings = new RepoDistSettings(
                    new RepoDistSettings(repoDistGlobalSettings, repoDistPulledSettings.SettingsCache),
                    repoDistLocalSettings.SettingsCache);

                var configFileGlobalSettings = ConfigFileSettings.CreateGlobal(false);
                var configFileLocalSettings = ConfigFileSettings.CreateLocal(Module, false);
                var configFileEffectiveSettings = new ConfigFileSettings(configFileGlobalSettings, configFileLocalSettings.SettingsCache);

                RepoDistSettingsSet = new RepoDistSettingsSet(
                    repoDistEffectiveSettings,
                    repoDistLocalSettings,
                    repoDistPulledSettings,
                    repoDistGlobalSettings);

                ConfigFileSettingsSet = new ConfigFileSettingsSet(
                    configFileEffectiveSettings,
                    configFileLocalSettings,
                    configFileGlobalSettings);
            }
        }
Ejemplo n.º 6
0
        public CommonLogic([CanBeNull] VsrModule module)
        {
            Module = module;

            if (module != null)
            {
                var repoDistGlobalSettings    = RepoDistSettings.CreateGlobal(false);
                var repoDistPulledSettings    = RepoDistSettings.CreateDistributed(Module, false);
                var repoDistLocalSettings     = RepoDistSettings.CreateLocal(Module, false);
                var repoDistEffectiveSettings = new RepoDistSettings(
                    new RepoDistSettings(repoDistGlobalSettings, repoDistPulledSettings.SettingsCache, SettingLevel.Distributed),
                    repoDistLocalSettings.SettingsCache,
                    SettingLevel.Effective);

                var configFileGlobalSettings    = ConfigFileSettings.CreateGlobal(false);
                var configFileLocalSettings     = ConfigFileSettings.CreateLocal(Module, false);
                var configFileEffectiveSettings = new ConfigFileSettings(
                    configFileGlobalSettings, configFileLocalSettings.SettingsCache, SettingLevel.Effective);

                RepoDistSettingsSet = new RepoDistSettingsSet(
                    repoDistEffectiveSettings,
                    repoDistLocalSettings,
                    repoDistPulledSettings,
                    repoDistGlobalSettings);

                ConfigFileSettingsSet = new ConfigFileSettingsSet(
                    configFileEffectiveSettings,
                    configFileLocalSettings,
                    configFileGlobalSettings);
            }
        }
Ejemplo n.º 7
0
        public static string FindDiffToolFullPath(ConfigFileSettingsSet settings, string difftoolText, out string exeName)
        {
            string diffTool = difftoolText.ToLowerInvariant();
            switch (diffTool)
            {
                case "beyondcompare3":
                    string bcomppath = UnquoteString(GetGlobalSetting(settings, "difftool.beyondcompare3.path"));

                    exeName = "bcomp.exe";

                    return FindFileInFolders(exeName, bcomppath,
                                                          @"Beyond Compare 3 (x86)\",
                                                          @"Beyond Compare 3\");
                case "beyondcompare4":
                    string bcomppath4 = UnquoteString(GetGlobalSetting(settings, "difftool.beyondcompare4.path"));

                    exeName = "bcomp.exe";

                    return FindFileInFolders(exeName, bcomppath4,
                                                          @"Beyond Compare 4 (x86)\",
                                                          @"Beyond Compare 4\");
                case "kdiff3":
                    string kdiff3path = UnquoteString(GetGlobalSetting(settings, "difftool.kdiff3.path"));
                    string regkdiff3path = GetRegistryValue(Registry.LocalMachine, "SOFTWARE\\KDiff3", "") + "\\kdiff3.exe";

                    exeName = "kdiff3.exe";

                    return FindFileInFolders(exeName, kdiff3path, @"KDiff3\",
                                                          regkdiff3path);
                case "meld":
                    string difftoolMeldPath = UnquoteString(GetGlobalSetting(settings, "difftool.meld.path"));
                    string programFilesMeldPath = @"Meld\meld\";
                    exeName = "meld.exe";
                    return FindFileInFolders(exeName, difftoolMeldPath, programFilesMeldPath);
                case "semanticdiff":
                    exeName = "semanticmergetool.exe";
                    string folder = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
                    folder = Path.Combine(folder, @"PlasticSCM4\semanticmerge\");
                    return FindFileInFolders(exeName, folder);
                case "tmerge":
                    exeName = "TortoiseGitMerge.exe"; // TortoiseGit 1.8 use new names
                    string difftoolPath = FindFileInFolders(exeName, @"TortoiseGit\bin\");
                    if (String.IsNullOrEmpty(difftoolPath))
                    {
                        exeName = "TortoiseMerge.exe";
                        difftoolPath = FindFileInFolders(exeName, @"TortoiseGit\bin\");
                        if (String.IsNullOrEmpty(difftoolPath))
                            difftoolPath = FindFileInFolders(exeName, @"TortoiseSVN\bin\");
                    }
                    return difftoolPath;
                case "winmerge":
                    exeName = "winmergeu.exe";
                    string winmergepath = UnquoteString(GetGlobalSetting(settings, "difftool.winmerge.path"));

                    return FindFileInFolders("winmergeu.exe", winmergepath,
                                                          @"WinMerge\");
            }
            exeName = difftoolText + ".exe";
            return GetFullPath(exeName);
        }
Ejemplo n.º 8
0
        private static string FindDiffToolFullPath(ConfigFileSettingsSet settings, string exeName, string settingsKey, params string[] pathToSearch)
        {
            string exePathFromSettings = UnquoteString(GetGlobalSetting(settings, settingsKey));
            var    paths = new string[pathToSearch.Length + 1];

            paths[0] = exePathFromSettings;
            Array.Copy(pathToSearch, 0, paths, 1, pathToSearch.Length);
            return(FindFileInFolders(exeName, paths));
        }
Ejemplo n.º 9
0
        public static string FindDiffToolFullPath(ConfigFileSettingsSet settings, string difftoolText, out string exeName)
        {
            string diffTool = difftoolText.ToLowerInvariant();

            switch (diffTool)
            {
            case "beyondcompare3":
                string bcomppath = UnquoteString(GetGlobalSetting(settings, "difftool.beyondcompare3.path"));

                exeName = "bcomp.exe";

                return(FindFileInFolders(exeName, bcomppath,
                                         @"Beyond Compare 3 (x86)\",
                                         @"Beyond Compare 3\"));

            case "kdiff3":
                string kdiff3path    = UnquoteString(GetGlobalSetting(settings, "difftool.kdiff3.path"));
                string regkdiff3path = GetRegistryValue(Registry.LocalMachine, "SOFTWARE\\KDiff3", "") + "\\kdiff3.exe";

                exeName = "kdiff3.exe";

                return(FindFileInFolders(exeName, kdiff3path, @"KDiff3\",
                                         regkdiff3path));

            case "meld":
                string difftoolMeldPath     = UnquoteString(GetGlobalSetting(settings, "difftool.meld.path"));
                string programFilesMeldPath = @"Meld\meld\";
                exeName = "meld.exe";
                return(FindFileInFolders(exeName, difftoolMeldPath, programFilesMeldPath));

            case "tmerge":
                exeName = "TortoiseGitMerge.exe";     // TortoiseGit 1.8 use new names
                string difftoolPath = FindFileInFolders(exeName, @"TortoiseGit\bin\");
                if (String.IsNullOrEmpty(difftoolPath))
                {
                    exeName      = "TortoiseMerge.exe";
                    difftoolPath = FindFileInFolders(exeName, @"TortoiseGit\bin\");
                    if (String.IsNullOrEmpty(difftoolPath))
                    {
                        difftoolPath = FindFileInFolders(exeName, @"TortoiseSVN\bin\");
                    }
                }
                return(difftoolPath);

            case "winmerge":
                exeName = "winmergeu.exe";
                string winmergepath = UnquoteString(GetGlobalSetting(settings, "difftool.winmerge.path"));

                return(FindFileInFolders("winmergeu.exe", winmergepath,
                                         @"WinMerge\"));
            }
            exeName = difftoolText + ".exe";
            return(GetFullPath(exeName));
        }
Ejemplo n.º 10
0
 private static string GetGlobalSetting(ConfigFileSettingsSet settings, string setting)
 {
     return(settings.GlobalSettings.GetValue(setting));
 }
Ejemplo n.º 11
0
        public static string FindMergeToolFullPath(ConfigFileSettingsSet settings, string mergeToolText, out string exeName)
        {
            string mergeTool = mergeToolText.ToLowerInvariant();

            switch (mergeTool)
            {
            case "araxis":
                exeName = "Compare.exe";
                return(FindFileInFolders(exeName, @"Araxis\Araxis Merge\",
                                         @"Araxis 6.5\Araxis Merge\",
                                         @"Araxis\Araxis Merge v6.5\"));

            case "beyondcompare3":
                string bcomppath = UnquoteString(GetGlobalSetting(settings, "mergetool.beyondcompare3.path"));

                exeName = "bcomp.exe";
                return(FindFileInFolders(exeName, bcomppath, @"Beyond Compare 3 (x86)\",
                                         @"Beyond Compare 3\"));

            case "beyondcompare4":
                string bcomppath4 = UnquoteString(GetGlobalSetting(settings, "mergetool.beyondcompare4.path"));

                exeName = "bcomp.exe";
                return(FindFileInFolders(exeName, bcomppath4, @"Beyond Compare 4 (x86)\",
                                         @"Beyond Compare 4\"));

            case "diffmerge":
                exeName = "DiffMerge.exe";
                return(FindFileInFolders(exeName, @"SourceGear\Common\DiffMerge\", @"SourceGear\DiffMerge\"));

            case "kdiff3":
                exeName = "kdiff3.exe";
                string kdiff3path    = UnquoteString(GetGlobalSetting(settings, "mergetool.kdiff3.path"));
                string regkdiff3path = GetRegistryValue(Registry.LocalMachine, "SOFTWARE\\KDiff3", "");
                if (regkdiff3path != "")
                {
                    regkdiff3path += "\\" + exeName;
                }

                return(FindFileInFolders(exeName, kdiff3path, @"KDiff3\", regkdiff3path));

            case "p4merge":
                string p4mergepath = UnquoteString(GetGlobalSetting(settings, "mergetool.p4merge.path"));
                exeName = "p4merge.exe";
                return(FindFileInFolders(exeName, p4mergepath, @"Perforce\"));

            case "semanticmerge":
                exeName = "semanticmergetool.exe";
                string folder = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
                folder = Path.Combine(folder, @"PlasticSCM4\semanticmerge\");
                return(FindFileInFolders(exeName, folder));

            case "tortoisemerge":
                exeName = "TortoiseGitMerge.exe";     // TortoiseGit 1.8 use new names
                string path = FindFileInFolders(exeName, @"TortoiseGit\bin\");
                if (string.IsNullOrEmpty(path))
                {
                    exeName = "TortoiseMerge.exe";
                    path    = FindFileInFolders(exeName, @"TortoiseGit\bin\");
                    if (string.IsNullOrEmpty(path))
                    {
                        path = FindFileInFolders(exeName, @"TortoiseSVN\bin\");
                    }
                }
                return(path);

            case "winmerge":
                string winmergepath = UnquoteString(GetGlobalSetting(settings, "mergetool.winmerge.path"));

                exeName = "winmergeu.exe";
                return(FindFileInFolders(exeName, winmergepath, @"WinMerge\"));

            case "vsdiffmerge":
                string vsdiffmergepath    = UnquoteString(GetGlobalSetting(settings, "mergetool.vsdiffmerge.path"));
                string regvsdiffmergepath = GetVisualStudioPath() + "vsdiffmerge.exe";
                exeName = "vsdiffmerge.exe";
                return(FindFileInFolders(exeName, vsdiffmergepath, regvsdiffmergepath));
            }
            exeName = mergeToolText + ".exe";
            return(GetFullPath(exeName));
        }
Ejemplo n.º 12
0
        public static string FindDiffToolFullPath(ConfigFileSettingsSet settings, string difftoolText, out string exeName)
        {
            string diffTool = difftoolText.ToLowerInvariant();

            switch (diffTool)
            {
            case "beyondcompare3":
                string bcomppath = UnquoteString(GetGlobalSetting(settings, "difftool.beyondcompare3.path"));

                exeName = "bcomp.exe";

                return(FindFileInFolders(exeName, bcomppath,
                                         @"Beyond Compare 3 (x86)\",
                                         @"Beyond Compare 3\"));

            case "beyondcompare4":
                string bcomppath4 = UnquoteString(GetGlobalSetting(settings, "difftool.beyondcompare4.path"));

                exeName = "bcomp.exe";

                return(FindFileInFolders(exeName, bcomppath4,
                                         @"Beyond Compare 4 (x86)\",
                                         @"Beyond Compare 4\"));

            case "kdiff3":
                string kdiff3path    = UnquoteString(GetGlobalSetting(settings, "difftool.kdiff3.path"));
                string regkdiff3path = GetRegistryValue(Registry.LocalMachine, "SOFTWARE\\KDiff3", "") + "\\kdiff3.exe";

                exeName = "kdiff3.exe";

                return(FindFileInFolders(exeName, kdiff3path, @"KDiff3\", regkdiff3path));

            case "p4merge":
                string p4mergepath = UnquoteString(GetGlobalSetting(settings, "difftool.p4merge.path"));
                exeName = "p4merge.exe";
                return(FindFileInFolders(exeName, p4mergepath, @"Perforce\"));

            case "meld":
                string difftoolMeldPath     = UnquoteString(GetGlobalSetting(settings, "difftool.meld.path"));
                string programFilesMeldPath = @"Meld\meld\";
                exeName = "meld.exe";
                return(FindFileInFolders(exeName, difftoolMeldPath, programFilesMeldPath));

            case "semanticdiff":
                exeName = "semanticmergetool.exe";
                string folder = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
                folder = Path.Combine(folder, @"PlasticSCM4\semanticmerge\");
                return(FindFileInFolders(exeName, folder));

            case "tmerge":
                exeName = "TortoiseGitMerge.exe";     // TortoiseGit 1.8 use new names
                string difftoolPath = FindFileInFolders(exeName, @"TortoiseGit\bin\");
                if (String.IsNullOrEmpty(difftoolPath))
                {
                    exeName      = "TortoiseMerge.exe";
                    difftoolPath = FindFileInFolders(exeName, @"TortoiseGit\bin\");
                    if (String.IsNullOrEmpty(difftoolPath))
                    {
                        difftoolPath = FindFileInFolders(exeName, @"TortoiseSVN\bin\");
                    }
                }
                return(difftoolPath);

            case "winmerge":
                exeName = "winmergeu.exe";
                string winmergepath = UnquoteString(GetGlobalSetting(settings, "difftool.winmerge.path"));

                return(FindFileInFolders("winmergeu.exe", winmergepath,
                                         @"WinMerge\"));

            case "vsdiffmerge":
                string vsdiffmergepath    = UnquoteString(GetGlobalSetting(settings, "difftool.vsdiffmerge.path"));
                string regvsdiffmergepath = GetVisualStudioPath() + "vsdiffmerge.exe";
                exeName = "vsdiffmerge.exe";
                return(FindFileInFolders(exeName, vsdiffmergepath, regvsdiffmergepath));
            }
            exeName = difftoolText + ".exe";
            return(GetFullPath(exeName));
        }
Ejemplo n.º 13
0
        public static string FindMergeToolFullPath(ConfigFileSettingsSet settings, string mergeToolText, out string exeName)
        {
            string mergeTool = mergeToolText.ToLowerInvariant();

            switch (mergeTool)
            {
                case "araxis":
                    exeName = "Compare.exe";
                    return FindFileInFolders(exeName, @"Araxis\Araxis Merge\",
                                                        @"Araxis 6.5\Araxis Merge\",
                                                        @"Araxis\Araxis Merge v6.5\");
                case "beyondcompare3":
                    string bcomppath = UnquoteString(GetGlobalSetting(settings, "mergetool.beyondcompare3.path"));

                    exeName = "bcomp.exe";
                    return FindFileInFolders(exeName, bcomppath, @"Beyond Compare 3 (x86)\",
                                                                 @"Beyond Compare 3\");
                case "beyondcompare4":
                    string bcomppath4 = UnquoteString(GetGlobalSetting(settings, "mergetool.beyondcompare4.path"));

                    exeName = "bcomp.exe";
                    return FindFileInFolders(exeName, bcomppath4, @"Beyond Compare 4 (x86)\",
                                                                  @"Beyond Compare 4\");
                case "diffmerge":
                    exeName = "DiffMerge.exe";
                    return FindFileInFolders(exeName, @"SourceGear\DiffMerge\");
                case "kdiff3":
                    exeName = "kdiff3.exe";
                    string kdiff3path = UnquoteString(GetGlobalSetting(settings, "mergetool.kdiff3.path"));
                    string regkdiff3path = GetRegistryValue(Registry.LocalMachine, "SOFTWARE\\KDiff3", "");
                    if (regkdiff3path != "")
                        regkdiff3path += "\\" + exeName;

                    return FindFileInFolders(exeName, kdiff3path, @"KDiff3\", regkdiff3path);
                case "p4merge":
                    string p4mergepath = UnquoteString(GetGlobalSetting(settings, "mergetool.p4merge.path"));
                    exeName = "p4merge.exe";
                    return FindFileInFolders(exeName, p4mergepath, @"Perforce\");
                case "semanticmerge":
                    exeName = "semanticmergetool.exe";
                    string folder = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
                    folder = Path.Combine(folder, @"PlasticSCM4\semanticmerge\");
                    return FindFileInFolders(exeName, folder);
                case "tortoisemerge":
                    exeName = "TortoiseGitMerge.exe"; // TortoiseGit 1.8 use new names
                    string path = FindFileInFolders(exeName, @"TortoiseGit\bin\");
                    if (string.IsNullOrEmpty(path))
                    {
                        exeName = "TortoiseMerge.exe";
                        path = FindFileInFolders(exeName, @"TortoiseGit\bin\");
                        if (string.IsNullOrEmpty(path))
                            path = FindFileInFolders(exeName, @"TortoiseSVN\bin\");
                    }
                    return path;
                case "winmerge":
                    string winmergepath = UnquoteString(GetGlobalSetting(settings, "mergetool.winmerge.path"));

                    exeName = "winmergeu.exe";
                    return FindFileInFolders(exeName, winmergepath, @"WinMerge\");
            }
            exeName = mergeToolText + ".exe";
            return GetFullPath(exeName);
        }
Ejemplo n.º 14
0
 private static string GetGlobalSetting(ConfigFileSettingsSet settings, string setting)
 {
     return settings.GlobalSettings.GetValue(setting);
 }
Ejemplo n.º 15
0
        public static string FindMergeToolFullPath(ConfigFileSettingsSet settings, string mergeToolText, out string exeName)
        {
            string mergeTool = mergeToolText.ToLowerInvariant();

            switch (mergeTool)
            {
            case "araxis":
                exeName = "Compare.exe";
                return(FindFileInFolders(exeName, @"Araxis\Araxis Merge\",
                                         @"Araxis 6.5\Araxis Merge\",
                                         @"Araxis\Araxis Merge v6.5\"));

            case "beyondcompare3":
                string bcomppath = UnquoteString(GetGlobalSetting(settings, "mergetool.beyondcompare3.path"));

                exeName = "bcomp.exe";
                return(FindFileInFolders(exeName, bcomppath, @"Beyond Compare 3 (x86)\",
                                         @"Beyond Compare 3\"));

            case "diffmerge":
                exeName = "DiffMerge.exe";
                return(FindFileInFolders(exeName, @"SourceGear\DiffMerge\"));

            case "kdiff3":
                exeName = "kdiff3.exe";
                string kdiff3path    = UnquoteString(GetGlobalSetting(settings, "mergetool.kdiff3.path"));
                string regkdiff3path = GetRegistryValue(Registry.LocalMachine, "SOFTWARE\\KDiff3", "");
                if (regkdiff3path != "")
                {
                    regkdiff3path += "\\" + exeName;
                }

                return(FindFileInFolders(exeName, kdiff3path, @"KDiff3\", regkdiff3path));

            case "p4merge":
                string p4mergepath = UnquoteString(GetGlobalSetting(settings, "mergetool.p4merge.path"));
                exeName = "p4merge.exe";
                return(FindFileInFolders(exeName, p4mergepath, @"Perforce\"));

            case "tortoisemerge":
                exeName = "TortoiseGitMerge.exe";     // TortoiseGit 1.8 use new names
                string path = FindFileInFolders(exeName, @"TortoiseGit\bin\");
                if (string.IsNullOrEmpty(path))
                {
                    exeName = "TortoiseMerge.exe";
                    path    = FindFileInFolders(exeName, @"TortoiseGit\bin\");
                    if (string.IsNullOrEmpty(path))
                    {
                        path = FindFileInFolders(exeName, @"TortoiseSVN\bin\");
                    }
                }
                return(path);

            case "winmerge":
                string winmergepath = UnquoteString(GetGlobalSetting(settings, "mergetool.winmerge.path"));

                exeName = "winmergeu.exe";
                return(FindFileInFolders(exeName, winmergepath, @"WinMerge\"));
            }
            exeName = mergeToolText + ".exe";
            return(GetFullPath(exeName));
        }