GIT 1.0.5
Minor fixes. Starting from this one I won't be touching debian/ directory since the official maintainer seems to be reasonably quick to package up things. The packaging procedure used there seems to be quite different from what I have, so I'd like to avoid potential confusion and reduce work by the official maintainer and myself. Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
commit
e5f5219a4f
2
Makefile
2
Makefile
@ -55,7 +55,7 @@ all:
|
|||||||
# Define USE_STDEV below if you want git to care about the underlying device
|
# Define USE_STDEV below if you want git to care about the underlying device
|
||||||
# change being considered an inode change from the update-cache perspective.
|
# change being considered an inode change from the update-cache perspective.
|
||||||
|
|
||||||
GIT_VERSION = 1.0.4
|
GIT_VERSION = 1.0.5
|
||||||
|
|
||||||
# CFLAGS and LDFLAGS are for the users to override from the command line.
|
# CFLAGS and LDFLAGS are for the users to override from the command line.
|
||||||
|
|
||||||
|
3
commit.c
3
commit.c
@ -560,6 +560,9 @@ void sort_in_topological_order(struct commit_list ** list)
|
|||||||
next = next->next;
|
next = next->next;
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!count)
|
||||||
|
return;
|
||||||
/* allocate an array to help sort the list */
|
/* allocate an array to help sort the list */
|
||||||
nodes = xcalloc(count, sizeof(*nodes));
|
nodes = xcalloc(count, sizeof(*nodes));
|
||||||
/* link the list to the array */
|
/* link the list to the array */
|
||||||
|
8
diff.c
8
diff.c
@ -504,9 +504,9 @@ static void prepare_temp_file(const char *name,
|
|||||||
}
|
}
|
||||||
if (S_ISLNK(st.st_mode)) {
|
if (S_ISLNK(st.st_mode)) {
|
||||||
int ret;
|
int ret;
|
||||||
char *buf, buf_[1024];
|
char buf[PATH_MAX + 1]; /* ought to be SYMLINK_MAX */
|
||||||
buf = ((sizeof(buf_) < st.st_size) ?
|
if (sizeof(buf) <= st.st_size)
|
||||||
xmalloc(st.st_size) : buf_);
|
die("symlink too long: %s", name);
|
||||||
ret = readlink(name, buf, st.st_size);
|
ret = readlink(name, buf, st.st_size);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
die("readlink(%s)", name);
|
die("readlink(%s)", name);
|
||||||
@ -650,7 +650,7 @@ static void diff_fill_sha1_info(struct diff_filespec *one)
|
|||||||
if (DIFF_FILE_VALID(one)) {
|
if (DIFF_FILE_VALID(one)) {
|
||||||
if (!one->sha1_valid) {
|
if (!one->sha1_valid) {
|
||||||
struct stat st;
|
struct stat st;
|
||||||
if (stat(one->path, &st) < 0)
|
if (lstat(one->path, &st) < 0)
|
||||||
die("stat %s", one->path);
|
die("stat %s", one->path);
|
||||||
if (index_path(one->sha1, one->path, &st, 0))
|
if (index_path(one->sha1, one->path, &st, 0))
|
||||||
die("cannot hash %s\n", one->path);
|
die("cannot hash %s\n", one->path);
|
||||||
|
@ -105,9 +105,13 @@ static int compare_pair_order(const void *a_, const void *b_)
|
|||||||
void diffcore_order(const char *orderfile)
|
void diffcore_order(const char *orderfile)
|
||||||
{
|
{
|
||||||
struct diff_queue_struct *q = &diff_queued_diff;
|
struct diff_queue_struct *q = &diff_queued_diff;
|
||||||
struct pair_order *o = xmalloc(sizeof(*o) * q->nr);
|
struct pair_order *o;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
if (!q->nr)
|
||||||
|
return;
|
||||||
|
|
||||||
|
o = xmalloc(sizeof(*o) * q->nr);
|
||||||
prepare_order(orderfile);
|
prepare_order(orderfile);
|
||||||
for (i = 0; i < q->nr; i++) {
|
for (i = 0; i < q->nr; i++) {
|
||||||
o[i].pair = q->queue[i];
|
o[i].pair = q->queue[i];
|
||||||
|
@ -48,6 +48,9 @@ void diffcore_pathspec(const char **pathspec)
|
|||||||
for (i = 0; pathspec[i]; i++)
|
for (i = 0; pathspec[i]; i++)
|
||||||
;
|
;
|
||||||
speccnt = i;
|
speccnt = i;
|
||||||
|
if (!speccnt)
|
||||||
|
return;
|
||||||
|
|
||||||
spec = xmalloc(sizeof(*spec) * speccnt);
|
spec = xmalloc(sizeof(*spec) * speccnt);
|
||||||
for (i = 0; pathspec[i]; i++) {
|
for (i = 0; pathspec[i]; i++) {
|
||||||
spec[i].spec = pathspec[i];
|
spec[i].spec = pathspec[i];
|
||||||
|
@ -282,7 +282,7 @@ void diffcore_rename(struct diff_options *options)
|
|||||||
else if (detect_rename == DIFF_DETECT_COPY)
|
else if (detect_rename == DIFF_DETECT_COPY)
|
||||||
register_rename_src(p->one, 1);
|
register_rename_src(p->one, 1);
|
||||||
}
|
}
|
||||||
if (rename_dst_nr == 0 ||
|
if (rename_dst_nr == 0 || rename_src_nr == 0 ||
|
||||||
(0 < rename_limit && rename_limit < rename_dst_nr))
|
(0 < rename_limit && rename_limit < rename_dst_nr))
|
||||||
goto cleanup; /* nothing to do */
|
goto cleanup; /* nothing to do */
|
||||||
|
|
||||||
|
14
index-pack.c
14
index-pack.c
@ -352,19 +352,25 @@ static int sha1_compare(const void *_a, const void *_b)
|
|||||||
static void write_index_file(const char *index_name, unsigned char *sha1)
|
static void write_index_file(const char *index_name, unsigned char *sha1)
|
||||||
{
|
{
|
||||||
struct sha1file *f;
|
struct sha1file *f;
|
||||||
struct object_entry **sorted_by_sha =
|
struct object_entry **sorted_by_sha, **list, **last;
|
||||||
xcalloc(nr_objects, sizeof(struct object_entry *));
|
|
||||||
struct object_entry **list = sorted_by_sha;
|
|
||||||
struct object_entry **last = sorted_by_sha + nr_objects;
|
|
||||||
unsigned int array[256];
|
unsigned int array[256];
|
||||||
int i;
|
int i;
|
||||||
SHA_CTX ctx;
|
SHA_CTX ctx;
|
||||||
|
|
||||||
|
if (nr_objects) {
|
||||||
|
sorted_by_sha =
|
||||||
|
xcalloc(nr_objects, sizeof(struct object_entry *));
|
||||||
|
list = sorted_by_sha;
|
||||||
|
last = sorted_by_sha + nr_objects;
|
||||||
for (i = 0; i < nr_objects; ++i)
|
for (i = 0; i < nr_objects; ++i)
|
||||||
sorted_by_sha[i] = &objects[i];
|
sorted_by_sha[i] = &objects[i];
|
||||||
qsort(sorted_by_sha, nr_objects, sizeof(sorted_by_sha[0]),
|
qsort(sorted_by_sha, nr_objects, sizeof(sorted_by_sha[0]),
|
||||||
sha1_compare);
|
sha1_compare);
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
sorted_by_sha = list = last = NULL;
|
||||||
|
|
||||||
unlink(index_name);
|
unlink(index_name);
|
||||||
f = sha1create("%s", index_name);
|
f = sha1create("%s", index_name);
|
||||||
|
|
||||||
|
@ -294,17 +294,20 @@ static int unpack_trees(merge_fn_t fn)
|
|||||||
{
|
{
|
||||||
int indpos = 0;
|
int indpos = 0;
|
||||||
unsigned len = object_list_length(trees);
|
unsigned len = object_list_length(trees);
|
||||||
struct tree_entry_list **posns =
|
struct tree_entry_list **posns;
|
||||||
xmalloc(len * sizeof(struct tree_entry_list *));
|
|
||||||
int i;
|
int i;
|
||||||
struct object_list *posn = trees;
|
struct object_list *posn = trees;
|
||||||
merge_size = len;
|
merge_size = len;
|
||||||
|
|
||||||
|
if (len) {
|
||||||
|
posns = xmalloc(len * sizeof(struct tree_entry_list *));
|
||||||
for (i = 0; i < len; i++) {
|
for (i = 0; i < len; i++) {
|
||||||
posns[i] = ((struct tree *) posn->item)->entries;
|
posns[i] = ((struct tree *) posn->item)->entries;
|
||||||
posn = posn->next;
|
posn = posn->next;
|
||||||
}
|
}
|
||||||
if (unpack_trees_rec(posns, len, "", fn, &indpos))
|
if (unpack_trees_rec(posns, len, "", fn, &indpos))
|
||||||
return -1;
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
if (trivial_merges_only && nontrivial_merge)
|
if (trivial_merges_only && nontrivial_merge)
|
||||||
die("Merge requires file-level merging");
|
die("Merge requires file-level merging");
|
||||||
|
85
t/t4011-diff-symlink.sh
Executable file
85
t/t4011-diff-symlink.sh
Executable file
@ -0,0 +1,85 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# Copyright (c) 2005 Johannes Schindelin
|
||||||
|
#
|
||||||
|
|
||||||
|
test_description='Test diff of symlinks.
|
||||||
|
|
||||||
|
'
|
||||||
|
. ./test-lib.sh
|
||||||
|
. ../diff-lib.sh
|
||||||
|
|
||||||
|
cat > expected << EOF
|
||||||
|
diff --git a/frotz b/frotz
|
||||||
|
new file mode 120000
|
||||||
|
index 0000000..7c465af
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/frotz
|
||||||
|
@@ -0,0 +1 @@
|
||||||
|
+xyzzy
|
||||||
|
\ No newline at end of file
|
||||||
|
EOF
|
||||||
|
|
||||||
|
test_expect_success \
|
||||||
|
'diff new symlink' \
|
||||||
|
'ln -s xyzzy frotz &&
|
||||||
|
git-update-index &&
|
||||||
|
tree=$(git-write-tree) &&
|
||||||
|
git-update-index --add frotz &&
|
||||||
|
GIT_DIFF_OPTS=--unified=0 git-diff-index -M -p $tree > current &&
|
||||||
|
compare_diff_patch current expected'
|
||||||
|
|
||||||
|
test_expect_success \
|
||||||
|
'diff unchanged symlink' \
|
||||||
|
'tree=$(git-write-tree) &&
|
||||||
|
git-update-index frotz &&
|
||||||
|
test -z "$(git-diff-index --name-only $tree)"'
|
||||||
|
|
||||||
|
cat > expected << EOF
|
||||||
|
diff --git a/frotz b/frotz
|
||||||
|
deleted file mode 120000
|
||||||
|
index 7c465af..0000000
|
||||||
|
--- a/frotz
|
||||||
|
+++ /dev/null
|
||||||
|
@@ -1 +0,0 @@
|
||||||
|
-xyzzy
|
||||||
|
\ No newline at end of file
|
||||||
|
EOF
|
||||||
|
|
||||||
|
test_expect_success \
|
||||||
|
'diff removed symlink' \
|
||||||
|
'rm frotz &&
|
||||||
|
git-diff-index -M -p $tree > current &&
|
||||||
|
compare_diff_patch current expected'
|
||||||
|
|
||||||
|
cat > expected << EOF
|
||||||
|
diff --git a/frotz b/frotz
|
||||||
|
EOF
|
||||||
|
|
||||||
|
test_expect_success \
|
||||||
|
'diff identical, but newly created symlink' \
|
||||||
|
'sleep 1 &&
|
||||||
|
ln -s xyzzy frotz &&
|
||||||
|
git-diff-index -M -p $tree > current &&
|
||||||
|
compare_diff_patch current expected'
|
||||||
|
|
||||||
|
cat > expected << EOF
|
||||||
|
diff --git a/frotz b/frotz
|
||||||
|
index 7c465af..df1db54 120000
|
||||||
|
--- a/frotz
|
||||||
|
+++ b/frotz
|
||||||
|
@@ -1 +1 @@
|
||||||
|
-xyzzy
|
||||||
|
\ No newline at end of file
|
||||||
|
+yxyyz
|
||||||
|
\ No newline at end of file
|
||||||
|
EOF
|
||||||
|
|
||||||
|
test_expect_success \
|
||||||
|
'diff different symlink' \
|
||||||
|
'rm frotz &&
|
||||||
|
ln -s yxyyz frotz &&
|
||||||
|
git-diff-index -M -p $tree > current &&
|
||||||
|
compare_diff_patch current expected'
|
||||||
|
|
||||||
|
test_done
|
@ -142,6 +142,7 @@ test_expect_success \
|
|||||||
else :;
|
else :;
|
||||||
fi &&
|
fi &&
|
||||||
|
|
||||||
|
: PACK_SIGNATURE &&
|
||||||
cp test-1-${packname_1}.pack test-3.pack &&
|
cp test-1-${packname_1}.pack test-3.pack &&
|
||||||
dd if=/dev/zero of=test-3.pack count=1 bs=1 conv=notrunc seek=2 &&
|
dd if=/dev/zero of=test-3.pack count=1 bs=1 conv=notrunc seek=2 &&
|
||||||
if git-verify-pack test-3.idx
|
if git-verify-pack test-3.idx
|
||||||
@ -149,6 +150,7 @@ test_expect_success \
|
|||||||
else :;
|
else :;
|
||||||
fi &&
|
fi &&
|
||||||
|
|
||||||
|
: PACK_VERSION &&
|
||||||
cp test-1-${packname_1}.pack test-3.pack &&
|
cp test-1-${packname_1}.pack test-3.pack &&
|
||||||
dd if=/dev/zero of=test-3.pack count=1 bs=1 conv=notrunc seek=7 &&
|
dd if=/dev/zero of=test-3.pack count=1 bs=1 conv=notrunc seek=7 &&
|
||||||
if git-verify-pack test-3.idx
|
if git-verify-pack test-3.idx
|
||||||
@ -156,6 +158,7 @@ test_expect_success \
|
|||||||
else :;
|
else :;
|
||||||
fi &&
|
fi &&
|
||||||
|
|
||||||
|
: TYPE/SIZE byte of the first packed object data &&
|
||||||
cp test-1-${packname_1}.pack test-3.pack &&
|
cp test-1-${packname_1}.pack test-3.pack &&
|
||||||
dd if=/dev/zero of=test-3.pack count=1 bs=1 conv=notrunc seek=12 &&
|
dd if=/dev/zero of=test-3.pack count=1 bs=1 conv=notrunc seek=12 &&
|
||||||
if git-verify-pack test-3.idx
|
if git-verify-pack test-3.idx
|
||||||
@ -163,8 +166,11 @@ test_expect_success \
|
|||||||
else :;
|
else :;
|
||||||
fi &&
|
fi &&
|
||||||
|
|
||||||
|
: sum of the index file itself &&
|
||||||
|
l=`wc -c <test-3.idx` &&
|
||||||
|
l=`expr "$l" - 20` &&
|
||||||
cp test-1-${packname_1}.pack test-3.pack &&
|
cp test-1-${packname_1}.pack test-3.pack &&
|
||||||
dd if=/dev/zero of=test-3.idx count=1 bs=1 conv=notrunc seek=1200 &&
|
dd if=/dev/zero of=test-3.idx count=20 bs=1 conv=notrunc seek=$l &&
|
||||||
if git-verify-pack test-3.pack
|
if git-verify-pack test-3.pack
|
||||||
then false
|
then false
|
||||||
else :;
|
else :;
|
||||||
|
@ -263,6 +263,10 @@ void diff_tree_setup_paths(const char **p)
|
|||||||
|
|
||||||
paths = p;
|
paths = p;
|
||||||
nr_paths = count_paths(paths);
|
nr_paths = count_paths(paths);
|
||||||
|
if (nr_paths == 0) {
|
||||||
|
pathlens = NULL;
|
||||||
|
return;
|
||||||
|
}
|
||||||
pathlens = xmalloc(nr_paths * sizeof(int));
|
pathlens = xmalloc(nr_paths * sizeof(int));
|
||||||
for (i=0; i<nr_paths; i++)
|
for (i=0; i<nr_paths; i++)
|
||||||
pathlens[i] = strlen(paths[i]);
|
pathlens[i] = strlen(paths[i]);
|
||||||
|
Loading…
Reference in New Issue
Block a user