是否有等同于 git rev-parse --short 的 JGit 方法?
Is there a JGit method equivalent to git rev-parse --short?
JGit 是否包含 git rev-parse --short
的实现?我在仔细阅读文档时找不到。
在 JGit 中没有直接等同于 git rev-parse
。
但是,JGit 提供了 API 可能有助于实现 rev-parse 的功能。
ObjectId::isId()
确定给定的字符串是否表示 SHA-1
ObjectId::fromString()
从字符串 创建一个 ObjectId
要缩短给定的对象 ID,请使用 ObjectId::abbreviate()
以下示例缩写了给定的 SHA-1:
ObjectId objectId = ObjectId.fromString( "fb808b5b01cdfaedda0bd1d304c7115ce959b286" );
AbbreviatedObjectId abbreviatedId = objectId.abbreviate( 7 ); // returns fb808b5
请注意,上述方法独立于存储库运行,因此无法检测不明确的对象 ID 或验证给定的 ID 是否存在于存储库中,或者它是否具有预期的类型(git rev-parse --verify
会做的事情).
可以使用存储库验证 id Repository::resolve
。如果无法解析字符串,该方法接受 fb808b5^{commit}
和 returns 和 ObjectId
或 null
等表达式。如果存储库包含多个匹配项,则会抛出 AmbiguousObjectException
。请参阅 JavaDoc 以获取支持的表达式列表:http://download.eclipse.org/jgit/site/4.2.0-SNAPSHOT/apidocs/org/eclipse/jgit/lib/Repository.html#resolve(java.lang.String)
请注意,如果指定了对象类型,则会抛出 IncorrectObjectTypeException
,但找到的修订与给定类型不匹配。
只是为上面提到的 @Rüdiger Herrmann 做一个简单的例子
// git rev-parse HEAD
git.getRepository().exactRef("refs/heads/master").getObjectId().name()
// git rev-parse --short HEAD
git.getRepository().exactRef("refs/heads/master").getObjectId().abbreviate(7).name()
JGit 是否包含 git rev-parse --short
的实现?我在仔细阅读文档时找不到。
在 JGit 中没有直接等同于 git rev-parse
。
但是,JGit 提供了 API 可能有助于实现 rev-parse 的功能。
ObjectId::isId()
确定给定的字符串是否表示 SHA-1ObjectId::fromString()
从字符串 创建一个
ObjectId
要缩短给定的对象 ID,请使用 ObjectId::abbreviate()
以下示例缩写了给定的 SHA-1:
ObjectId objectId = ObjectId.fromString( "fb808b5b01cdfaedda0bd1d304c7115ce959b286" );
AbbreviatedObjectId abbreviatedId = objectId.abbreviate( 7 ); // returns fb808b5
请注意,上述方法独立于存储库运行,因此无法检测不明确的对象 ID 或验证给定的 ID 是否存在于存储库中,或者它是否具有预期的类型(git rev-parse --verify
会做的事情).
可以使用存储库验证 id Repository::resolve
。如果无法解析字符串,该方法接受 fb808b5^{commit}
和 returns 和 ObjectId
或 null
等表达式。如果存储库包含多个匹配项,则会抛出 AmbiguousObjectException
。请参阅 JavaDoc 以获取支持的表达式列表:http://download.eclipse.org/jgit/site/4.2.0-SNAPSHOT/apidocs/org/eclipse/jgit/lib/Repository.html#resolve(java.lang.String)
请注意,如果指定了对象类型,则会抛出 IncorrectObjectTypeException
,但找到的修订与给定类型不匹配。
只是为上面提到的 @Rüdiger Herrmann 做一个简单的例子
// git rev-parse HEAD
git.getRepository().exactRef("refs/heads/master").getObjectId().name()
// git rev-parse --short HEAD
git.getRepository().exactRef("refs/heads/master").getObjectId().abbreviate(7).name()