提交 be4b37b9 编写于 作者: J Junio C Hamano

Merge branch 'lt/maint-rev-list-gitlink' into maint

* lt/maint-rev-list-gitlink:
  Fix rev-list when showing objects involving submodules
......@@ -989,7 +989,7 @@ static void add_pbase_object(struct tree_desc *tree,
return;
if (name[cmplen] != '/') {
add_object_entry(entry.sha1,
S_ISDIR(entry.mode) ? OBJ_TREE : OBJ_BLOB,
object_type(entry.mode),
fullname, 1);
return;
}
......
......@@ -65,10 +65,17 @@ void mark_tree_uninteresting(struct tree *tree)
init_tree_desc(&desc, tree->buffer, tree->size);
while (tree_entry(&desc, &entry)) {
if (S_ISDIR(entry.mode))
switch (object_type(entry.mode)) {
case OBJ_TREE:
mark_tree_uninteresting(lookup_tree(entry.sha1));
else
break;
case OBJ_BLOB:
mark_blob_uninteresting(lookup_blob(entry.sha1));
break;
default:
/* Subproject commit - not in this repository */
break;
}
}
/*
......
#!/bin/sh
#
# Copyright (c) 2007 Johannes E. Schindelin
#
test_description='git rev-list involving submodules that this repo has'
. ./test-lib.sh
test_expect_success 'setup' '
: > file &&
git add file &&
test_tick &&
git commit -m initial &&
echo 1 > file &&
test_tick &&
git commit -m second file &&
echo 2 > file &&
test_tick &&
git commit -m third file &&
rm .git/index &&
: > super-file &&
git add super-file &&
git submodule add . sub &&
git symbolic-ref HEAD refs/heads/super &&
test_tick &&
git commit -m super-initial &&
echo 1 > super-file &&
test_tick &&
git commit -m super-first super-file &&
echo 2 > super-file &&
test_tick &&
git commit -m super-second super-file
'
test_expect_success "Ilari's test" '
git rev-list --objects super master ^super^
'
test_done
......@@ -7,6 +7,13 @@ struct name_entry {
unsigned int mode;
};
static inline enum object_type object_type(unsigned int mode)
{
return S_ISDIR(mode) ? OBJ_TREE :
S_ISGITLINK(mode) ? OBJ_COMMIT :
OBJ_BLOB;
}
struct tree_desc {
const void *buffer;
struct name_entry entry;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册