Merge part of jc/portable branch
authorJunio C Hamano <junkio@cox.net>
Tue, 21 Feb 2006 08:52:18 +0000 (00:52 -0800)
committerJunio C Hamano <junkio@cox.net>
Tue, 21 Feb 2006 08:52:18 +0000 (00:52 -0800)
Makefile
apply.c
git-clone.sh
git-merge.sh
t/Makefile
t/t0000-basic.sh
t/t6021-merge-criss-cross.sh
t/t6022-merge-rename.sh
t/test-lib.sh
index 3b7fccbb6145921bf807bbfbdff73ecfc8a4906d..821f6375d568fb1b352a83fcdc6f270a76b8e4e5 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -55,6 +55,11 @@ all:
 #
 # Define NO_ICONV if your libc does not properly support iconv.
 #
+# Define NO_ACCURATE_DIFF if your diff program at least sometimes misses
+# a missing newline at the end of the file.
+#
+# Define NO_PYTHON if you want to loose all benefits of the recursive merge.
+#
 # Define COLLISION_CHECK below if you believe that SHA1's
 # 1461501637330902918203684832716283019655932542976 hashes do not give you
 # sufficient guarantee that no collisions between objects will ever happen.
@@ -273,6 +278,16 @@ ifeq ($(uname_S),AIX)
        NO_STRCASESTR=YesPlease
        NEEDS_LIBICONV=YesPlease
 endif
+ifeq ($(uname_S),IRIX64)
+       NO_IPV6=YesPlease
+       NO_SETENV=YesPlease
+       NO_STRCASESTR=YesPlease
+       NO_SOCKADDR_STORAGE=YesPlease
+       SHELL_PATH=/usr/gnu/bin/bash
+       ALL_CFLAGS += -DPATH_MAX=1024
+       # for now, build 32-bit version
+       ALL_LDFLAGS += -L/usr/lib32
+endif
 ifneq (,$(findstring arm,$(uname_M)))
        ARM_SHA1 = YesPlease
 endif
@@ -403,6 +418,9 @@ else
 endif
 endif
 endif
+ifdef NO_ACCURATE_DIFF
+       ALL_CFLAGS += -DNO_ACCURATE_DIFF
+endif
 
 ALL_CFLAGS += -DSHA1_HEADER=$(call shellquote,$(SHA1_HEADER)) $(COMPAT_CFLAGS)
 LIB_OBJS += $(COMPAT_OBJS)
@@ -426,6 +444,7 @@ $(patsubst %.sh,%,$(SCRIPT_SH)) : % : %.sh
        sed -e '1s|#!.*/sh|#!$(call shq,$(SHELL_PATH))|' \
            -e 's/@@GIT_VERSION@@/$(GIT_VERSION)/g' \
            -e 's/@@NO_CURL@@/$(NO_CURL)/g' \
+           -e 's/@@NO_PYTHON@@/$(NO_PYTHON)/g' \
            $@.sh >$@
        chmod +x $@
 
@@ -505,6 +524,12 @@ doc:
 
 ### Testing rules
 
+# GNU make supports exporting all variables by "export" without parameters.
+# However, the environment gets quite big, and some programs have problems
+# with that.
+
+export NO_PYTHON
+
 test: all
        $(MAKE) -C t/ all
 
diff --git a/apply.c b/apply.c
index 2ad47fbbb37b245a78abd8e8255d39b39a52f9a9..1083d4f31677357fe86c5ab85960df44a28ce721 100644 (file)
--- a/apply.c
+++ b/apply.c
@@ -1142,6 +1142,14 @@ static int apply_one_fragment(struct buffer_desc *desc, struct fragment *frag)
                size -= len;
        }
 
+#ifdef NO_ACCURATE_DIFF
+       if (oldsize > 0 && old[oldsize - 1] == '\n' &&
+                       newsize > 0 && new[newsize - 1] == '\n') {
+               oldsize--;
+               newsize--;
+       }
+#endif
+                       
        offset = find_offset(buf, desc->size, old, oldsize, frag->newpos);
        if (offset >= 0) {
                int diff = newsize - oldsize;
index d184ceb7a6f2a7d4ffc3a002b1a8846c46297f33..dc0ad552a322d46f48bee2c8d324285a63a9b8c7 100755 (executable)
@@ -154,7 +154,7 @@ yes,yes)
            fi &&
            rm -f "$GIT_DIR/objects/sample" &&
            cd "$repo" &&
-           find objects -depth -print | cpio -puamd$l "$GIT_DIR/" || exit 1
+           find objects -depth -print | cpio -pumd$l "$GIT_DIR/" || exit 1
            ;;
        yes)
            mkdir -p "$GIT_DIR/objects/info"
index 2b4a603dffb5d82cf6fd7cf0ac83ae4cdad703de..4609fe54d52843f42d2c1d18a9dc2ff235b5c7ce 100755 (executable)
@@ -13,6 +13,10 @@ LF='
 all_strategies='recursive octopus resolve stupid ours'
 default_strategies='recursive'
 use_strategies=
+if test "@@NO_PYTHON@@"; then
+       all_strategies='resolve octopus stupid ours'
+       default_strategies='resolve'
+fi
 
 dropsave() {
        rm -f -- "$GIT_DIR/MERGE_HEAD" "$GIT_DIR/MERGE_MSG" \
index 5c5a62012673eaa7eec76da0068606bc78311fbd..ba6ddbec976f2ea0e4808d6549f93270e0c2b676 100644 (file)
@@ -15,6 +15,10 @@ shellquote = '$(call shq,$(1))'
 
 T = $(wildcard t[0-9][0-9][0-9][0-9]-*.sh)
 
+ifdef NO_PYTHON
+       GIT_TEST_OPTS += --no-python
+endif
+
 all: $(T) clean
 
 $(T):
index c339a366f4a107eeb12bdd596f2ade79a1f9f583..6729a18266e9539e3a3b34e200bdaee53e8a67a7 100755 (executable)
@@ -42,7 +42,7 @@ fi
 
 . ./test-lib.sh
 
-"$PYTHON" -c 'import subprocess' || {
+test "$no_python" || "$PYTHON" -c 'import subprocess' || {
        echo >&2 'Your python seem to lack "subprocess" module.
 Please check INSTALL document.'
        exit 1
index e8606c751d6236ea7109359910a8e8adc01eb627..262381379f247a74f1656cfdd7f9b0c6d386d372 100755 (executable)
 test_description='Test criss-cross merge'
 . ./test-lib.sh
 
+if test "$no_python"; then
+       echo "Skipping: no python => no recursive merge"
+       test_done
+       exit 0
+fi
+
 test_expect_success 'prepare repository' \
 'echo "1
 2
index 1292cafd7f1f7fc30b462d4e07be34383e9d6be9..a2d24b5ca95d971eccbb913c2a0eb84b7e87cd10 100755 (executable)
@@ -3,6 +3,12 @@
 test_description='Merge-recursive merging renames'
 . ./test-lib.sh
 
+if test "$no_python"; then
+       echo "Skipping: no python => no recursive merge"
+       test_done
+       exit 0
+fi
+
 test_expect_success setup \
 '
 cat >A <<\EOF &&
index 66f62b9c6f2a31965c856fc9b7d056a86abbcfbc..05f6e79560ff7e3d92c47221b3ee7adec098e676 100755 (executable)
@@ -63,6 +63,8 @@ do
                exit 0 ;;
        -v|--v|--ve|--ver|--verb|--verbo|--verbos|--verbose)
                verbose=t; shift ;;
+       --no-python)
+               no_python=t; shift ;;
        *)
                break ;;
        esac