diff --git a/org.eclipse.jgit.pgm/.settings/.api_filters b/org.eclipse.jgit.pgm/.settings/.api_filters
new file mode 100644
index 0000000..5e044ee
--- /dev/null
+++ b/org.eclipse.jgit.pgm/.settings/.api_filters
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<component id="org.eclipse.jgit.pgm" version="2">
+    <resource path="src/org/eclipse/jgit/pgm/CLIText.java" type="org.eclipse.jgit.pgm.CLIText">
+        <filter id="1143996420">
+            <message_arguments>
+                <message_argument value="noSuchRemoteRef"/>
+            </message_arguments>
+        </filter>
+    </resource>
+</component>
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/Git.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/Git.java
index d36b9be..4b8378a 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/api/Git.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/Git.java
@@ -636,7 +636,7 @@ public GarbageCollectCommand gc() {
 	 * Returns a command object to find human-readable names of revisions.
 	 *
 	 * @return a {@link NameRevCommand}.
-	 * @since 2.3
+	 * @since 3.0
 	 */
 	public NameRevCommand nameRev() {
 		return new NameRevCommand(repo);
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/NameRevCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/NameRevCommand.java
index fcc02c7..4789fbe 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/api/NameRevCommand.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/NameRevCommand.java
@@ -68,8 +68,10 @@
 /**
  * Command to find human-readable names of revisions.
  *
- * @see <a href="http://www.kernel.org/pub/software/scm/git/docs/git-name-rev.html"
+ * @see <a
+ *      href="http://www.kernel.org/pub/software/scm/git/docs/git-name-rev.html"
  *      >Git documentation about name-rev</a>
+ * @since 3.0
  */
 public class NameRevCommand extends GitCommand<Map<ObjectId, String>> {
 	/** Amount of slop to allow walking past the earliest requested commit. */
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/errors/NoMergeBaseException.java b/org.eclipse.jgit/src/org/eclipse/jgit/errors/NoMergeBaseException.java
index df90e69..0c419d7 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/errors/NoMergeBaseException.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/errors/NoMergeBaseException.java
@@ -51,6 +51,8 @@
 
 /**
  * Exception thrown if a merge fails because no merge base could be determined.
+ *
+ * @since 3.0
  */
 public class NoMergeBaseException extends IOException {
 	private static final long serialVersionUID = 1L;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/errors/StoredObjectRepresentationNotAvailableException.java b/org.eclipse.jgit/src/org/eclipse/jgit/errors/StoredObjectRepresentationNotAvailableException.java
index 395578e..0bd035b 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/errors/StoredObjectRepresentationNotAvailableException.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/errors/StoredObjectRepresentationNotAvailableException.java
@@ -54,6 +54,7 @@ public class StoredObjectRepresentationNotAvailableException extends Exception {
 	 *
 	 * @param otp
 	 *            the object whose current representation is no longer present.
+	 * @since 3.0
 	 */
 	public StoredObjectRepresentationNotAvailableException(ObjectToPack otp) {
 		// Do nothing.
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/BitmapIndex.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/BitmapIndex.java
index 9b6f0a3..3c0e2c1 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/BitmapIndex.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/BitmapIndex.java
@@ -47,7 +47,11 @@
 
 import org.eclipse.jgit.internal.storage.file.PackBitmapIndex;
 
-/** A compressed bitmap representation of the entire object graph. */
+/**
+ * A compressed bitmap representation of the entire object graph.
+ *
+ * @since 3.0
+ */
 public interface BitmapIndex {
 	/**
 	 * Get the bitmap for the id. The returned bitmap is immutable and the
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/BitmapObject.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/BitmapObject.java
index ba7ed64..345016c 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/BitmapObject.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/BitmapObject.java
@@ -43,7 +43,11 @@
 
 package org.eclipse.jgit.lib;
 
-/** Base object type accessed during bitmap expansion. */
+/**
+ * Base object type accessed during bitmap expansion.
+ *
+ * @since 3.0
+ */
 public abstract class BitmapObject {
 	/**
 	 * Get Git object type. See {@link Constants}.
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/ConfigConstants.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/ConfigConstants.java
index 88d2741..2c2cef3 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/ConfigConstants.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/ConfigConstants.java
@@ -196,6 +196,9 @@ public class ConfigConstants {
 	/** The "ff" key */
 	public static final String CONFIG_KEY_FF = "ff";
 
-	/** The "checkstat" key */
+	/**
+	 * The "checkstat" key
+	 * @since 3.0
+	 */
 	public static final String CONFIG_KEY_CHECKSTAT = "checkstat";
 }
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/CoreConfig.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/CoreConfig.java
index 982cbc8..0fc3d4a 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/CoreConfig.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/CoreConfig.java
@@ -77,7 +77,7 @@ public static enum AutoCRLF {
 	/**
 	 * Permissible values for {@code core.checkstat}
 	 *
-	 * @since 2.3
+	 * @since 3.0
 	 */
 	public static enum CheckStat {
 		/**
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/ObjectReader.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/ObjectReader.java
index fae92fe..3bd0250 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/ObjectReader.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/ObjectReader.java
@@ -444,6 +444,7 @@ public void walkAdviceEnd() {
 	 *
 	 * @param avoid
 	 *            true to avoid unreachable objects.
+	 * @since 3.0
 	 */
 	public void setAvoidUnreachableObjects(boolean avoid) {
 		// Do nothing by default.
@@ -455,6 +456,7 @@ public void setAvoidUnreachableObjects(boolean avoid) {
 	 * @return the index or null if one does not exist.
 	 * @throws IOException
 	 *             when the index fails to load
+	 * @since 3.0
 	 */
 	public BitmapIndex getBitmapIndex() throws IOException {
 		return null;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/RepositoryState.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/RepositoryState.java
index 233856d..4fac2eb 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/RepositoryState.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/RepositoryState.java
@@ -400,7 +400,7 @@ public enum RepositoryState {
 
 	/**
 	 * @return true if the repository is currently in a rebase
-	 * @since 2.4
+	 * @since 3.0
 	 */
 	public abstract boolean isRebasing();
 
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/merge/StrategyRecursive.java b/org.eclipse.jgit/src/org/eclipse/jgit/merge/StrategyRecursive.java
index 11c8bca..58c1ed2 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/merge/StrategyRecursive.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/merge/StrategyRecursive.java
@@ -47,6 +47,8 @@
 
 /**
  * A three-way merge strategy performing a content-merge if necessary
+ *
+ * @since 3.0
  */
 public class StrategyRecursive extends StrategyResolve {
 
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevFlag.java b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevFlag.java
index c767c03..8068ba6e 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevFlag.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevFlag.java
@@ -73,6 +73,8 @@ public class RevFlag {
 	 * queue, especially if we reached it by more than one path.
 	 * <p>
 	 * This is a static flag. Its RevWalk is not available.
+	 *
+	 * @since 3.0
 	 */
 	public static final RevFlag SEEN = new StaticRevFlag("SEEN", RevWalk.SEEN);
 
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/FileRepositoryBuilder.java b/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/FileRepositoryBuilder.java
index 60c916e..5efa250 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/FileRepositoryBuilder.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/FileRepositoryBuilder.java
@@ -85,6 +85,7 @@ public class FileRepositoryBuilder extends
 	 * @throws IOException
 	 *             the repository could not be accessed to configure the rest of
 	 *             the builder's parameters.
+	 * @since 3.0
 	 */
 	@Override
 	public Repository build() throws IOException {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/WindowCacheConfig.java b/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/WindowCacheConfig.java
index 8ed2af1..69abd0d 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/WindowCacheConfig.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/WindowCacheConfig.java
@@ -189,6 +189,7 @@ public void setStreamFileThreshold(final int newLimit) {
 	 * @param rc
 	 *            configuration to read properties from.
 	 * @return {@code this}.
+	 * @since 3.0
 	 */
 	public WindowCacheConfig fromConfig(final Config rc) {
 		setPackedGitOpenFiles(rc.getInt(
@@ -217,6 +218,8 @@ public WindowCacheConfig fromConfig(final Config rc) {
 	 * The new configuration is applied immediately. If the new limits are
 	 * smaller than what what is currently cached, older entries will be purged
 	 * as soon as possible to allow the cache to meet the new limit.
+	 *
+	 * @since 3.0
 	 */
 	public void install() {
 		WindowCache.reconfigure(this);
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/storage/pack/PackConfig.java b/org.eclipse.jgit/src/org/eclipse/jgit/storage/pack/PackConfig.java
index 7559e90..562b2c0 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/storage/pack/PackConfig.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/storage/pack/PackConfig.java
@@ -53,7 +53,7 @@
 
 /**
  * Configuration used by a pack writer when constructing the stream.
- * 
+ *
  * A configuration may be modified once created, but should not be modified
  * while it is being used by a PackWriter. If a configuration is not modified it
  * is safe to share the same configuration instance between multiple concurrent
@@ -134,6 +134,7 @@ public class PackConfig {
 	 * Default value of the build bitmaps option: {@value}
 	 *
 	 * @see #setBuildBitmaps(boolean)
+	 * @since 3.0
 	 */
 	public static final boolean DEFAULT_BUILD_BITMAPS = true;
 
@@ -631,6 +632,7 @@ public void setIndexVersion(final int version) {
 	 *
 	 * @return true if delta base is the writer can choose to output an index
 	 *         with bitmaps.
+	 * @since 3.0
 	 */
 	public boolean isBuildBitmaps() {
 		return buildBitmaps;
@@ -646,6 +648,7 @@ public boolean isBuildBitmaps() {
 	 * @param buildBitmaps
 	 *            boolean indicating whether bitmaps may be included in the
 	 *            index.
+	 * @since 3.0
 	 */
 	public void setBuildBitmaps(boolean buildBitmaps) {
 		this.buildBitmaps = buildBitmaps;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPackLogger.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPackLogger.java
index 74dfa6c..99fa6e0 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPackLogger.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPackLogger.java
@@ -66,6 +66,7 @@ public void onPackStatistics(PackWriter.Statistics stats) {
 	 *
 	 * @param stats
 	 *            the statistics after sending a pack to the client.
+	 * @since 3.0
 	 */
 	public void onPackStatistics(PackWriter.Statistics stats);
 }
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/FileUtils.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/FileUtils.java
index acc1a2c..dc0bbcb 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/util/FileUtils.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/FileUtils.java
@@ -87,7 +87,7 @@ public class FileUtils {
 	 * Option to only delete empty directories. This option can be combined with
 	 * {@link #RECURSIVE}
 	 *
-	 * @since 2.4
+	 * @since 3.0
 	 */
 	public static final int EMPTY_DIRECTORIES_ONLY = 16;
 
@@ -180,6 +180,7 @@ public static void delete(final File f, int options) throws IOException {
 	 *            the new {@code File}
 	 * @throws IOException
 	 *             if the rename has failed
+	 * @since 3.0
 	 */
 	public static void rename(final File src, final File dst)
 			throws IOException {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/NB.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/NB.java
index 5a56a06..e110c11 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/util/NB.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/NB.java
@@ -112,6 +112,7 @@ public static int decodeInt32(final byte[] intbuf, final int offset) {
 	 *            position and the next 7 bytes after it (for a total of 8
 	 *            bytes) will be read.
 	 * @return signed integer value that matches the 64 bits read.
+	 * @since 3.0
 	 */
 	public static long decodeInt64(final byte[] intbuf, final int offset) {
 		long r = intbuf[offset] << 8;
