blob: 9952003f6eed6217ec2e5038873b013b1001030a [file] [log] [blame]
package com.intellij.vcs.log;
import org.jetbrains.annotations.NotNull;
import java.awt.*;
/**
* @author Kirill Likhodedov
*/
public interface VcsRefType {
/**
* <p>Tells if this reference type should be considered a branch.</p>
*
* <p>Although there are different ref types across different VCSs, generally they can be divided into development branches producing
* separate branches in the graph, and tags which are just handy labels to specific repository states.
* This difference is not clear enough for Git branches or Mercurial bookmarks, which internally have no differences with tags,
* but they are still considered as branches due to their purpose, rather than to their internal structure.</p>
*
* <p>Although this is implementation specific and may change, here are some examples of the difference between branches and not-branches
* considering the VCS Log:
* <ul>
* <li>branch references stop collapsing of long linear branches, while tags don't.</li>
* <li>branches try to keep their color through time, while tags don't affect colors of branches.</li>
* </ul></p>
*/
boolean isBranch();
/**
* Returns the background color which should be used to paint a {@link VcsRef reference label} of this type.
* TODO maybe this is not the right place for color
*/
@NotNull
Color getBackgroundColor();
}