Merge branch 'maint'
authorJunio C Hamano <gitster@pobox.com>
Tue, 14 Dec 2010 16:57:38 +0000 (08:57 -0800)
committerJunio C Hamano <gitster@pobox.com>
Tue, 14 Dec 2010 16:58:09 +0000 (08:58 -0800)
* maint:
Prepare for 1.7.3.4
use persistent memory for rejected paths
do not overwrite files in leading path
lstat_cache: optionally return match_len
add function check_ok_to_remove()
t7607: add leading-path tests
t7607: use test-lib functions and check MERGE_HEAD
Do not link with -lcrypto under NO_OPENSSL

Signed-off-by: Junio C Hamano <gitster@pobox.com>
1  2 
Documentation/RelNotes/1.7.4.txt
Makefile
index 6084f7ddf6d4c977b5ac29043186c73920ca947d,0000000000000000000000000000000000000000..c1ed23a0c6decbfe4b4ab141b00d24d2f399b872
mode 100644,000000..100644
--- /dev/null
@@@ -1,123 -1,0 +1,118 @@@
-  * "git checkout" removed an untracked file "foo" from the working
-     tree when switching to a branch that contains a tracked path
-     "foo/bar".  Prevent this, just like the case where the conflicting
-     path were "foo" (c752e7f..7980872d).
 +Git v1.7.4 Release Notes (draft)
 +================================
 +
 +Updates since v1.7.3
 +--------------------
 +
 + * The documentation Makefile now assumes by default asciidoc 8 and
 +   docbook-xsl >= 1.73. If you have older versions, you can set
 +   ASCIIDOC7 and ASCIIDOC_ROFF, respectively.
 +
 + * The option parsers of various commands that create new branch (or
 +   rename existing ones to a new name) were too loose and users were
 +   allowed to call a branch with a name that begins with a dash by
 +   creative abuse of their command line options, which only lead to
 +   burn themselves.  The name of a branch cannot begin with a dash
 +   now.
 +
 + * System-wide fallback default attributes can be stored in
 +   /etc/gitattributes; core.attributesfile configuration variable can
 +   be used to customize the path to this file.
 +
 + * The thread structure generated by "git send-email" has changed
 +   slightly.  Setting the cover letter of the latest series as a reply
 +   to the cover letter of the previous series with --in-reply-to used
 +   to make the new cover letter and all the patches replies to the
 +   cover letter of the previous series; this has been changed to make
 +   the patches in the new series replies to the new cover letter.
 +
 + * Bash completion script in contrib/ has been adjusted to be also
 +   usable by zsh.
 +
 + * "git blame" learned --show-email option to display the e-mail
 +   addresses instead of the names of authors.
 +
 + * "git daemon" can be built in MinGW environment.
 +
 + * "git daemon" can take more than one --listen option to listen to
 +   multiple addresses.
 +
 + * "git diff" and "git grep" learned how functions and subroutines
 +   in Fortran look like.
 +
 + * "git mergetool" tells vim/gvim to show three-way diff by default
 +   (use vimdiff2/gvimdiff2 as the tool name for old behaviour).
 +
 + * "git log -G<pattern>" limits the output to commits whose change has
 +   added or deleted lines that match the given pattern.
 +
 + * "git read-tree" with no argument as a way to empty the index is
 +   deprecated; we might want to remove it in the future.  Users can
 +   use the new --empty option to be more explicit instead.
 +
 + * "git repack -f" does not spend cycles to recompress objects in the
 +   non-delta representation anymore (use -F if you really mean it when
 +   e.g. you changed the compression level).
 +
 + * "git merge --log" used to limit the resulting merge log to 20
 +   entries; this is now customizable by giving e.g. "--log=47".
 +
 + * "git merge" may work better when all files were moved out of a
 +   directory in one branch while a new file is created in place of that
 +   directory in the other branch.
 +
 + * "git rebase --autosquash" can use SHA-1 object names to name which
 +   commit to fix up (e.g. "fixup! e83c5163").
 +
 + * The default "recursive" merge strategy learned --rename-threshold
 +   option to influence the rename detection, similar to the -M option
 +   of "git diff".  E.g. "git merge -Xrename-threshold=50% ..." to use
 +   this.
 +
 + * The "recursive" strategy also learned to ignore various whitespace
 +   changes; the most notable is -Xignore-space-at-eol.
 +
 + * "git send-email" learned "--to-cmd", similar to "--cc-cmd", to read
 +   recipient list from a command output.
 +
 + * "git send-email" learned to read and use "To:" from its input files.
 +
 + * you can extend "git shell", which is often used on boxes that allow
 +   git-only login over ssh as login shell, with custom set of
 +   commands.
 +
 + * "git submodule sync" updates metainformation for all submodules,
 +   not just the ones that have been checked out.
 +
 + * gitweb can use custom 'highlight' command with its configuration file.
 +
 +
 +Also contains various documentation updates.
 +
 +
 +Fixes since v1.7.3
 +------------------
 +
 +All of the fixes in v1.7.3.X maintenance series are included in this
 +release, unless otherwise noted.
 +
 + * "git log --author=me --author=her" did not find commits written by
 +   me or by her; instead it looked for commits written by me and by
 +   her, which is impossible.
 +
 + * "git merge" into an unborn branch removed an untracked file "foo"
 +   from the working tree when merged branch had "foo" (2caf20c..172b642).
 +
 + * "git push --progress" shows progress indicators now.
 +
 + * "git repack" places its temporary packs under $GIT_OBJECT_DIRECTORY/pack
 +   instead of $GIT_OBJECT_DIRECTORY/ to avoid cross directory renames.
 +
 + * "git submodule update --recursive --other-flags" passes flags down
 +   to its subinvocations.
 +
 +---
 +exec >/var/tmp/1
 +O=v1.7.3.2-450-g5b9c331
 +echo O=$(git describe master)
 +git shortlog --no-merges ^maint ^$O master
diff --combined Makefile
index 5103dd4666a5bc2447c80421314aca8c5ffa7b13,ecb4e64435b674d97d643bf04d896b26a2b505b2..8cf7da9838d62de82c18656007f882f02963de8a
+++ b/Makefile
@@@ -70,11 -70,6 +70,11 @@@ all:
  #
  # Define NO_STRTOK_R if you don't have strtok_r in the C library.
  #
 +# Define NO_FNMATCH if you don't have fnmatch in the C library.
 +#
 +# Define NO_FNMATCH_CASEFOLD if your fnmatch function doesn't have the
 +# FNM_CASEFOLD GNU extension.
 +#
  # Define NO_LIBGEN_H if you don't have libgen.h.
  #
  # Define NEEDS_LIBGEN if your libgen needs -lgen when linking
  # Define NO_ST_BLOCKS_IN_STRUCT_STAT if your platform does not have st_blocks
  # field that counts the on-disk footprint in 512-byte blocks.
  #
 -# Define ASCIIDOC8 if you want to format documentation with AsciiDoc 8
 +# Define ASCIIDOC7 if you want to format documentation with AsciiDoc 7
  #
  # Define DOCBOOK_XSL_172 if you want to format man pages with DocBook XSL v1.72
  # (not v1.73 or v1.71).
  #
 -# Define ASCIIDOC_NO_ROFF if your DocBook XSL escapes raw roff directives
 -# (versions 1.72 and later and 1.68.1 and earlier).
 +# Define ASCIIDOC_ROFF if your DocBook XSL does not escape raw roff directives
 +# (versions 1.68.1 through v1.72).
  #
  # Define GNU_ROFF if your target system uses GNU groff.  This forces
  # apostrophes to be ASCII so that cut&pasting examples to the shell
@@@ -275,7 -270,6 +275,7 @@@ STRIP ?= stri
  #   infodir
  #   htmldir
  #   ETC_GITCONFIG (but not sysconfdir)
 +#   ETC_GITATTRIBUTES
  # can be specified as a relative path some/where/else;
  # this is interpreted as relative to $(prefix) and "git" at
  # runtime figures out where they are based on the path to the executable.
@@@ -294,11 -288,9 +294,11 @@@ htmldir = share/doc/git-do
  ifeq ($(prefix),/usr)
  sysconfdir = /etc
  ETC_GITCONFIG = $(sysconfdir)/gitconfig
 +ETC_GITATTRIBUTES = $(sysconfdir)/gitattributes
  else
  sysconfdir = $(prefix)/etc
  ETC_GITCONFIG = etc/gitconfig
 +ETC_GITATTRIBUTES = etc/gitattributes
  endif
  lib = lib
  # DESTDIR=
@@@ -406,7 -398,6 +406,7 @@@ EXTRA_PROGRAMS 
  # ... and all the rest that could be moved out of bindir to gitexecdir
  PROGRAMS += $(EXTRA_PROGRAMS)
  
 +PROGRAM_OBJS += daemon.o
  PROGRAM_OBJS += fast-import.o
  PROGRAM_OBJS += imap-send.o
  PROGRAM_OBJS += shell.o
@@@ -502,9 -493,6 +502,9 @@@ LIB_H += compat/bswap.
  LIB_H += compat/cygwin.h
  LIB_H += compat/mingw.h
  LIB_H += compat/win32/pthread.h
 +LIB_H += compat/win32/syslog.h
 +LIB_H += compat/win32/sys/poll.h
 +LIB_H += compat/win32/dirent.h
  LIB_H += csum-file.h
  LIB_H += decorate.h
  LIB_H += delta.h
@@@ -526,7 -514,6 +526,7 @@@ LIB_H += mailmap.
  LIB_H += merge-recursive.h
  LIB_H += notes.h
  LIB_H += notes-cache.h
 +LIB_H += notes-merge.h
  LIB_H += object.h
  LIB_H += pack.h
  LIB_H += pack-refs.h
@@@ -617,7 -604,6 +617,7 @@@ LIB_OBJS += merge-recursive.
  LIB_OBJS += name-hash.o
  LIB_OBJS += notes.o
  LIB_OBJS += notes-cache.o
 +LIB_OBJS += notes-merge.o
  LIB_OBJS += object.o
  LIB_OBJS += pack-check.o
  LIB_OBJS += pack-refs.o
@@@ -673,7 -659,6 +673,7 @@@ LIB_OBJS += write_or_die.
  LIB_OBJS += ws.o
  LIB_OBJS += wt-status.o
  LIB_OBJS += xdiff-interface.o
 +LIB_OBJS += zlib.o
  
  BUILTIN_OBJS += builtin/add.o
  BUILTIN_OBJS += builtin/annotate.o
@@@ -740,8 -725,6 +740,8 @@@ BUILTIN_OBJS += builtin/read-tree.
  BUILTIN_OBJS += builtin/receive-pack.o
  BUILTIN_OBJS += builtin/reflog.o
  BUILTIN_OBJS += builtin/remote.o
 +BUILTIN_OBJS += builtin/remote-ext.o
 +BUILTIN_OBJS += builtin/remote-fd.o
  BUILTIN_OBJS += builtin/replace.o
  BUILTIN_OBJS += builtin/rerere.o
  BUILTIN_OBJS += builtin/reset.o
@@@ -860,7 -843,6 +860,7 @@@ ifeq ($(uname_S),SunOS
        NO_MKDTEMP = YesPlease
        NO_MKSTEMPS = YesPlease
        NO_REGEX = YesPlease
 +      NO_FNMATCH_CASEFOLD = YesPlease
        ifeq ($(uname_R),5.6)
                SOCKLEN_T = int
                NO_HSTRERROR = YesPlease
@@@ -1067,7 -1049,6 +1067,7 @@@ ifeq ($(uname_S),Windows
        NO_STRCASESTR = YesPlease
        NO_STRLCPY = YesPlease
        NO_STRTOK_R = YesPlease
 +      NO_FNMATCH = YesPlease
        NO_MEMMEM = YesPlease
        # NEEDS_LIBICONV = YesPlease
        NO_ICONV = YesPlease
        NO_SVN_TESTS = YesPlease
        NO_PERL_MAKEMAKER = YesPlease
        RUNTIME_PREFIX = YesPlease
 -      NO_POSIX_ONLY_PROGRAMS = YesPlease
        NO_ST_BLOCKS_IN_STRUCT_STAT = YesPlease
        NO_NSEC = YesPlease
        USE_WIN32_MMAP = YesPlease
        NO_CURL = YesPlease
        NO_PYTHON = YesPlease
        BLK_SHA1 = YesPlease
 +      NO_POSIX_GOODIES = UnfortunatelyYes
        NATIVE_CRLF = YesPlease
  
        CC = compat/vcbuild/scripts/clink.pl
        AR = compat/vcbuild/scripts/lib.pl
        CFLAGS =
        BASIC_CFLAGS = -nologo -I. -I../zlib -Icompat/vcbuild -Icompat/vcbuild/include -DWIN32 -D_CONSOLE -DHAVE_STRING_H -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_DEPRECATE
 -      COMPAT_OBJS = compat/msvc.o compat/fnmatch/fnmatch.o compat/winansi.o compat/win32/pthread.o
 -      COMPAT_CFLAGS = -D__USE_MINGW_ACCESS -DNOGDI -DHAVE_STRING_H -DHAVE_ALLOCA_H -Icompat -Icompat/fnmatch -Icompat/regex -Icompat/fnmatch -Icompat/win32 -DSTRIP_EXTENSION=\".exe\"
 +      COMPAT_OBJS = compat/msvc.o compat/winansi.o \
 +              compat/win32/pthread.o compat/win32/syslog.o \
 +              compat/win32/sys/poll.o compat/win32/dirent.o
 +      COMPAT_CFLAGS = -D__USE_MINGW_ACCESS -DNOGDI -DHAVE_STRING_H -DHAVE_ALLOCA_H -Icompat -Icompat/regex -Icompat/win32 -DSTRIP_EXTENSION=\".exe\"
        BASIC_LDFLAGS = -IGNORE:4217 -IGNORE:4049 -NOLOGO -SUBSYSTEM:CONSOLE -NODEFAULTLIB:MSVCRT.lib
        EXTLIBS = advapi32.lib shell32.lib wininet.lib ws2_32.lib
        PTHREAD_LIBS =
  endif
        X = .exe
  endif
 +ifeq ($(uname_S),Interix)
 +      NO_SYS_POLL_H = YesPlease
 +      NO_INTTYPES_H = YesPlease
 +      NO_INITGROUPS = YesPlease
 +      NO_IPV6 = YesPlease
 +      NO_MEMMEM = YesPlease
 +      NO_MKDTEMP = YesPlease
 +      NO_STRTOUMAX = YesPlease
 +      NO_NSEC = YesPlease
 +      NO_MKSTEMPS = YesPlease
 +      ifeq ($(uname_R),3.5)
 +              NO_INET_NTOP = YesPlease
 +              NO_INET_PTON = YesPlease
 +      endif
 +      ifeq ($(uname_R),5.2)
 +              NO_INET_NTOP = YesPlease
 +              NO_INET_PTON = YesPlease
 +      endif
 +endif
  ifneq (,$(findstring MINGW,$(uname_S)))
        pathsep = ;
        NO_PREAD = YesPlease
        NO_STRCASESTR = YesPlease
        NO_STRLCPY = YesPlease
        NO_STRTOK_R = YesPlease
 +      NO_FNMATCH = YesPlease
        NO_MEMMEM = YesPlease
        NEEDS_LIBICONV = YesPlease
        OLD_ICONV = YesPlease
        NO_SVN_TESTS = YesPlease
        NO_PERL_MAKEMAKER = YesPlease
        RUNTIME_PREFIX = YesPlease
 -      NO_POSIX_ONLY_PROGRAMS = YesPlease
        NO_ST_BLOCKS_IN_STRUCT_STAT = YesPlease
        NO_NSEC = YesPlease
        USE_WIN32_MMAP = YesPlease
        NO_PYTHON = YesPlease
        BLK_SHA1 = YesPlease
        ETAGS_TARGET = ETAGS
 -      COMPAT_CFLAGS += -D__USE_MINGW_ACCESS -DNOGDI -Icompat -Icompat/fnmatch -Icompat/win32
 +      NO_INET_PTON = YesPlease
 +      NO_INET_NTOP = YesPlease
 +      NO_POSIX_GOODIES = UnfortunatelyYes
 +      COMPAT_CFLAGS += -D__USE_MINGW_ACCESS -DNOGDI -Icompat -Icompat/win32
        COMPAT_CFLAGS += -DSTRIP_EXTENSION=\".exe\"
 -      COMPAT_OBJS += compat/mingw.o compat/fnmatch/fnmatch.o compat/winansi.o \
 -              compat/win32/pthread.o
 +      COMPAT_OBJS += compat/mingw.o compat/winansi.o \
 +              compat/win32/pthread.o compat/win32/syslog.o \
 +              compat/win32/sys/poll.o compat/win32/dirent.o
        EXTLIBS += -lws2_32
        PTHREAD_LIBS =
        X = .exe
@@@ -1287,6 -1243,9 +1287,6 @@@ ifdef ZLIB_PAT
  endif
  EXTLIBS += -lz
  
 -ifndef NO_POSIX_ONLY_PROGRAMS
 -      PROGRAM_OBJS += daemon.o
 -endif
  ifndef NO_OPENSSL
        OPENSSL_LIBSSL = -lssl
        ifdef OPENSSLDIR
        BLK_SHA1 = 1
        OPENSSL_LIBSSL =
  endif
+ ifdef NO_OPENSSL
+       LIB_4_CRYPTO =
+ else
  ifdef NEEDS_SSL_WITH_CRYPTO
        LIB_4_CRYPTO = $(OPENSSL_LINK) -lcrypto -lssl
  else
        LIB_4_CRYPTO = $(OPENSSL_LINK) -lcrypto
  endif
+ endif
  ifdef NEEDS_LIBICONV
        ifdef ICONVDIR
                BASIC_CFLAGS += -I$(ICONVDIR)/include
@@@ -1380,17 -1343,6 +1384,17 @@@ ifdef NO_STRTOK_
        COMPAT_CFLAGS += -DNO_STRTOK_R
        COMPAT_OBJS += compat/strtok_r.o
  endif
 +ifdef NO_FNMATCH
 +      COMPAT_CFLAGS += -Icompat/fnmatch
 +      COMPAT_CFLAGS += -DNO_FNMATCH
 +      COMPAT_OBJS += compat/fnmatch/fnmatch.o
 +else
 +ifdef NO_FNMATCH_CASEFOLD
 +      COMPAT_CFLAGS += -Icompat/fnmatch
 +      COMPAT_CFLAGS += -DNO_FNMATCH_CASEFOLD
 +      COMPAT_OBJS += compat/fnmatch/fnmatch.o
 +endif
 +endif
  ifdef NO_SETENV
        COMPAT_CFLAGS += -DNO_SETENV
        COMPAT_OBJS += compat/setenv.o
@@@ -1409,15 -1361,6 +1413,15 @@@ endi
  ifdef NO_SYS_SELECT_H
        BASIC_CFLAGS += -DNO_SYS_SELECT_H
  endif
 +ifdef NO_SYS_POLL_H
 +      BASIC_CFLAGS += -DNO_SYS_POLL_H
 +endif
 +ifdef NO_INTTYPES_H
 +      BASIC_CFLAGS += -DNO_INTTYPES_H
 +endif
 +ifdef NO_INITGROUPS
 +      BASIC_CFLAGS += -DNO_INITGROUPS
 +endif
  ifdef NO_MMAP
        COMPAT_CFLAGS += -DNO_MMAP
        COMPAT_OBJS += compat/mmap.o
@@@ -1455,11 -1398,9 +1459,11 @@@ endi
  endif
  ifdef NO_INET_NTOP
        LIB_OBJS += compat/inet_ntop.o
 +      BASIC_CFLAGS += -DNO_INET_NTOP
  endif
  ifdef NO_INET_PTON
        LIB_OBJS += compat/inet_pton.o
 +      BASIC_CFLAGS += -DNO_INET_PTON
  endif
  
  ifdef NO_ICONV
@@@ -1474,10 -1415,6 +1478,10 @@@ ifdef NO_DEFLATE_BOUN
        BASIC_CFLAGS += -DNO_DEFLATE_BOUND
  endif
  
 +ifdef NO_POSIX_GOODIES
 +      BASIC_CFLAGS += -DNO_POSIX_GOODIES
 +endif
 +
  ifdef BLK_SHA1
        SHA1_HEADER = "block-sha1/sha1.h"
        LIB_OBJS += block-sha1/sha1.o
@@@ -1582,15 -1519,14 +1586,15 @@@ ifndef 
  endif
  endif
  
 -ifdef ASCIIDOC8
 -      export ASCIIDOC8
 +ifdef ASCIIDOC7
 +      export ASCIIDOC7
  endif
  
  # Shell quote (do not use $(call) to accommodate ancient setups);
  
  SHA1_HEADER_SQ = $(subst ','\'',$(SHA1_HEADER))
  ETC_GITCONFIG_SQ = $(subst ','\'',$(ETC_GITCONFIG))
 +ETC_GITATTRIBUTES_SQ = $(subst ','\'',$(ETC_GITATTRIBUTES))
  
  DESTDIR_SQ = $(subst ','\'',$(DESTDIR))
  bindir_SQ = $(subst ','\'',$(bindir))
@@@ -1675,8 -1611,6 +1679,8 @@@ git$X: git.o $(BUILTIN_OBJS) $(GITLIBS
        $(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ git.o \
                $(BUILTIN_OBJS) $(ALL_LDFLAGS) $(LIBS)
  
 +help.o: common-cmds.h
 +
  builtin/help.o: common-cmds.h
  builtin/help.s builtin/help.o: EXTRA_CPPFLAGS = \
        '-DGIT_HTML_PATH="$(htmldir_SQ)"' \
@@@ -1832,8 -1766,6 +1836,8 @@@ XDIFF_OBJS = xdiff/xdiffi.o xdiff/xprep
        xdiff/xmerge.o xdiff/xpatience.o
  VCSSVN_OBJS = vcs-svn/string_pool.o vcs-svn/line_buffer.o \
        vcs-svn/repo_tree.o vcs-svn/fast_export.o vcs-svn/svndump.o
 +VCSSVN_TEST_OBJS = test-obj-pool.o test-string-pool.o \
 +      test-line-buffer.o test-treap.o
  OBJECTS := $(GIT_OBJS) $(XDIFF_OBJS) $(VCSSVN_OBJS)
  
  dep_files := $(foreach f,$(OBJECTS),$(dir $f).depend/$(notdir $f).d)
@@@ -1942,12 -1874,13 +1946,12 @@@ builtin/branch.o builtin/checkout.o bui
  builtin/bundle.o bundle.o transport.o: bundle.h
  builtin/bisect--helper.o builtin/rev-list.o bisect.o: bisect.h
  builtin/clone.o builtin/fetch-pack.o transport.o: fetch-pack.h
 -builtin/grep.o: thread-utils.h
 +builtin/grep.o builtin/pack-objects.o transport-helper.o: thread-utils.h
  builtin/send-pack.o transport.o: send-pack.h
  builtin/log.o builtin/shortlog.o: shortlog.h
  builtin/prune.o builtin/reflog.o reachable.o: reachable.h
  builtin/commit.o builtin/revert.o wt-status.o: wt-status.h
  builtin/tar-tree.o archive-tar.o: tar.h
 -builtin/pack-objects.o: thread-utils.h
  connect.o transport.o http-backend.o: url.h
  http-fetch.o http-walker.o remote-curl.o transport.o walker.o: walker.h
  http.o http-walker.o http-push.o http-fetch.o remote-curl.o: http.h url.h
@@@ -1956,12 -1889,10 +1960,12 @@@ xdiff-interface.o $(XDIFF_OBJS): 
        xdiff/xinclude.h xdiff/xmacros.h xdiff/xdiff.h xdiff/xtypes.h \
        xdiff/xutils.h xdiff/xprepare.h xdiff/xdiffi.h xdiff/xemit.h
  
 -$(VCSSVN_OBJS): \
 +$(VCSSVN_OBJS) $(VCSSVN_TEST_OBJS): $(LIB_H) \
        vcs-svn/obj_pool.h vcs-svn/trp.h vcs-svn/string_pool.h \
        vcs-svn/line_buffer.h vcs-svn/repo_tree.h vcs-svn/fast_export.h \
        vcs-svn/svndump.h
 +
 +test-svn-fe.o: vcs-svn/svndump.h
  endif
  
  exec_cmd.s exec_cmd.o: EXTRA_CPPFLAGS = \
@@@ -1974,8 -1905,6 +1978,8 @@@ builtin/init-db.s builtin/init-db.o: EX
  
  config.s config.o: EXTRA_CPPFLAGS = -DETC_GITCONFIG='"$(ETC_GITCONFIG_SQ)"'
  
 +attr.s attr.o: EXTRA_CPPFLAGS = -DETC_GITATTRIBUTES='"$(ETC_GITATTRIBUTES_SQ)"'
 +
  http.s http.o: EXTRA_CPPFLAGS = -DGIT_HTTP_USER_AGENT='"git/$(GIT_VERSION)"'
  
  ifdef NO_EXPAT