summaryrefslogtreecommitdiff
path: root/Makefile
AgeCommit message (Collapse)AuthorFilesLines
2009-03-08Create USE_ST_TIMESPEC and turn it on for DarwinLibravatar Brian Gernhardt1-0/+7
Not all OSes use st_ctim and st_mtim in their struct stat. In particular, it appears that OS X uses st_*timespec instead. So add a Makefile variable and #define called USE_ST_TIMESPEC to switch the USE_NSEC defines to use st_*timespec. This also turns it on by default for OS X (Darwin) machines. Likely this is a sane default for other BSD kernels as well, but I don't have any to test that assumption on. Signed-off-by: Brian Gernhardt <benji@silverinsanity.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-03-07Record ns-timestamps if possible, but do not use it without USE_NSECLibravatar Kjetil Barvik1-0/+8
Traditionally, the lack of USE_NSEC meant "do not record nor use the nanosecond resolution part of the file timestamps". To avoid problems on filesystems that lose the ns part when the metadata is flushed to the disk and then later read back in, disabling USE_NSEC has been a good idea in general. If you are on a filesystem without such an issue, it does not hurt to read and store them in the cached stat data in the index entries even if your git is compiled without USE_NSEC. The index left with such a version of git can be read by git compiled with USE_NSEC and it can make use of the nanosecond part to optimize the check to see if the path on the filesystem hsa been modified since we last looked at. Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-02-05Merge branch 'js/notes'Libravatar Junio C Hamano1-0/+3
* js/notes: git-notes: fix printing of multi-line notes notes: fix core.notesRef documentation Add an expensive test for git-notes Speed up git notes lookup Add a script to edit/inspect notes Introduce commit notes Conflicts: pretty.c
2009-02-05Makefile: minor improvements for Mac OS X (Darwin)Libravatar Jay Soffian1-2/+4
1) Instead of requesting OLD_ICONV on all Mac OS X versions except for 10.5 (which will break when 10.6 is released), exlicitly request it for versions older than 10.5. 2) NO_STRLCPY is not needed since Mac OS X 10.2. Noticed by Benjamin Kramer. Note that uname -r returns the underlying Darwin version, which can be mapped to Mac OS X version at http://www.opensource.apple.com/darwinsource/ Signed-off-by: Jay Soffian <jaysoffian@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-02-05Makefile: fix misdetection of relative pathnamesLibravatar Junio C Hamano1-2/+2
The installation rules wanted to differentiate between a template_dir that is given as an absolute path (e.g. /usr/share/git-core/templates) and a relative one (e.g. share/git-core/templates) but it was done by checking if $(abspath $(template_dir)) and $(template_dir) yield the same string. This was wrong in at least two ways. * The user can give template_dir with a trailing slash from the command line to invoke make or from the included config.mak. A directory path ought to mean the same thing with or without such a trailing slash but use of $(abspath) means an absolute path with a trailing slash fails the test. * Versions of GNU make older than 3.81 do not have $(abspath) to begin with. This changes the detection logic to see if the given path begins with a slash. Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-02-04Merge branch 'maint'Libravatar Junio C Hamano1-0/+1
* maint: User-manual: "git stash <comment>" form is long gone add test-dump-cache-tree in Makefile fix typo in Documentation apply: fix access to an uninitialized mode variable, found by valgrind Conflicts: Makefile
2009-02-03Merge branch 'maint-1.6.0' into maintLibravatar Junio C Hamano1-1/+1
* maint-1.6.0: User-manual: "git stash <comment>" form is long gone add test-dump-cache-tree in Makefile fix typo in Documentation apply: fix access to an uninitialized mode variable, found by valgrind
2009-02-03add test-dump-cache-tree in MakefileLibravatar Guanqun Lu1-1/+1
5c5ba73 (Makefile: Use generic rule to build test programs, 2007-05-31) tried to use generic rule to build test programs, but it misses the file 'dump-cache-tree.c', since its name is not prefixed by 'test-'. This commit solves this little problem by renaming this file instead of carrying out an explicit rule in Makefile. Signed-off-by: Guanqun Lu <guanqun.lu@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-01-31Merge branch 'sp/runtime-prefix'Libravatar Junio C Hamano1-19/+30
* sp/runtime-prefix: Windows: Revert to default paths and convert them by RUNTIME_PREFIX Compute prefix at runtime if RUNTIME_PREFIX is set Modify setup_path() to only add git_exec_path() to PATH Add calls to git_extract_argv0_path() in programs that call git_config_* git_extract_argv0_path(): Move check for valid argv0 from caller to callee Refactor git_set_argv0_path() to git_extract_argv0_path() Move computation of absolute paths from Makefile to runtime (in preparation for RUNTIME_PREFIX)
2009-01-31Merge branch 'jk/signal-cleanup'Libravatar Junio C Hamano1-0/+3
* jk/signal-cleanup: t0005: use SIGTERM for sigchain test pager: do wait_for_pager on signal death refactor signal handling for cleanup functions chain kill signals for cleanup functions diff: refactor tempfile cleanup handling Windows: Fix signal numbers
2009-01-28Makefile: Make 'configure --with-expat=path' actually workLibravatar Serge van den Boom1-1/+9
While the configure script sets the EXPATDIR environment variable to whatever value was passed to its option --with-expat as the prefix of the location of the expat library and headers, the Makefile ignored it. This patch fixes this bug. Signed-off-by: Serge van den Boom <svdb@stack.nl> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-01-26make: Remove -pthread on Darwin (it is included by cstdlib).Libravatar Ted Pavlic1-0/+1
As discussed in http://lists.apple.com/archives/Unix-porting/2005/Mar/msg00019.html the Mac OS X C standard library is always thread safe and always includes the pthread library. So explicitly using -pthread causes an 'unrecognized option' compiler warning. This patch clears PTHREAD_LIBS if Darwin is detected. Signed-off-by: Ted Pavlic <ted@tedpavlic.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-01-26Windows: Revert to default paths and convert them by RUNTIME_PREFIXLibravatar Steffen Prohaska1-3/+1
The RUNTIME_PREFIX mechanism allows us to use the default paths on Windows too. Defining RUNTIME_PREFIX explicitly requests for translation of paths relative to the executable at runtime. Signed-off-by: Steffen Prohaska <prohaska@zib.de> Acked-by: Johannes Sixt <j6t@kdbg.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-01-26Compute prefix at runtime if RUNTIME_PREFIX is setLibravatar Steffen Prohaska1-0/+3
This commit adds support for relocatable binaries (called RUNTIME_PREFIX). Such binaries can be moved together with the system configuration files to a different directory, as long as the relative paths from the binary to the configuration files is preserved. This functionality is essential on Windows where we deliver git binaries with an installer that allows to freely choose the installation location. If RUNTIME_PREFIX is unset we use the static prefix. This will be the default on Unix. Thus, the behavior on Unix will remain identical to the old implementation, which used to add the prefix in the Makefile. If RUNTIME_PREFIX is set the prefix is computed from the location of the executable. In this case, system_path() tries to strip known directories that executables can be located in from the path of the executable. If the path is successfully stripped it is used as the prefix. For example, if the executable is "/msysgit/bin/git" and BINDIR is "bin", then the prefix computed is "/msysgit". If the runtime prefix computation fails, we fall back to the static prefix specified in the makefile. This can be the case if the executable is not installed at a known location. Note that our test system sets GIT_CONFIG_NOSYSTEM to tell git to ignore global configuration files during testing. Hence testing does not trigger the fall back. Note that RUNTIME_PREFIX only works on Windows, though adding support on Unix should not be too hard. The implementation requires argv0_path to be set to an absolute path. argv0_path must point to the directory of the executable. We use assert() to verify this in debug builds. On Windows, the wrapper for main() (see compat/mingw.h) guarantees that argv0_path is correctly initialized. On Unix, further work is required before RUNTIME_PREFIX can be enabled. Signed-off-by: Steffen Prohaska <prohaska@zib.de> Acked-by: Johannes Sixt <j6t@kdbg.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-01-26Move computation of absolute paths from Makefile to runtime (in preparation ↵Libravatar Steffen Prohaska1-16/+26
for RUNTIME_PREFIX) This commit prepares the Makefile for relocatable binaries (called RUNTIME_PREFIX). Such binaries will be able to be moved together with the system configuration files to a different directory, requiring to compute the prefix at runtime. In a first step, we make all paths relative in the Makefile and teach system_path() to add the prefix instead. We used to compute absolute paths in the Makefile and passed them to C as defines. We now pass relative paths to C and call system_path() to add the prefix at runtime. Signed-off-by: Steffen Prohaska <prohaska@zib.de> Acked-by: Johannes Sixt <j6t@kdbg.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-01-23Merge branch 'js/patience-diff'Libravatar Junio C Hamano1-1/+1
* js/patience-diff: bash completions: Add the --patience option Introduce the diff option '--patience' Implement the patience diff algorithm Conflicts: contrib/completion/git-completion.bash
2009-01-21chain kill signals for cleanup functionsLibravatar Jeff King1-0/+3
If a piece of code wanted to do some cleanup before exiting (e.g., cleaning up a lockfile or a tempfile), our usual strategy was to install a signal handler that did something like this: do_cleanup(); /* actual work */ signal(signo, SIG_DFL); /* restore previous behavior */ raise(signo); /* deliver signal, killing ourselves */ For a single handler, this works fine. However, if we want to clean up two _different_ things, we run into a problem. The most recently installed handler will run, but when it removes itself as a handler, it doesn't put back the first handler. This patch introduces sigchain, a tiny library for handling a stack of signal handlers. You sigchain_push each handler, and use sigchain_pop to restore whoever was before you in the stack. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-01-21Merge branch 'rs/ctype'Libravatar Junio C Hamano1-0/+3
* rs/ctype: Add is_regex_special() Change NUL char handling of isspecial() Reformat ctype.c Add ctype test Conflicts: Makefile
2009-01-19Makefile: use shell for-loop rather than Make's foreach loop during installLibravatar Brandon Casey1-4/+6
The install target uses a foreach loop to generate a single long shell command line to handle installation of the built-in git commands. The maximum length of the argument list varies by platform, and this use of foreach quickly grows the length of the argument list. Current git can exceed the default maximum argument list length on IRIX 6.5 of 20480 depending on the installation path. Rather than using make's foreach loop to pre-generate the shell command line, use a shell for-loop and allow the shell to iterate through each of the built-in commands. Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-01-17Add ctype testLibravatar René Scharfe1-1/+11
Manipulating the character class table in ctype.c by hand is error prone. To ensure that typos are found quickly, add a test program and script. test-ctype checks the output of the character class macros isspace() et. al. by applying them on all possible char values and consulting a list of all characters in the particular class. It doesn't check tolower() and toupper(); this could be added later. The test script t0070-fundamental.sh is created because there is no good place for the ctype test, yet -- except for t0000-basic.sh perhaps, but it doesn't run well on Windows, yet. Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-01-11Makefile: clean up TEST_PROGRAMS definitionLibravatar Jeff King1-1/+8
We try to keep lines under 80 characters, not to mention that sticking a bunch of stuff on one line makes diffs messier. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-01-07Introduce the diff option '--patience'Libravatar Johannes Schindelin1-1/+1
This commit teaches Git to produce diff output using the patience diff algorithm with the diff option '--patience'. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-01-07Merge branch 'mv/um-pdf'Libravatar Junio C Hamano1-0/+6
* mv/um-pdf: Add support for a pdf version of the user manual
2008-12-21Add a script to edit/inspect notesLibravatar Johannes Schindelin1-0/+1
The script 'git notes' allows you to edit and show commit notes, by calling either git notes show <commit> or git notes edit <commit> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-12-21Introduce commit notesLibravatar Johannes Schindelin1-0/+2
Commit notes are blobs which are shown together with the commit message. These blobs are taken from the notes ref, which you can configure by the config variable core.notesRef, which in turn can be overridden by the environment variable GIT_NOTES_REF. The notes ref is a branch which contains "files" whose names are the names of the corresponding commits (i.e. the SHA-1). The rationale for putting this information into a ref is this: we want to be able to fetch and possibly union-merge the notes, maybe even look at the date when a note was introduced, and we want to store them efficiently together with the other objects. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-12-17Enable threaded delta search on Mac OS X/DarwinLibravatar Arjen Laarhoven1-0/+1
Signed-off-by: Arjen Laarhoven <arjen@yaph.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-12-10Add support for a pdf version of the user manualLibravatar Miklos Vajna1-0/+6
Use dblatex in order to create a pdf version of the git user manual. No existing Makefile targets (including "all") are touched, so you need to explicitly say make pdf sudo make install-pdf to get user-manual.pdf created and installed. Signed-off-by: Miklos Vajna <vmiklos@frugalware.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-12-03Install git-stage in exec-pathLibravatar Junio C Hamano1-0/+1
Earlier the plan was to eventually eradicate git-foo executables from the filesystem for all the built-in commands, but when we released 1.6.0 we decided not to do so. Instead, it has been promised that by prepending the output from $(git --exec-path) to your $PATH, you can keep using the dashed form of commands. This also allows "git stage" to appear in the autogenerated command list, which is used to offer man pages by "git help" command. Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-12-02Makefile: introduce NO_PTHREADSLibravatar Junio C Hamano1-1/+16
This introduces make variable NO_PTHREADS for platforms that lack the support for pthreads library or people who do not want to use it for whatever reason. When defined, it makes the multi-threaded index preloading into a no-op, and also disables threaded delta searching by pack-objects. Signed-off-by: Junio C Hamano <gitster@pobox.com> Signed-off-by: Mike Ralphson <mike@abacus.co.uk> Tested-by: Johannes Sixt <j6t@kdbg.org> (AIX 4.3.x) Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-11-27Merge branch 'rs/strbuf-expand'Libravatar Junio C Hamano1-1/+0
* rs/strbuf-expand: remove the unused files interpolate.c and interpolate.h daemon: deglobalize variable 'directory' daemon: inline fill_in_extra_table_entries() daemon: use strbuf_expand() instead of interpolate() merge-recursive: use strbuf_expand() instead of interpolate() add strbuf_expand_dict_cb(), a helper for simple cases
2008-11-23remove the unused files interpolate.c and interpolate.hLibravatar René Scharfe1-1/+0
Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-11-14Add cache preload facilityLibravatar Linus Torvalds1-0/+1
This can do the lstat() storm in parallel, giving potentially much improved performance for cold-cache cases or things like NFS that have weak metadata caching. Just use "read_cache_preload()" instead of "read_cache()" to force an optimistic preload of the index stat data. The function takes a pathspec as its argument, allowing us to preload only the relevant portion of the index. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-11-12Merge branch 'ds/uintmax-config' (early part)Libravatar Junio C Hamano1-1/+10
* 'ds/uintmax-config' (early part): Add autoconf tests for pthreads Make Pthread link flags configurable Add Makefile check for FreeBSD 4.9-SECURITY Build: add NO_UINTMAX_T to support ancient systems Conflicts: Makefile
2008-11-11Merge branch 'maint'Libravatar Junio C Hamano1-1/+10
* maint: Fix non-literal format in printf-style calls git-submodule: Avoid printing a spurious message. git ls-remote: make usage string match manpage Makefile: help people who run 'make check' by mistake
2008-11-11Makefile: help people who run 'make check' by mistakeLibravatar Junio C Hamano1-1/+10
The target to run self test is 'make test', but there are people who try 'make check' and worse yet do not have sparse installed. Suggest 'make test' target when they do not have 'sparse'. Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-11-02Makefile: add install-man rules (quick and normal)Libravatar Markus Heidelberg1-0/+6
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-11-02Make Pthread link flags configurableLibravatar David M. Syzdek1-1/+3
FreeBSD 4.x systems use the linker flags `-pthread' instead of the linker flags `-lpthread' when linking against the pthread library. Signed-off-by: David M. Syzdek <david.syzdek@acsalaska.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-11-02Stop using compat/regex.c on platforms with working regexp libraryLibravatar Junio C Hamano1-6/+0
We used to have non-POSIX comformant BRE in our code, and linked with GNU regexp library on a few platforms (Darwin, FreeBSD and AIX) to work it around. This was backwards. We've fixed the broken regexps to use ERE that native regexp libraries on these platforms can handle just fine. There is no need to link with GNU regexp library on these platforms anymore. Tested-on-AIX-by: Mike Ralphson <mike@abacus.co.uk> Tested-on-FreeBSD-by: Jeff King <peff@peff.net> Tested-on-Darwin-by: Arjen Laarhoven <arjen@yaph.org> Tested-on-Darwin-by: Pieter de Bie <pieter@frim.nl> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-11-02Add Makefile check for FreeBSD 4.9-SECURITYLibravatar David M. Syzdek1-0/+4
If the system is FreeBSD 4.9, then NO_UINTMAX_T and NO_STRTOUMAX is defined. Signed-off-by: David M. Syzdek <david.syzdek@acsalaska.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-11-02Build: add NO_UINTMAX_T to support ancient systemsLibravatar David M. Syzdek1-0/+3
This adds NO_UINTMAX_T for ancient systems, such as FreeBSD 4.9-SECURITY. If NO_UINTMAX_T is defined, then uintmax_t is defined as uint32_t. Signed-off-by: David M. Syzdek <david.syzdek@acsalaska.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-10-28Install 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-10-28Install 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-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