summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2006-02-23Merge fixes early for next maint series.Libravatar Junio C Hamano9-18/+82
2006-02-23Merge branches 'jc/fix-co-candy', 'jc/fix-rename-leak' and 'ar/fix-win' into ↵Libravatar Junio C Hamano4-5/+67
maint * jc/fix-co-candy: checkout - eye candy. * jc/fix-rename-leak: diffcore-rename: plug memory leak. * ar/fix-win: fix t5600-clone-fail-cleanup.sh on windows
2006-02-23Merge branch 'ak/gitview'Libravatar Junio C Hamano1-13/+35
* ak/gitview: gitview: Display the lines joining commit nodes clearly.
2006-02-23gitview: Display the lines joining commit nodes clearly.Libravatar Aneesh Kumar K.V1-13/+35
Since i wanted to limit the graph box size i was resetting the window after an index of 5. This result in line joining commit nodes to pass over nodes which are not related. The changes fixes the same Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@gmail.com> Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-02-23fix t5600-clone-fail-cleanup.sh on windowsLibravatar Alex Riesen1-1/+1
In windows you cannot remove current or opened directory, an opened file, a running program, a loaded library, etc... [jc: signoffs? With a minor quoting fix.] Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-02-22diffcore-rename: plug memory leak.Libravatar Junio C Hamano1-1/+3
Spotted by Nicolas Pitre. Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-02-22Merge branch 'ml/cvs'Libravatar Junio C Hamano3-1/+2539
* ml/cvs: Introducing git-cvsserver -- a CVS emulator for git.
2006-02-22Merge branch 'ra/anno'Libravatar Junio C Hamano2-0/+357
* ra/anno: Use Ryan's git-annotate instead of jsannotate Add git-annotate, a tool for assigning blame.
2006-02-22Give no terminating LF to error() function.Libravatar Junio C Hamano6-13/+15
Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-02-22checkout - eye candy.Libravatar Junio C Hamano3-3/+63
This implements "eye candy" similar to the pack-object/unpack-object to entertain users while a large tree is being checked out after a clone or a pull. Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-02-22git-rm: Fix to properly handle files with spaces, tabs, newlines, etc.Libravatar Carl Worth2-34/+55
New tests are added to the git-rm test case to cover this as well. Signed-off-by: Carl Worth <cworth@cworth.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-02-22Add new git-rm command with documentationLibravatar Carl Worth5-1/+200
This adds a git-rm command which provides convenience similar to git-add, (and a bit more since it takes care of the rm as well if given -f). Like git-add, git-rm expands the given path names through git-ls-files. This means it only acts on files listed in the index. And it does act recursively on directories by default, (no -r needed as in the case of rm itself). When it recurses, it does not remove empty directories that are left behind. Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-02-22Merge fixes up to GIT 1.2.3Libravatar Junio C Hamano3-52/+100
2006-02-22git-fetch: follow tag only when tracking remote branch.Libravatar Junio C Hamano1-14/+19
Unless --no-tags flag was given, git-fetch tried to always follow remote tags that point at the commits we picked up. It is not very useful to pick up tags from remote unless storing the fetched branch head in a local tracking branch. This is especially true if the fetch is done to merge the remote branch into our current branch as one-shot basis (i.e. "please pull"), and is even harmful if the remote repository has many irrelevant tags. This proposed update disables the automated tag following unless we are storing the a fetched branch head in a local tracking branch. Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-02-22pack-objects eye-candy: finishing touches.Libravatar Junio C Hamano1-10/+33
This updates the progress output to match "every one second or every percent whichever comes early" used by unpack-objects, as discussed on the list. Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-02-22also adds progress when actually writing a packLibravatar Nicolas Pitre1-3/+16
If that pack is big, it takes significant time to write and might benefit from some more eye candies as well. This is however disabled when the pack is written to stdout since in that case the output is usually piped into unpack_objects which already does its own progress reporting. Signed-off-by: Nicolas Pitre <nico@cam.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-02-22nicer eye candies for pack-objectsLibravatar Nicolas Pitre1-31/+25
This provides a stable and simpler progress reporting mechanism that updates progress as often as possible but accurately not updating more than once a second. The deltification phase is also made more interesting to watch (since repacking a big repository and only seeing a dot appear once every many seconds is rather boring and doesn't provide much food for anticipation). Signed-off-by: Nicolas Pitre <nico@cam.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-02-22Keep Porcelainish from failing by broken ident after making changes.Libravatar Junio C Hamano4-1/+13
"empty ident not allowed" error makes commit-tree fail, so we are already safer in that we would not end up with commit objects that have bogus names on the author or committer fields. However, before commit-tree is called there are already changes made to the index file and the working tree. The operation can be resumed after fixing the environment problem, but when this triggers to a newcomer with unusable gecos, the first question becomes "what did I lose and how would I recover". This patch modifies some Porcelainish commands to verify GIT_COMMITTER_IDENT as soon as we know we are going to make some commits before doing much damage to prevent confusion. Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-02-22Delay "empty ident" errors until they really matter.Libravatar Junio C Hamano4-29/+32
Previous one warned people upfront to encourage fixing their environment early, but some people just use repositories and git tools read-only without making any changes, and in such a case there is not much point insisting on them having a usable ident. This round attempts to move the error until either "git-var" asks for the ident explicitly or "commit-tree" wants to use it. Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-02-22Make "empty ident" error message a bit more helpful.Libravatar Junio C Hamano1-0/+14
It appears that some people who did not care about having bogus names in their own commit messages are bitten by the recent change to require a sane environment [*1*]. While it was a good idea to prevent people from using bogus names to create commits and doing sign-offs, the error message is not very informative. This patch attempts to warn things upfront and hint people how to fix their environments. [Footnote] *1* The thread is this one. http://marc.theaimsgroup.com/?t=113868084800004 Especially this message. http://marc.theaimsgroup.com/?m=113932830015032 Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-02-22pack-objects: avoid delta chains that are too long.Libravatar Junio C Hamano1-8/+35
This tries to rework the solution for the excess delta chain problem. An earlier commit worked it around ``cheaply'', but repeated repacking risks unbound growth of delta chains. This version counts the length of delta chain we are reusing from the existing pack, and makes sure a base object that has sufficiently long delta chain does not get deltified. Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-02-22git-repack: allow passing a couple of flags to pack-objects.Libravatar Junio C Hamano2-7/+16
A new flag -q makes underlying pack-objects less chatty. A new flag -f forces delta to be recomputed from scratch. Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-02-22pack-objects: finishing touches.Libravatar Junio C Hamano2-32/+91
This introduces --no-reuse-delta option to disable reusing of existing delta, which is a large part of the optimization introduced by this series. This may become necessary if repeated repacking makes delta chain too long. With this, the output of the command becomes identical to that of the older implementation. But the performance suffers greatly. It still allows reusing non-deltified representations; there is no point uncompressing and recompressing the whole text. It also adds a couple more statistics output, while squelching it under -q flag, which the last round forgot to do. $ time old-git-pack-objects --stdout >/dev/null <RL Generating pack... Done counting 184141 objects. Packing 184141 objects.................... real 12m8.530s user 11m1.450s sys 0m57.920s $ time git-pack-objects --stdout >/dev/null <RL Generating pack... Done counting 184141 objects. Packing 184141 objects..................... Total 184141, written 184141 (delta 138297), reused 178833 (delta 134081) real 0m59.549s user 0m56.670s sys 0m2.400s $ time git-pack-objects --stdout --no-reuse-delta >/dev/null <RL Generating pack... Done counting 184141 objects. Packing 184141 objects..................... Total 184141, written 184141 (delta 134833), reused 47904 (delta 0) real 11m13.830s user 9m45.240s sys 0m44.330s There is one remaining issue when --no-reuse-delta option is not used. It can create delta chains that are deeper than specified. A<--B<--C<--D E F G Suppose we have a delta chain A to D (A is stored in full either in a pack or as a loose object. B is depth1 delta relative to A, C is depth2 delta relative to B...) with loose objects E, F, G. And we are going to pack all of them. B, C and D are left as delta against A, B and C respectively. So A, E, F, and G are examined for deltification, and let's say we decided to keep E expanded, and store the rest as deltas like this: E<--F<--G<--A Oops. We ended up making D a bit too deep, didn't we? B, C and D form a chain on top of A! This is because we did not know what the final depth of A would be, when we checked objects and decided to keep the existing delta. Unfortunately, deferring the decision until just before the deltification is not an option. To be able to make B, C, and D candidates for deltification with the rest, we need to know the type and final unexpanded size of them, but the major part of the optimization comes from the fact that we do not read the delta data to do so -- getting the final size is quite an expensive operation. To prevent this from happening, we should keep A from being deltified. But how would we tell that, cheaply? To do this most precisely, after check_object() runs, each object that is used as the base object of some existing delta needs to be marked with the maximum depth of the objects we decided to keep deltified (in this case, D is depth 3 relative to A, so if no other delta chain that is longer than 3 based on A exists, mark A with 3). Then when attempting to deltify A, we would take that number into account to see if the final delta chain that leads to D becomes too deep. However, this is a bit cumbersome to compute, so we would cheat and reduce the maximum depth for A arbitrarily to depth/4 in this implementation. Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-02-22pack-objects: reuse data from existing packs.Libravatar Junio C Hamano3-58/+332
When generating a new pack, notice if we have already needed objects in existing packs. If an object is stored deltified, and its base object is also what we are going to pack, then reuse the existing deltified representation unconditionally, bypassing all the expensive find_deltas() and try_deltas() calls. Also, notice if what we are going to write out exactly match what is already in an existing pack (either deltified or just compressed). In such a case, we can just copy it instead of going through the usual uncompressing & recompressing cycle. Without this patch, in linux-2.6 repository with about 1500 loose objects and a single mega pack: $ git-rev-list --objects v2.6.16-rc3 >RL $ wc -l RL 184141 RL $ time git-pack-objects p <RL Generating pack... Done counting 184141 objects. Packing 184141 objects.................... a1fc7b3e537fcb9b3c46b7505df859f0a11e79d2 real 12m4.323s user 11m2.560s sys 0m55.950s With this patch, the same input: $ time ../git.junio/git-pack-objects q <RL Generating pack... Done counting 184141 objects. Packing 184141 objects..................... a1fc7b3e537fcb9b3c46b7505df859f0a11e79d2 Total 184141, written 184141, reused 182441 real 1m2.608s user 0m55.090s sys 0m1.830s Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-02-22detect broken alternates.Libravatar Junio C Hamano1-3/+16
The real problem triggered an earlier fix was that an alternate entry was pointing at a removed directory. Complaining on object/pack directory that cannot be opendir-ed produces noise in an ancient repository that does not have object/pack directory and has never been packed. Detect the real user error and report it. Also if opendir failed for other reasons (e.g. no read permissions), report that as well. Spotted by Andrew Vasquez <andrew.vasquez@qlogic.com>. Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-02-22gitview: ls-remote invocation shellquote safety.Libravatar Junio C Hamano1-5/+1
This will allow you to point GIT_DIR at directories with funny names. Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-02-22Introducing git-cvsserver -- a CVS emulator for git.Libravatar Martin Langhoff3-0/+2539
git-cvsserver is highly functional. However, not all methods are implemented, and for those methods that are implemented, not all switches are implemented. All the common read operations are implemented, and add/remove/commit are supported. Testing has been done using both the CLI CVS client, and the Eclipse CVS plugin. Most functionality works fine with both of these clients. Currently git-cvsserver only works over SSH connections, see the Documentation for more details on how to configure your client. It does not support pserver for anonymous access but it should not be hard to implement. Anonymous access will need tighter input validation. In our very informal tests, it seems to be significantly faster than a real CVS server. This utility depends on a version of git-cvsannotate that supports -S and on DBD::SQLite. Licensed under GPLv2. Copyright The Open University UK. Authors: Martyn Smith <martyn@catalyst.net.nz> Martin Langhoff <martin@catalyst.net.nz> Signed-off-by: Martin Langhoff <martin@catalyst.net.nz> Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-02-22Use Ryan's git-annotate instead of jsannotateLibravatar Johannes Schindelin1-5/+40
Since Ryan's git-annotate is much faster, and has support for renames, it is likely it goes into the mainstream git soon. Adapt it a little to work with gitcvs, and actually use it. Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de> Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-02-22rev-list.c: fix non-grammatical comments.Libravatar Junio C Hamano1-2/+2
Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-02-22Merge git://git.kernel.org/pub/scm/gitk/gitkLibravatar Junio C Hamano1-48/+34
* git://git.kernel.org/pub/scm/gitk/gitk: gitk: Make "find" on "Files" work again.
2006-02-22Merge branch 'fix'Libravatar Junio C Hamano5-2/+39
* fix: git-push: Update documentation to describe the no-refspec behavior. format-patch: pretty-print timestamp correctly. git-add: Add support for --, documentation, and test.
2006-02-21Merge branch 'jc/perl'Libravatar Junio C Hamano5-30/+63
* jc/perl: cvsimport: avoid open "-|" list form for Perl 5.6 svnimport: avoid open "-|" list form for Perl 5.6 send-email: avoid open "-|" list form for Perl 5.6 rerere: avoid open "-|" list form for Perl 5.6 fmt-merge-msg: avoid open "-|" list form for Perl 5.6
2006-02-21Merge branch 'jc/pack-reuse'Libravatar Junio C Hamano6-73/+442
* jc/pack-reuse: pack-objects: avoid delta chains that are too long. git-repack: allow passing a couple of flags to pack-objects. pack-objects: finishing touches. pack-objects: reuse data from existing packs.
2006-02-21Merge branch 'jc/nostat'Libravatar Junio C Hamano16-27/+222
* jc/nostat: cache_name_compare() compares name and stage, nothing else. "assume unchanged" git: documentation. ls-files: split "show-valid-bit" into a different option. "Assume unchanged" git: --really-refresh fix. ls-files: debugging aid for CE_VALID changes. "Assume unchanged" git: do not set CE_VALID with --refresh "Assume unchanged" git
2006-02-21Merge branch 'js/portable'Libravatar Junio C Hamano2-33/+50
* js/portable: Fix "gmake -j" Really honour NO_PYTHON avoid makefile override warning Fixes for ancient versions of GNU make
2006-02-21git-push: Update documentation to describe the no-refspec behavior.Libravatar Carl Worth1-0/+6
It turns out that the git-push documentation didn't describe what it would do when not given a refspec, (not on the command line, nor in a remotes file). This is fairly important for the user who is trying to understand operations such as: git clone git://something/some/where # hack, hack, hack git push origin I tracked the mystery behavior down to git-send-pack and lifted the relevant portion of its documentation up to git-push, (namely that all refs existing both locally and remotely are updated). Signed-off-by: Carl Worth <cworth@cworth.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-02-21gitview: Use monospace font to draw the branch and tag nameLibravatar aneesh.kumar@gmail.com1-4/+6
This patch address the below: Use monospace font to draw branch and tag name set the font size to 13. Make the graph column resizable. This helps to accommodate large tag names Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@gmail.com> Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-02-21gitview: Read tag and branch information using git ls-remoteLibravatar aneesh.kumar@gmail.com1-36/+14
This fix the below bug Junio C Hamano <junkio@cox.net> writes: > > It does not work in my repository, since you do not seem to > handle branch and tag names with slashes in them. All of my > topic branches live in directories with two-letter names > (e.g. ak/gitview). Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@gmail.com> Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-02-21git-ls-files: Fix, document, and add test for --error-unmatch option.Libravatar Carl Worth3-0/+33
Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-02-21Fix typo in git-rebase.sh.Libravatar Jason Riedy1-1/+1
s/upsteram/upstream in git-rebase.sh. Signed-off-by: Jason Riedy <ejr@cs.berkeley.edu> Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-02-21New test to verify that when git-clone fails it cleans up the new directory.Libravatar Carl Worth1-0/+36
Signed-off-by: Carl Worth <cworth@cworth.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-02-21Merge branch 'pj/portable'Libravatar Junio C Hamano1-6/+8
* pj/portable: Makefile tweaks: Solaris 9+ dont need iconv / move up uname variables
2006-02-21format-patch: pretty-print timestamp correctly.Libravatar Junio C Hamano1-1/+1
Perl is not C and does not truncate the division result. Arghh! Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-02-21git-rebase: Clarify usage statement and copy it into the actual documentation.Libravatar Carl Worth2-12/+56
I found a paper thin man page for git-rebase, but was quite happy to see something much more useful in the usage statement of the script when I went there to find out how this thing worked. Here it is cleaned up slightly and expanded a bit into the actual documentation. Signed-off-by: Carl Worth <cworth@cworth.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-02-21git-add: Add support for --, documentation, and test.Libravatar Carl Worth3-1/+32
This adds support to git-add to allow the common -- to separate command-line options and file names. It adds documentation and a new git-add test case as well. [jc: this should apply to 1.2.X maintenance series, so I reworked git-ls-files --error-unmatch test. ] Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-02-21Fix "gmake -j"Libravatar Johannes Schindelin1-3/+3
In my attempt to port git to IRIX, I broke it. Sorry. Signed-off-by: Johannes E. Schindelin <Johannes.Schindelin@gmx.de> Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-02-21Makefile tweaks: Solaris 9+ dont need iconv / move up uname variablesLibravatar Paul Jakma1-6/+8
- Solaris 9 and up do not need -liconv, so NEEDS_LIBICONV should be set only for S8. - Move the declaration of the uname variables to early in the Makefile so they can be referenced by prefix and gitexecdir variables. - gitexecdir defaults to being same as bindir, it might as well reference that variable. [jc: corrupt patch, sneakily tried to remove inclusion of GIT-VERSION-FILE I do not know why I am applying this...] Signed-off-by: Paul Jakma <paul@quagga.net> Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-02-21Merge part of jc/portable branchLibravatar Junio C Hamano9-2/+57
2006-02-21git-mktree: reverse of git-ls-tree.Libravatar Junio C Hamano2-1/+138
This reads data in the format a (non recursive) ls-tree outputs and writes a tree object to the object database. The created tree object name is output to the standard output. For convenience, the input data does not need to be sorted; the command sorts the input lines internally. By request from Tommi Virtanen. Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-02-21Merge branch 'lt/merge-tree'Libravatar Junio C Hamano2-1/+273
* lt/merge-tree: git-merge-tree: generalize the "traverse <n> trees in sync" functionality Handling large files with GIT Handling large files with GIT