Merge branch 'ra/anno'
authorJunio C Hamano <junkio@cox.net>
Thu, 23 Feb 2006 03:20:08 +0000 (19:20 -0800)
committerJunio C Hamano <junkio@cox.net>
Thu, 23 Feb 2006 03:20:08 +0000 (19:20 -0800)
* ra/anno:
Use Ryan's git-annotate instead of jsannotate
Add git-annotate, a tool for assigning blame.

1  2 
Makefile
diff --combined Makefile
index 5d2ec1f111ebc2586d7a62c07fe87aa86bce7bdc,86ffcf4b4e1cf8c0a3ff36d548ac944adb31d0e8..4d8aad3711b5bc02b9eb4728c90d4d294ed55002
+++ b/Makefile
@@@ -55,11 -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.
@@@ -77,12 -72,6 +77,12 @@@ GIT-VERSION-FILE: .FORCE-GIT-VERSION-FI
        @$(SHELL_PATH) ./GIT-VERSION-GEN
  -include GIT-VERSION-FILE
  
 +uname_S := $(shell sh -c 'uname -s 2>/dev/null || echo not')
 +uname_M := $(shell sh -c 'uname -m 2>/dev/null || echo not')
 +uname_O := $(shell sh -c 'uname -o 2>/dev/null || echo not')
 +uname_R := $(shell sh -c 'uname -r 2>/dev/null || echo not')
 +uname_P := $(shell sh -c 'uname -p 2>/dev/null || echo not')
 +
  # CFLAGS and LDFLAGS are for the users to override from the command line.
  
  CFLAGS = -g -O2 -Wall
@@@ -93,7 -82,7 +93,7 @@@ STRIP ?= stri
  
  prefix = $(HOME)
  bindir = $(prefix)/bin
 -gitexecdir = $(prefix)/bin
 +gitexecdir = $(bindir)
  template_dir = $(prefix)/share/git-core/templates/
  GIT_PYTHON_DIR = $(prefix)/share/git-core/python
  # DESTDIR=
@@@ -120,7 -109,7 +120,7 @@@ SCRIPT_SH = 
        git-merge-one-file.sh git-parse-remote.sh \
        git-prune.sh git-pull.sh git-push.sh git-rebase.sh \
        git-repack.sh git-request-pull.sh git-reset.sh \
 -      git-resolve.sh git-revert.sh git-sh-setup.sh \
 +      git-resolve.sh git-revert.sh git-rm.sh git-sh-setup.sh \
        git-tag.sh git-verify-tag.sh git-whatchanged.sh \
        git-applymbox.sh git-applypatch.sh git-am.sh \
        git-merge.sh git-merge-stupid.sh git-merge-octopus.sh \
  SCRIPT_PERL = \
        git-archimport.perl git-cvsimport.perl git-relink.perl \
        git-shortlog.perl git-fmt-merge-msg.perl git-rerere.perl \
+       git-annotate.perl \
        git-svnimport.perl git-mv.perl git-cvsexportcommit.perl
  
  SCRIPT_PYTHON = \
@@@ -142,7 -132,7 +143,7 @@@ SCRIPTS = $(patsubst %.sh,%,$(SCRIPT_SH
  
  # The ones that do not have to link with lcrypto nor lz.
  SIMPLE_PROGRAMS = \
 -      git-get-tar-commit-id$X git-mailinfo$X git-mailsplit$X \
 +      git-get-tar-commit-id$X git-mailsplit$X \
        git-stripspace$X git-daemon$X
  
  # ... and all the rest that could be moved out of bindir to gitexecdir
@@@ -154,7 -144,7 +155,7 @@@ PROGRAMS = 
        git-diff-tree$X git-fetch-pack$X git-fsck-objects$X \
        git-hash-object$X git-index-pack$X git-init-db$X \
        git-local-fetch$X git-ls-files$X git-ls-tree$X git-merge-base$X \
 -      git-merge-index$X git-mktag$X git-pack-objects$X git-patch-id$X \
 +      git-merge-index$X git-mktag$X git-mktree$X git-pack-objects$X git-patch-id$X \
        git-peek-remote$X git-prune-packed$X git-read-tree$X \
        git-receive-pack$X git-rev-list$X git-rev-parse$X \
        git-send-pack$X git-show-branch$X git-shell$X \
        git-upload-pack$X git-verify-pack$X git-write-tree$X \
        git-update-ref$X git-symbolic-ref$X git-check-ref-format$X \
        git-name-rev$X git-pack-redundant$X git-repo-config$X git-var$X \
 -      git-describe$X
 +      git-describe$X git-merge-tree$X
  
  # what 'all' will build and 'install' will install, in gitexecdir
  ALL_PROGRAMS = $(PROGRAMS) $(SIMPLE_PROGRAMS) $(SCRIPTS)
@@@ -210,6 -200,12 +211,6 @@@ LIB_OBJS = 
  LIBS = $(LIB_FILE)
  LIBS += -lz
  
 -# Shell quote;
 -# Result of this needs to be placed inside ''
 -shq = $(subst ','\'',$(1))
 -# This has surrounding ''
 -shellquote = '$(call shq,$(1))'
 -
  #
  # Platform specific tweaks
  #
  # We choose to avoid "if .. else if .. else .. endif endif"
  # because maintaining the nesting to match is a pain.  If
  # we had "elif" things would have been much nicer...
 -uname_S := $(shell sh -c 'uname -s 2>/dev/null || echo not')
 -uname_M := $(shell sh -c 'uname -m 2>/dev/null || echo not')
 -uname_O := $(shell sh -c 'uname -o 2>/dev/null || echo not')
 -uname_R := $(shell sh -c 'uname -r 2>/dev/null || echo not')
  
  ifeq ($(uname_S),Darwin)
        NEEDS_SSL_WITH_CRYPTO = YesPlease
@@@ -231,10 -231,10 +232,10 @@@ endi
  ifeq ($(uname_S),SunOS)
        NEEDS_SOCKET = YesPlease
        NEEDS_NSL = YesPlease
 -      NEEDS_LIBICONV = YesPlease
        SHELL_PATH = /bin/bash
        NO_STRCASESTR = YesPlease
        ifeq ($(uname_R),5.8)
 +              NEEDS_LIBICONV = YesPlease
                NO_UNSETENV = YesPlease
                NO_SETENV = YesPlease
        endif
@@@ -274,16 -274,6 +275,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
  ifdef WITH_OWN_SUBPROCESS_PY
        PYMODULES += compat/subprocess.py
  else
 -      ifneq ($(shell $(PYTHON_PATH) -c 'import subprocess;print"OK"' 2>/dev/null),OK)
 -              PYMODULES += compat/subprocess.py
 +      ifeq ($(NO_PYTHON),)
 +              ifneq ($(shell $(PYTHON_PATH) -c 'import subprocess;print"OK"' 2>/dev/null),OK)
 +                      PYMODULES += compat/subprocess.py
 +              endif
        endif
  endif
  
@@@ -416,25 -404,8 +417,25 @@@ els
  endif
  endif
  endif
 +ifdef NO_ACCURATE_DIFF
 +      ALL_CFLAGS += -DNO_ACCURATE_DIFF
 +endif
 +
 +# Shell quote (do not use $(call) to accomodate ancient setups);
 +
 +SHA1_HEADER_SQ = $(subst ','\'',$(SHA1_HEADER))
  
 -ALL_CFLAGS += -DSHA1_HEADER=$(call shellquote,$(SHA1_HEADER)) $(COMPAT_CFLAGS)
 +DESTDIR_SQ = $(subst ','\'',$(DESTDIR))
 +bindir_SQ = $(subst ','\'',$(bindir))
 +gitexecdir_SQ = $(subst ','\'',$(gitexecdir))
 +template_dir_SQ = $(subst ','\'',$(template_dir))
 +
 +SHELL_PATH_SQ = $(subst ','\'',$(SHELL_PATH))
 +PERL_PATH_SQ = $(subst ','\'',$(PERL_PATH))
 +PYTHON_PATH_SQ = $(subst ','\'',$(PYTHON_PATH))
 +GIT_PYTHON_DIR_SQ = $(subst ','\'',$(GIT_PYTHON_DIR))
 +
 +ALL_CFLAGS += -DSHA1_HEADER='$(SHA1_HEADER_SQ)' $(COMPAT_CFLAGS)
  LIB_OBJS += $(COMPAT_OBJS)
  export prefix TAR INSTALL DESTDIR SHELL_PATH template_dir
  ### Build rules
@@@ -453,24 -424,23 +454,24 @@@ git$X: git.c $(LIB_FILE
  
  $(patsubst %.sh,%,$(SCRIPT_SH)) : % : %.sh
        rm -f $@
 -      sed -e '1s|#!.*/sh|#!$(call shq,$(SHELL_PATH))|' \
 +      sed -e '1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \
            -e 's/@@GIT_VERSION@@/$(GIT_VERSION)/g' \
            -e 's/@@NO_CURL@@/$(NO_CURL)/g' \
 +          -e 's/@@NO_PYTHON@@/$(NO_PYTHON)/g' \
            $@.sh >$@
        chmod +x $@
  
  $(patsubst %.perl,%,$(SCRIPT_PERL)) : % : %.perl
        rm -f $@
 -      sed -e '1s|#!.*perl|#!$(call shq,$(PERL_PATH))|' \
 +      sed -e '1s|#!.*perl|#!$(PERL_PATH_SQ)|' \
            -e 's/@@GIT_VERSION@@/$(GIT_VERSION)/g' \
            $@.perl >$@
        chmod +x $@
  
  $(patsubst %.py,%,$(SCRIPT_PYTHON)) : % : %.py
        rm -f $@
 -      sed -e '1s|#!.*python|#!$(call shq,$(PYTHON_PATH))|' \
 -          -e 's|@@GIT_PYTHON_PATH@@|$(call shq,$(GIT_PYTHON_DIR))|g' \
 +      sed -e '1s|#!.*python|#!$(PYTHON_PATH_SQ)|' \
 +          -e 's|@@GIT_PYTHON_PATH@@|$(GIT_PYTHON_DIR_SQ)|g' \
            -e 's/@@GIT_VERSION@@/$(GIT_VERSION)/g' \
            $@.py >$@
        chmod +x $@
@@@ -496,42 -466,32 +497,42 @@@ git$X git.spec 
  %.o: %.S
        $(CC) -o $*.o -c $(ALL_CFLAGS) $<
  
 -exec_cmd.o: ALL_CFLAGS += -DGIT_EXEC_PATH=\"$(gitexecdir)\"
 +exec_cmd.o: exec_cmd.c
 +      $(CC) -o $*.o -c $(ALL_CFLAGS) '-DGIT_EXEC_PATH="$(gitexecdir_SQ)"' $<
  
  git-%$X: %.o $(LIB_FILE)
        $(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) $(LIBS)
  
 -git-mailinfo$X : SIMPLE_LIB += $(LIB_4_ICONV)
  $(SIMPLE_PROGRAMS) : $(LIB_FILE)
  $(SIMPLE_PROGRAMS) : git-%$X : %.o
        $(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) \
                $(LIB_FILE) $(SIMPLE_LIB)
  
 -git-http-fetch$X: fetch.o http.o
 -git-http-push$X: http.o
 +git-mailinfo$X: mailinfo.o $(LIB_FILE)
 +      $(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) \
 +              $(LIB_FILE) $(SIMPLE_LIB) $(LIB_4_ICONV)
 +
  git-local-fetch$X: fetch.o
  git-ssh-fetch$X: rsh.o fetch.o
  git-ssh-upload$X: rsh.o
  git-ssh-pull$X: rsh.o fetch.o
  git-ssh-push$X: rsh.o
  
 -git-http-fetch$X: LIBS += $(CURL_LIBCURL)
 -git-http-push$X: LIBS += $(CURL_LIBCURL) $(EXPAT_LIBEXPAT)
 -git-rev-list$X: LIBS += $(OPENSSL_LIBSSL)
 +git-http-fetch$X: fetch.o http.o http-fetch.o $(LIB_FILE)
 +      $(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) \
 +              $(LIBS) $(CURL_LIBCURL)
 +
 +git-http-push$X: http.o http-push.o $(LIB_FILE)
 +      $(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) \
 +              $(LIBS) $(CURL_LIBCURL) $(EXPAT_LIBEXPAT)
 +
 +git-rev-list$X: rev-list.o $(LIB_FILE)
 +      $(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) \
 +              $(LIBS) $(OPENSSL_LIBSSL)
  
  init-db.o: init-db.c
        $(CC) -c $(ALL_CFLAGS) \
 -              -DDEFAULT_GIT_TEMPLATE_DIR=$(call shellquote,"$(template_dir)") $*.c
 +              -DDEFAULT_GIT_TEMPLATE_DIR='"$(template_dir_SQ)"' $*.c
  
  $(LIB_OBJS): $(LIB_H)
  $(patsubst git-%$X,%.o,$(PROGRAMS)): $(LIB_H)
@@@ -546,12 -506,6 +547,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
  
@@@ -569,13 -523,13 +570,13 @@@ check
  ### Installation rules
  
  install: all
 -      $(INSTALL) -d -m755 $(call shellquote,$(DESTDIR)$(bindir))
 -      $(INSTALL) -d -m755 $(call shellquote,$(DESTDIR)$(gitexecdir))
 -      $(INSTALL) $(ALL_PROGRAMS) $(call shellquote,$(DESTDIR)$(gitexecdir))
 -      $(INSTALL) git$X gitk $(call shellquote,$(DESTDIR)$(bindir))
 +      $(INSTALL) -d -m755 '$(DESTDIR_SQ)$(bindir_SQ)'
 +      $(INSTALL) -d -m755 '$(DESTDIR_SQ)$(gitexecdir_SQ)'
 +      $(INSTALL) $(ALL_PROGRAMS) '$(DESTDIR_SQ)$(gitexecdir_SQ)'
 +      $(INSTALL) git$X gitk '$(DESTDIR_SQ)$(bindir_SQ)'
        $(MAKE) -C templates install
 -      $(INSTALL) -d -m755 $(call shellquote,$(DESTDIR)$(GIT_PYTHON_DIR))
 -      $(INSTALL) $(PYMODULES) $(call shellquote,$(DESTDIR)$(GIT_PYTHON_DIR))
 +      $(INSTALL) -d -m755 '$(DESTDIR_SQ)$(GIT_PYTHON_DIR_SQ)'
 +      $(INSTALL) $(PYMODULES) '$(DESTDIR_SQ)$(GIT_PYTHON_DIR_SQ)'
  
  install-doc:
        $(MAKE) -C Documentation install