Staging
v0.5.1
https://github.com/git/git
Revision 5035242c4785bd23c53827a1656b5f97394f724e authored by Junio C Hamano on 08 June 2007, 08:19:13 UTC, committed by Junio C Hamano on 08 June 2007, 08:19:13 UTC
Although it is not advisable, we have always allowed a branch
and a tag to have the same basename (i.e. it is not illegal to
have refs/heads/frotz and refs/tags/frotz at the same time).
When talking about a specific commit, the interpretation of
'frotz' has always been "use tag and then check branch",
although we warn when ambiguities exist.

However "git checkout $name" is defined to (1) first see if it
matches the branch name, and if so switch to that branch; (2)
otherwise it is an instruction to detach HEAD to point at the
commit named by $name.  We did not follow this definition when
$name appeared under both refs/heads/ and refs/tags/ -- we
switched to the branch but read the tree from the tagged commit,
which was utterly bogus.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
1 parent 23fcdc7
Raw File
Tip revision: 5035242c4785bd23c53827a1656b5f97394f724e authored by Junio C Hamano on 08 June 2007, 08:19:13 UTC
checkout: do not get confused with ambiguous tag/branch names
Tip revision: 5035242
path-list.h
#ifndef PATH_LIST_H
#define PATH_LIST_H

struct path_list_item {
	char *path;
	void *util;
};
struct path_list
{
	struct path_list_item *items;
	unsigned int nr, alloc;
	unsigned int strdup_paths:1;
};

void print_path_list(const char *text, const struct path_list *p);

int path_list_has_path(const struct path_list *list, const char *path);
void path_list_clear(struct path_list *list, int free_items);
struct path_list_item *path_list_insert(const char *path, struct path_list *list);
struct path_list_item *path_list_lookup(const char *path, struct path_list *list);

#endif /* PATH_LIST_H */
back to top