Sync with GIT 1.5.3.4
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
commit
fed276e752
@ -4,25 +4,32 @@ GIT v1.5.3.4 Release Notes
|
||||
Fixes since v1.5.3.3
|
||||
--------------------
|
||||
|
||||
* Sample 'post-receive-hook' incorrectly sent out push
|
||||
* Change to "git-ls-files" in v1.5.3.3 that was introduced to support
|
||||
partial commit of removal better had a segfaulting bug, which was
|
||||
diagnosed and fixed by Keith and Carl.
|
||||
|
||||
* Performance improvements for rename detection has been backported
|
||||
from the 'master' branch.
|
||||
|
||||
* "git-for-each-ref --format='%(numparent)'" was not working
|
||||
correctly at all, and --format='%(parent)' was not working for
|
||||
merge commits.
|
||||
|
||||
* Sample "post-receive-hook" incorrectly sent out push
|
||||
notification e-mails marked as "From: " the committer of the
|
||||
commit that happened to be at the tip of the branch that was
|
||||
pushed, not from the person who pushed.
|
||||
|
||||
* git-remote did not exit non-zero status upon error.
|
||||
* "git-remote" did not exit non-zero status upon error.
|
||||
|
||||
* "git-add -i" did not respond very well to EOF from tty nor
|
||||
bogus input.
|
||||
|
||||
* "git rebase -i" squash subcommand incorrectly made the
|
||||
* "git-rebase -i" squash subcommand incorrectly made the
|
||||
author of later commit the author of resulting commit,
|
||||
instead of taking from the first one in the squashed series.
|
||||
|
||||
* "git stash apply --index" was not documented.
|
||||
* "git-stash apply --index" was not documented.
|
||||
|
||||
|
||||
--
|
||||
exec >/var/tmp/1
|
||||
O=v1.5.3.3-6-g0bdcac5
|
||||
echo O=`git describe refs/heads/maint`
|
||||
git shortlog --no-merges $O..refs/heads/maint
|
||||
* autoconfiguration learned that "ar" command is found as "gas" on
|
||||
some systems.
|
||||
|
@ -579,7 +579,7 @@ merge.summary::
|
||||
|
||||
merge.tool::
|
||||
Controls which merge resolution program is used by
|
||||
gitlink:git-mergetool[l]. Valid values are: "kdiff3", "tkdiff",
|
||||
gitlink:git-mergetool[1]. Valid values are: "kdiff3", "tkdiff",
|
||||
"meld", "xxdiff", "emerge", "vimdiff", "gvimdiff", and "opendiff".
|
||||
|
||||
merge.verbosity::
|
||||
|
@ -179,8 +179,8 @@
|
||||
|
||||
--ext-diff::
|
||||
Allow an external diff helper to be executed. If you set an
|
||||
external diff driver with gitlink:gitattributes(5), you need
|
||||
to use this option with gitlink:git-log(1) and friends.
|
||||
external diff driver with gitlink:gitattributes[5], you need
|
||||
to use this option with gitlink:git-log[1] and friends.
|
||||
|
||||
--no-ext-diff::
|
||||
Disallow external diff drivers.
|
||||
|
@ -26,6 +26,10 @@ It will start out with a head equal to the one given as <start-point>.
|
||||
If no <start-point> is given, the branch will be created with a head
|
||||
equal to that of the currently checked out branch.
|
||||
|
||||
Note that this will create the new branch, but it will not switch the
|
||||
working tree to it; use "git checkout <newbranch>" to switch to the
|
||||
new branch.
|
||||
|
||||
When a local branch is started off a remote branch, git can setup the
|
||||
branch so that gitlink:git-pull[1] will appropriately merge from that
|
||||
remote branch. If this behavior is desired, it is possible to make it
|
||||
@ -91,6 +95,21 @@ OPTIONS
|
||||
--no-abbrev::
|
||||
Display the full sha1s in output listing rather than abbreviating them.
|
||||
|
||||
--track::
|
||||
Set up configuration so that git-pull will automatically
|
||||
retrieve data from the remote branch. Use this if you always
|
||||
pull from the same remote branch into the new branch, or if you
|
||||
don't want to use "git pull <repository> <refspec>" explicitly. Set the
|
||||
branch.autosetupmerge configuration variable to true if you
|
||||
want git-checkout and git-branch to always behave as if
|
||||
'--track' were given.
|
||||
|
||||
--no-track::
|
||||
When -b is given and a branch is created off a remote branch,
|
||||
set up configuration so that git-pull will not retrieve data
|
||||
from the remote branch, ignoring the branch.autosetupmerge
|
||||
configuration variable.
|
||||
|
||||
<branchname>::
|
||||
The name of the branch to create or delete.
|
||||
The new branch name must pass all checks defined by
|
||||
|
@ -50,7 +50,9 @@ OPTIONS
|
||||
--track::
|
||||
When -b is given and a branch is created off a remote branch,
|
||||
set up configuration so that git-pull will automatically
|
||||
retrieve data from the remote branch. Set the
|
||||
retrieve data from the remote branch. Use this if you always
|
||||
pull from the same remote branch into the new branch, or if you
|
||||
don't want to use "git pull <repository> <refspec>" explicitly. Set the
|
||||
branch.autosetupmerge configuration variable to true if you
|
||||
want git-checkout and git-branch to always behave as if
|
||||
'--track' were given.
|
||||
|
3
INSTALL
3
INSTALL
@ -79,6 +79,9 @@ Issues of note:
|
||||
- "perl" and POSIX-compliant shells are needed to use most of
|
||||
the barebone Porcelainish scripts.
|
||||
|
||||
- "cpio" is used by git-merge for saving and restoring the index,
|
||||
and by git-clone when doing a local (possibly hardlinked) clone.
|
||||
|
||||
- Some platform specific issues are dealt with Makefile rules,
|
||||
but depending on your specific installation, you may not
|
||||
have all the libraries/tools needed, or you may have
|
||||
|
@ -43,7 +43,7 @@ static struct {
|
||||
{ "objectsize", FIELD_ULONG },
|
||||
{ "objectname" },
|
||||
{ "tree" },
|
||||
{ "parent" }, /* NEEDSWORK: how to address 2nd and later parents? */
|
||||
{ "parent" },
|
||||
{ "numparent", FIELD_ULONG },
|
||||
{ "object" },
|
||||
{ "type" },
|
||||
@ -262,24 +262,26 @@ static void grab_commit_values(struct atom_value *val, int deref, struct object
|
||||
}
|
||||
if (!strcmp(name, "numparent")) {
|
||||
char *s = xmalloc(40);
|
||||
v->ul = num_parents(commit);
|
||||
sprintf(s, "%lu", v->ul);
|
||||
v->s = s;
|
||||
v->ul = num_parents(commit);
|
||||
}
|
||||
else if (!strcmp(name, "parent")) {
|
||||
int num = num_parents(commit);
|
||||
int i;
|
||||
struct commit_list *parents;
|
||||
char *s = xmalloc(42 * num);
|
||||
char *s = xmalloc(41 * num + 1);
|
||||
v->s = s;
|
||||
for (i = 0, parents = commit->parents;
|
||||
parents;
|
||||
parents = parents->next, i = i + 42) {
|
||||
parents = parents->next, i = i + 41) {
|
||||
struct commit *parent = parents->item;
|
||||
strcpy(s+i, sha1_to_hex(parent->object.sha1));
|
||||
if (parents->next)
|
||||
s[i+40] = ' ';
|
||||
}
|
||||
if (!i)
|
||||
*s = '\0';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -280,7 +280,8 @@ static void prune_cache(const char *prefix)
|
||||
|
||||
if (pos < 0)
|
||||
pos = -pos-1;
|
||||
active_cache += pos;
|
||||
memmove(active_cache, active_cache + pos,
|
||||
(active_nr - pos) * sizeof(struct cache_entry *));
|
||||
active_nr -= pos;
|
||||
first = 0;
|
||||
last = active_nr;
|
||||
|
@ -104,7 +104,7 @@ AC_MSG_NOTICE([CHECKS for programs])
|
||||
#
|
||||
AC_PROG_CC([cc gcc])
|
||||
#AC_PROG_INSTALL # needs install-sh or install.sh in sources
|
||||
AC_CHECK_TOOL(AR, ar, :)
|
||||
AC_CHECK_TOOLS(AR, [gar ar], :)
|
||||
AC_CHECK_PROGS(TAR, [gtar tar])
|
||||
# TCLTK_PATH will be set to some value if we want Tcl/Tk
|
||||
# or will be empty otherwise.
|
||||
|
4
diff.c
4
diff.c
@ -1675,7 +1675,7 @@ int diff_populate_filespec(struct diff_filespec *s, int size_only)
|
||||
return 0;
|
||||
}
|
||||
|
||||
void diff_free_filespec_data_large(struct diff_filespec *s)
|
||||
void diff_free_filespec_blob(struct diff_filespec *s)
|
||||
{
|
||||
if (s->should_free)
|
||||
free(s->data);
|
||||
@ -1690,7 +1690,7 @@ void diff_free_filespec_data_large(struct diff_filespec *s)
|
||||
|
||||
void diff_free_filespec_data(struct diff_filespec *s)
|
||||
{
|
||||
diff_free_filespec_data_large(s);
|
||||
diff_free_filespec_blob(s);
|
||||
free(s->cnt_data);
|
||||
s->cnt_data = NULL;
|
||||
}
|
||||
|
@ -378,10 +378,10 @@ void diffcore_rename(struct diff_options *options)
|
||||
m->score = estimate_similarity(one, two,
|
||||
minimum_score);
|
||||
m->name_score = basename_same(one, two);
|
||||
diff_free_filespec_data_large(one);
|
||||
diff_free_filespec_blob(one);
|
||||
}
|
||||
/* We do not need the text anymore */
|
||||
diff_free_filespec_data_large(two);
|
||||
diff_free_filespec_blob(two);
|
||||
dst_cnt++;
|
||||
}
|
||||
/* cost matrix sorted by most to least similar pair */
|
||||
|
@ -48,7 +48,7 @@ extern void fill_filespec(struct diff_filespec *, const unsigned char *,
|
||||
|
||||
extern int diff_populate_filespec(struct diff_filespec *, int);
|
||||
extern void diff_free_filespec_data(struct diff_filespec *);
|
||||
extern void diff_free_filespec_data_large(struct diff_filespec *);
|
||||
extern void diff_free_filespec_blob(struct diff_filespec *);
|
||||
extern int diff_filespec_is_binary(struct diff_filespec *);
|
||||
|
||||
struct diff_filepair {
|
||||
|
@ -25,6 +25,7 @@ refuse_partial () {
|
||||
exit 1
|
||||
}
|
||||
|
||||
TMP_INDEX=
|
||||
THIS_INDEX="$GIT_DIR/index"
|
||||
NEXT_INDEX="$GIT_DIR/next-index$$"
|
||||
rm -f "$NEXT_INDEX"
|
||||
|
22
git-pull.sh
22
git-pull.sh
@ -97,10 +97,24 @@ case "$merge_head" in
|
||||
esac
|
||||
curr_branch=${curr_branch#refs/heads/}
|
||||
|
||||
echo >&2 "Warning: No merge candidate found because value of config option
|
||||
\"branch.${curr_branch}.merge\" does not match any remote branch fetched."
|
||||
echo >&2 "No changes."
|
||||
exit 0
|
||||
echo >&2 "You asked me to pull without telling me which branch you"
|
||||
echo >&2 "want to merge with, and 'branch.${curr_branch}.merge' in"
|
||||
echo >&2 "your configuration file does not tell me either. Please"
|
||||
echo >&2 "name which branch you want to merge on the command line and"
|
||||
echo >&2 "try again (e.g. 'git pull <repository> <refspec>')."
|
||||
echo >&2 "See git-pull(1) for details on the refspec."
|
||||
echo >&2
|
||||
echo >&2 "If you often merge with the same branch, you may want to"
|
||||
echo >&2 "configure the following variables in your configuration"
|
||||
echo >&2 "file:"
|
||||
echo >&2
|
||||
echo >&2 " branch.${curr_branch}.remote = <nickname>"
|
||||
echo >&2 " branch.${curr_branch}.merge = <remote-ref>"
|
||||
echo >&2 " remote.<nickname>.url = <url>"
|
||||
echo >&2 " remote.<nickname>.fetch = <refspec>"
|
||||
echo >&2
|
||||
echo >&2 "See git-config(1) for details."
|
||||
exit 1
|
||||
;;
|
||||
?*' '?*)
|
||||
if test -z "$orig_head"
|
||||
|
71
t/t3060-ls-files-with-tree.sh
Executable file
71
t/t3060-ls-files-with-tree.sh
Executable file
@ -0,0 +1,71 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Copyright (c) 2007 Carl D. Worth
|
||||
#
|
||||
|
||||
test_description='git ls-files test (--with-tree).
|
||||
|
||||
This test runs git ls-files --with-tree and in particular in
|
||||
a scenario known to trigger a crash with some versions of git.
|
||||
'
|
||||
. ./test-lib.sh
|
||||
|
||||
test_expect_success setup '
|
||||
|
||||
# The bug we are exercising requires a fair number of entries
|
||||
# in a sub-directory so that add_index_entry will trigger a
|
||||
# realloc.
|
||||
|
||||
echo file >expected &&
|
||||
mkdir sub &&
|
||||
bad= &&
|
||||
for n in 0 1 2 3 4 5
|
||||
do
|
||||
for m in 0 1 2 3 4 5 6 7 8 9
|
||||
do
|
||||
num=00$n$m &&
|
||||
>sub/file-$num &&
|
||||
echo file-$num >>expected || {
|
||||
bad=t
|
||||
break
|
||||
}
|
||||
done && test -z "$bad" || {
|
||||
bad=t
|
||||
break
|
||||
}
|
||||
done && test -z "$bad" &&
|
||||
git add . &&
|
||||
git commit -m "add a bunch of files" &&
|
||||
|
||||
# We remove them all so that we will have something to add
|
||||
# back with --with-tree and so that we will definitely be
|
||||
# under the realloc size to trigger the bug.
|
||||
rm -rf sub &&
|
||||
git commit -a -m "remove them all" &&
|
||||
|
||||
# The bug also requires some entry before our directory so that
|
||||
# prune_path will modify the_index.cache
|
||||
|
||||
mkdir a_directory_that_sorts_before_sub &&
|
||||
>a_directory_that_sorts_before_sub/file &&
|
||||
mkdir sub &&
|
||||
>sub/file &&
|
||||
git add .
|
||||
'
|
||||
|
||||
# We have to run from a sub-directory to trigger prune_path
|
||||
# Then we finally get to run our --with-tree test
|
||||
cd sub
|
||||
|
||||
test_expect_success 'git -ls-files --with-tree should succeed from subdir' '
|
||||
|
||||
git ls-files --with-tree=HEAD~1 >../output
|
||||
|
||||
'
|
||||
|
||||
cd ..
|
||||
test_expect_success \
|
||||
'git -ls-files --with-tree should add entries from named tree.' \
|
||||
'diff -u expected output'
|
||||
|
||||
test_done
|
Loading…
Reference in New Issue
Block a user