]> source.dussan.org Git - jgit.git/commitdiff
Refactor unshallowCommits to local variable 55/123955/2
authorJonathan Tan <jonathantanmy@google.com>
Tue, 22 May 2018 22:19:04 +0000 (15:19 -0700)
committerJonathan Nieder <jrn@google.com>
Tue, 5 Jun 2018 05:04:18 +0000 (22:04 -0700)
This reduces the amount of state held as instance variables in
UploadPack, and makes it easier for a future patch to contain a clearer
version of UploadPack#processShallow.

Change-Id: I6df80b42f9e5118fda1420692e02e417670cced3
Signed-off-by: Jonathan Tan <jonathantanmy@google.com>
Signed-off-by: Jonathan Nieder <jrn@google.com>
org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPack.java

index 90c5b599d4739cd777d09672efc232a55897f591..df3e9bfe1a879b145cc23c616fd9bad73559d415 100644 (file)
@@ -299,9 +299,6 @@ public class UploadPack {
        /** Shallow commits the client already has. */
        private final Set<ObjectId> clientShallowCommits = new HashSet<>();
 
-       /** Shallow commits on the client which are now becoming unshallow */
-       private final List<ObjectId> unshallowCommits = new ArrayList<>();
-
        /** Desired depth from the client on a shallow request. */
        private int depth;
 
@@ -786,6 +783,7 @@ public class UploadPack {
                // If it's a non-bidi request, we need to read the entire request before
                // writing a response. Buffer the response until then.
                PackStatistics.Accumulator accumulator = new PackStatistics.Accumulator();
+               List<ObjectId> unshallowCommits = new ArrayList<>();
                try {
                        if (biDirectionalPipe)
                                sendAdvertisedRefs(new PacketLineOutRefAdvertiser(pckOut));
@@ -815,7 +813,7 @@ public class UploadPack {
                        if (!clientShallowCommits.isEmpty())
                                verifyClientShallow();
                        if (depth != 0)
-                               processShallow();
+                               processShallow(unshallowCommits);
                        if (!clientShallowCommits.isEmpty())
                                walk.assumeShallow(clientShallowCommits);
                        sendPack = negotiate(accumulator);
@@ -867,8 +865,9 @@ public class UploadPack {
                        rawOut.stopBuffering();
                }
 
-               if (sendPack)
-                       sendPack(accumulator, refs == null ? null : refs.values());
+               if (sendPack) {
+                       sendPack(accumulator, refs == null ? null : refs.values(), unshallowCommits);
+               }
        }
 
        private void lsRefsV2() throws IOException {
@@ -999,7 +998,8 @@ public class UploadPack {
                        sendPack(new PackStatistics.Accumulator(),
                                        includeTag
                                                ? db.getRefDatabase().getRefsByPrefix(R_TAGS)
-                                               : null);
+                                               : null,
+                                       new ArrayList<ObjectId>());
                }
                pckOut.end();
        }
@@ -1076,7 +1076,11 @@ public class UploadPack {
                return ids;
        }
 
-       private void processShallow() throws IOException {
+       /*
+        * Determines what "shallow" and "unshallow" lines to send to the user.
+        * The information is written to pckOut and unshallowCommits.
+        */
+       private void processShallow(List<ObjectId> unshallowCommits) throws IOException {
                int walkDepth = depth - 1;
                try (DepthWalk.RevWalk depthWalk = new DepthWalk.RevWalk(
                                walk.getObjectReader(), walkDepth)) {
@@ -1780,16 +1784,20 @@ public class UploadPack {
         *                refs to search for annotated tags to include in the pack
         *                if the {@link #OPTION_INCLUDE_TAG} capability was
         *                requested.
+        * @param unshallowCommits
+        *                shallow commits on the client that are now becoming
+        *                unshallow
         * @throws IOException
         *                if an error occured while generating or writing the pack.
         */
        private void sendPack(PackStatistics.Accumulator accumulator,
-                       @Nullable Collection<Ref> allTags) throws IOException {
+                       @Nullable Collection<Ref> allTags,
+                       List<ObjectId> unshallowCommits) throws IOException {
                final boolean sideband = options.contains(OPTION_SIDE_BAND)
                                || options.contains(OPTION_SIDE_BAND_64K);
                if (sideband) {
                        try {
-                               sendPack(true, accumulator, allTags);
+                               sendPack(true, accumulator, allTags, unshallowCommits);
                        } catch (ServiceMayNotContinueException noPack) {
                                // This was already reported on (below).
                                throw noPack;
@@ -1810,7 +1818,7 @@ public class UploadPack {
                                        throw err;
                        }
                } else {
-                       sendPack(false, accumulator, allTags);
+                       sendPack(false, accumulator, allTags, unshallowCommits);
                }
        }
 
@@ -1842,12 +1850,16 @@ public class UploadPack {
         *                refs to search for annotated tags to include in the pack
         *                if the {@link #OPTION_INCLUDE_TAG} capability was
         *                requested.
+        * @param unshallowCommits
+        *                shallow commits on the client that are now becoming
+        *                unshallow
         * @throws IOException
         *                if an error occured while generating or writing the pack.
         */
        private void sendPack(final boolean sideband,
                        PackStatistics.Accumulator accumulator,
-                       @Nullable Collection<Ref> allTags) throws IOException {
+                       @Nullable Collection<Ref> allTags,
+                       List<ObjectId> unshallowCommits) throws IOException {
                ProgressMonitor pm = NullProgressMonitor.INSTANCE;
                OutputStream packOut = rawOut;