зеркало из https://github.com/microsoft/git.git
resolve_gitlink_packed_ref(): fix mismerge
2c5c66b
(Merge branch 'jp/get-ref-dir-unsorted', 2011-10-10) merged a
topic that forked from the mainline before a new helper function
get_packed_refs() refactored code to read packed-refs file. The merge made
the call to the helper function with an incorrect argument. The parameter
to the function has to be a path to the submodule.
Fix the mismerge.
Helped-by: Mark Levedahl <mlevedahl@gmail.com>
Helped-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
05f6edcd2a
Коммит
e5fa45c159
12
refs.c
12
refs.c
|
@ -393,12 +393,22 @@ static struct ref_array *get_loose_refs(const char *submodule)
|
|||
#define MAXDEPTH 5
|
||||
#define MAXREFLEN (1024)
|
||||
|
||||
/*
|
||||
* Called by resolve_gitlink_ref_recursive() after it failed to read
|
||||
* from "name", which is "module/.git/<refname>". Find <refname> in
|
||||
* the packed-refs file for the submodule.
|
||||
*/
|
||||
static int resolve_gitlink_packed_ref(char *name, int pathlen, const char *refname, unsigned char *result)
|
||||
{
|
||||
int retval = -1;
|
||||
struct ref_entry *ref;
|
||||
struct ref_array *array = get_packed_refs(name);
|
||||
struct ref_array *array;
|
||||
|
||||
/* being defensive: resolve_gitlink_ref() did this for us */
|
||||
if (pathlen < 6 || memcmp(name + pathlen - 6, "/.git/", 6))
|
||||
die("Oops");
|
||||
name[pathlen - 6] = '\0'; /* make it path to the submodule */
|
||||
array = get_packed_refs(name);
|
||||
ref = search_ref_array(array, refname);
|
||||
if (ref != NULL) {
|
||||
memcpy(result, ref->sha1, 20);
|
||||
|
|
|
@ -65,4 +65,23 @@ test_expect_success '--no-empty-directory hides empty directory' '
|
|||
test_cmp expected3 output
|
||||
'
|
||||
|
||||
test_expect_success SYMLINKS 'ls-files --others with symlinked submodule' '
|
||||
git init super &&
|
||||
git init sub &&
|
||||
(
|
||||
cd sub &&
|
||||
>a &&
|
||||
git add a &&
|
||||
git commit -m sub &&
|
||||
git pack-refs --all
|
||||
) &&
|
||||
(
|
||||
cd super &&
|
||||
"$TEST_DIRECTORY/../contrib/workdir/git-new-workdir" ../sub sub
|
||||
git ls-files --others --exclude-standard >../actual
|
||||
) &&
|
||||
echo sub/ >expect &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_done
|
||||
|
|
Загрузка…
Ссылка в новой задаче