static GitCommandConfiguration() { // The set of default configuration items for Git Extensions Default = new GitCommandConfiguration(); Default.Add(new GitConfigItem("rebase.autoSquash", "false"), "rebase"); Default.Add(new GitConfigItem("log.showSignature", "false"), "log", "show", "whatchanged"); Default.Add(new GitConfigItem("diff.submodule", "short"), "diff"); Default.Add(new GitConfigItem("diff.noprefix", "false"), "diff"); Default.Add(new GitConfigItem("diff.mnemonicprefix", "false"), "diff"); Default.Add(new GitConfigItem("diff.ignoreSubmodules", "none"), "diff", "status"); }
/// <summary> /// Initialises a new <see cref="GitArgumentBuilder"/> for the given <paramref name="command"/>. /// </summary> /// <param name="command">The git command this builder is compiling arguments for.</param> /// <param name="commandConfiguration">Optional source for default command configuration items. Pass <c>null</c> to use the Git Extensions defaults.</param> /// <param name="gitOptions">Optional arguments that are for the git command. EX: git --no-optional-locks status </param> /// <exception cref="ArgumentNullException"><paramref name="command"/> is <c>null</c>.</exception> /// <exception cref="ArgumentException"><paramref name="command"/> is an invalid string.</exception> public GitArgumentBuilder([NotNull] string command, [CanBeNull] GitCommandConfiguration commandConfiguration = null, [CanBeNull] ArgumentString gitOptions = default) { if (command is null) { throw new ArgumentNullException(nameof(command)); } if (!CommandRegex.IsMatch(command)) { throw new ArgumentException($"Git command \"{command}\" contains invalid characters.", nameof(command)); } _command = command; _gitArgs = gitOptions; commandConfiguration ??= GitCommandConfiguration.Default; var defaultConfig = commandConfiguration.Get(command); _configItems = new List <GitConfigItem>(capacity: defaultConfig.Count + 2); if (defaultConfig.Count != 0) { _configItems.AddRange(defaultConfig); } }