Merge branch 'fix'

* fix:
  repack: honor -d even when no new pack was created
  clone: keep --reference even with -l -s
  repo-config: document what value_regexp does a bit more clearly.
  Release config lock if the regex is invalid
  core-tutorial.txt: escape asterisk
This commit is contained in:
Junio C Hamano 2006-05-07 15:36:39 -07:00
commit fd60acaced
6 changed files with 95 additions and 14 deletions

View File

@ -971,7 +971,7 @@ $ git show-branch --topo-order master mybranch
The first two lines indicate that it is showing the two branches The first two lines indicate that it is showing the two branches
and the first line of the commit log message from their and the first line of the commit log message from their
top-of-the-tree commits, you are currently on `master` branch top-of-the-tree commits, you are currently on `master` branch
(notice the asterisk `*` character), and the first column for (notice the asterisk `\*` character), and the first column for
the later output lines is used to show commits contained in the the later output lines is used to show commits contained in the
`master` branch, and the second column for the `mybranch` `master` branch, and the second column for the `mybranch`
branch. Three commits are shown along with their log messages. branch. Three commits are shown along with their log messages.

View File

@ -23,10 +23,11 @@ You can query/set/replace/unset options with this command. The name is
actually the section and the key separated by a dot, and the value will be actually the section and the key separated by a dot, and the value will be
escaped. escaped.
If you want to set/unset an option which can occur on multiple lines, you If you want to set/unset an option which can occur on multiple
should provide a POSIX regex for the value. If you want to handle the lines lines, a POSIX regexp `value_regex` needs to be given. Only the
*not* matching the regex, just prepend a single exclamation mark in front existing values that match the regexp are updated or unset. If
(see EXAMPLES). you want to handle the lines that do *not* match the regex, just
prepend a single exclamation mark in front (see EXAMPLES).
The type specifier can be either '--int' or '--bool', which will make The type specifier can be either '--int' or '--bool', which will make
'git-repo-config' ensure that the variable(s) are of the given type and 'git-repo-config' ensure that the variable(s) are of the given type and

View File

@ -516,6 +516,8 @@ int git_config_set_multivar(const char* key, const char* value,
fprintf(stderr, "Invalid pattern: %s\n", fprintf(stderr, "Invalid pattern: %s\n",
value_regex); value_regex);
free(store.value_regex); free(store.value_regex);
close(fd);
unlink(lock_file);
ret = 6; ret = 6;
goto out_free; goto out_free;
} }

View File

@ -265,7 +265,7 @@ yes,yes)
test -f "$repo/objects/info/alternates" && test -f "$repo/objects/info/alternates" &&
cat "$repo/objects/info/alternates"; cat "$repo/objects/info/alternates";
echo "$repo/objects" echo "$repo/objects"
} >"$GIT_DIR/objects/info/alternates" } >>"$GIT_DIR/objects/info/alternates"
;; ;;
esac esac
git-ls-remote "$repo" >"$GIT_DIR/CLONE_HEAD" git-ls-remote "$repo" >"$GIT_DIR/CLONE_HEAD"

View File

@ -48,15 +48,15 @@ name=$(git-rev-list --objects --all $rev_list 2>&1 |
exit 1 exit 1
if [ -z "$name" ]; then if [ -z "$name" ]; then
echo Nothing new to pack. echo Nothing new to pack.
exit 0 else
echo "Pack pack-$name created."
mkdir -p "$PACKDIR" || exit
mv .tmp-pack-$name.pack "$PACKDIR/pack-$name.pack" &&
mv .tmp-pack-$name.idx "$PACKDIR/pack-$name.idx" ||
exit
fi fi
echo "Pack pack-$name created."
mkdir -p "$PACKDIR" || exit
mv .tmp-pack-$name.pack "$PACKDIR/pack-$name.pack" &&
mv .tmp-pack-$name.idx "$PACKDIR/pack-$name.idx" ||
exit
if test "$remove_redundant" = t if test "$remove_redundant" = t
then then

78
t/t5700-clone-reference.sh Executable file
View File

@ -0,0 +1,78 @@
#!/bin/sh
#
# Copyright (C) 2006 Martin Waitz <tali@admingilde.org>
#
test_description='test clone --reference'
. ./test-lib.sh
base_dir=`pwd`
test_expect_success 'preparing first repository' \
'test_create_repo A && cd A &&
echo first > file1 &&
git add file1 &&
git commit -m initial'
cd "$base_dir"
test_expect_success 'preparing second repository' \
'git clone A B && cd B &&
echo second > file2 &&
git add file2 &&
git commit -m addition &&
git repack -a -d &&
git prune'
cd "$base_dir"
test_expect_success 'cloning with reference' \
'git clone -l -s --reference B A C'
cd "$base_dir"
test_expect_success 'existance of info/alternates' \
'test `wc -l <C/.git/objects/info/alternates` = 2'
cd "$base_dir"
test_expect_success 'pulling from reference' \
'cd C &&
git pull ../B'
cd "$base_dir"
test_expect_success 'that reference gets used' \
'cd C &&
echo "0 objects, 0 kilobytes" > expected &&
git count-objects > current &&
diff expected current'
cd "$base_dir"
test_expect_success 'updating origin' \
'cd A &&
echo third > file3 &&
git add file3 &&
git commit -m update &&
git repack -a -d &&
git prune'
cd "$base_dir"
test_expect_success 'pulling changes from origin' \
'cd C &&
git pull origin'
cd "$base_dir"
# the 2 local objects are commit and tree from the merge
test_expect_success 'that alternate to origin gets used' \
'cd C &&
echo "2 objects" > expected &&
git count-objects | cut -d, -f1 > current &&
diff expected current'
cd "$base_dir"
test_done