public static RevTag build(String name, ObjectId commitId, String message, RevPerson tagger) { ObjectId id = HashObject.hashTag(name, commitId, message, tagger); return create(id, name, commitId, message, tagger); } }
/** * Executes the tag creation operation. * * @return the created tag * */ @Override protected RevTag _call() throws RuntimeException { checkState(name != null, "tag name was not provided"); final String tagRefPath = Ref.TAGS_PREFIX + name; checkArgument(!command(RefParse.class).setName(tagRefPath).call().isPresent(), "A tag named '" + name + "' already exists."); command(CheckRefFormat.class).setThrowsException(true).setRef(tagRefPath).call(); if (commitId == null) { final Optional<Ref> currHead = command(RefParse.class).setName(Ref.HEAD).call(); Preconditions.checkState(currHead.isPresent(), "Repository has no HEAD, can't create tag"); commitId = currHead.get().getObjectId(); } RevPerson tagger = resolveTagger(); message = message == null ? "" : message; RevTag tag = RevTagBuilder.build(name, commitId, message, tagger); objectDatabase().put(tag); Optional<Ref> branchRef = command(UpdateRef.class).setName(tagRefPath) .setNewValue(tag.getId()).call(); checkState(branchRef.isPresent()); return tag; }
public static RevTag readTag(ObjectId id, DataInput in) throws IOException { final ObjectId commitId = readObjectId(in); final String name = in.readUTF(); final String message = in.readUTF(); final RevPerson tagger = readRevPerson(in); return RevTagBuilder.create(id, name, commitId, message, tagger); }
public RevTag readTag(@Nullable ObjectId id, DataInput in) throws IOException { final ObjectId commitId = readObjectId(in); final String name = in.readUTF(); final String message = in.readUTF(); final RevPerson tagger = readRevPerson(in); RevTag tag; if (id == null) { tag = RevTagBuilder.create(ObjectId.NULL, name, commitId, message, tagger); id = new HashObject().setObject(tag).call(); } tag = RevTagBuilder.create(id, name, commitId, message, tagger); return tag; }
@Override protected RevTag read(ObjectId id, BufferedReader reader, TYPE type) throws IOException { Preconditions.checkArgument(TYPE.TAG.equals(type), "Wrong type: %s", type.name()); String name = parseLine(requireLine(reader), "name"); String message = parseLine(requireLine(reader), "message"); String commitId = parseLine(requireLine(reader), "commitid"); RevPerson tagger = parsePerson(requireLine(reader)); RevTag tag = RevTagBuilder.create(id, name, ObjectId.valueOf(commitId), message, tagger); return tag; }