summaryrefslogtreecommitdiff
path: root/Makefile
AgeCommit message (Collapse)AuthorFilesLines
2008-10-18diff: unify external diff and funcname parsing codeLibravatar Jeff King1-0/+2
Both sets of code assume that one specifies a diff profile as a gitattribute via the "diff=foo" attribute. They then pull information about that profile from the config as diff.foo.*. The code for each is currently completely separate from the other, which has several disadvantages: - there is duplication as we maintain code to create and search the separate lists of external drivers and funcname patterns - it is difficult to add new profile options, since it is unclear where they should go - the code is difficult to follow, as we rely on the "check if this file is binary" code to find the funcname pattern as a side effect. This is the first step in refactoring the binary-checking code. This patch factors out these diff profiles into "userdiff" drivers. A file with "diff=foo" uses the "foo" driver, which is specified by a single struct. Note that one major difference between the two pieces of code is that the funcname patterns are always loaded, whereas external drivers are loaded only for the "git diff" porcelain; the new code takes care to retain that situation. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2008-10-09Merge branch 'dp/cywginstat'Libravatar Shawn O. Pearce1-0/+4
* dp/cywginstat: cygwin: Use native Win32 API for stat mingw: move common functionality to win32.h add have_git_dir() function
2008-10-09Merge branch 'maint'Libravatar Shawn O. Pearce1-1/+0
* maint: builtin-apply: fix typo leading to stack corruption git-stash.sh: fix flawed fix of invalid ref handling (commit da65e7c1) builtin-merge.c: allocate correct amount of memory Makefile: do not set NEEDS_LIBICONV for Solaris 8 rebase -i: remove leftover debugging rebase -i: proper prepare-commit-msg hook argument when squashing
2008-10-03Makefile: do not set NEEDS_LIBICONV for Solaris 8Libravatar Jeff King1-1/+0
This breaks my build on Solaris 8, as there is no separate libiconv. The history of this line is somewhat convoluted. In 2fd955c (in November 2005), NEEDS_LIBICONV was turned on for all Solaris builds, claiming to "fix an error in Solaris 10 by setting NEEDS_LIBICONV". Later, e15f545 (in February of 2006) claimed that "Solaris 9+ don't need iconv", and moved NEEDS_LIBICONV into a section for Solaris 8. Furthermore, Brandon Casey claims in <5A1KxlhmUIHe8iXPxnXYuNXsq0Yjlbwkz2eBin3z7ELuL9nK-4tSpw@cipher.nrlssc.navy.mil> that he does not set NEEDS_LIBICONV for Solaris 7. So either one of those commits is totally wrong, or there is some other magic going on where some Solaris installs need it and others don't. Given Brandon's statement and my problems on Solaris 8 with NEEDS_LIBICONV, I am inclined to think the first commit was bogus, and that NEEDS_LIBICONV shouldn't be set for Solaris at all by default. If somebody wants to use iconv and has installed it manually, they can set it in their config.mak. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2008-10-02Merge branch 'maint'Libravatar Shawn O. Pearce1-0/+1
* maint: gitweb: Add path_info tests to t/t9500-gitweb-standalone-no-errors.sh gitweb: Fix two 'uninitialized value' warnings in git_tree() Solaris: Use OLD_ICONV to avoid compile warnings gitweb: remove PATH_INFO from $my_url and $my_uri
2008-10-02Solaris: Use OLD_ICONV to avoid compile warningsLibravatar David Soria Parra1-0/+1
Solaris systems use the old styled iconv(3) call and therefore the OLD_ICONV variable should be set. Otherwise we get annoying compile warnings. Signed-off-by: David Soria Parra <dsp@php.net> Acked-by: Jeff King <peff@peff.net> Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2008-09-30cygwin: Use native Win32 API for statLibravatar Dmitry Potapov1-0/+4
lstat/stat functions in Cygwin are very slow, because they try to emulate some *nix things that Git does not actually need. This patch adds Win32 specific implementation of these functions for Cygwin. This implementation handles most situation directly but in some rare cases it falls back on the implementation provided for Cygwin. This is necessary for two reasons: - Cygwin has its own file hierarchy, so absolute paths used in Cygwin is not suitable to be used Win32 API. cygwin_conv_to_win32_path can not be used because it automatically dereference Cygwin symbol links, also it causes extra syscall. Fortunately Git rarely use absolute paths, so we always use Cygwin implementation for absolute paths. - Support of symbol links. Cygwin stores symbol links as ordinary using one of two possible formats. Therefore, the fast implementation falls back to Cygwin functions if it detects potential use of symbol links. The speed of this implementation should be the same as mingw_lstat for common cases, but it is considerable slower when the specified file name does not exist. Despite all efforts to make the fast implementation as robust as possible, it may not work well for some very rare situations. I am aware only one situation: use Cygwin mount to bind unrelated paths inside repository together. Therefore, the core.ignoreCygwinFSTricks configuration option is provided, which controls whether native or Cygwin version of stat is used. Signed-off-by: Dmitry Potapov <dpotapov@gmail.com> Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2008-09-25Merge branch 'mv/merge-recursive'Libravatar Shawn O. Pearce1-0/+1
* mv/merge-recursive: builtin-merge: release the lockfile in try_merge_strategy() merge-recursive: get rid of virtual_id merge-recursive: move current_{file,directory}_set to struct merge_options merge-recursive: move the global obuf to struct merge_options merge-recursive: get rid of the index_only global variable merge-recursive: move call_depth to struct merge_options cherry-pick/revert: make direct internal call to merge_tree() builtin-merge: avoid run_command_v_opt() for recursive and subtree merge-recursive: introduce merge_options merge-recursive.c: Add more generic merge_recursive_generic() Split out merge_recursive() to merge-recursive.c
2008-09-25Merge branch 'jc/alternate-push'Libravatar Shawn O. Pearce1-1/+1
* jc/alternate-push: push: receiver end advertises refs from alternate repositories push: prepare sender to receive extended ref information from the receiver receive-pack: make it a builtin is_directory(): a generic helper function
2008-09-12Sync with 1.6.0.2Libravatar Junio C Hamano1-0/+4
2008-09-11Use compatibility regex library also on FreeBSDLibravatar Jeff King1-0/+2
Commit 3632cfc24 makes the same change for Darwin; however, the problem also exists on FreeBSD. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-09-11Use compatibility regex library also on AIXLibravatar Johannes Sixt1-0/+2
This augments 3632cfc24 (Use compatibility regex library on Darwin, 2008-09-07), which already carries a "Tested-by" statement for AIX, but that test was actually done with this patch included. Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at> Tested-by: Mike Ralphson <mike@abacus.co.uk> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-09-10Install git-cvsserver in $(bindir)Libravatar Nanako Shiraishi1-1/+1
It is one of the server side programs and needs to be found on usual $PATH. Signed-off-by: Nanako Shiraishi <nanako3@lavabit.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-09-10separate build targets for man and html documentationLibravatar Michael J Gruber1-0/+6
This introduces new build targets "man" and "html" which allow building the documentation in the respective formats separately. This helps people with a partial documentation build chain: html pages can be built without xmlto. This is documented in INSTALL now, together with corrections: Before, instructions in INSTALL would build man+html but install man only. Now the instructions build and install both, and new and pre-existing targets are explained. Note that build targets "doc" and "man" correspond to install targets "install-doc install-html" and "install-doc" respectively. This inconsistency is not changed, in order to keep everyone's build scripts from breaking. Signed-off-by: Michael J Gruber <michaeljgruber+gmane@fastmail.fm> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-09-10allow installation of man and html doc from the man and html branchesLibravatar Michael J Gruber1-0/+3
This patch introduces a make target "quick-install-html" which installs the html documentation from the branch origin/html, without the need for asciidoc/xmlto. This is analogous to the existing "quick-install-doc" target for the man pages. We advertise these targets in the INSTALL file now. Signed-off-by: Michael J Gruber <michaeljgruber+gmane@fastmail.fm> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-09-10Merge branch 'maint'Libravatar Junio C Hamano1-2/+4
* maint: Update draft release notes for 1.6.0.2 Use compatibility regex library for OSX/Darwin git-svn: Fixes my() parameter list syntax error in pre-5.8 Perl Git.pm: Use File::Temp->tempfile instead of ->new t7501: always use test_cmp instead of diff Conflicts: Makefile
2008-09-10Use compatibility regex library for OSX/DarwinLibravatar Arjen Laarhoven1-2/+4
The standard libc regex library on OSX does not support alternation in POSIX Basic Regular Expression mode. This breaks the diff.funcname functionality on OSX. To fix this, we use the GNU regex library which is already present in the compat/ diretory for the MinGW port. However, simply adding compat/ to the COMPAT_CFLAGS variable causes a conflict between the system fnmatch.h and the one present in compat/. To remedy this, move the regex and fnmatch functionality to their own subdirectories in compat/ so they can be included seperately. Signed-off-by: Arjen Laarhoven <arjen@yaph.org> Tested-by: Mike Ralphson <mike@abacus.co.uk> (AIX) Tested-by: Johannes Sixt <johannes.sixt@telecom.at> (MinGW) Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-09-09receive-pack: make it a builtinLibravatar Junio C Hamano1-1/+1
It is a good thing to do in general, but more importantly, transport routines can only be used by built-ins, which is what I'll be adding next. Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-09-08Windows: git-shell can be compiled againLibravatar Johannes Sixt1-1/+1
The reason that git-shell was excluded from the Windows build was that our compatibility layer needed stuff that was removed when we tried to link less of the git library into git-shell. Since 4cfc24a (shell: do not play duplicated definition games to shrink the executable, 2008-08-19) the complete library is linked again, so we can build git-shell on Windows as well. (This fixes 'make install', which depends on that git-shell is always built.) Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-09-07Merge branch 'ar/autospell'Libravatar Junio C Hamano1-0/+2
* ar/autospell: Add help.autocorrect to enable/disable autocorrecting git wrapper: DWIM mistyped commands
2008-09-07Merge branch 'jc/cc-ld-dynpath'Libravatar Junio C Hamano1-8/+9
* jc/cc-ld-dynpath: configure: auto detect dynamic library path switches Makefile: Allow CC_LD_DYNPATH to be overriden Conflicts: Makefile config.mak.in
2008-09-02Merge branch 'maint'Libravatar Junio C Hamano1-0/+1
* maint: Makefile: add merge_recursive.h to LIB_H Improve documentation for --dirstat diff option Bring local clone's origin URL in line with that of a remote clone Documentation: minor cleanup in a use case in 'git stash' manual Documentation: fix disappeared lines in 'git stash' manpage Documentation: fix reference to a for-each-ref option
2008-09-02Makefile: add merge_recursive.h to LIB_HLibravatar Miklos Vajna1-0/+1
When modifying merge-recursive.h, for example builtin-merge-recursive.c have to be recompiled which was not true till now, causing various runtime errors using an incremental build. Signed-off-by: Miklos Vajna <vmiklos@frugalware.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-08-31git wrapper: DWIM mistyped commandsLibravatar Johannes Schindelin1-0/+2
This patch introduces a modified Damerau-Levenshtein algorithm into Git's code base, and uses it with the following penalties to show some similar commands when an unknown command was encountered: swap = 0, insertion = 1, substitution = 2, deletion = 4 A typical output would now look like this: $ git sm git: 'sm' is not a git-command. See 'git --help'. Did you mean one of these? am rm The cut-off is at similarity rating 6, which was empirically determined to give sensible results. As a convenience, if there is only one candidate, Git continues under the assumption that the user mistyped it. Example: $ git reabse WARNING: You called a Git program named 'reabse', which does not exist. Continuing under the assumption that you meant 'rebase' [...] Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Alex Riesen <raa.lkml@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-08-30Split out merge_recursive() to merge-recursive.cLibravatar Miklos Vajna1-0/+1
Move most of the of code from builtin-merge-recursive.c to a new file merge-recursive.c and introduce merge_recursive_setup() in there so that builtin-merge-recursive and other builtins call it. Signed-off-by: Miklos Vajna <vmiklos@frugalware.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-08-30Merge branch 'maint'Libravatar Junio C Hamano1-1/+1
* maint: gitattributes: -crlf is not binary git-apply: Loosen "match_beginning" logic Fix example in git-name-rev documentation shell: do not play duplicated definition games to shrink the executable Fix use of hardlinks in "make install" pack-objects: Allow missing base objects when creating thin packs
2008-08-29Merge branch 'af/maint-install-no-handlink' into maintLibravatar Junio C Hamano1-11/+11
* af/maint-install-no-handlink: Fix use of hardlinks in "make install" Makefile: always provide a fallback when hardlinks fail
2008-08-29shell: do not play duplicated definition games to shrink the executableLibravatar Junio C Hamano1-8/+1
Playing with linker games to shrink git-shell did not go well with various other platforms and compilers. Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-08-29Fix use of hardlinks in "make install"Libravatar Alex Riesen1-1/+1
The code failed to filter-out git-add properly on platforms were $X is not empty (ATM there is only one such a platform). Than it tried to create a hardlink to the file ($execdir/git-add) it just removed (because git-add is first in the BUILT_INS), so ln failed (but because stderr was redirected into /dev/null the error was never seen), and the whole install ended up using "ln -s" instead. Signed-off-by: Alex Riesen <raa.lkml@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-08-27Merge branch 'mv/merge-custom'Libravatar Junio C Hamano1-1/+3
* mv/merge-custom: t7606: fix custom merge test Fix "git-merge -s bogo" help text Update .gitignore to ignore git-help Builtin git-help. builtin-help: always load_command_list() in cmd_help() Add a second testcase for handling invalid strategies in git-merge Add a new test for using a custom merge strategy builtin-merge: allow using a custom strategy builtin-help: make some internal functions available to other builtins Conflicts: help.c
2008-08-26Merge branch 'af/maint-install-no-handlink'Libravatar Junio C Hamano1-11/+11
* af/maint-install-no-handlink: Makefile: always provide a fallback when hardlinks fail
2008-08-26Merge branch 'jc/no-slim-shell'Libravatar Junio C Hamano1-1/+1
* jc/no-slim-shell: Revert "Build-in "git-shell""
2008-08-25Makefile: always provide a fallback when hardlinks failLibravatar Andreas Färber1-11/+11
We make hardlinks from "git" to "git-<cmd>" built-ins and have been careful to avoid cross-device links when linking "git-<cmd>" to gitexecdir. However, we were not prepared to deal with a build directory that is incapable of making hard links within itself. This patch corrects it. Instead of temporarily linking "git" to gitexecdir, directly link "git- add", falling back to "cp". Try hardlinking that as "git-<cmd>", falling back to symlinks or "cp" on error. While at it, avoid 100+ error messages from hardlink failures when we are going to fall back to symlinks or "cp" by redirecting the standard error to /dev/null. Signed-off-by: Andreas Färber <andreas.faerber@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-08-25Revert "Build-in "git-shell""Libravatar Junio C Hamano1-1/+1
This reverts commit daa0cc9a92c9c2c714aa5f7da6d0ff65b93e0698. It was a stupid idea to do this; when run as a log-in shell, it is spawned with argv[0] set to "-git-shell", so the usual name-based dispatch would not work to begin with.
2008-08-24Install git-shell in bindir, tooLibravatar Tommi Virtanen1-1/+1
/etc/passwd shell field must be something execable, you can't enter "/usr/bin/git shell" there. git-shell must be present as a separate executable, or it is useless. Signed-off-by: Tommi Virtanen <tv@eagain.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-08-24Merge branch 'jc/no-slim-shell'Libravatar Junio C Hamano1-9/+2
* jc/no-slim-shell: Build-in "git-shell" shell: do not play duplicated definition games to shrink the executable
2008-08-24Merge branch 'maint' to sync with 1.6.0.1Libravatar Junio C Hamano1-0/+1
2008-08-23Makefile: enable SNPRINTF_RETURNS_BOGUS for HP-UXLibravatar Miklos Vajna1-0/+1
In 81cc66a, customization has been added to Makefile for supporting HP-UX, but git commit is still problematic. This should fix the issue. Signed-off-by: Miklos Vajna <vmiklos@frugalware.org> Acked-by: Robert Schiele <rschiele@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-08-20Build-in "git-shell"Libravatar Junio C Hamano1-1/+1
This trivially makes "git-shell" a built-in. It makes the executable even fatter, though. And MinGW removed git-shell only because of the funny dependencies; there is no reason to do so anymore. Signed-off-by: Junio C Hamano <gitster@pobox.com> Tested-on-MinGW-by: Johannes Sixt <johannes.sixt@telecom.at>
2008-08-19Merge branch 'ph/enable-threaded'Libravatar Junio C Hamano1-0/+5
* ph/enable-threaded: Enable threaded delta search on *BSD and Linux.
2008-08-19Merge branch 'rs/imap'Libravatar Junio C Hamano1-1/+3
* rs/imap: Documentation: Improve documentation for git-imap-send(1) imap-send.c: more style fixes imap-send.c: style fixes git-imap-send: Support SSL git-imap-send: Allow the program to be run from subdirectories of a git tree
2008-08-19shell: do not play duplicated definition games to shrink the executableLibravatar Junio C Hamano1-8/+1
Playing with linker games to shrink git-shell did not go well with various other platforms and compilers. Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-08-18compat: introduce on_disk_bytes()Libravatar Junio C Hamano1-0/+7
Some platforms do not have st_blocks member in "struct stat"; mingw already emulates it by rounding it up to closest 512-byte blocks (even though it could overcount when a file has holes). The reason to use the member is only to figure out how many kilobytes the files occupy on-disk, so give a helper function in git-compat-util.h to compute this value. Signed-off-by: Junio C Hamano <gitster@pobox.com> Acked-by: Johannes Sixt <johannes.sixt@telecom.at>
2008-08-17Makefile: Allow CC_LD_DYNPATH to be overridenLibravatar Junio C Hamano1-8/+9
Current Makefile does not allow config.mak to override CC_LD_DYNPATH; it only lets it affect indirectly via NO_R_TO_GCC_LINKER. If the command line, config.mak or config.mak.autogen wants to set CC_LD_DYNPATH differently, we should just allow it. Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-08-16Makefile: building git in cygwin 1.7.0Libravatar Eric Blake1-1/+1
On platforms with $X, make removes any leftover scripts 'a' from earlier builds if a new binary 'a.exe' is now built. However, on cygwin 1.7.0, 'git' and 'git.exe' now consistently name the same file. Test for file equality before attempting a remove, in order to avoid nuking just-built binaries. Signed-off-by: Eric Blake <ebb9@byu.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-08-08Makefile: add a target which will abort compilation with ancient shellsLibravatar Brandon Casey1-1/+7
This adds a make target which can be used to try to execute certain shell constructs which are required for compiling and running git. This patch provides a test for the $() notation for command substition which is used in the Makefile and extensively in the git scripts. The make target is named in such a way as to be a hint to the user that SHELL_PATH should be set to an appropriate shell. If the shell command fails, the user should receive a message similar to the following: make: *** [please_set_SHELL_PATH_to_a_more_modern_shell] Error 2 Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-08-08Makefile: set SHELL to value of SHELL_PATHLibravatar Brandon Casey1-0/+2
Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-08-02Builtin git-help.Libravatar Miklos Vajna1-1/+2
This patch splits out git-help's functions to builtin-help.c and leaves only functions used by other builtins in help.c. First this removes git-help's functions from libgit which are not interesting for other builtins, second this makes 'git help help' work again. Signed-off-by: Miklos Vajna <vmiklos@frugalware.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-07-29builtin-help: make some internal functions available to other builtinsLibravatar Miklos Vajna1-0/+1
Make load_command_list() capable of filtering for a given prefix and loading into a pair of "struct cmdnames" supplied by the caller. Make the static add_cmdname(), exclude_cmds() and is_in_cmdlist() functions non-static. Make list_commands() accept a custom title, and work from a pair of "struct cmdnames" supplied by the caller. Signed-off-by: Miklos Vajna <vmiklos@frugalware.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-07-28Allow installing in the traditional wayLibravatar Junio C Hamano1-1/+4
In an earlier commit c70a8d9 (Makefile: Do not install a copy of 'git' in $(gitexecdir), 2008-07-21), we tried to avoid installing two git, one in /usr/bin/git and the other in /usr/libexec/git-core/git. It mistakenly removed the only copy of git when gitexecdir and bindir are set to the same directory, i.e. the traditional layout. Signed-off-by: Junio C Hamano <gitster@pobox.com>