Commit b984bc58 authored by Junio C Hamano's avatar Junio C Hamano

Merge branch 'jk/index-pack-wo-repo-from-stdin' into maint

"git index-pack --stdin" needs an access to an existing repository,
but "git index-pack file.pack" to generate an .idx file that
corresponds to a packfile does not.

* jk/index-pack-wo-repo-from-stdin:
  index-pack: skip collision check when not in repository
  t: use nongit() function where applicable
  index-pack: complain when --stdin is used outside of a repo
  t5000: extract nongit function to test-lib-functions.sh
parents 5bc5edba 29401e15
......@@ -787,13 +787,15 @@ static void sha1_object(const void *data, struct object_entry *obj_entry,
const unsigned char *sha1)
{
void *new_data = NULL;
int collision_test_needed;
int collision_test_needed = 0;
assert(data || obj_entry);
read_lock();
collision_test_needed = has_sha1_file_with_flags(sha1, HAS_SHA1_QUICK);
read_unlock();
if (startup_info->have_repository) {
read_lock();
collision_test_needed = has_sha1_file_with_flags(sha1, HAS_SHA1_QUICK);
read_unlock();
}
if (collision_test_needed && !data) {
read_lock();
......@@ -1730,6 +1732,8 @@ int cmd_index_pack(int argc, const char **argv, const char *prefix)
usage(index_pack_usage);
if (fix_thin_pack && !from_stdin)
die(_("--fix-thin cannot be used without --stdin"));
if (from_stdin && !startup_info->have_repository)
die(_("--stdin requires a git repository"));
if (!index_name && pack_name)
index_name = derive_filename(pack_name, ".idx", &index_name_buf);
if (keep_msg && !keep_name && pack_name)
......
......@@ -219,14 +219,8 @@ test_expect_success 'check line errors for malformed values' '
'
test_expect_success 'error on modifying repo config without repo' '
mkdir no-repo &&
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
cd no-repo &&
test_must_fail git config a.b c 2>err &&
grep "not in a git directory" err
)
nongit test_must_fail git config a.b c 2>err &&
grep "not in a git directory" err
'
cmdline_config="'foo.bar=from-cmdline'"
......
......@@ -94,20 +94,6 @@ check_tar() {
'
}
# run "$@" inside a non-git directory
nongit () {
test -d non-repo ||
mkdir non-repo ||
return 1
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
cd non-repo &&
"$@"
)
}
test_expect_success \
'populate workdir' \
'mkdir a &&
......
......@@ -406,6 +406,21 @@ test_expect_success 'verify resulting packs' '
git verify-pack test-11-*.pack
'
test_expect_success 'set up pack for non-repo tests' '
# make sure we have a pack with no matching index file
cp test-1-*.pack foo.pack
'
test_expect_success 'index-pack --stdin complains of non-repo' '
nongit test_must_fail git index-pack --stdin <foo.pack &&
test_path_is_missing non-repo/.git
'
test_expect_success 'index-pack <pack> works in non-repo' '
nongit git index-pack ../foo.pack &&
test_path_is_file foo.idx
'
#
# WARNING!
#
......
......@@ -17,25 +17,12 @@ case "$GIT_SVN_LC_ALL" in
;;
esac
deepdir=nothing-above
ceiling=$PWD
test_expect_success 'git svn --version works anywhere' '
mkdir -p "$deepdir" && (
GIT_CEILING_DIRECTORIES="$ceiling" &&
export GIT_CEILING_DIRECTORIES &&
cd "$deepdir" &&
git svn --version
)
nongit git svn --version
'
test_expect_success 'git svn help works anywhere' '
mkdir -p "$deepdir" && (
GIT_CEILING_DIRECTORIES="$ceiling" &&
export GIT_CEILING_DIRECTORIES &&
cd "$deepdir" &&
git svn help
)
nongit git svn help
'
test_expect_success \
......
......@@ -257,12 +257,7 @@ test_expect_success SYMLINKS '__gitdir - resulting path avoids symlinks' '
'
test_expect_success '__gitdir - not a git repository' '
(
cd subdir/subsubdir &&
GIT_CEILING_DIRECTORIES="$TRASH_DIRECTORY" &&
export GIT_CEILING_DIRECTORIES &&
test_must_fail __gitdir
)
nongit test_must_fail __gitdir
'
test_expect_success '__gitcomp - trailing space - options' '
......
......@@ -994,3 +994,17 @@ test_copy_bytes () {
}
' - "$1"
}
# run "$@" inside a non-git directory
nongit () {
test -d non-repo ||
mkdir non-repo ||
return 1
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
cd non-repo &&
"$@"
)
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment