summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2008-06-23Windows: Treat Windows style path names.Libravatar Johannes Sixt5-15/+67
GIT's guts work with a forward slash as a path separators. We do not change that. Rather we make sure that only "normalized" paths enter the depths of the machinery. We have to translate backslashes to forward slashes in the prefix and in command line arguments. Fortunately, all of them are passed through functions in setup.c. A macro has_dos_drive_path() is defined that checks whether a path begins with a drive letter+colon combination. This predicate is always false on Unix. Another macro is_dir_sep() abstracts that a backslash is also a directory separator on Windows. Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>
2008-06-23setup.c: Prepare for Windows directory separators.Libravatar Johannes Sixt1-8/+5
This turns two switch/case statements into an if-else-if cascade because we later do not want to have case '/': #ifdef __MINGW32__ case '\\': #endif but use a predicate is_dir_sep(foo) in order to check for the directory separator. Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>
2008-06-22Windows: Use the Windows style PATH separator ';'.Libravatar Johannes Sixt5-5/+15
Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>
2008-06-22Add target architecture MinGW.Libravatar Johannes Sixt5-7/+244
With this change GIT can be compiled and linked using MinGW. Builtins that only read the repository such as the log family and grep already work. Simple stubs are provided for a number of functions that the Windows C runtime does not offer. They will be completed in later patches. However, a fix for the snprintf/vsnprintf replacement is applied here to avoid buffer overflows. Dmitry Kakurin pointed out that access(..., X_OK) would always fails on Vista and suggested the -D__USE_MINGW_ACCESS workaround. Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>
2008-06-22Compile some programs only conditionally.Libravatar Johannes Sixt1-2/+4
These programs depend on difficult to emulate POSIX functionality. On Windows, we won't compile them. Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>
2008-06-22Add compat/regex.[ch] and compat/fnmatch.[ch].Libravatar Johannes Sixt4-0/+5989
We don't have fnmatch and regular expressions on Windows. We borrow fnmatch.[ch] from the GNU C library (license is LGPL 2 or later) and GNU regexp (regexp.c[ch], license is GPL 2 or later). Note that regexp.c was changed slightly to avoid warnings with gcc. We make the addition of these files an extra commit so as not to clutter the next commits. Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>
2008-06-18GIT 1.5.6Libravatar Junio C Hamano3-7/+9
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-06-18clean up error conventions of remote.c:match_explicitLibravatar Jeff King2-22/+20
match_explicit is called for each push refspec to try to fully resolve the source and destination sides of the refspec. Currently, we look at each refspec and report errors on both the source and the dest side before aborting. It makes sense to report errors for each refspec, since an error in one is independent of an error in the other. However, reporting errors on the 'dst' side of a refspec if there has been an error on the 'src' side does not necessarily make sense, since the interpretation of the 'dst' side depends on the 'src' side (for example, when creating a new unqualified remote ref, we use the same type as the src ref). This patch lets match_explicit return early when the src side of the refspec is bogus. We still look at all of the refspecs before aborting the push, though. At the same time, we clean up the call signature, which previously took an extra "errs" flag. This was pointless, as we didn't act on that flag, but rather just passed it back to the caller. Instead, we now use the more traditional "return -1" to signal an error, and the caller aggregates the error count. This change fixes two bugs, as well: - the early return avoids a segfault when passing a NULL matched_src to guess_ref() - the check for multiple sources pointing to a single dest aborted if the "err" flag was set. Presumably the intent was not to bother with the check if we had no matched_src. However, since the err flag was passed in from the caller, we might abort the check just because a previous refspec had a problem, which doesn't make sense. In practice, this didn't matter, since due to the error flag we end up aborting the push anyway. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-06-17Fix approxidate("never") to always return 0Libravatar Olivier Marin1-4/+2
Commit af66366a9feb0194ed04b1f538998021ece268a8 introduced the keyword "never" to be used with approxidate() but defined it with a fixed date without taking care of timezone. As a result approxidate() will return a timestamp in the future with a negative timezone. With this patch, approxidate("never") always return 0 whatever your timezone is. Signed-off-by: Olivier Marin <dkr@freesurf.fr> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-06-17git-am: head -1 is obsolete and doesn't work on some new systemsLibravatar Alejandro Mery1-1/+1
head -<n> was deprecated by POSIX, and as modern versions of coreutils package don't support it at least one exports _POSIX2_VERSION=199209 it's fails on some systems. head -n<n> is portable, but sed <n>q is even more. Signed-off-by: Alejandro Mery <amery@geeks.cl> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-06-17builtin-rerere: fix a small leakLibravatar Junio C Hamano1-1/+1
The data read from MERGE_RR file is kept in path-list by hanging textual 40-byte conflict signature to path of the blob that contains the conflict. The signature is strdup'ed twice, and the second copy is given to the path-list, leaking the first copy. Signed-off-by: Junio C Hamano <junio@pobox.com> Acked-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
2008-06-17gitweb: remove unused parse_ref methodLibravatar Lea Wiemann1-43/+0
The parse_ref method became unused in cd1464083c, but the author decided to leave it in. Now it gets in the way of refactoring, so let's remove it. Signed-off-by: Lea Wiemann <LeWiemann@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-06-17gitweb: quote commands properly when calling the shellLibravatar Lea Wiemann1-10/+14
This eliminates the function git_cmd_str, which was used for composing command lines, and adds a quote_command function, which quotes all of its arguments (as in quote.c). Signed-off-by: Lea Wiemann <LeWiemann@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-06-16sha1_file.c: simplify parse_pack_index()Libravatar Junio C Hamano2-9/+1
It was implemented as a thin wrapper around an otherwise unused helper function parse_pack_index_file(). The code becomes simpler and easier to read by consolidating the two. Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-06-16create_tempfile: make sure that leading directories can be accessible by peersLibravatar Junio C Hamano1-2/+2
In a shared repository, we should make sure adjust_shared_perm() is called after creating the initial fan-out directories under objects/ directory. Earlier an logico called the function only when mkdir() failed; we should do so when mkdir() succeeded. Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-06-16write_loose_object: don't bother trying to read an old objectLibravatar Linus Torvalds1-14/+0
Before even calling this, all callers have done a "has_sha1_file(sha1)" or "has_loose_object(sha1)" check, so there is no point in doing a second check. If something races with us on object creation, we handle that in the final link() that moves it to the right place. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-06-16path-list documentation: document all functions and data structuresLibravatar Miklos Vajna1-4/+121
Signed-off-by: Miklos Vajna <vmiklos@frugalware.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-06-16run-command documentation: fix "memset()" parameterLibravatar Miklos Vajna1-2/+2
When initializing the struct async and struct child_process structures, the documentation suggested "clearing" the structure with '0' instead of '\0'. It is enough to use integer zero here. Signed-off-by: Miklos Vajna <vmiklos@frugalware.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-06-16Merge branch 'maint'Libravatar Junio C Hamano1-2/+4
* maint: diff.c: fix emit_line() again not to add extra line
2008-06-16diff.c: fix emit_line() again not to add extra lineLibravatar Junio C Hamano1-2/+4
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-06-16Merge branch 'maint'Libravatar Junio C Hamano1-0/+4
* maint: diff: reset color before printing newline
2008-06-16diff: reset color before printing newlineLibravatar SZEDER Gábor1-0/+4
It worked that way since commit 50f575fc (Tweak diff colors, 2006-06-22), but commit c1795bb0 (Unify whitespace checking, 2007-12-13) changed it. This patch restores the old behaviour. Besides Linus' arguments in the log message of 50f575fc, resetting color before printing newline is also important to keep 'git add --patch' happy. If the last line(s) of a file are removed, then that hunk will end with a colored line. However, if the newline comes before the color reset, then the diff output will have an additional line at the end containing only the reset sequence. This causes trouble in git-add--interactive.perl's parse_diff function, because @colored will have one more element than @diff, and that last element will contain the color reset. The elements of these arrays will then be copied to @hunk, but only as many as the number of elements in @diff. As a result the last color reset is lost and all subsequent terminal output will be printed in color. Signed-off-by: SZEDER Gábor <szeder@ira.uka.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-06-15Make git reflog expire honour core.sharedRepository.Libravatar Pierre Habouzit2-0/+17
Signed-off-by: Pierre Habouzit <madcoder@debian.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-06-15Update RPM spec to drop curl executable requirementLibravatar Junio C Hamano1-1/+4
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-06-15The "curl" executable is no longer requiredLibravatar Johan Herland1-4/+4
git-clone.sh was the last user of the "curl" executable. Relevant git commands now use libcurl instead. This should be reflected in the install requirements. Signed-off-by: Johan Herland <johan@herland.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-06-15Makefile: update check-docs targetLibravatar Junio C Hamano1-0/+8
Earlier series to rename documentation pages around did not update this target and left check-docs broken. This should fix it. Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-06-15Consistency: Use "libcurl" instead of "cURL library" and "curl"Libravatar Johan Herland4-5/+5
Signed-off-by: Johan Herland <johan@herland.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-06-15cpio is no longer used by git-cloneLibravatar Johan Herland1-3/+0
Signed-off-by: Johan Herland <johan@herland.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-06-15Documentation: RelNotes-1.5.6: talk about renamed HTML filesLibravatar Christian Couder1-2/+4
Signed-off-by: Christian Couder <chriscool@tuxfamily.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-06-14GIT 1.5.6-rc3Libravatar Junio C Hamano1-1/+1
Just a lot of small fixes, mostly documentation. Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-06-14Simplify and rename find_sha1_file()Libravatar Linus Torvalds1-10/+8
Now that we've made the loose SHA1 file reading more careful and streamlined, we only use the old find_sha1_file() function for checking whether a loose object file exists at all. As such, the whole 'return stat information' part of it was just pointless (nobody cares any more), and the naming of the function is not really all that relevant either. So simplify it to not do a 'stat()', but just an existence check (which is what the callers want), and rename it to 'has_loose_object()' which matches the use. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-06-14Make loose object file reading more carefulLibravatar Linus Torvalds1-26/+44
We used to do 'stat()+open()+mmap()+close()' to read the loose object file data, which does work fine, but has a couple of problems: - it unnecessarily walks the filename twice (at 'stat()' time and then again to open it) - NFS generally has open-close consistency guarantees, which means that the initial 'stat()' was technically done outside of the normal consistency rules. So change it to do 'open()+fstat()+mmap()+close()' instead, which avoids both these issues. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-06-14Avoid cross-directory renames and linking on object creationLibravatar Linus Torvalds1-41/+42
Instead of creating new temporary objects in the top-level git object directory, create them in the same directory they will finally end up in anyway. This avoids making the final atomic "rename to stable name" operation be a cross-directory event, which makes it a lot easier for various filesystems. Several filesystems do things like change the inode number when moving files across directories (or refuse to do it entirely). In particular, it can also cause problems for NFS implementations that change the filehandle of a file when it moves to a different directory, like the old user-space NFS server did, and like the Linux knfsd still does if you don't export your filesystems with 'no_subtree_check' or if you export a filesystem that doesn't have stable inode numbers across renames). This change also obviously implies creating the object fan-out subdirectory at tempfile creation time, rather than at the final move_temp_to_file() time. Which actually accounts for most of the size of the patch. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-06-14Use 'trash directory' thoroughly in t/test-lib.shLibravatar Jakub Narebski1-1/+1
...also in comments. Signed-off-by: Jakub Narebski <jnareb@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-06-14Don't allocate too much memory in quote_ref_urlLibravatar Mike Hommey1-1/+1
In c13b263, http_fetch_ref got "refs/" included in the ref passed to it, which, incidentally, makes the allocation in quote_ref_url too big, now. Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-06-14gitweb: Make it work with $GIT containing spacesLibravatar Jakub Narebski1-1/+1
This fixes single point where $GIT (which can contain full path to git binary) with embedded spaces gave errors. Signed-off-by: Jakub Narebski <jnareb@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-06-14completion: add more 'git add' optionsLibravatar SZEDER Gábor1-1/+4
Signed-off-by: SZEDER Gábor <szeder@ira.uka.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-06-14git add: add long equivalents of '-u' and '-f' optionsLibravatar SZEDER Gábor2-4/+7
The option -u stands for --update and it is a good idea to make it clear especially because this is the only mode of operation of "git add" that does something different from "adding". Give longer --force synonym to -f while we are at it as well. Signed-off-by: SZEDER Gábor <szeder@ira.uka.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-06-14Merge branch 'rs/attr'Libravatar Junio C Hamano3-22/+61
* rs/attr: Ignore .gitattributes in bare repositories
2008-06-14git-svn: test that extra blank lines aren't inserted in commit messages.Libravatar Avery Pennarun1-1/+15
Improve the git-svn-author test to check that extra newlines aren't inserted into commit messages as they take a round trip from git to svn and back. We test both with and without the --add-author-from option to git-svn. git-svn: test that svn repo doesn't have extra newlines. Signed-off-by: Avery Pennarun <apenwarr@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-06-14git-svn: don't append extra newlines at the end of commit messages.Libravatar Avery Pennarun1-3/+5
In git, all commits end in exactly one newline character. In svn, commits end in zero or more newlines. Thus, when importing commits from svn into git, git-svn always appends two extra newlines to ensure that the git-svn-id: line is separated from the main commit message by at least one blank line. Combined with the terminating newline that's always present in svn commits produced by git, you usually end up with two blank lines instead of one between the commit message and git-svn-id: line, which is undesirable. Instead, let's remove all trailing whitespace from the git commit on the way through to svn. Signed-off-by: Avery Pennarun <apenwarr@gmail.com> Acked-by: Eric Wong <normalperson@yhbt.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-06-14git-submodule - Fix errors regarding resolve_relative_urlLibravatar Mark Levedahl1-4/+5
git-submodule was invoking "die" from within resolve-relative-url, but this does not actually cause the script to exit. Fix this by returning the error to the caller and have the caller exit. While we're at it, clean up the quoting on invocation of resolve_relative_url as it was wrong. Signed-off-by: Mark Levedahl <mlevedahl@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-06-14documentation: bisect: remove bits talking about a bisection branchLibravatar Christian Couder1-4/+3
... because we are now bisecting using a detached HEAD. Signed-off-by: Christian Couder <chriscool@tuxfamily.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-06-13sha1_file.c: dead code removalLibravatar Junio C Hamano2-145/+0
write_sha1_from_fd() and write_sha1_to_fd() were dead code nobody called, neither the latter's helper repack_object() was. Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-06-13git-instaweb: improve auto-discovery of httpd and call conventions.Libravatar Flavio Poletti1-15/+33
This patch allows calling: git-instaweb -d apache2 and have the script Do The Right Thing. In particular, the auto-discovery mechanism has been extended in order to be used for module listing as well, and the call convention is that if the daemon is apache2/lighttpd and the parameter to the "-d" option does not end by "-f", the "-f" is added to the end of the option itself. Change all backticks to $( ... ) as per Documentation/CodingGuidelines. Signed-off-by: Flavio Poletti <flavio@polettix.it> Acked-by: Eric Wong <normalperson@yhbt.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-06-13t4126: fix test that happened to work due to timingLibravatar Junio C Hamano1-4/+0
The test did "reset --hard" (where the HEAD commit has an empty blob at path "empty") followed by "> empty", expecting that the index does not notice the file _changed_ since git wrote it out upon "reset" if the redirection is done quickly enough. There was no need to do the emptying, and it gave a wrong result if "reset --hard" happened on time T and then ">empty" happened on the next second T+1. This fixes it. Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-06-12Merge branch 'om/remote-fix'Libravatar Junio C Hamano3-51/+153
* om/remote-fix: "remote prune": be quiet when there is nothing to prune remote show: list tracked remote branches with -n remote prune: print the list of pruned branches builtin-remote: split show_or_prune() in two separate functions remote show: fix the -n option
2008-06-12fast-export: Correctly generate initial commits with no parentsLibravatar Shawn O. Pearce1-0/+2
If we are exporting a commit which has no parents we may be doing it to a branch that already exists, causing fast-import to assume the branch's current revision should be the sole parent of the new commit. This can cause `git fast-export | git fast-import` to produce an incorrect graph for: A-------M----o------o refs/heads/master / B-+ In this graph A and B are initial commits (no parents) but if A was output first to refs/heads/master and then B is output fast-import would assume the graph was this instead: A-------M----o------o refs/heads/master \ / +-B-+ Which would cause B, M, and all later commits to have a different SHA-1, and obviously be quite a different graph. Sending a reset command prior to B informs fast-import to clear the implied parent of A, allowing B to remain an initial commit. Reported-by: Ben Lynn <benlynn@gmail.com> Deemed-obviously-correct-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Shawn O. Pearce <spearce@spearce.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-06-12t/.gitattributes: only ignore whitespace errors in test filesLibravatar Lea Wiemann2-2/+3
Only ignore whitespace errors in t/tNNNN-*.sh and the t/tNNNN subdirectories. Other files (like test libraries) should still be checked. Also fix a whitespace error in t/test-lib.sh. Signed-off-by: Lea Wiemann <LeWiemann@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-06-12document --pretty=tformat: optionLibravatar Jeff King1-0/+22
This was introduced in 4da45bef, but never documented anywhere. Signed-off-by: Junio C Hamano <gitster@pobox.com>