mirror of
https://github.com/git/git.git
synced 2024-10-30 22:07:53 +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;
|
return;
|
||||||
if (name[cmplen] != '/') {
|
if (name[cmplen] != '/') {
|
||||||
add_object_entry(entry.sha1,
|
add_object_entry(entry.sha1,
|
||||||
S_ISDIR(entry.mode) ? OBJ_TREE : OBJ_BLOB,
|
object_type(entry.mode),
|
||||||
fullname, 1);
|
fullname, 1);
|
||||||
return;
|
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);
|
init_tree_desc(&desc, tree->buffer, tree->size);
|
||||||
while (tree_entry(&desc, &entry)) {
|
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));
|
mark_tree_uninteresting(lookup_tree(entry.sha1));
|
||||||
else
|
break;
|
||||||
|
case OBJ_BLOB:
|
||||||
mark_blob_uninteresting(lookup_blob(entry.sha1));
|
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;
|
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 {
|
struct tree_desc {
|
||||||
const void *buffer;
|
const void *buffer;
|
||||||
struct name_entry entry;
|
struct name_entry entry;
|
||||||
|
|
Loading…
Reference in a new issue