Ref Object的getPeeledObjectId()和getObjectId()之间有什么区别? [英] what is the difference between getPeeledObjectId() and getObjectId() of Ref Object?

查看:594
本文介绍了Ref Object的getPeeledObjectId()和getObjectId()之间有什么区别?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我为项目的构建和部署功能(本地计算机中的)使用jgit api。我通过以下命令通过命令提示符提交了整个源代码(java项目):
$ b

I am using jgit api for my project's build, deployment functionalities (in Local Machine). I commited whole source (java project) via command prompt by following commands


  1. git add。

  2. git commit -a -mInitial_Source

这里我得到了提交ID cb96c685a5a4338f852a782631df8d1cf5dca21d

Here I get the commit id as cb96c685a5a4338f852a782631df8d1cf5dca21d

git tag Initial_Source cb96c685a5a4338f852a782631df8d1cf5dca21d

[cb96c685a5a4338f852a782631df8d1cf5dca21d已提交]

[cb96c685a5a4338f852a782631df8d1cf5dca21d is commitid]

git push

但是当我试图通过getPeeledObjectId()获取提交ID时,它返回 null

but when i tried to get commit id via getPeeledObjectId() it is returning null

我的代码是

my code is

Ref tag = git.getRepository().getRef("Initial_Source");
Ref peeledRef = git.getRepository().peel(tag);
return peeledRef.getPeeledObjectId(); -- this is returning null

,而不是 getPeeledObjectId()我尝试使用 getObjectId()。它提供了commitId。但是我想知道何时使用 getPeelObjectId() getObjectId()

but instead of getPeeledObjectId() I tried using getObjectId(). It's giving the commitId. But I wanna know when to use getPeelObjectId() and getObjectId().

这些方法是什么?

推荐答案

getPeeledObjectId()方法在非注释(轻量级)标签

 git tag Initial_Source cb96c685a5a4338f852a782631df8d1cf5dca21d

将使用带注释的标签

git tag -a Initial_Source cb96c685a5a4338f852a782631df8d1cf5dca21d
# or
git tag -m "Initial Source" Initial_Source cb96c685a5a4338f852a782631df8d1cf5dca21d

由于您的标记是指向 commit (由引用git.getRepository()。peel(tag)), getObjectId()得到它的id,那里没有什么可以再次剥离:您已经提交了。

请参阅注释和未注释标签有什么区别?

Since your tag is a pointer to a commit (referenced by git.getRepository().peel(tag)), getObjectId() gets its id, there is nothing to "peel" again: you already have the commit.
See "What is the difference between an annotated and unannotated tag?"

请参阅 porcelain / ListTags.java 示例:它考虑到了两种标记:

See porcelain/ListTags.java example: it takes into account the two kinds of tag:

List<Ref> call = git.tagList().call();
for (Ref ref : call) {
    System.out.println("Tag: " + ref + " " + ref.getName() + " " + ref.getObjectId().getName());

    // fetch all commits for this tag
    LogCommand log = git.log();

    Ref peeledRef = repository.peel(ref);
    if(peeledRef.getPeeledObjectId() != null) {
        // Annotated tag
        log.add(peeledRef.getPeeledObjectId());
    } else {
        // Lightweight tag
        log.add(ref.getObjectId());
    }
}

这篇关于Ref Object的getPeeledObjectId()和getObjectId()之间有什么区别?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆