summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2006-05-28Fix memory leak in "git rev-list --objects"Libravatar Linus Torvalds1-0/+3
Martin Langhoff points out that "git repack -a" ends up using up a lot of memory for big archives, and that git cvsimport probably should do only incremental repacks in order to avoid having repacking flush all the caches. The big majority of the memory usage of repacking is from git rev-list tracking all objects, and this patch should go a long way in avoiding the excessive memory usage: the bulk of it was due to the object names being leaked from the tree parser. For the historic Linux kernel archive, this simple patch does: Before: /usr/bin/time git-rev-list --all --objects > /dev/null 72.45user 0.82system 1:13.55elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+0outputs (0major+125376minor)pagefaults 0swaps After: /usr/bin/time git-rev-list --all --objects > /dev/null 75.22user 0.48system 1:16.34elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+0outputs (0major+43921minor)pagefaults 0swaps where we do end up wasting a bit of time on some extra strdup()s (which could be avoided, but that would require tracking where the pathnames came from), but we avoid a lot of memory usage. Minor page faults track maximum RSS very closely (each page fault maps in one page into memory), so the reduction from 125376 page faults to 43921 means a rough reduction of VM footprint from almost half a gigabyte to about a third of that. Those numbers were also double-checked by looking at "top" while the process was running. (Side note: at least part of the remaining VM footprint is the mapping of the 177MB pack-file, so the remaining memory use is at least partly "well behaved" from a project caching perspective). For the current git archive itself, the memory usage for a "--all --objects" rev-list invocation dropped from 7128 pages to 2318 (27MB to 9MB), so the reduction seems to hold for much smaller projects too. For regular "git-rev-list" usage (ie without the "--objects" flag) this patch has no impact. Signed-off-by: Linus Torvalds <torvalds@osdl.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-05-28gitview: Move the console error messages to message dialogLibravatar Aneesh Kumar K.V1-2/+7
Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-05-28gitview: Add key binding for F5.Libravatar Aneesh Kumar K.V2-6/+17
Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-05-28Let git-clone to pass --template=dir option to git-init-db.Libravatar Junio C Hamano2-4/+15
Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-05-28Make cvsexportcommit create parent directories as needed.Libravatar Yann Dirson1-5/+32
This is a quick port of my initial patch for 1.0.7, that I had forgotten to post. Possibly needs some testing before applying to master. Signed-off-by: Yann Dirson <ydirson@altern.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-05-28Document current cvsexportcommit limitations.Libravatar Yann Dirson1-0/+7
Since there is no bugtracker that I know of, let's just use the scripts themselves to document their limitations. Signed-off-by: Yann Dirson <ydirson@altern.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-05-28Do not call 'cmp' with non-existant -q flag.Libravatar Yann Dirson1-1/+1
I cannot find when that flag was removed if it ever existed, I can find nothing about it in the ChangeLog and NEWS file of GNU diff. The current flag is -s aka --quiet aka --silent, so let's use -s, assuming it is a portable flag. Feel free to lart me with a POSIX bible if needed. Signed-off-by: Yann Dirson <ydirson@altern.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-05-28Fix "--abbrev=xyz" for revision listingLibravatar Linus Torvalds1-0/+8
The revision argument parsing was happily parsing "--abbrev", but it didn't parse "--abbrev=<n>". Which was hidden by the fact that the diff options _would_ parse --abbrev=<n>, so it would actually silently parse it, it just wouldn't use it for the same things that a plain "--abbrev" was used for. Which seems a bit insane. With this patch, if you do "git log --abbrev=10" it will abbreviate the merge parent commit ID's to ten hex characters, which was probably what you expected. Signed-off-by: Linus Torvalds <torvalds@osdl.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-05-28t1002: use -U0 instead of --unified=0Libravatar Linus Torvalds1-10/+10
Using "-U0" is definitely more portable than using "--unified=0", so we should do that regardless. Signed-off-by: Linus Torvalds <torvalds@osdl.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-05-28format-patch: -n and -k are mutually exclusive.Libravatar Junio C Hamano1-1/+1
Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-05-26Call builtin ls-tree in git-cat-file -pLibravatar Petr Baudis1-1/+1
Signed-off-by: Petr Baudis <pasky@suse.cz> Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-05-26built-in format-patch: various fixups.Libravatar Junio C Hamano1-2/+11
- The --start-number handling introduced breakage in the normal code path. It started numbering at 0 when not --numbered, for example. - When generating one file per patch, we needlessly added an extra blank line in front for second and subsequent files. Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-05-26Add instructions to commit template.Libravatar Martin Waitz1-0/+3
New users can be irritated by the git status text in their editor. Let's give them a short help. Signed-off-by: Martin Waitz <tali@admingilde.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-05-25git-format-patch --start-number <n>Libravatar Johannes Schindelin1-3/+13
Since the "a..b c..d" syntax is interpreted as "b ^a d ^c" as other range-ish commands, if you want to format a..b and then c..d and end up with files consecutively numbered, the second run needs to be able to tell the command what number to start from. This does not imply --numbered (which gives [PATCH n/m] to the subject). Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-05-25Don't write directly to a make target ($@).Libravatar Jim Meyering1-14/+20
Otherwise, if make is suspended, or killed with prejudice, or if the system crashes, you could be left with an up-to-date, yet corrupt, generated file. I left off the `clean' addition, because I believe "make clean" should not remove wildcard patterns like "*+", on the off-chance that someone uses names like that for files they care about. Besides, in practice, those temporary files are left behind so rarely that they're not a bother, and they're removed again as part of the next build. [jc: sign-off?] Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-05-25bogus "fatal: Not a git repository"Libravatar Linus Torvalds1-1/+2
I was just testing that "git ls-remote" change by Junio, and when you're not in a git repository, it gives this totally bogus warning. The _target_ obviously has to be a git repository, but there's no reason why you'd have to be in a local git repo when doing an ls-remote. The reason is commit 73136b2e8a8ee024320c5ac6a0f14f912432bf03 by Dscho: it adds calls to git-repo-config in git-parse-remote.sh to get the remote shorthands etc. Now, either we should just hide and ignore the error from git-repo-config (probably bad, because some errors _are_ valid - like git-repo-config failing due to bad syntax in the config file), or we should just make git-repo-config quietly handle the case of not being in a git repository. This does the latter: just quietly accepting (and doing nothing - trying to set a value will result in the lock-file failing) our lot in life sounds better than dying with a bogus error message. Signed-off-by: Linus Torvalds <torvalds@osdl.org> Acked-By: Johannes Schindelin <Johannes.Schindelin@gmx.de> Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-05-25Documentation/Makefile: remove extra /Libravatar Martin Waitz2-4/+4
As both DESTDIR and the prefix are supposed to be absolute pathnames they can simply be concatenated without an extra / (like in the main Makefile). The extra slash may even break installation on Windows. [jc: adjusted an earlier workaround for this problem in the dist-doc target in the main Makefile as well. ] Signed-off-by: Martin Waitz <tali@admingilde.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-05-25cvsimport: avoid "use" with :tagLibravatar Jeff King1-1/+1
Avoid "use POSIX qw(strftime dup2 :errno_h)"; it was reported that a Perl installations on Mandrake 9.1 did not like it, even though it understood "use POSIX qw(:errno_h)". Funny. Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-05-24cat-file: document -p optionLibravatar Jeff King1-2/+7
Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-05-24Built git-upload-tar should be ignored.Libravatar Shawn Pearce1-0/+1
Signed-off-by: Shawn O. Pearce <spearce@spearce.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-05-24ls-remote: fix rsync:// to report HEADLibravatar Junio C Hamano1-1/+9
This prevented recent git-clone from checking out the working tree files in the cloned repository. Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-05-24fetch.c: remove an unused variable and dead code.Libravatar Junio C Hamano2-20/+3
Funnily enough, this variable was never assigned ever since it was introduced, and has been protecting some code that has never been executed. Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-05-24Clean up sha1 file writingLibravatar Linus Torvalds1-61/+78
This cleans up and future-proofs the sha1 file writing in sha1_file.c. In particular, instead of doing a simple "write()" call and just verifying that it succeeds (or - as in one place - just assuming it does), it uses "write_buffer()" to write data to the file descriptor while correctly checking for partial writes, EINTR etc. It also splits up write_sha1_to_fd() to be a lot more readable: if we need to re-create the compressed object, we do so in a separate helper function, making the logic a whole lot more modular and obvious. Signed-off-by: Linus Torvalds <torvalds@osdl.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-05-24Builtin git-cat-fileLibravatar Timo Hirvonen4-5/+8
Signed-off-by: Timo Hirvonen <tihirvon@gmail.com> Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-05-24Merge branch 'jc/fmt-patch'Libravatar Junio C Hamano1-7/+85
* jc/fmt-patch: builtin format-patch: squelch content-type for 7-bit ASCII CMIT_FMT_EMAIL: Q-encode Subject: and display-name part of From: fields.
2006-05-24Merge branch 'be/tag'Libravatar Junio C Hamano3-31/+61
* be/tag: add more informative error messages to git-mktag remove the artificial restriction tagsize < 8kb
2006-05-24Merge branch 'js/fmt-patch'Libravatar Junio C Hamano17-373/+319
This makes "git format-patch" a built-in. * js/fmt-patch: git-rebase: use canonical A..B syntax to format-patch git-format-patch: now built-in. fmt-patch: Support --attach fmt-patch: understand old <his> notation Teach fmt-patch about --keep-subject Teach fmt-patch about --numbered fmt-patch: implement -o <dir> fmt-patch: output file names to stdout Teach fmt-patch to write individual files. Use RFC2822 dates from "git fmt-patch". git-fmt-patch: thinkofix to show [PATCH] properly. rename internal format-patch wip Minor tweak on subject line in --pretty=email Tentative built-in format-patch.
2006-05-24Merge branch 'jc/builtin-n-tar-tree'Libravatar Junio C Hamano15-28/+202
This pulls in "make many commands built-in" branches. * jc/builtin-n-tar-tree: built-in tar-tree and remote tar-tree Builtin git-diff-files, git-diff-index, git-diff-stages, and git-diff-tree. Builtin git-show-branch. Builtin git-apply. Builtin git-commit-tree. Builtin git-read-tree. Builtin git-tar-tree. Builtin git-ls-tree. Builtin git-ls-files.
2006-05-24Merge branch 'jc/fetch-sorted'Libravatar Junio C Hamano2-16/+52
* jc/fetch-sorted: fetch-pack: output refs in the order they were given on the command line.
2006-05-24Merge branch 'lt/dirwalk'Libravatar Junio C Hamano13-550/+896
This makes 'git add' and 'git rm' built-ins. * lt/dirwalk: Add builtin "git rm" command Move pathspec matching from builtin-add.c into dir.c Prevent bogus paths from being added to the index. builtin-add: fix unmatched pathspec warnings. Remove old "git-add.sh" remnants builtin-add: warn on unmatched pathspecs Do "git add" as a builtin Clean up git-ls-file directory walking library interface libify git-ls-files directory traversal
2006-05-23--summary output should print immediately after stats.Libravatar Sean1-1/+4
Currently the summary is displayed after the patch. Fix this so that the output order is stat-summary-patch. As a consequence of the way this is coded, the --summary option will only actually display summary data if combined with either the --stat or --patch-with-stat option. Signed-off-by: Sean Estabrooks <seanlkml@sympatico.ca> Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-05-23git-svn: ignore expansion of svn:keywordsLibravatar Eric Wong5-60/+254
Unlike my earlier test patch, this also checks svn:eol-style and makes sure it's applied to working copy updates. This is definitely more correct than my original attempt at killing keyword expansions, but I still haven't tested it enough to know. Feedback would be much appreciated. Also changed assert_svn_wc_clean() to only work on the svn working copy. This requires a separate call to assert_tree() to check wc integrity against git in preparation for another change I'm planning. Signed-off-by: Eric Wong <normalperson@yhbt.net> Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-05-23git-svn: starting a 1.1.0-pre development versionLibravatar Eric Wong1-1/+1
Some not-very-well-tested changes coming... Signed-off-by: Eric Wong <normalperson@yhbt.net> Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-05-23cvsimport: set up commit environment in perl instead of using envLibravatar Jeff King1-7/+6
Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-05-23cvsimport: do not barf on creation of an empty file.Libravatar Junio C Hamano1-1/+1
When the server says "created this file whose length is empty", we mistakenly said "oops, the server did not say a sensible thing". Fix it. Spotted and fixed by Linus, acked by Martin. Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-05-23Merge branch 'jc/tartree' into jc/builtin-n-tar-treeLibravatar Junio C Hamano5-8/+143
* jc/tartree: built-in tar-tree and remote tar-tree
2006-05-23add more informative error messages to git-mktagLibravatar Björn Engelmann1-11/+15
Signed-off-by: Björn Engelmann <BjEngelmann@gmx.de> Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-05-23remove the artificial restriction tagsize < 8kbLibravatar Björn Engelmann3-20/+46
Signed-off-by: Björn Engelmann <BjEngelmann@gmx.de> Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-05-23Builtin git-diff-files, git-diff-index, git-diff-stages, and git-diff-tree.Libravatar Peter Eriksen7-11/+24
Signed-off-by: Peter Eriksen <s022018@student.dtu.dk> Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-05-23Builtin git-show-branch.Libravatar Peter Eriksen4-7/+10
Signed-off-by: Peter Eriksen <s022018@student.dtu.dk> Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-05-23Builtin git-apply.Libravatar Peter Eriksen4-5/+10
Signed-off-by: Peter Eriksen <s022018@student.dtu.dk> Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-05-23Builtin git-commit-tree.Libravatar Peter Eriksen4-6/+9
Signed-off-by: Peter Eriksen <s022018@student.dtu.dk> Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-05-23Builtin git-read-tree.Libravatar Peter Eriksen4-5/+8
Signed-off-by: Peter Eriksen <s022018@student.dtu.dk> Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-05-23Builtin git-tar-tree.Libravatar Peter Eriksen4-5/+10
Signed-off-by: Peter Eriksen <s022018@student.dtu.dk> Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-05-23Builtin git-ls-tree.Libravatar Peter Eriksen4-6/+9
Signed-off-by: Peter Eriksen <s022018@student.dtu.dk> Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-05-23Builtin git-ls-files.Libravatar Peter Eriksen4-5/+8
Signed-off-by: Peter Eriksen <s022018@student.dtu.dk> Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-05-23Add git-quiltimport to .gitignore.Libravatar Peter Eriksen1-0/+1
Signed-off-by: Peter Eriksen <s022018@student.dtu.dk> Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-05-23cvsimport: introduce _fetchfile() method and used a 1M buffer to read()Libravatar Martin Langhoff1-17/+19
File retrieval from the socket is now moved to _fetchfile() and we now cap reads at 1MB. This should limit the memory growth of the cvsimport process. Signed-off-by: Martin Langhoff <martin@catalyst.net.nz> Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-05-23cvsimport: cleanup commit functionLibravatar Jeff King1-86/+64
This change attempts to clean up the commit function to make it a bit easier to read (or at least the first half of it). It also improves robustness and performance. Specifically: - report get_headref errors on opening ref unless the error is ENOENT - use regex to check for sha1 instead of length - use lexically scoped filehandles which get cleaned up automagically - check for error on both 'print' and 'close' (since output is buffered) - avoid "fork, do some perl, then exec" in commit(). It's not necessary, and we probably end up COW'ing parts of the perl process. Plus the code is much smaller because we can use open2() - avoid calling strftime over and over (mainly a readability cleanup) Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-05-23cvsimport: use git-update-index --index-infoLibravatar Jeff King1-23/+13
This should reduce the number of git-update-index forks required per commit. We now do adds/removes in one call, and we are no longer forced to deal with argv limitations. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <junkio@cox.net>