コード例 #1
0
ファイル: progress.c プロジェクト: 1974kpkpkp/git
static void throughput_string(struct strbuf *buf, off_t total,
			      unsigned int rate)
{
	strbuf_addstr(buf, ", ");
	strbuf_humanise_bytes(buf, total);
	strbuf_addstr(buf, " | ");
	strbuf_humanise_bytes(buf, rate * 1024);
	strbuf_addstr(buf, "/s");
}
コード例 #2
0
ファイル: count-objects.c プロジェクト: Baldrani/git
int cmd_count_objects(int argc, const char **argv, const char *prefix)
{
    int human_readable = 0;
    struct option opts[] = {
        OPT__VERBOSE(&verbose, N_("be verbose")),
        OPT_BOOL('H', "human-readable", &human_readable,
        N_("print sizes in human readable format")),
        OPT_END(),
    };

    git_config(git_default_config, NULL);

    argc = parse_options(argc, argv, prefix, opts, count_objects_usage, 0);
    /* we do not take arguments other than flags for now */
    if (argc)
        usage_with_options(count_objects_usage, opts);
    if (verbose) {
        report_garbage = real_report_garbage;
        report_linked_checkout_garbage();
    }

    for_each_loose_file_in_objdir(get_object_directory(),
                                  count_loose, count_cruft, NULL, NULL);

    if (verbose) {
        struct packed_git *p;
        unsigned long num_pack = 0;
        off_t size_pack = 0;
        struct strbuf loose_buf = STRBUF_INIT;
        struct strbuf pack_buf = STRBUF_INIT;
        struct strbuf garbage_buf = STRBUF_INIT;
        if (!packed_git)
            prepare_packed_git();
        for (p = packed_git; p; p = p->next) {
            if (!p->pack_local)
                continue;
            if (open_pack_index(p))
                continue;
            packed += p->num_objects;
            size_pack += p->pack_size + p->index_size;
            num_pack++;
        }

        if (human_readable) {
            strbuf_humanise_bytes(&loose_buf, loose_size);
            strbuf_humanise_bytes(&pack_buf, size_pack);
            strbuf_humanise_bytes(&garbage_buf, size_garbage);
        } else {
            strbuf_addf(&loose_buf, "%lu",
                        (unsigned long)(loose_size / 1024));
            strbuf_addf(&pack_buf, "%lu",
                        (unsigned long)(size_pack / 1024));
            strbuf_addf(&garbage_buf, "%lu",
                        (unsigned long)(size_garbage / 1024));
        }

        printf("count: %lu\n", loose);
        printf("size: %s\n", loose_buf.buf);
        printf("in-pack: %lu\n", packed);
        printf("packs: %lu\n", num_pack);
        printf("size-pack: %s\n", pack_buf.buf);
        printf("prune-packable: %lu\n", packed_loose);
        printf("garbage: %lu\n", garbage);
        printf("size-garbage: %s\n", garbage_buf.buf);
        foreach_alt_odb(print_alternate, NULL);
        strbuf_release(&loose_buf);
        strbuf_release(&pack_buf);
        strbuf_release(&garbage_buf);
    } else {
        struct strbuf buf = STRBUF_INIT;
        if (human_readable)
            strbuf_humanise_bytes(&buf, loose_size);
        else
            strbuf_addf(&buf, "%lu kilobytes",
                        (unsigned long)(loose_size / 1024));
        printf("%lu objects, %s\n", loose, buf.buf);
        strbuf_release(&buf);
    }
    return 0;
}