mirror of
https://github.com/git/git.git
synced 2024-10-30 13:57:54 +01:00
Merge branch 'lt/maint-rev-list-gitlink' into maint
* lt/maint-rev-list-gitlink: Fix rev-list when showing objects involving submodules
This commit is contained in:
commit
be4b37b9ad
4 changed files with 59 additions and 3 deletions
|
@ -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;
|
||||
}
|
||||
|
|
11
revision.c
11
revision.c
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
42
t/t6008-rev-list-submodule.sh
Executable file
42
t/t6008-rev-list-submodule.sh
Executable file
|
@ -0,0 +1,42 @@
|
|||
#!/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;
|
||||
|
|
Loading…
Reference in a new issue