public class RefSpec extends Object implements Serializable
A ref specification provides matching support and limited rules to rewrite a reference in one repository to another reference in another repository.
Modifier and Type | Field and Description |
---|---|
static String |
WILDCARD_SUFFIX
Suffix for wildcard ref spec component, that indicate matching all refs
with specified prefix.
|
Constructor and Description |
---|
RefSpec()
Construct an empty RefSpec.
|
RefSpec(String spec)
Parse a ref specification for use during transport operations.
|
Modifier and Type | Method and Description |
---|---|
boolean |
equals(Object obj) |
RefSpec |
expandFromDestination(Ref r)
Expand this specification to exactly match a ref.
|
RefSpec |
expandFromDestination(String r)
Expand this specification to exactly match a ref name.
|
RefSpec |
expandFromSource(Ref r)
Expand this specification to exactly match a ref.
|
RefSpec |
expandFromSource(String r)
Expand this specification to exactly match a ref name.
|
String |
getDestination()
Get the destination ref description.
|
String |
getSource()
Get the source ref description.
|
int |
hashCode() |
boolean |
isForceUpdate()
Check if this specification wants to forcefully update the destination.
|
boolean |
isWildcard()
Check if this specification is actually a wildcard pattern.
|
static boolean |
isWildcard(String s)
Check whether provided string is a wildcard ref spec component.
|
boolean |
matchDestination(Ref r)
Does this specification's destination description match the ref?
|
boolean |
matchDestination(String r)
Does this specification's destination description match the ref name?
|
boolean |
matchSource(Ref r)
Does this specification's source description match the ref?
|
boolean |
matchSource(String r)
Does this specification's source description match the ref name?
|
RefSpec |
setDestination(String destination)
Create a new RefSpec with a different destination name setting.
|
RefSpec |
setForceUpdate(boolean forceUpdate)
Create a new RefSpec with a different force update setting.
|
RefSpec |
setSource(String source)
Create a new RefSpec with a different source name setting.
|
RefSpec |
setSourceDestination(String source,
String destination)
Create a new RefSpec with a different source/destination name setting.
|
String |
toString() |
public static final String WILDCARD_SUFFIX
public RefSpec()
A newly created empty RefSpec is not suitable for use in most applications, as at least one field must be set to match a source name.
public RefSpec(String spec)
Specifications are typically one of the following forms:
refs/heads/master
refs/heads/master:refs/remotes/origin/master
refs/heads/*:refs/remotes/origin/*
+refs/heads/master
+refs/heads/master:refs/remotes/origin/master
+refs/heads/*:refs/remotes/origin/*
+refs/pull/*/head:refs/remotes/origin/pr/*
:refs/heads/master
spec
- string describing the specification.IllegalArgumentException
- the specification is invalid.public static boolean isWildcard(String s)
s
- ref spec component - string to test. Can be null.public boolean isForceUpdate()
public RefSpec setForceUpdate(boolean forceUpdate)
forceUpdate
- new value for force update in the returned instance.public boolean isWildcard()
If this is a wildcard pattern then the source and destination names
returned by getSource()
and getDestination()
will not
be actual ref names, but instead will be patterns.
public String getSource()
During a fetch this is the name of the ref on the remote repository we are fetching from. During a push this is the name of the ref on the local repository we are pushing out from.
public RefSpec setSource(String source)
source
- new value for source in the returned instance.IllegalStateException
- There is already a destination configured, and the wildcard
status of the existing destination disagrees with the
wildcard status of the new source.public String getDestination()
During a fetch this is the local tracking branch that will be updated with the new ObjectId after fetching is complete. During a push this is the remote ref that will be updated by the remote's receive-pack process.
If null during a fetch no tracking branch should be updated and the ObjectId should be stored transiently in order to prepare a merge.
If null during a push, use getSource()
instead.
public RefSpec setDestination(String destination)
destination
- new value for destination in the returned instance.IllegalStateException
- There is already a source configured, and the wildcard status
of the existing source disagrees with the wildcard status of
the new destination.public RefSpec setSourceDestination(String source, String destination)
source
- new value for source in the returned instance.destination
- new value for destination in the returned instance.IllegalArgumentException
- The wildcard status of the new source disagrees with the
wildcard status of the new destination.public boolean matchSource(String r)
r
- ref name that should be tested.public boolean matchSource(Ref r)
r
- ref whose name should be tested.public boolean matchDestination(String r)
r
- ref name that should be tested.public boolean matchDestination(Ref r)
r
- ref whose name should be tested.public RefSpec expandFromSource(String r)
Callers must first verify the passed ref name matches this specification, otherwise expansion results may be unpredictable.
r
- a ref name that matched our source specification. Could be a
wildcard also.public RefSpec expandFromSource(Ref r)
Callers must first verify the passed ref matches this specification, otherwise expansion results may be unpredictable.
r
- a ref that matched our source specification. Could be a
wildcard also.public RefSpec expandFromDestination(String r)
Callers must first verify the passed ref name matches this specification, otherwise expansion results may be unpredictable.
r
- a ref name that matched our destination specification. Could
be a wildcard also.public RefSpec expandFromDestination(Ref r)
Callers must first verify the passed ref matches this specification, otherwise expansion results may be unpredictable.
r
- a ref that matched our destination specification.Copyright © 2015 Eclipse JGit Project. All rights reserved.