Code

Merge branch 'gv/portable'
authorJunio C Hamano <gitster@pobox.com>
Mon, 21 Jun 2010 13:02:44 +0000 (06:02 -0700)
committerJunio C Hamano <gitster@pobox.com>
Mon, 21 Jun 2010 13:02:44 +0000 (06:02 -0700)
* gv/portable:
  test-lib: use DIFF definition from GIT-BUILD-OPTIONS
  build: propagate $DIFF to scripts
  Makefile: Tru64 portability fix
  Makefile: HP-UX 10.20 portability fixes
  Makefile: HPUX11 portability fixes
  Makefile: SunOS 5.6 portability fix
  inline declaration does not work on AIX
  Allow disabling "inline"
  Some platforms lack socklen_t type
  Make NO_{INET_NTOP,INET_PTON} configured independently
  Makefile: some platforms do not have hstrerror anywhere
  git-compat-util.h: some platforms with mmap() lack MAP_FAILED definition
  test_cmp: do not use "diff -u" on platforms that lack one
  fixup: do not unconditionally disable "diff -u"
  tests: use "test_cmp", not "diff", when verifying the result
  Do not use "diff" found on PATH while building and installing
  enums: omit trailing comma for portability
  Makefile: -lpthread may still be necessary when libc has only pthread stubs
  Rewrite dynamic structure initializations to runtime assignment
  Makefile: pass CPPFLAGS through to fllow customization

Conflicts:
Makefile
wt-status.h

34 files changed:
1  2 
Makefile
builtin/apply.c
builtin/blame.c
builtin/checkout.c
builtin/commit.c
builtin/receive-pack.c
builtin/remote.c
cache.h
commit.h
config.mak.in
configure.ac
connect.c
convert.c
diff.h
dir.c
fast-import.c
git-compat-util.h
grep.h
http-walker.c
merge-recursive.h
pretty.c
refs.c
remote.c
t/Makefile
t/lib-t6000.sh
t/t0000-basic.sh
t/t3200-branch.sh
t/t3903-stash.sh
t/t4124-apply-ws-rule.sh
t/t9400-git-cvsserver-server.sh
t/test-lib.sh
unpack-trees.c
wt-status.c
wt-status.h

diff --cc Makefile
index a863a068ab3bd5b5055372416060fef586864037,6b3b59bef529b7b297be27322f4fe348a0b3c390..3dc072fc8162be1b1d57db207a976b8b78928f04
+++ b/Makefile
@@@ -286,7 -288,7 +292,7 @@@ lib = li
  # DESTDIR=
  pathsep = :
  
--export prefix bindir sharedir sysconfdir
++export prefix bindir sharedir sysconfdir gitwebdir
  
  CC = gcc
  AR = ar
@@@ -1884,7 -1939,7 +1950,8 @@@ GIT-CFLAGS: FORC
  GIT-BUILD-OPTIONS: FORCE
        @echo SHELL_PATH=\''$(subst ','\'',$(SHELL_PATH_SQ))'\' >$@
        @echo PERL_PATH=\''$(subst ','\'',$(PERL_PATH_SQ))'\' >>$@
+       @echo DIFF=\''$(subst ','\'',$(subst ','\'',$(DIFF)))'\' >>$@
 +      @echo PYTHON_PATH=\''$(subst ','\'',$(PYTHON_PATH_SQ))'\' >>$@
        @echo TAR=\''$(subst ','\'',$(subst ','\'',$(TAR)))'\' >>$@
        @echo NO_CURL=\''$(subst ','\'',$(subst ','\'',$(NO_CURL)))'\' >>$@
        @echo NO_PERL=\''$(subst ','\'',$(subst ','\'',$(NO_PERL)))'\' >>$@
@@@ -1983,7 -2044,6 +2056,7 @@@ install: al
        $(MAKE) -C templates DESTDIR='$(DESTDIR_SQ)' install
  ifndef NO_PERL
        $(MAKE) -C perl prefix='$(prefix_SQ)' DESTDIR='$(DESTDIR_SQ)' install
-       $(MAKE) -C gitweb gitwebdir=$(gitwebdir_SQ) install
++      $(MAKE) -C gitweb install
  endif
  ifndef NO_PYTHON
        $(MAKE) -C git_remote_helpers prefix='$(prefix_SQ)' DESTDIR='$(DESTDIR_SQ)' install
diff --cc builtin/apply.c
Simple merge
diff --cc builtin/blame.c
Simple merge
Simple merge
index a8616866435a0a73aaa74ac1742399d7381c018a,30a00e0b633b765221d4717da7af4259c8608254..0e3ae3c11d7d3a582f3cb549d7d17aa1aea67d56
@@@ -91,9 -90,8 +91,9 @@@ static int null_termination
  static enum {
        STATUS_FORMAT_LONG,
        STATUS_FORMAT_SHORT,
-       STATUS_FORMAT_PORCELAIN,
+       STATUS_FORMAT_PORCELAIN
  } status_format = STATUS_FORMAT_LONG;
 +static int status_show_branch;
  
  static int opt_parse_m(const struct option *opt, const char *arg, int unset)
  {
Simple merge
Simple merge
diff --cc cache.h
Simple merge
diff --cc commit.h
Simple merge
diff --cc config.mak.in
Simple merge
diff --cc configure.ac
Simple merge
diff --cc connect.c
Simple merge
diff --cc convert.c
Simple merge
diff --cc diff.h
Simple merge
diff --cc dir.c
Simple merge
diff --cc fast-import.c
Simple merge
Simple merge
diff --cc grep.h
Simple merge
diff --cc http-walker.c
Simple merge
Simple merge
diff --cc pretty.c
Simple merge
diff --cc refs.c
Simple merge
diff --cc remote.c
Simple merge
diff --cc t/Makefile
Simple merge
diff --cc t/lib-t6000.sh
index 985d517a1ce4cf2f80eed3d54c25b5fc912d5c6b,0000000000000000000000000000000000000000..ea25dd89e505525507c16c62d91fb07c092b064a
mode 100644,000000..100644
--- /dev/null
@@@ -1,127 -1,0 +1,127 @@@
-               diff $_name.expected $_name.actual
 +: included from 6002 and others
 +
 +[ -d .git/refs/tags ] || mkdir -p .git/refs/tags
 +
 +:> sed.script
 +
 +# Answer the sha1 has associated with the tag. The tag must exist in .git or .git/refs/tags
 +tag()
 +{
 +      _tag=$1
 +      [ -f .git/refs/tags/$_tag ] || error "tag: \"$_tag\" does not exist"
 +      cat .git/refs/tags/$_tag
 +}
 +
 +# Generate a commit using the text specified to make it unique and the tree
 +# named by the tag specified.
 +unique_commit()
 +{
 +      _text=$1
 +        _tree=$2
 +      shift 2
 +      echo $_text | git commit-tree $(tag $_tree) "$@"
 +}
 +
 +# Save the output of a command into the tag specified. Prepend
 +# a substitution script for the tag onto the front of sed.script
 +save_tag()
 +{
 +      _tag=$1
 +      [ -n "$_tag" ] || error "usage: save_tag tag commit-args ..."
 +      shift 1
 +      "$@" >.git/refs/tags/$_tag
 +
 +        echo "s/$(tag $_tag)/$_tag/g" > sed.script.tmp
 +      cat sed.script >> sed.script.tmp
 +      rm sed.script
 +      mv sed.script.tmp sed.script
 +}
 +
 +# Replace unhelpful sha1 hashses with their symbolic equivalents
 +entag()
 +{
 +      sed -f sed.script
 +}
 +
 +# Execute a command after first saving, then setting the GIT_AUTHOR_EMAIL
 +# tag to a specified value. Restore the original value on return.
 +as_author()
 +{
 +      _author=$1
 +      shift 1
 +        _save=$GIT_AUTHOR_EMAIL
 +
 +      GIT_AUTHOR_EMAIL="$_author"
 +      export GIT_AUTHOR_EMAIL
 +      "$@"
 +      if test -z "$_save"
 +      then
 +              unset GIT_AUTHOR_EMAIL
 +      else
 +              GIT_AUTHOR_EMAIL="$_save"
 +              export GIT_AUTHOR_EMAIL
 +      fi
 +}
 +
 +commit_date()
 +{
 +        _commit=$1
 +      git cat-file commit $_commit | sed -n "s/^committer .*> \([0-9]*\) .*/\1/p"
 +}
 +
 +on_committer_date()
 +{
 +    _date=$1
 +    shift 1
 +    GIT_COMMITTER_DATE="$_date"
 +    export GIT_COMMITTER_DATE
 +    "$@"
 +    unset GIT_COMMITTER_DATE
 +}
 +
 +# Execute a command and suppress any error output.
 +hide_error()
 +{
 +      "$@" 2>/dev/null
 +}
 +
 +check_output()
 +{
 +      _name=$1
 +      shift 1
 +      if eval "$*" | entag > $_name.actual
 +      then
++              test_cmp $_name.expected $_name.actual
 +      else
 +              return 1;
 +      fi
 +}
 +
 +# Turn a reasonable test description into a reasonable test name.
 +# All alphanums translated into -'s which are then compressed and stripped
 +# from front and back.
 +name_from_description()
 +{
 +      perl -pe '
 +              s/[^A-Za-z0-9.]/-/g;
 +              s/-+/-/g;
 +              s/-$//;
 +              s/^-//;
 +              y/A-Z/a-z/;
 +      '
 +}
 +
 +
 +# Execute the test described by the first argument, by eval'ing
 +# command line specified in the 2nd argument. Check the status code
 +# is zero and that the output matches the stream read from
 +# stdin.
 +test_output_expect_success()
 +{
 +      _description=$1
 +        _test=$2
 +        [ $# -eq 2 ] || error "usage: test_output_expect_success description test <<EOF ... EOF"
 +        _name=$(echo $_description | name_from_description)
 +      cat > $_name.expected
 +      test_expect_success "$_description" "check_output $_name \"$_test\""
 +}
Simple merge
index 9d2c06ea69d5e3a9d1c464a4d619245d6823c082,8818d0de689327ad9e0922dfd3e784804e142f41..859b99abf1cc62c966322fcfc552c0a7eb7356df
@@@ -222,32 -222,8 +222,32 @@@ test_expect_success 
       git checkout -b g/h/i -l master &&
         test -f .git/refs/heads/g/h/i &&
         test -f .git/logs/refs/heads/g/h/i &&
-        diff expect .git/logs/refs/heads/g/h/i'
+        test_cmp expect .git/logs/refs/heads/g/h/i'
  
 +test_expect_success 'checkout -b makes reflog by default' '
 +      git checkout master &&
 +      git config --unset core.logAllRefUpdates &&
 +      git checkout -b alpha &&
 +      test -f .git/logs/refs/heads/alpha &&
 +      PAGER= git reflog show alpha
 +'
 +
 +test_expect_success 'checkout -b does not make reflog when core.logAllRefUpdates = false' '
 +      git checkout master &&
 +      git config core.logAllRefUpdates false &&
 +      git checkout -b beta &&
 +      ! test -f .git/logs/refs/heads/beta &&
 +      test_must_fail PAGER= git reflog show beta
 +'
 +
 +test_expect_success 'checkout -b with -l makes reflog when core.logAllRefUpdates = false' '
 +      git checkout master &&
 +      git checkout -lb gamma &&
 +      git config --unset core.logAllRefUpdates &&
 +      test -f .git/logs/refs/heads/gamma &&
 +      PAGER= git reflog show gamma
 +'
 +
  test_expect_success 'avoid ambiguous track' '
        git config branch.autosetupmerge true &&
        git config remote.ambi1.url lalala &&
Simple merge
Simple merge
Simple merge
diff --cc t/test-lib.sh
Simple merge
diff --cc unpack-trees.c
Simple merge
diff --cc wt-status.c
Simple merge
diff --cc wt-status.h
index 4f190454e5b2ad46b33894fb55aa7dd8dd28d604,389e65f68acca1622551025665b0b88bf70800d2..4cd74c4b32f51dbe575b0a04a894a520df79e9bf
@@@ -11,9 -11,7 +11,9 @@@ enum color_wt_status 
        WT_STATUS_CHANGED,
        WT_STATUS_UNTRACKED,
        WT_STATUS_NOBRANCH,
 -      WT_STATUS_UNMERGED
 +      WT_STATUS_UNMERGED,
 +      WT_STATUS_LOCAL_BRANCH,
-       WT_STATUS_REMOTE_BRANCH,
++      WT_STATUS_REMOTE_BRANCH
  };
  
  enum untracked_status_type {