summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* git-fetch/push/pull: documentation.Junio C Hamano2005-10-194-10/+18
| | | | | | | | | 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-191-9/+23
| | | | | | | | | | 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-191-8/+25
| | | | | | | | | | | | | | | 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-191-1/+1
| | | | Signed-off-by: Junio C Hamano <junkio@cox.net>
* git-clone: always keep pack sent from remote (documentation).Junio C Hamano2005-10-191-12/+3
| | | | | | 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-191-68/+4
| | | | | | | | 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-191-2/+62
| | | | | | | | 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-191-0/+29
| | | | | | | | | 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-192-7/+59
| | | | | | | | | | | | | | | | | | 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>
* Even when overwriting tags, report if they are changed or not.Junio C Hamano2005-10-181-1/+6
| | | | Signed-off-by: Junio C Hamano <junkio@cox.net>
* Optimize common case of git-rev-listLinus Torvalds2005-10-181-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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-181-21/+57
| | | | | | | | | | | | | 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-182-4/+0
| | | | Signed-off-by: Junio C Hamano <junkio@cox.net>
* git-fetch-pack: avoid unnecessary zero packingLinus Torvalds2005-10-181-6/+44
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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-181-0/+3
| | | | | | | | 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-181-0/+3
| | | | | | | | 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-181-1/+1
| | | | | | | 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-182-18/+103
| | | | | | | | | | 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-182-3/+3
| | | | | | | | | | 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-181-1/+1
| | | | | | | | | 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-182-4/+9
| | | | | | | | | | 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-181-4/+8
| | | | | | | | | | | | 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-172-2/+6
| | | | | | | | 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>
* Adjust tests for not quoting SP.Junio C Hamano2005-10-171-5/+11
| | | | Signed-off-by: Junio C Hamano <junkio@cox.net>
* Do not quote SP.Junio C Hamano2005-10-171-2/+2
| | | | | | | | | Follow the "encode minimally" principle -- our tools, including git-apply and git-status, can handle pathnames with embedded SP just fine. The only problematic ones are TAB and LF, and we need to quote the metacharacters introduced for quoting. Signed-off-by: Junio C Hamano <junkio@cox.net>
* git-apply: remove unused --show-files flag.Junio C Hamano2005-10-172-43/+2
| | | | | | | Linus says he does not use it (and the thinking behind its initial introduction), and neither Cogito nor StGIT uses it. Signed-off-by: Junio C Hamano <junkio@cox.net>
* update-index --index-info: adjust for funny-path quoting.Junio C Hamano2005-10-171-5/+17
| | | | | | | Although the sole current user uses -z to read this, we should be prepared for somebody to feed non-z format to the command. Signed-off-by: Junio C Hamano <junkio@cox.net>
* Add tests for funny pathnames.Junio C Hamano2005-10-171-0/+133
| | | | Signed-off-by: Junio C Hamano <junkio@cox.net>
* Update documentation for C-style quoting.Junio C Hamano2005-10-174-2/+33
| | | | Signed-off-by: Junio C Hamano <junkio@cox.net>
* Update git-status to new git-diff-* and git-ls-files output.Junio C Hamano2005-10-171-32/+35
| | | | Signed-off-by: Junio C Hamano <junkio@cox.net>
* Update git-diff-* to use C-style quoting for funny pathnames.Junio C Hamano2005-10-171-40/+95
| | | | Signed-off-by: Junio C Hamano <junkio@cox.net>
* Improve "git add" again.Junio C Hamano2005-10-172-15/+49
| | | | | | | | | | | | | | | This makes it possible to add paths that have funny characters (TAB and LF) in them, and makes adding many paths more efficient in general. New flag "--stdin" to update-index was initially added for different purpose, but it turns out to be a perfect match for feeding "ls-files --others -z" output to improve "git add". It also adds "--verbose" flag to update-index for use with "git add" command. Signed-off-by: Junio C Hamano <junkio@cox.net>
* Update ls-files and ls-tree to use C-style quoting for funny pathnames.Junio C Hamano2005-10-172-9/+19
| | | | Signed-off-by: Junio C Hamano <junkio@cox.net>
* Update git-apply to use C-style quoting for funny pathnames.Junio C Hamano2005-10-172-46/+186
| | | | Signed-off-by: Junio C Hamano <junkio@cox.net>
* Functions to quote and unquote pathnames in C-style.Junio C Hamano2005-10-172-2/+175
| | | | | | | | | | | | | | Following the list discussion, define two functions, quote_c_style and unquote_c_style, to help adopting the proposed way for quoting funny pathname letters for GNU patch. The rule is described in: http://marc.theaimsgroup.com/?l=git&m=112927316408690&w=2 Currently we do not support the leading '!', but we probably should barf upon seeing it. Rule B4. is interpreted to require always 3 octal digits in \XYZ notation. Signed-off-by: Junio C Hamano <junkio@cox.net>
* Merge branch 'fixes'Junio C Hamano2005-10-172-61/+68
|\
| * git-checkout-index: documentation updates.Junio C Hamano2005-10-171-13/+7
| | | | | | | | | | | | Now the behaviour of '-a' has been straightened out, document it. Signed-off-by: Junio C Hamano <junkio@cox.net>
| * make checkout-index '-a' flag saner.Linus Torvalds2005-10-171-48/+61
| | | | | | | | | | | | | | | | | | The original semantics of pretending as if all files were specified where '-a' appeared and using only the flags given so far was too confusing. Signed-off-by: Linus Torvalds <torvalds@osdl.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
* | ref-format documentation.Junio C Hamano2005-10-163-2/+66
| | | | | | | | Signed-off-by: Junio C Hamano <junkio@cox.net>
* | Sparse-directory safety fix.Junio C Hamano2005-10-161-1/+1
| | | | | | | | | | | | | | | | This will be removed when merging the second phase of Linus' "Create object subdirectories on demand" change anyway, but the code to recreate the empty .git/objects/??/ directory was confused. Signed-off-by: Junio C Hamano <junkio@cox.net>
* | Merge branch 'fixes'Junio C Hamano2005-10-161-0/+7
|\ \ | |/
| * whatchanged: document -m option from git-diff-tree.Junio C Hamano2005-10-151-0/+7
| | | | | | | | | | | | | | | | | | The documentation for git-whatchanged is meant to describe only the most frequently used options from git-diff-tree. Because "why doesn't it show merges" was asked more than once, we'd better describe '-m' option there. Signed-off-by: Junio C Hamano <junkio@cox.net>
* | We do not depend on patch.Junio C Hamano2005-10-161-2/+2
| | | | | | | | | | | | | | | | | | Deb packaging claim we depend on patch, but I think we use git-apply where it matters. When a patch does not apply with git-apply, using GNU patch still is helpful sometimes. So demote it from "Depends" to "Suggests". Signed-off-by: Junio C Hamano <junkio@cox.net>
* | Merge branch 'svn' of http://netz.smurf.noris.de/git/gitJunio C Hamano2005-10-165-5/+859
|\ \ | | | | | | | | | | | | | | | | | | [jc: I have my pre-commit hook enabled to catch trailing whitespaces, and fixed them up while merging.] Signed-off-by: Junio C Hamano <junkio@cox.net>
| * | svn commit: re-word the exit-due-to-memory-leak messageMatthias Urlichs2005-10-161-1/+2
| | | | | | | | | | | | | | | | | | Reworded the exit message, as per Kalle Valo's suggestion (but shorter). Signed-Off-By: Matthias Urlichs <smurf@smurf.noris.de>
| * | Makefile entry for git-svnimport contained a small typo.Kalle Valo2005-10-161-1/+1
| | | | | | | | | | | | Signed-Off-By: Matthias Urlichs <smurf@smurf.noris.de>
| * | svn import: copy directoriesMatthias Urlichs2005-10-111-13/+56
| | | | | | | | | | | | | | | | | | Import SVN-copied and -referenced directories correctly. Signed-Off-By: Matthias Urlichs <smurf@smurf.noris.de>
| * | svn import: Add direct HTTP accessMatthias Urlichs2005-10-112-19/+80
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Some SVN repositories that are accessible through HTTP don't like when I retrieve files using SVN methods ("internal server error"). Therefore, I added an option to get the contents using (persistent) HTTP directly. This also reduces round-trip time, from two or three requests down to one. Also corrected error handling a bit. Signed-Off-By: Matthias Urlichs <smurf@smurf.noris.de>
| * | svn import: remove some CVS cruftMatthias Urlichs2005-10-111-35/+4
| | | | | | | | | | | | | | | | | | Some remains of CVS still lingered. Removed. Signed-Off-By: Matthias Urlichs <smurf@smurf.noris.de>
| * | svn import: make -s option actually optionalMatthias Urlichs2005-10-111-1/+2
| | | | | | | | | | | | | | | | | | The -s option was accidentally not optional. Signed-Off-By: Matthias Urlichs <smurf@smurf.noris.de>