Class RefAdvertiser

java.lang.Object
org.eclipse.jgit.transport.RefAdvertiser
Direct Known Subclasses:
RefAdvertiser.PacketLineOutRefAdvertiser

public abstract class RefAdvertiser extends Object
Support for the start of UploadPack and ReceivePack.
  • Field Details

    • tmpLine

      private final StringBuilder tmpLine
    • tmpId

      private final char[] tmpId
    • capablities

      final Set<String> capablities
    • sent

      private final Set<ObjectId> sent
    • repository

      private Repository repository
    • derefTags

      private boolean derefTags
    • first

      boolean first
    • useProtocolV2

      private boolean useProtocolV2
    • symrefs

      private final Map<String,String> symrefs
  • Constructor Details

    • RefAdvertiser

      public RefAdvertiser()
  • Method Details

    • init

      public void init(Repository src)
      Initialize this advertiser with a repository for peeling tags.
      Parameters:
      src - the repository to read from.
    • setUseProtocolV2

      public void setUseProtocolV2(boolean b)
      Parameters:
      b - true if this advertiser should advertise using the protocol v2 format, false otherwise
      Since:
      5.0
    • setDerefTags

      public void setDerefTags(boolean deref)
      Toggle tag peeling.

      This method must be invoked prior to any of the following:

      Parameters:
      deref - true to show the dereferenced value of a tag as the special ref $tag^{} ; false to omit it from the output.
    • advertiseCapability

      public void advertiseCapability(String name)
      Add one protocol capability to the initial advertisement.

      This method must be invoked prior to any of the following:

      Parameters:
      name - the name of a single protocol capability supported by the caller. The set of capabilities are sent to the client in the advertisement, allowing the client to later selectively enable features it recognizes.
    • advertiseCapability

      public void advertiseCapability(String name, String value)
      Add one protocol capability with a value ("name=value").
      Parameters:
      name - name of the capability.
      value - value. If null the capability will not be added.
      Since:
      4.0
    • addSymref

      public void addSymref(String from, String to)
      Add a symbolic ref to capabilities.

      This method must be invoked prior to any of the following:

      Parameters:
      from - The symbolic ref, e.g. "HEAD"
      to - The real ref it points to, e.g. "refs/heads/master"
      Since:
      3.6
    • send

      @Deprecated public Set<ObjectId> send(Map<String,Ref> refs) throws IOException
      Deprecated.
      use send(Collection) instead.
      Format an advertisement for the supplied refs.
      Parameters:
      refs - zero or more refs to format for the client. The collection is sorted before display if necessary, and therefore may appear in any order.
      Returns:
      set of ObjectIds that were advertised to the client.
      Throws:
      IOException - the underlying output stream failed to write out an advertisement record.
    • send

      public Set<ObjectId> send(Collection<Ref> refs) throws IOException
      Format an advertisement for the supplied refs.
      Parameters:
      refs - zero or more refs to format for the client. The collection is sorted before display if necessary, and therefore may appear in any order.
      Returns:
      set of ObjectIds that were advertised to the client.
      Throws:
      IOException - the underlying output stream failed to write out an advertisement record.
      Since:
      5.0
    • advertiseHave

      public void advertiseHave(AnyObjectId id) throws IOException
      Advertise one object is available using the magic .have.

      The magic .have advertisement is not available for fetching by a client, but can be used by a client when considering a delta base candidate before transferring data in a push. Within the record created by this method the ref name is simply the invalid string .have.

      Parameters:
      id - identity of the object that is assumed to exist.
      Throws:
      IOException - the underlying output stream failed to write out an advertisement record.
    • isEmpty

      public boolean isEmpty()
      Whether no advertisements have been sent yet.
      Returns:
      true if no advertisements have been sent yet.
    • advertiseAnyOnce

      private void advertiseAnyOnce(AnyObjectId obj, String refName) throws IOException
      Throws:
      IOException
    • advertiseAny

      private void advertiseAny(AnyObjectId obj, String refName) throws IOException
      Throws:
      IOException
    • advertiseId

      public void advertiseId(AnyObjectId id, String refName) throws IOException
      Advertise one object under a specific name.

      If the advertised object is a tag, this method does not advertise the peeled version of it.

      Parameters:
      id - the object to advertise.
      refName - name of the reference to advertise the object as, can be any string not including the NUL byte.
      Throws:
      IOException - the underlying output stream failed to write out an advertisement record.
    • writeOne

      protected abstract void writeOne(CharSequence line) throws IOException
      Write a single advertisement line.
      Parameters:
      line - the advertisement line to be written. The line always ends with LF. Never null or the empty string.
      Throws:
      IOException - the underlying output stream failed to write out an advertisement record.
    • end

      protected abstract void end() throws IOException
      Mark the end of the advertisements.
      Throws:
      IOException - the underlying output stream failed to write out an advertisement record.