create_bundle() is getting a little long.  Isolate a small
piece to work on without distractions.

Signed-off-by: Jonathan Nieder <jrnie...@gmail.com>
---
 bundle.c |   58 ++++++++++++++++++++++++++++++++++------------------------
 1 files changed, 34 insertions(+), 24 deletions(-)

diff --git a/bundle.c b/bundle.c
index ff97adc..66948f4 100644
--- a/bundle.c
+++ b/bundle.c
@@ -193,35 +193,14 @@ static int is_tag_in_date_range(struct object *tag, 
struct rev_info *revs)
                (revs->min_age == -1 || revs->min_age > date);
 }
 
-int create_bundle(struct bundle_header *header, const char *path,
-               int argc, const char **argv)
+static int list_prerequisites(int bundle_fd, struct rev_info *revs,
+               int argc, const char * const *argv)
 {
-       static struct lock_file lock;
-       int bundle_fd = -1;
-       int bundle_to_stdout;
        const char **argv_boundary = xmalloc((argc + 4) * sizeof(const char *));
-       const char **argv_pack = xmalloc(5 * sizeof(const char *));
-       int i, ref_count = 0;
        char buffer[1024];
-       struct rev_info revs;
        struct child_process rls;
        FILE *rls_fout;
 
-       bundle_to_stdout = !strcmp(path, "-");
-       if (bundle_to_stdout)
-               bundle_fd = 1;
-       else
-               bundle_fd = hold_lock_file_for_update(&lock, path,
-                                                     LOCK_DIE_ON_ERROR);
-
-       /* write signature */
-       write_or_die(bundle_fd, bundle_signature, strlen(bundle_signature));
-
-       /* init revs to list objects for pack-objects later */
-       save_commit_buffer = 0;
-       init_revisions(&revs, NULL);
-
-       /* write prerequisites */
        memcpy(argv_boundary + 3, argv + 1, argc * sizeof(const char *));
        argv_boundary[0] = "rev-list";
        argv_boundary[1] = "--boundary";
@@ -241,7 +220,7 @@ int create_bundle(struct bundle_header *header, const char 
*path,
                        if (!get_sha1_hex(buffer + 1, sha1)) {
                                struct object *object = parse_object(sha1);
                                object->flags |= UNINTERESTING;
-                               add_pending_object(&revs, object, buffer);
+                               add_pending_object(revs, object, buffer);
                        }
                } else if (!get_sha1_hex(buffer, sha1)) {
                        struct object *object = parse_object(sha1);
@@ -251,6 +230,37 @@ int create_bundle(struct bundle_header *header, const char 
*path,
        fclose(rls_fout);
        if (finish_command(&rls))
                return error("rev-list died");
+       return 0;
+}
+
+int create_bundle(struct bundle_header *header, const char *path,
+               int argc, const char **argv)
+{
+       static struct lock_file lock;
+       int bundle_fd = -1;
+       int bundle_to_stdout;
+       const char **argv_pack = xmalloc(5 * sizeof(const char *));
+       int i, ref_count = 0;
+       struct rev_info revs;
+       struct child_process rls;
+
+       bundle_to_stdout = !strcmp(path, "-");
+       if (bundle_to_stdout)
+               bundle_fd = 1;
+       else
+               bundle_fd = hold_lock_file_for_update(&lock, path,
+                                                     LOCK_DIE_ON_ERROR);
+
+       /* write signature */
+       write_or_die(bundle_fd, bundle_signature, strlen(bundle_signature));
+
+       /* init revs to list objects for pack-objects later */
+       save_commit_buffer = 0;
+       init_revisions(&revs, NULL);
+
+       /* write prerequisites */
+       if (list_prerequisites(bundle_fd, &revs, argc, argv))
+               return -1;
 
        /* write references */
        argc = setup_revisions(argc, argv, &revs, NULL);
-- 
1.7.1.198.g8d802




-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to