For now ignore doclint "missing" warnings. Change-Id: I0e5af7a757f4d92ffeeb113f30576a35414d6781 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>tags/v4.10.0.201712302008-r
} | } | ||||
/** | /** | ||||
* Create the {@linkAppServer}.This default implementation creates a server | |||||
* Create the {@link AppServer}.This default implementation creates a server | |||||
* without SSLsupport listening for HTTP connections on a dynamically chosen | * without SSLsupport listening for HTTP connections on a dynamically chosen | ||||
* port, which can be gotten once the server has been started via its | * port, which can be gotten once the server has been started via its | ||||
* {@link org.eclipse.jgit.junit.http.AppServer#getPort()} method. | * {@link org.eclipse.jgit.junit.http.AppServer#getPort()} method. |
import java.util.Map; | import java.util.Map; | ||||
/** | /** | ||||
* POJOs for Gson serialization/deserialization | |||||
* POJOs for Gson serialization/de-serialization. | |||||
* | * | ||||
* See | |||||
* {@link <a href="https://github.com/github/git-lfs/tree/master/docs/api">LFS | |||||
* API specification</a>} | |||||
* See the <a href="https://github.com/github/git-lfs/tree/master/docs/api">LFS | |||||
* API specification</a> | |||||
* | * | ||||
* @since 4.3 | * @since 4.3 | ||||
*/ | */ |
* content with content of a so-called LFS pointer file. The pointer file | * content with content of a so-called LFS pointer file. The pointer file | ||||
* content will then be added to the git repository. Additionally this filter | * content will then be added to the git repository. Additionally this filter | ||||
* writes the original content in a so-called 'media file' to '.git/lfs/objects/ | * writes the original content in a so-called 'media file' to '.git/lfs/objects/ | ||||
* <first-two-characters-of-contentid>/<rest-of-contentid>' | |||||
* <first-two-characters-of-contentid>/<rest-of-contentid>' | |||||
* | * | ||||
* @see <a href="https://github.com/github/git-lfs/blob/master/docs/spec.md">Git | * @see <a href="https://github.com/github/git-lfs/blob/master/docs/spec.md">Git | ||||
* LFS Specification</a> | * LFS Specification</a> |
import org.eclipse.jgit.lfs.lib.AnyLongObjectId; | import org.eclipse.jgit.lfs.lib.AnyLongObjectId; | ||||
/** | /** | ||||
* Class which represents the lfs folder hierarchy inside a .git folder | |||||
* Class which represents the lfs folder hierarchy inside a {@code .git} folder | |||||
* | * | ||||
* @since 4.6 | * @since 4.6 | ||||
*/ | */ | ||||
* Constructor for Lfs. | * Constructor for Lfs. | ||||
* | * | ||||
* @param root | * @param root | ||||
* the path to the LFS media directory. Will be "<repo>/.git/lfs" | |||||
* the path to the LFS media directory. Will be | |||||
* {@code "<repo>/.git/lfs"} | |||||
*/ | */ | ||||
public Lfs(Path root) { | public Lfs(Path root) { | ||||
this.root = root; | this.root = root; | ||||
* | * | ||||
* @param id | * @param id | ||||
* the id of the mediafile | * the id of the mediafile | ||||
* @return the file which stores the original content. This will be files | |||||
* underneath | |||||
* "<repo>/.git/lfs/objects/<firstTwoLettersOfID>/<remainingLettersOfID>" | |||||
* @return the file which stores the original content. Its path will look | |||||
* like | |||||
* {@code "<repo>/.git/lfs/objects/<firstTwoLettersOfID>/<remainingLettersOfID>"} | |||||
*/ | */ | ||||
public Path getMediaFile(AnyLongObjectId id) { | public Path getMediaFile(AnyLongObjectId id) { | ||||
String idStr = id.name(); | String idStr = id.name(); |
} | } | ||||
/** | /** | ||||
* Content type used by LFS REST API as defined in | |||||
* {@link "https://github.com/github/git-lfs/blob/master/docs/api/v1/http-v1-batch.md"} | |||||
* Content type used by LFS REST API as defined in <a href= | |||||
* "https://github.com/github/git-lfs/blob/master/docs/api/v1/http-v1-batch.md"> | |||||
* https://github.com/github/git-lfs/blob/master/docs/api/v1/http-v1-batch.md</a> | |||||
*/ | */ | ||||
public static final String CONTENT_TYPE_GIT_LFS_JSON = "application/vnd.git-lfs+json"; | public static final String CONTENT_TYPE_GIT_LFS_JSON = "application/vnd.git-lfs+json"; | ||||
/** | /** | ||||
* "arbitrary binary data" as defined in RFC 2046 | |||||
* {@link "https://www.ietf.org/rfc/rfc2046.txt"} | |||||
* "Arbitrary binary data" as defined in | |||||
* <a href="https://www.ietf.org/rfc/rfc2046.txt">RFC 2046</a> | |||||
*/ | */ | ||||
public static final String HDR_APPLICATION_OCTET_STREAM = "application/octet-stream"; | public static final String HDR_APPLICATION_OCTET_STREAM = "application/octet-stream"; | ||||
} | } |
* <li>Create branch '1' | * <li>Create branch '1' | ||||
* <li>Modify file 'a' | * <li>Modify file 'a' | ||||
* <li>Commit | * <li>Commit | ||||
* <li>Delete file 'a' & replace by folder 'a' in the working tree & index | |||||
* <li>Delete file 'a' and replace by folder 'a' in the working tree and | |||||
* index | |||||
* <li>Checkout branch '1' | * <li>Checkout branch '1' | ||||
* </ol> | * </ol> | ||||
* <p> | * <p> | ||||
* <li>Create branch '1' | * <li>Create branch '1' | ||||
* <li>Modify file 'a' | * <li>Modify file 'a' | ||||
* <li>Commit | * <li>Commit | ||||
* <li>Delete file 'a' & replace by folder 'a' in the working tree & index | |||||
* <li>Delete file 'a' and replace by folder 'a' in the working tree and | |||||
* index | |||||
* <li>Checkout branch '1' | * <li>Checkout branch '1' | ||||
* </ol> | * </ol> | ||||
* <p> | * <p> |
* --------------------------------------------------------------------- | * --------------------------------------------------------------------- | ||||
* | HEAD DirCache Worktree | HEAD DirCache | * | HEAD DirCache Worktree | HEAD DirCache | ||||
* --------------------------------------------------------------------- | * --------------------------------------------------------------------- | ||||
* f1_1 | - - c | => e: path unknown | |||||
* f1_2 | - c - | => no changes | |||||
* f1_1 | - - c | => e: path unknown | |||||
* f1_2 | - c - | => no changes | |||||
* f1_3 | c - - | - - | * f1_3 | c - - | - - | ||||
* f1_4 | - c c | c c | * f1_4 | - c c | c c | ||||
* f1_5 | c c - | - - | * f1_5 | c c - | - - | ||||
* f1_6 | c - c | => no changes | |||||
* f1_7 | c c c | => no changes | |||||
* f1_6 | c - c | => no changes | |||||
* f1_7 | c c c | => no changes | |||||
* --------------------------------------------------------------------- | * --------------------------------------------------------------------- | ||||
* f1_8 | - c c' | c' c' | * f1_8 | - c c' | c' c' | ||||
* f1_9 | c - c' | c' c' | * f1_9 | c - c' | c' c' | ||||
* f1_10 | c c' - | - - | * f1_10 | c c' - | - - | ||||
* f1_11 | c c c' | c' c' | * f1_11 | c c c' | c' c' | ||||
* f1_12 | c c' c | => no changes | |||||
* f1_12 | c c' c | => no changes | |||||
* f1_13 | c c' c' | c' c' | * f1_13 | c c' c' | c' c' | ||||
* --------------------------------------------------------------------- | * --------------------------------------------------------------------- | ||||
* f1_14 | c c' c'' | c'' c'' | * f1_14 | c c' c'' | c'' c'' | ||||
* --------------------------------------------------------------------------- | * --------------------------------------------------------------------------- | ||||
* | HEAD DirCache Worktree | HEAD DirCache | * | HEAD DirCache Worktree | HEAD DirCache | ||||
* --------------------------------------------------------------------------- | * --------------------------------------------------------------------------- | ||||
* f1_1_f2_14 | - - c | => e: path unknown | |||||
* f1_1_f2_14 | - - c | => e: path unknown | |||||
* f1_2_f2_14 | - c - | - - | * f1_2_f2_14 | - c - | - - | ||||
* f1_6_f2_14 | c - c | c c | * f1_6_f2_14 | c - c | c c | ||||
* f1_7_f2_14 | c c c | c c | * f1_7_f2_14 | c c c | c c |
* Make sure it finds a tag when not all ancestries include a tag. | * Make sure it finds a tag when not all ancestries include a tag. | ||||
* | * | ||||
* <pre> | * <pre> | ||||
* c1 -+-> T - | |||||
* c1 -+-> T - | |||||
* | | | * | | | ||||
* +-> c3 -+-> c4 | |||||
* +-> c3 -+-> c4 | |||||
* </pre> | * </pre> | ||||
* | * | ||||
* @throws Exception | * @throws Exception | ||||
* When t2 dominates t1, it's clearly preferable to describe by using t2. | * When t2 dominates t1, it's clearly preferable to describe by using t2. | ||||
* | * | ||||
* <pre> | * <pre> | ||||
* t1 -+-> t2 - | |||||
* t1 -+-> t2 - | |||||
* | | | * | | | ||||
* +-> c3 -+-> c4 | |||||
* +-> c3 -+-> c4 | |||||
* </pre> | * </pre> | ||||
* | * | ||||
* @throws Exception | * @throws Exception | ||||
* When t1 is nearer than t2, t2 should be found | * When t1 is nearer than t2, t2 should be found | ||||
* | * | ||||
* <pre> | * <pre> | ||||
* c1 -+-> c2 -> t1 -+ | |||||
* c1 -+-> c2 -> t1 -+ | |||||
* | | | * | | | ||||
* +-> t2 -> c3 -+-> c4 | |||||
* +-> t2 -> c3 -+-> c4 | |||||
* </pre> | * </pre> | ||||
* | * | ||||
* @throws Exception | * @throws Exception | ||||
* paths | * paths | ||||
* | * | ||||
* <pre> | * <pre> | ||||
* c1 -+-> t1 -> c2 -+ | |||||
* c1 -+-> t1 -> c2 -+ | |||||
* | | | * | | | ||||
* +-> t2 -> c3 -+-> c4 | |||||
* +-> t2 -> c3 -+-> c4 | |||||
* </pre> | * </pre> | ||||
* | * | ||||
* @throws Exception | * @throws Exception |
/** | /** | ||||
* Reset hard from unclean condition. | * Reset hard from unclean condition. | ||||
* <p> | * <p> | ||||
* WorkDir: Empty <br/> | |||||
* Index: f/g <br/> | |||||
* WorkDir: Empty <br> | |||||
* Index: f/g <br> | |||||
* Merge: x | * Merge: x | ||||
* | * | ||||
* @throws Exception | * @throws Exception |
/** | /** | ||||
* Assert which renames should have happened, in traversal order. | * Assert which renames should have happened, in traversal order. | ||||
* | |||||
* @param expectedRenames | * @param expectedRenames | ||||
* the rename specs, each one in the form "srcPath->destPath" | |||||
* the rename specs, each one in the form "srcPath->destPath" | |||||
*/ | */ | ||||
protected void assertRenames(String... expectedRenames) { | protected void assertRenames(String... expectedRenames) { | ||||
Assert.assertEquals("Unexpected number of renames. Expected: " + | Assert.assertEquals("Unexpected number of renames. Expected: " + |
* Steps: 1.Add file 'b' 2.Commit 3.Create branch '1' 4.Add symlink 'a' | * Steps: 1.Add file 'b' 2.Commit 3.Create branch '1' 4.Add symlink 'a' | ||||
* 5.Commit 6.Checkout branch '1' | * 5.Commit 6.Checkout branch '1' | ||||
* | * | ||||
* The working tree should not contain 'a' -> FileMode.MISSING after the | |||||
* The working tree should not contain 'a' -> FileMode.MISSING after the | |||||
* checkout. | * checkout. | ||||
* | * | ||||
* @throws Exception | * @throws Exception |
* <p> | * <p> | ||||
* This iterator is configured by a list of strictly increasing long values | * This iterator is configured by a list of strictly increasing long values | ||||
* t(0), t(1), ..., t(n). For each file with a modification between t(x) and | * t(0), t(1), ..., t(n). For each file with a modification between t(x) and | ||||
* t(x+1) [ t(x) <= time < t(x+1) ] this iterator will report t(x). For files | |||||
* with a modification time smaller t(0) a modification time of 0 is returned. | |||||
* For files with a modification time greater or equal t(n) t(n) will be | |||||
* returned. | |||||
* t(x+1) [ t(x) <= time < t(x+1) ] this iterator will report t(x). For | |||||
* files with a modification time smaller t(0) a modification time of 0 is | |||||
* returned. For files with a modification time greater or equal t(n) t(n) will | |||||
* be returned. | |||||
* <p> | * <p> | ||||
* This class was written especially to test racy-git problems | * This class was written especially to test racy-git problems | ||||
*/ | */ |
} | } | ||||
/** | /** | ||||
* Get <code>RefSpec</code>s. | |||||
* </p> | |||||
* Get {@code RefSpec}s. | |||||
* | * | ||||
* @return the ref specs | * @return the ref specs | ||||
*/ | */ |
* following (with lower priority) nodes from setting the attribute to a value | * following (with lower priority) nodes from setting the attribute to a value | ||||
* at all</li> | * at all</li> | ||||
* </ul> | * </ul> | ||||
* </p> | |||||
* | * | ||||
* @since 3.7 | * @since 3.7 | ||||
*/ | */ |
/** | /** | ||||
* Represents a set of attributes for a path | * Represents a set of attributes for a path | ||||
* <p> | |||||
* | * | ||||
* @since 4.2 | * @since 4.2 | ||||
*/ | */ |
/** | /** | ||||
* "Fast" (compared with IgnoreRule) git ignore rule implementation supporting | * "Fast" (compared with IgnoreRule) git ignore rule implementation supporting | ||||
* also double star <code>**<code> pattern. | |||||
* also double star {@code **} pattern. | |||||
* <p> | * <p> | ||||
* This class is immutable and thread safe. | * This class is immutable and thread safe. | ||||
* | * |
* | * | ||||
* @return garbage packs older than this limit (in milliseconds) will be | * @return garbage packs older than this limit (in milliseconds) will be | ||||
* pruned as part of the garbage collection process if the value is | * pruned as part of the garbage collection process if the value is | ||||
* > 0, otherwise garbage packs are retained. | |||||
* > 0, otherwise garbage packs are retained. | |||||
*/ | */ | ||||
public long getGarbageTtlMillis() { | public long getGarbageTtlMillis() { | ||||
return garbageTtlMillis; | return garbageTtlMillis; |
* it exits without performing any work. Some JGit commands run | * it exits without performing any work. Some JGit commands run | ||||
* {@code gc --auto} after performing operations that could create many | * {@code gc --auto} after performing operations that could create many | ||||
* loose objects. | * loose objects. | ||||
* <p/> | |||||
* <p> | |||||
* Housekeeping is required if there are too many loose objects or too many | * Housekeeping is required if there are too many loose objects or too many | ||||
* packs in the repository. If the number of loose objects exceeds the value | * packs in the repository. If the number of loose objects exceeds the value | ||||
* of the gc.auto option JGit GC consolidates all existing packs into a | * of the gc.auto option JGit GC consolidates all existing packs into a | ||||
* combine all loose objects into a single pack using {@code repack -d -l}. | * combine all loose objects into a single pack using {@code repack -d -l}. | ||||
* Setting the value of {@code gc.auto} to 0 disables automatic packing of | * Setting the value of {@code gc.auto} to 0 disables automatic packing of | ||||
* loose objects. | * loose objects. | ||||
* <p/> | |||||
* <p> | |||||
* If the number of packs exceeds the value of {@code gc.autoPackLimit}, | * If the number of packs exceeds the value of {@code gc.autoPackLimit}, | ||||
* then existing packs (except those marked with a .keep file) are | * then existing packs (except those marked with a .keep file) are | ||||
* consolidated into a single pack by using the {@code -A} option of repack. | * consolidated into a single pack by using the {@code -A} option of repack. | ||||
* Setting {@code gc.autoPackLimit} to 0 disables automatic consolidation of | * Setting {@code gc.autoPackLimit} to 0 disables automatic consolidation of | ||||
* packs. | * packs. | ||||
* <p/> | |||||
* <p> | |||||
* Like git the following jgit commands run auto gc: | * Like git the following jgit commands run auto gc: | ||||
* <ul> | * <ul> | ||||
* <li>fetch</li> | * <li>fetch</li> |
} | } | ||||
/** | /** | ||||
* Get the remote this branch is configured to fetch from/push to> | |||||
* Get the remote this branch is configured to fetch from/push to | |||||
* | * | ||||
* @return the remote this branch is configured to fetch from/push to, or | * @return the remote this branch is configured to fetch from/push to, or | ||||
* {@code null} if not defined | * {@code null} if not defined |
* Normalizes the passed branch name into a possible valid branch name. The | * Normalizes the passed branch name into a possible valid branch name. The | ||||
* validity of the returned name should be checked by a subsequent call to | * validity of the returned name should be checked by a subsequent call to | ||||
* {@link #isValidRefName(String)}. | * {@link #isValidRefName(String)}. | ||||
* <p/> | |||||
* <p> | |||||
* Future implementations of this method could be more restrictive or more | * Future implementations of this method could be more restrictive or more | ||||
* lenient about the validity of specific characters in the returned name. | * lenient about the validity of specific characters in the returned name. | ||||
* <p/> | |||||
* <p> | |||||
* The current implementation returns the trimmed input string if this is | * The current implementation returns the trimmed input string if this is | ||||
* already a valid branch name. Otherwise it returns a trimmed string with | * already a valid branch name. Otherwise it returns a trimmed string with | ||||
* special characters not allowed by {@link #isValidRefName(String)} | * special characters not allowed by {@link #isValidRefName(String)} | ||||
* collection; if not, exit without performing any work. Some JGit commands | * collection; if not, exit without performing any work. Some JGit commands | ||||
* run autoGC after performing operations that could create many loose | * run autoGC after performing operations that could create many loose | ||||
* objects. | * objects. | ||||
* <p/> | |||||
* <p> | |||||
* Currently this option is supported for repositories of type | * Currently this option is supported for repositories of type | ||||
* {@code FileRepository} only. See | * {@code FileRepository} only. See | ||||
* {@link org.eclipse.jgit.internal.storage.file.GC#setAuto(boolean)} for | * {@link org.eclipse.jgit.internal.storage.file.GC#setAuto(boolean)} for |
public class SubmoduleWalk implements AutoCloseable { | public class SubmoduleWalk implements AutoCloseable { | ||||
/** | /** | ||||
* The values for the config param submodule.<name>.ignore | |||||
* The values for the config parameter submodule.<name>.ignore | |||||
* | * | ||||
* @since 3.6 | * @since 3.6 | ||||
*/ | */ |
/** | /** | ||||
* A representation of the "http.*" config values in a git | * A representation of the "http.*" config values in a git | ||||
* {@link org.eclipse.jgit.lib.Config}. git provides for setting values for | * {@link org.eclipse.jgit.lib.Config}. git provides for setting values for | ||||
* specific URLs through "http.<url>.* subsections. git always considers only | |||||
* the initial original URL for such settings, not any redirected URL. | |||||
* specific URLs through "http.<url>.*" subsections. git always considers | |||||
* only the initial original URL for such settings, not any redirected URL. | |||||
* | * | ||||
* @since 4.9 | * @since 4.9 | ||||
*/ | */ |
} | } | ||||
/** | /** | ||||
* <Get the URI as an ASCII string. | |||||
* Get the URI as an ASCII string. | |||||
* | * | ||||
* @return the URI as an ASCII string. Password is not included. | * @return the URI as an ASCII string. Password is not included. | ||||
*/ | */ |
* <p> | * <p> | ||||
* Retrieve the git attributes for the current entry. | * Retrieve the git attributes for the current entry. | ||||
* | * | ||||
* <h4>Git attribute computation</h4> | |||||
* <h3>Git attribute computation</h3> | |||||
* | * | ||||
* <ul> | * <ul> | ||||
* <li>Get the attributes matching the current path entry from the info file | * <li>Get the attributes matching the current path entry from the info file | ||||
* </ul> | * </ul> | ||||
* | * | ||||
* | * | ||||
* <h4>Iterator constraints</h4> | |||||
* <h3>Iterator constraints</h3> | |||||
* | * | ||||
* <p> | * <p> | ||||
* In order to have a correct list of attributes for the current entry, this | * In order to have a correct list of attributes for the current entry, this |
* </pre> | * </pre> | ||||
* | * | ||||
* This will return "..\\another_project\\pom.xml". | * This will return "..\\another_project\\pom.xml". | ||||
* </p> | |||||
* | * | ||||
* <p> | * <p> | ||||
* <b>Note</b> that this will return the empty String if <code>base</code> | * <b>Note</b> that this will return the empty String if <code>base</code> |
package org.eclipse.jgit.util; | package org.eclipse.jgit.util; | ||||
/** | /** | ||||
* Simple Map<long,Object>. | |||||
* Simple Map<long, Object>. | |||||
* | * | ||||
* @param <V> | * @param <V> | ||||
* type of the value instance. | * type of the value instance. |
* {@link java.lang.Character#toTitleCase(char)}. No other letters are | * {@link java.lang.Character#toTitleCase(char)}. No other letters are | ||||
* changed. | * changed. | ||||
* </p> | * </p> | ||||
* | |||||
* <p> | |||||
* A <code>null</code> input String returns <code>null</code>. | * A <code>null</code> input String returns <code>null</code>. | ||||
* </p> | * </p> | ||||
* | * |
* <li>global attributes</li> | * <li>global attributes</li> | ||||
* <li>info attributes</li> | * <li>info attributes</li> | ||||
* <li>working tree .gitattributes</li> | * <li>working tree .gitattributes</li> | ||||
* </ul> | |||||
* | * | ||||
* @param op | * @param op | ||||
* is the | * is the |
* } | * } | ||||
* | * | ||||
* try (ProposedTimestamp t2 = clk.propose()) { | * try (ProposedTimestamp t2 = clk.propose()) { | ||||
* assert t2.millis() > r1; | |||||
* assert t2.millis() > r1; | |||||
* } | * } | ||||
* </pre> | * </pre> | ||||
* | * |