public abstract class GitRatchet<Project> extends Object implements AutoCloseable
How to use:
rootTreeShaOf(Object, String) to turn origin/master into the SHA of the tree object at that referenceisClean(Object, ObjectId, File) to see if the given file is “git clean” relative to that treesubtreeShaOf(Object, ObjectId) to optimize up-to-date checks on a per-project basis.| Constructor and Description |
|---|
GitRatchet() |
| Modifier and Type | Method and Description |
|---|---|
void |
close() |
protected abstract File |
getDir(Project project) |
protected abstract Project |
getParent(Project project) |
boolean |
isClean(Project project,
org.eclipse.jgit.lib.ObjectId treeSha,
File file)
This is the highest-level method, which all the others serve.
|
org.eclipse.jgit.lib.ObjectId |
rootTreeShaOf(Project project,
String reference)
Fast way to return treeSha of the given ref against the git repository which stores the given project.
|
org.eclipse.jgit.lib.ObjectId |
subtreeShaOf(Project project,
org.eclipse.jgit.lib.ObjectId rootTreeSha)
Returns the sha of the git subtree which represents the root of the given project, or
ObjectId.zeroId()
if there is no git subtree at the project root. |
public boolean isClean(Project project, org.eclipse.jgit.lib.ObjectId treeSha, File file) throws IOException
This is the highest-level method, which all the others serve. Given the sha of a git tree (not a commit!), and the file in question, this method returns true if that file is clean relative to that tree. A naive implementation of this could be verrrry slow, so the rest of this is about speeding this up.
IOExceptionpublic org.eclipse.jgit.lib.ObjectId rootTreeShaOf(Project project, String reference)
Fast way to return treeSha of the given ref against the git repository which stores the given project. Because of parallel project evaluation, there may be races here, so we synchronize on ourselves. However, this method is the only method which can trigger any changes, and it is only called during project evaluation. That means our state is final/read-only during task execution, so we don’t need any locks during the heavy lifting.
public org.eclipse.jgit.lib.ObjectId subtreeShaOf(Project project, org.eclipse.jgit.lib.ObjectId rootTreeSha)
Returns the sha of the git subtree which represents the root of the given project, or ObjectId.zeroId()
if there is no git subtree at the project root.
public void close()
close in interface AutoCloseable