Merge "ReceivePack: Accept shallow lines from Git >= 1.9"
This commit is contained in:
commit
49305cde19
|
@ -222,7 +222,7 @@ public Set<String> getCapabilities() {
|
|||
|
||||
/** Capabilities requested by the client. */
|
||||
private Set<String> enabledCapabilities;
|
||||
|
||||
private Set<ObjectId> clientShallowCommits;
|
||||
private List<ReceiveCommand> commands;
|
||||
|
||||
private StringBuilder advertiseError;
|
||||
|
@ -263,6 +263,7 @@ protected BaseReceivePack(final Repository into) {
|
|||
advertiseRefsHook = AdvertiseRefsHook.DEFAULT;
|
||||
refFilter = RefFilter.DEFAULT;
|
||||
advertisedHaves = new HashSet<ObjectId>();
|
||||
clientShallowCommits = new HashSet<ObjectId>();
|
||||
}
|
||||
|
||||
/** Configuration for receive operations. */
|
||||
|
@ -770,6 +771,18 @@ public long getPackSize() {
|
|||
throw new IllegalStateException(JGitText.get().packSizeNotSetYet);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the commits from the client's shallow file.
|
||||
*
|
||||
* @return if the client is a shallow repository, the list of edge commits
|
||||
* that define the client's shallow boundary. Empty set if the client
|
||||
* is earlier than Git 1.9, or is a full clone.
|
||||
* @since 3.5
|
||||
*/
|
||||
protected Set<ObjectId> getClientShallowCommits() {
|
||||
return clientShallowCommits;
|
||||
}
|
||||
|
||||
/** @return true if any commands to be executed have been read. */
|
||||
protected boolean hasCommands() {
|
||||
return !commands.isEmpty();
|
||||
|
@ -923,6 +936,11 @@ protected void recvCommands() throws IOException {
|
|||
if (line == PacketLineIn.END)
|
||||
break;
|
||||
|
||||
if (line.length() >= 48 && line.startsWith("shallow ")) { //$NON-NLS-1$
|
||||
clientShallowCommits.add(ObjectId.fromString(line.substring(8, 48)));
|
||||
continue;
|
||||
}
|
||||
|
||||
if (commands.isEmpty()) {
|
||||
final FirstLine firstLine = new FirstLine(line);
|
||||
enabledCapabilities = firstLine.getCapabilities();
|
||||
|
@ -1030,7 +1048,8 @@ private void receivePack() throws IOException {
|
|||
|
||||
private boolean needCheckConnectivity() {
|
||||
return isCheckReceivedObjects()
|
||||
|| isCheckReferencedObjectsAreReachable();
|
||||
|| isCheckReferencedObjectsAreReachable()
|
||||
|| !getClientShallowCommits().isEmpty();
|
||||
}
|
||||
|
||||
private void checkConnectivity() throws IOException {
|
||||
|
|
Loading…
Reference in New Issue