Пример #1
0
Файл: fetch.c Проект: davvid/git
int cmd_fetch(int argc, const char **argv, const char *prefix)
{
	int i;
	struct string_list list = { NULL, 0, 0, 0 };
	struct remote *remote;
	int result = 0;

	/* Record the command line for the reflog */
	strbuf_addstr(&default_rla, "fetch");
	for (i = 1; i < argc; i++)
		strbuf_addf(&default_rla, " %s", argv[i]);

	argc = parse_options(argc, argv, prefix,
			     builtin_fetch_options, builtin_fetch_usage, 0);

	if (all) {
		if (argc == 1)
			die("fetch --all does not take a repository argument");
		else if (argc > 1)
			die("fetch --all does not make sense with refspecs");
		(void) for_each_remote(get_one_remote_for_fetch, &list);
		result = fetch_multiple(&list);
	} else if (argc == 0) {
		/* No arguments -- use default remote */
		remote = remote_get(NULL);
		result = fetch_one(remote, argc, argv);
	} else if (multiple) {
		/* All arguments are assumed to be remotes or groups */
		for (i = 0; i < argc; i++)
			if (!add_remote_or_group(argv[i], &list))
				die("No such remote or remote group: %s", argv[i]);
		result = fetch_multiple(&list);
	} else {
		/* Single remote or group */
		(void) add_remote_or_group(argv[0], &list);
		if (list.nr > 1) {
			/* More than one remote */
			if (argc > 1)
				die("Fetching a group and specifying refspecs does not make sense");
			result = fetch_multiple(&list);
		} else {
			/* Zero or one remotes */
			remote = remote_get(argv[0]);
			result = fetch_one(remote, argc-1, argv+1);
		}
	}

	/* All names were strdup()ed or strndup()ed */
	list.strdup_strings = 1;
	string_list_clear(&list, 0);

	return result;
}
Пример #2
0
/**
 * 从结果集获得所有结果
 * args[0] 游标对象
 * 返回一个列表对象
 **/
static PyObject*
fetch_all(PyObject *self, PyObject *args)
{
    PyListObject *res;
    PyObject *v;
    int i = 0;
    res = (PyListObject*)PyList_New(0);
    if(res == NULL)
        return PyErr_NoMemory();
    while((v = fetch_one(self, args)) != NULL && v != Py_None)
    {
        //PyObject_Print(v, stdout, 0);
        PyList_Insert((PyObject*)res, i, v);
        i ++;
    }
    if(PySequence_Length((PyObject*)res) == 0)
    {
        Py_XDECREF(res);
        return Py_None;
    }
    return (PyObject*)res;
}