/// <summary>
        /// Launch the visual diff tool.
        /// </summary>
        /// <param name="repository">
        /// The <see cref="Repository"/> to view diffs from.
        /// </param>
        /// <param name="command">
        /// Any extra options to the vdiff method, or <c>null</c> for default options.
        /// </param>
        /// <exception cref="ArgumentNullException">
        /// <para><paramref name="repository"/> is <c>null</c>.</para>
        /// </exception>
        public static void DiffGui(this Repository repository, DiffGuiCommand command = null)
        {
            if (repository == null)
                throw new ArgumentNullException("repository");

            command = command ?? new DiffGuiCommand();

            repository.Execute(command);
        }
        /// <summary>
        /// Launch the visual diff tool.
        /// </summary>
        /// <param name="repository">
        /// The <see cref="Repository"/> to view diffs from.
        /// </param>
        /// <param name="revisions">
        /// The revision <see cref="RevSpec"/> that identifies the revision or the
        /// revision range to view a diff of.
        /// </param>
        /// <param name="command">
        /// Any extra options to the vdiff method, or <c>null</c> for default options.
        /// </param>
        /// <exception cref="ArgumentNullException">
        /// <para><paramref name="repository"/> is <c>null</c>.</para>
        /// </exception>
        /// <exception cref="ArgumentException">
        /// <para><see cref="DiffGuiCommand.Revisions"/> cannot be set before calling this method.</para>
        /// </exception>
        public static void DiffGui(this Repository repository, RevSpec revisions, DiffGuiCommand command = null)
        {
            if (repository == null)
                throw new ArgumentNullException("repository");
            if (revisions == null)
                throw new ArgumentNullException("revisions");
            if (command != null && !StringEx.IsNullOrWhiteSpace(command.Revisions))
                throw new ArgumentException("DiffGuiCommand.Revisions cannot be set before calling this method", "command");

            command = (command ?? new DiffGuiCommand())
                .WithRevisions(revisions);

            repository.Execute(command);
        }