Package org.eclipse.jgit.lib

## Class RefRename

- java.lang.Object
- - org.eclipse.jgit.lib.RefRename

    public abstract class RefRename
    extends Object

A RefUpdate combination for renaming a reference.

If the source reference is currently pointed to by `HEAD`, then the HEAD symbolic reference is updated to point to the new destination.

### Field Summary

Fields
`protected RefUpdate` `destination` Update operation to create/overwrite the destination reference.
`protected RefUpdate` `source` Update operation to read and delete the source reference.

### Constructor Summary

Constructors
`protected` `RefRename​(RefUpdate src, RefUpdate dst)` Initialize a new rename operation.

### Method Summary

All Methods Instance Methods Abstract Methods Concrete Methods
`void` `disableRefLog()` Don't record this rename in the ref's associated reflog.
`protected abstract RefUpdate.Result` `doRename()`
`PersonIdent` `getRefLogIdent()`
`String` `getRefLogMessage()` Get the message to include in the reflog.
`RefUpdate.Result` `getResult()`
`protected boolean` `needToUpdateHEAD()`
`RefUpdate.Result` `rename()`
`void` `setRefLogIdent​(PersonIdent pi)` Set the identity of the user appearing in the reflog.
`void` `setRefLogMessage​(String msg)` Set the message to include in the reflog.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### source

    protected final RefUpdate source

Update operation to read and delete the source reference.

#### destination

    protected final RefUpdate destination

Update operation to create/overwrite the destination reference.

### Constructor Detail

#### RefRename

    protected RefRename​(RefUpdate src,
                        RefUpdate dst)

Initialize a new rename operation.

Parameters:
  `src` - operation to read and delete the source.
  `dst` - operation to create (or overwrite) the destination.

### Method Detail

#### getRefLogIdent

    public PersonIdent getRefLogIdent()

Returns:
  identity of the user making the change in the reflog.

#### setRefLogIdent

    public void setRefLogIdent​(PersonIdent pi)

Set the identity of the user appearing in the reflog.

The timestamp portion of the identity is ignored. A new identity with the current timestamp will be created automatically when the rename occurs and the log record is written.

Parameters:
  `pi` - identity of the user. If null the identity will be automatically determined based on the repository configuration.

#### getRefLogMessage

    public String getRefLogMessage()

Get the message to include in the reflog.

Returns:
  message the caller wants to include in the reflog; null if the rename should not be logged.

#### setRefLogMessage

    public void setRefLogMessage​(String msg)

Set the message to include in the reflog.

Parameters:
  `msg` - the message to describe this change.

#### disableRefLog

    public void disableRefLog()

Don't record this rename in the ref's associated reflog.

#### getResult

    public RefUpdate.Result getResult()

Returns:
  result of rename operation

#### rename

    public RefUpdate.Result rename()
                            throws IOException

Returns:
  the result of the new ref update
Throws:
  `IOException`

#### doRename

    protected abstract RefUpdate.Result doRename()
                                          throws IOException

Returns:
  the result of the rename operation.
Throws:
  `IOException`

#### needToUpdateHEAD

    protected boolean needToUpdateHEAD()
                                throws IOException

Returns:
  true if the `Constants#HEAD` reference needs to be linked to the new destination name.
Throws:
  `IOException` - the current value of `HEAD` cannot be read.