aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
* Silence confusing and false-positive curl error messagePetr Baudis2005-10-23
| | | | | | | | | | | git-http-fetch spits out curl 404 error message when unable to fetch an object, but that's confusing since no error really happened and the object is usually found in a pack it tries right after that. And if the object still cannot be retrieved, it will say another error message anyway. OTOH other HTTP errors (403 etc) are likely fatal and the user should be still informed about them. Signed-off-by: Petr Baudis <pasky@suse.cz> Signed-off-by: Junio C Hamano <junkio@cox.net>
* Merge branch 'fixes'Junio C Hamano2005-10-23
|\
| * git-show-branch: Fix off-by-one error.Junio C Hamano2005-10-23
| | | | | | | | Signed-off-by: Junio C Hamano <junkio@cox.net>
* | git-rev-list: add "--dense" flagLinus Torvalds2005-10-22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is what the recent git-rev-list changes have all been gearing up for. When we use a path filter to git-rev-list, the new "--dense" flag asks git-rev-list to compress the history so that it _only_ contains commits that change files in the path filter. It also rewrites the parent information so that tools like "gitk" will see the result as a dense history tree. For example, on the current kernel archive: [torvalds@g5 linux]$ git-rev-list HEAD | wc -l 9904 [torvalds@g5 linux]$ git-rev-list HEAD -- kernel | wc -l 5442 [torvalds@g5 linux]$ git-rev-list --dense HEAD -- kernel | wc -l 356 which shows that while we have almost ten thousand commits, we can prune down the work to slightly more than half by only following the merges that are interesting. But further, we can then compress the history to just 356 entries that actually make changes to the kernel subdirectory. To see this in action, try something like gitk --dense -- gitk to see just the history that affects gitk. Or, to show that true parallel development still remains parallel, do gitk --dense -- daemon.c which shows some parallel commits in the current git tree. Signed-off-by: Linus Torvalds <torvalds@osdl.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
* | Teach git-rev-list to follow just a specified set of filesLinus Torvalds2005-10-22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is the first cut at a git-rev-list that knows to ignore commits that don't change a certain file (or set of files). NOTE! For now it only prunes _merge_ commits, and follows the parent where there are no differences in the set of files specified. In the long run, I'd like to make it re-write the straight-line history too, but for now the merge simplification is much more fundamentally important (the rewriting of straight-line history is largely a separate simplification phase, but the merge simplification needs to happen early if we want to optimize away unnecessary commit parsing). If all parents of a merge change some of the files, the merge is left as is, so the end result is in no way guaranteed to be a linear history, but it will often be a lot /more/ linear than the full tree, since it prunes out parents that didn't matter for that set of files. As an example from the current kernel: [torvalds@g5 linux]$ git-rev-list HEAD | wc -l 9885 [torvalds@g5 linux]$ git-rev-list HEAD -- Makefile | wc -l 4084 [torvalds@g5 linux]$ git-rev-list HEAD -- drivers/usb | wc -l 5206 and you can also use 'gitk' to more visually see the pruning of the history tree, with something like gitk -- drivers/usb showing a simplified history that tries to follow the first parent in a merge that is the parent that fully defines drivers/usb/. Signed-off-by: Linus Torvalds <torvalds@osdl.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
* | Split up tree diff functions into tree-diff.c libraryLinus Torvalds2005-10-22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This makes the tree diff functionality independent of the "git-diff-tree" program, by splitting the core functionality up into a library file. This will be needed for when we teach git-rev-list to only follow a specified set of pathnames, rather than the global revision history. Most of it is a fairly straightforward code move, but it also involves some calling convention cleanup, and moving some of the static variables from diff-tree.c into the options structure. The actual tree change callback routines also become paramterized by the diff_options structure, allowing the library functionality to do something else than just show the diff on stdout. Right now the only user of this functionality remains git-diff-tree itself. Signed-off-by: Linus Torvalds <torvalds@osdl.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
* | Allow git-merge not to commit.Junio C Hamano2005-10-22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Martin Langhoff wants to use git-merge from outside git-pull and wants to do further processing; for this, he wants git-merge no to commit even when it cleanly merges. I think other script writers would want something like that as well, so here it is. Instead of the "merge commit message" parameter (which usually is made for you by "git-pull" which calls this command), you pass an empty string to it. Then it will not update your HEAD -- you can do whatever you want with the resulting index file, which contains the merge results. Signed-off-by: Junio C Hamano <junkio@cox.net>
* | upload-pack: Increase MAX_HAS.Junio C Hamano2005-10-22
| | | | | | | | | | | | | | | | Later round would further improve fetch-pack not to send useless "have", but in the meantime, increase it to help upload-pack to find more common commits, as discussed on the list. Signed-off-by: Junio C Hamano <junkio@cox.net>
* | Fix malformatted git-am documentation.Junio C Hamano2005-10-21
| | | | | | | | Signed-off-by: Junio C Hamano <junkio@cox.net>
* | [PATCH 3/3] Allow running requests to finish after a pull errorNick Hengeveld2005-10-21
| | | | | | | | | | | | | | Allow running requests to finish after a pull error Signed-off-by: Nick Hengeveld <nickh@reactrix.com> Signed-off-by: Junio C Hamano <junkio@cox.net>
* | [PATCH 2/3] Switched back to loading alternates as neededNick Hengeveld2005-10-21
| | | | | | | | | | | | | | Switched back to loading alternates as needed Signed-off-by: Nick Hengeveld <nickh@reactrix.com> Signed-off-by: Junio C Hamano <junkio@cox.net>
* | [PATCH 1/3] Clean up CURL handles in unused request slotsNick Hengeveld2005-10-21
| | | | | | | | | | | | | | Clean up CURL handles in unused request slots Signed-off-by: Nick Hengeveld <nickh@reactrix.com> Signed-off-by: Junio C Hamano <junkio@cox.net>
* | Merge branch 'fixes'Junio C Hamano2005-10-20
|\ \ | |/
| * daemon.c: remove trailing whitespace.Junio C Hamano2005-10-20
| | | | | | | | Signed-off-by: Junio C Hamano <junkio@cox.net>
* | Fix git-daemon argument-parsing bugH. Peter Anvin2005-10-20
| | | | | | | | | | | | | | Fix stupid bug in parsing the --init-timeout option. Signed-off-by: H. Peter Anvin <hpa@zytor.com> Signed-off-by: Junio C Hamano <junkio@cox.net>
* | Update git-daemon's documentation wrt. new optionsPetr Baudis2005-10-20
| | | | | | | | | | | | | | | | | | New options --timeout, --init-timeout, --export-all and whitelist support were added to git-daemon, but noone bothered to also add the proper documentation. This patch aims to fix that. Signed-off-by: Petr Baudis <pasky@suse.cz> Signed-off-by: Junio C Hamano <junkio@cox.net>
* | Finish git-am documentation.Junio C Hamano2005-10-20
| | | | | | | | Signed-off-by: Junio C Hamano <junkio@cox.net>
* | Brief documentation for the mysterious git-am scriptPetr Baudis2005-10-20
| | | | | | | | | | | | | | | | | | | | | | | | | | The git-am script is nowhere called and nowhere (including itself) explained, and the name isn't helpful either. For those like me who will wonder what is it about, add some documentation stub for it to the documentation. I probably got something wrong and I don't feel like investigating all the options - this is just kind of "emergency" docs. Signed-off-by: Petr Baudis <pasky@suse.cz> Signed-off-by: Junio C Hamano <junkio@cox.net>
* | git-rev-parse: pass on "--" flag when requiredLinus Torvalds2005-10-20
| | | | | | | | | | | | | | | | | | | | | | If rev-parse output includes both flags and files, we should pass on any "--" marker we see, so that the end result can also tell the difference between a flag and a filename that begins with '-'. [jc: merged a later one liner updates from Linus] Signed-off-by: Linus Torvalds <torvalds@osdl.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
* | Use sensible domain name (the DNS one) when guessing ident informationPetr Baudis2005-10-20
| | | | | | | | | | | | | | | | | | | | | | | | | | Currently, the code would use getdomainname() call, which however returns something usually unset and not necessarily related at all to the DNS domain name (it seems to be mostly some scary NIS/YP thing). This patch changes the code to actually use the DNS domain name, which is also what tends to be used in emails, and we aim at emails with our ident code. Signed-off-by: Petr Baudis <pasky@suse.cz> Signed-off-by: Junio C Hamano <junkio@cox.net>
* | Make git-cherry-pick in target "all"Johannes Schindelin2005-10-20
| | | | | | | | | | | | | | | | Since git-cherry-pick is simply a copy of git-revert, it can be created before installing (so that it can be used without installing, too). Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de> Signed-off-by: Junio C Hamano <junkio@cox.net>
* | Fix missing exports in git-amJunio C Hamano2005-10-20
| | | | | | | | Signed-off-by: Junio C Hamano <junkio@cox.net>
* | git-daemon poll() spinning out of controlJens Axboe2005-10-20
| | | | | | | | | | | | | | | | | | | | With the '0' timeout given to poll, it returns instantly without any events on my system, causing git-daemon to consume all the CPU time. Use -1 as the timeout so poll() only returns in case of EINTR or actually events being available. Signed-off-by: Jens Axboe <axboe@suse.de> Signed-off-by: Junio C Hamano <junkio@cox.net>
* | Merge /pub/scm/git/git to recover lost side branchJunio C Hamano2005-10-20
|\ \ | | | | | | | | | | | | | | | | | | | | | Sorry for the mistake of rewinding something already pushed out. This recovers the side branch lost by that mistake, specifically ea5a65a59916503d2a14369c46b1023384d51645 commit. Signed-off-by: Junio C Hamano <junio@hera.kernel.org>
| * | Make sure we barf on ref^{type} failure.Junio C Hamano2005-10-19
| | | | | | | | | | | | | | | | | | | | | Martin Langhoff noticed that ref^0 barfed correctly when we did not have the commit in a broken repository, but ref^{commit} didn't. Signed-off-by: Junio C Hamano <junkio@cox.net>
| * | Be more careful tangling object chains while marking commits.Junio C Hamano2005-10-19
| | | | | | | | | | | | | | | | | | | | | | | | Also Johannes noticed we use parse_object to look up if we know that object already -- we should just ask the in-core object registry with lookup_object() for that. Signed-off-by: Junio C Hamano <junkio@cox.net>
| * | git-fetch/push/pull: documentation.Junio C Hamano2005-10-19
| | | | | | | | | | | | | | | | | | | | | | | | | | | The documentation was lazily sharing the argument description across these commands. Lazy may be a way of life, but that does not justify confusing others ;-). Signed-off-by: Junio C Hamano <junkio@cox.net>
| * | Do not feed rev-list an invalid SHA1 expression.Junio C Hamano2005-10-19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The previous round to optimize fetch-pack has a small bug that feeds SHA1^ ("parent commit") before making sure SHA1 is actually a commit (or a tag that eventually dereferences to a commit). Also it did not help culling the known-to-be-common parents if the common one was a merge. Signed-off-by: Junio C Hamano <junkio@cox.net>
| * | [PATCH] Do not send "want" lines for complete objectsJohannes Schindelin2005-10-19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It was all good and well to check if all remote refs are complete (local refs or descendants thereof), but we can just as easily use the same information to avoid sending "want" lines just for the complete objects in the case that not all remote refs are complete (or their names differ). Also, git-fetch-pack does not have to ask for descendants of remote refs which are complete (for now, git-rev-list is told to ignore only the first parent). That change also eliminates a code path where a popen()ed handle was not pclose()ed. Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de> Signed-off-by: Junio C Hamano <junkio@cox.net>
| * | count-objects: squelch error from find on sparse object directory.Junio C Hamano2005-10-19
| | | | | | | | | | | | Signed-off-by: Junio C Hamano <junkio@cox.net>
| * | git-clone: always keep pack sent from remote (documentation).Junio C Hamano2005-10-19
| | | | | | | | | | | | | | | | | | This adjusts the documentation. Signed-off-by: Junio C Hamano <junkio@cox.net>
| * | git-clone: always keep pack sent from remote.Junio C Hamano2005-10-19
| | | | | | | | | | | | | | | | | | | | | | | | This deprecates --keep and -q flags and always keeps the pack sent from the remote site. Corresponding configuration variables are also removed. Signed-off-by: Junio C Hamano <junkio@cox.net>
| * | Do not ask for objects known to be complete.Junio C Hamano2005-10-19
| | | | | | | | | | | | | | | | | | | | | | | | On top of optimization by Linus not to ask refs that already match, we can walk our refs and not issue "want" for things that are known to be reachable from them. Signed-off-by: Junio C Hamano <junkio@cox.net>
| * | Support for HTTP transfer timeouts based on transfer speedNick Hengeveld2005-10-19
| | | | | | | | | | | | | | | | | | | | | | | | | | | Add configuration settings to abort HTTP requests if the transfer rate drops below a threshold for a specified length of time. Environment variables override config file settings. Signed-off-by: Nick Hengeveld <nickh@reactrix.com> Signed-off-by: Junio C Hamano <junkio@cox.net>
| * | git-daemon: timeout, eliminate double DWIMH. Peter Anvin2005-10-19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It turns out that not only did git-daemon do DWIM, but git-upload-pack does as well. This is bad; security checks have to be performed *after* canonicalization, not before. Additionally, the current git-daemon can be trivially DoSed by spewing SYNs at the target port. This patch adds a --strict option to git-upload-pack to disable all DWIM, a --timeout option to git-daemon and git-upload-pack, and an --init-timeout option to git-daemon (which is typically set to a much lower value, since the initial request should come immediately from the client.) Signed-off-by: H. Peter Anvin <hpa@zytor.com> Signed-off-by: Junio C Hamano <junkio@cox.net>
* | | Do not ask for objects known to be complete.Junio C Hamano2005-10-18
|/ / | | | | | | | | | | | | | | On top of optimization by Linus not to ask refs that already match, we can walk our refs and not issue "want" for things that are known to be reachable from them. Signed-off-by: Junio C Hamano <junkio@cox.net>
* | Even when overwriting tags, report if they are changed or not.Junio C Hamano2005-10-18
| | | | | | | | Signed-off-by: Junio C Hamano <junkio@cox.net>
* | Optimize common case of git-rev-listLinus Torvalds2005-10-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I took a look at webgit, and it looks like at least for the "projects" page, the most common operation ends up being basically git-rev-list --header --parents --max-count=1 HEAD Now, the thing is, the way "git-rev-list" works, it always keeps on popping the parents and parsing them in order to build the list of parents, and it turns out that even though we just want a single commit, git-rev-list will invariably look up _three_ generations of commits. It will parse: - the commit we want (it obviously needs this) - it's parent(s) as part of the "pop_most_recent_commit()" logic - it will then pop one of the parents before it notices that it doesn't need any more - and as part of popping the parent, it will parse the grandparent (again due to "pop_most_recent_commit()". Now, I've strace'd it, and it really is pretty efficient on the whole, but if things aren't nicely cached, and with long-latency IO, doing those two extra objects (at a minimum - if the parent is a merge it will be more) is just wasted time, and potentially a lot of it. So here's a quick special-case for the trivial case of "just one commit, and no date-limits or other special rules". Signed-off-by: Linus Torvalds <torvalds@osdl.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
* | revised^2: git-daemon extra paranoia, and path DWIMH. Peter Anvin2005-10-18
| | | | | | | | | | | | | | | | | | | | | | | | | | This patch adds some extra paranoia to the git-daemon filename test. In particular, it now rejects pathnames containing //; it also adds a redundant test for pathname absoluteness (belts and suspenders.) A single / at the end of the path is still permitted, however, and the .git and /.git append DWIM stuff is now handled in an integrated manner, which means the resulting path will always be subjected to pathname checks. Signed-off-by: H. Peter Anvin <hpa@zytor.com> Signed-off-by: Junio C Hamano <junkio@cox.net>
* | Remove unused include.Junio C Hamano2005-10-18
| | | | | | | | Signed-off-by: Junio C Hamano <junkio@cox.net>
* | git-fetch-pack: avoid unnecessary zero packingLinus Torvalds2005-10-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If everything is up-to-date locally, we don't need to even ask for a pack-file from the remote, or try to unpack it. This is especially important for tags - since the pack-file common commit logic is based purely on the commit history, it will never be able to find a common tag, and will thus always end up re-fetching them. Especially notably, if the tag points to a non-commit (eg a tagged tree), the pack-file would be unnecessarily big, just because it cannot any most recent common point between commits for pruning. Short-circuiting the case where we already have that reference means that we avoid a lot of these in the common case. NOTE! This only matches remote ref names against the same local name, which works well for tags, but is not as generic as it could be. If we ever need to, we could match against _any_ local ref (if we have it, we have it), but this "match against same name" is simpler and more efficient, and covers the common case. Renaming of refs is common for branch heads, but since those are always commits, the pack-file generation can optimize that case. In some cases we might still end up fetching pack-files unnecessarily, but this at least avoids the re-fetching of tags over and over if you use a regular git fetch --tags ... which was the main reason behind the change. Signed-off-by: Linus Torvalds <torvalds@osdl.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
* | No funny names on cygwin...Johannes Schindelin2005-10-18
| | | | | | | | | | | | | | | | On FAT/NTFS, filenames cannot contain tabs. So t3300-funny-names would reliably fail already when trying to create such files. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <junkio@cox.net>
* | Ignore more generated filesJohannes Schindelin2005-10-18
| | | | | | | | | | | | | | | | Since git-status now shows the "other" files, too, bring .gitignore up-to-date. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <junkio@cox.net>
* | Fix cvsimport warning when called without --no-cvs-directJohannes Schindelin2005-10-18
| | | | | | | | | | | | | | Perl was warning that $opt_p was undefined in that case. Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de> Signed-off-by: Junio C Hamano <junkio@cox.net>
* | git-checkout: revert specific paths to either index or a given tree-ish.Junio C Hamano2005-10-18
| | | | | | | | | | | | | | | | | | | | When extra paths arguments are given, git-checkout reverts only those paths to either the version recorded in the index or the version recorded in the given tree-ish. This has been on the TODO list for quite a while. Signed-off-by: Junio C Hamano <junkio@cox.net>
* | Teach git-add and git-commit to handle filenames starting with '-'.Junio C Hamano2005-10-18
| | | | | | | | | | | | | | | | | | | | Recent '--' fixes to "git diff" by Linus made it possible to specify filenames that start with '-'. But in order to do that, you need to be able to add and commit such file to begin with. Teach git-add and git-commit to honor the same '--' convention. Signed-off-by: Junio C Hamano <junkio@cox.net>
* | Handle "-" at beginning of filenames, part 3Linus Torvalds2005-10-18
| | | | | | | | | | | | | | | | | | This fixes the default built-in exec() of "diff" to add a "--" before the filenames, so that if a filename starts with a "-", the diff program won't think it's an option. Signed-off-by: Linus Torvalds <torvalds@osdl.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
* | Teach "git diff" to handle filenames starting with '-'Linus Torvalds2005-10-18
| | | | | | | | | | | | | | | | | | | | It adds "--" to the git-diff.sh scripts, to keep any filenames that start with a "-" from being confused with an option. But in order to do that, it needs to teach git-diff-files to honor "--". Signed-off-by: Linus Torvalds <torvalds@osdl.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
* | Avoid ambiguity between refname and filename in rev-parseLinus Torvalds2005-10-18
| | | | | | | | | | | | | | | | | | | | | | | | Although it really is very convenient, not requiring explicit '-r' option to name revs is sometimes ambiguous. Usually we allow a "--" to say where a filename starts when it _is_ ambiguous. However, we fail that at times. In particular, git-rev-parse fails it. Signed-off-by: Linus Torvalds <torvalds@osdl.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
* | Forward port the "funny ref avoidance" in clone and fetch from maint branch.Junio C Hamano2005-10-17
| | | | | | | | | | | | | | | | Somehow I forgot to forward port these fixes. "git clone" from a repository prepared with the latest update-server-info would fail without this patch. Signed-off-by: Junio C Hamano <junkio@cox.net>