package com.atlassian.bitbucket.scm.git.command;

import com.atlassian.bitbucket.scm.AsyncCommand;
import com.atlassian.bitbucket.scm.Command;

/**
 * Merges both the {@link Command} and {@link AsyncCommand} interfaces, allowing {@code git} commands to be run both
 * synchronously and asynchronously. This allows the caller to choose which style of execution is suitable for their
 * needs. Note that the output produced by the command when it is executed will be the same regardless of whether it
 * is executed synchronously or asynchronously.
 */
public interface GitCommand<T> extends AsyncCommand<T>, Command<T> {

    //This interface adds nothing to the contracts of AsyncCommand and Command; it merely combines them.
}
