Пример #1
0
void test_object_cache__cache_no_blobs(void)
{
	int i, start, nonblobs = 0;
	git_oid oid;
	git_odb_object *odb_obj;
	git_object *obj;
	git_odb *odb;

	git_libgit2_opts(GIT_OPT_SET_CACHE_OBJECT_LIMIT, (int)GIT_OBJ_BLOB, (size_t)0);

	cl_git_pass(git_repository_open(&g_repo, cl_fixture("testrepo.git")));
	cl_git_pass(git_repository_odb(&odb, g_repo));

	start = (int)git_cache_size(&g_repo->objects);

	for (i = 0; g_data[i].sha != NULL; ++i) {
		int count = (int)git_cache_size(&g_repo->objects);

		cl_git_pass(git_oid_fromstr(&oid, g_data[i].sha));

		/* alternate between loading raw and parsed objects */
		if ((i & 1) == 0) {
			cl_git_pass(git_odb_read(&odb_obj, odb, &oid));
			cl_assert(g_data[i].type == git_odb_object_type(odb_obj));
			git_odb_object_free(odb_obj);
		} else {
			cl_git_pass(git_object_lookup(&obj, g_repo, &oid, GIT_OBJ_ANY));
			cl_assert(g_data[i].type == git_object_type(obj));
			git_object_free(obj);
		}

		if (g_data[i].type == GIT_OBJ_BLOB)
			cl_assert_equal_i(count, (int)git_cache_size(&g_repo->objects));
		else {
			cl_assert_equal_i(count + 1, (int)git_cache_size(&g_repo->objects));
			nonblobs++;
		}
	}

	cl_assert_equal_i(nonblobs, (int)git_cache_size(&g_repo->objects) - start);

	git_odb_free(odb);
}
Пример #2
0
void git_cache_dump_stats(git_cache *cache)
{
	git_cached_obj *object;

	if (git_cache_size(cache) == 0)
		return;

	printf("Cache %p: %"PRIuZ" items cached, %"PRIdZ" bytes\n",
		cache, git_cache_size(cache), cache->used_memory);

	git_oidmap_foreach_value(cache->map, object, {
		char oid_str[9];
		printf(" %s%c %s (%"PRIuZ")\n",
			git_object_type2string(object->type),
			object->flags == GIT_CACHE_STORE_PARSED ? '*' : ' ',
			git_oid_tostr(oid_str, sizeof(oid_str), &object->oid),
			object->size
		);
	});