예제 #1
0
void for_each_alternate_ref(alternate_ref_fn fn, void *data)
{
	struct alternate_refs_data cb;
	cb.fn = fn;
	cb.data = data;
	foreach_alt_odb(refs_from_alternate_cb, &cb);
}
예제 #2
0
static void prepare_possible_alternates(const char *sm_name,
		struct string_list *reference)
{
	char *sm_alternate = NULL, *error_strategy = NULL;
	struct submodule_alternate_setup sas = SUBMODULE_ALTERNATE_SETUP_INIT;

	git_config_get_string("submodule.alternateLocation", &sm_alternate);
	if (!sm_alternate)
		return;

	git_config_get_string("submodule.alternateErrorStrategy", &error_strategy);

	if (!error_strategy)
		error_strategy = xstrdup("die");

	sas.submodule_name = sm_name;
	sas.reference = reference;
	if (!strcmp(error_strategy, "die"))
		sas.error_mode = SUBMODULE_ALTERNATE_ERROR_DIE;
	else if (!strcmp(error_strategy, "info"))
		sas.error_mode = SUBMODULE_ALTERNATE_ERROR_INFO;
	else if (!strcmp(error_strategy, "ignore"))
		sas.error_mode = SUBMODULE_ALTERNATE_ERROR_IGNORE;
	else
		die(_("Value '%s' for submodule.alternateErrorStrategy is not recognized"), error_strategy);

	if (!strcmp(sm_alternate, "superproject"))
		foreach_alt_odb(add_possible_reference_from_superproject, &sas);
	else if (!strcmp(sm_alternate, "no"))
		; /* do nothing */
	else
		die(_("Value '%s' for submodule.alternateLocation is not recognized"), sm_alternate);

	free(sm_alternate);
	free(error_strategy);
}
예제 #3
0
static void add_alternate_refs(void)
{
	foreach_alt_odb(add_refs_from_alternate, NULL);
}
예제 #4
0
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;
}