summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2007-05-30fix repack with --max-pack-sizeLibravatar Nicolas Pitre1-18/+11
Two issues here: 1) git-repack -a --max-pack-size=10 on the GIT repo dies pretty quick. There is a lot of confusion about deltas that were suposed to be reused from another pack but that get stored undeltified due to pack limit and object size doesn't match entry->size anymore. This test is not really worth the complexity for determining when it is valid so get rid of it. 2) If pack limit is reached, the object buffer is freed, including when it comes from a cached delta data. In practice the object will be stored in a subsequent pack undeltified, but let's make sure no pointer to freed data subsists by clearing entry->delta_data. I also reorganized that code a bit to make it more readable. Signed-off-by: Nicolas Pitre <nico@cam.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-05-29builtin-pack-object: cache small deltasLibravatar Martin Koegler2-0/+12
Signed-off-by: Martin Koegler <mkoegler@auto.tuwien.ac.at> Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-05-29git-pack-objects: cache small deltas between big objectsLibravatar Martin Koegler2-15/+59
Creating deltas between big blobs is a CPU and memory intensive task. In the writing phase, all (not reused) deltas are redone. This patch adds support for caching deltas from the deltifing phase, so that that the writing phase is faster. The caching is limited to small deltas to avoid increasing memory usage very much. The implemented limit is (memory needed to create the delta)/1024. Signed-off-by: Martin Koegler <mkoegler@auto.tuwien.ac.at> Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-05-29builtin-pack-objects: don't fail, if delta is not possibleLibravatar Martin Koegler1-2/+6
If builtin-pack-objects runs out of memory while finding the best deltas, it bails out with an error. If the delta index creation fails (because there is not enough memory), we can downgrade the error message to a warning and continue with the next object. Signed-off-by: Martin Koegler <mkoegler@auto.tuwien.ac.at> Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-05-29Merge branch 'db/remote'Libravatar Junio C Hamano9-539/+711
* db/remote: Move refspec pattern matching to match_refs(). Update local tracking refs when pushing Add handlers for fetch-side configuration of remotes. Move refspec parser from connect.c and cache.h to remote.{c,h} Move remote parsing into a library file out of builtin-push.
2007-05-29Merge branch 'dh/repack' (early part)Libravatar Junio C Hamano5-116/+250
* 'dh/repack' (early part): Ensure git-repack -a -d --max-pack-size=N deletes correct packs pack-objects: clarification & option checks for --max-pack-size git-repack --max-pack-size: add option parsing to enable feature git-repack --max-pack-size: split packs as asked by write_{object,one}() git-repack --max-pack-size: write_{object,one}() respect pack limit git-repack --max-pack-size: new file statics and code restructuring Alter sha1close() 3rd argument to request flush only
2007-05-29Merge branch 'np/delta'Libravatar Junio C Hamano1-64/+63
* np/delta: update diff-delta.c copyright improve delta long block matching with big files
2007-05-29Merge branch 'jc/nodelta'Libravatar Junio C Hamano1-14/+46
* jc/nodelta: builtin-pack-objects: remove unnecessary code for no-delta Teach "delta" attribute to pack-objects. pack-objects: pass fullname down to add_object_entry()
2007-05-29Merge branch 'ar/verbose'Libravatar Junio C Hamano2-3/+45
* ar/verbose: Add another verbosity level to git-fetch Verbose connect messages to show the IP addresses used
2007-05-29Merge branch 'ar/run'Libravatar Junio C Hamano2-5/+49
* ar/run: Allow environment variables to be unset in the processes started by run_command Add ability to specify environment extension to run_command Add run_command_v_opt_cd: chdir into a directory before exec
2007-05-29Merge branch 'ar/mergestat'Libravatar Junio C Hamano4-7/+20
* ar/mergestat: Add a configuration option to control diffstat after merge
2007-05-29Merge branch 'rr/cvsexport'Libravatar Junio C Hamano2-3/+10
* rr/cvsexport: Add option to cvs update before export
2007-05-29Merge branch 'maint'Libravatar Junio C Hamano8-26/+87
* maint: cvsserver: Fix some typos in asciidoc documentation cvsserver: Note that CVS_SERVER can also be specified as method variable cvsserver: Correct inetd.conf example in asciidoc documentation user-manual: fixed typo in example Add test case for $Id$ expanded in the repository git-svn: avoid md5 calculation entirely if SVN doesn't provide one Makefile: Remove git-fsck and git-verify-pack from PROGRAMS Fix stupid typo in lookup_tag() git-gui: Guess our share/git-gui/lib path at runtime if possible Correct key bindings to Control-<foo> git-gui: Tighten internal pattern match for lib/ directory
2007-05-29cvsserver: Handle 'cvs login'Libravatar Frank Lichtenheld2-3/+34
Since this is a trivial variation of the general pserver authentication, there is really no reason not to support it. Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de> Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-05-29t9400: Work around CVS' deficienciesLibravatar Frank Lichtenheld1-0/+2
If we are too fast with our changes, the file in the working copy might still have the same mtime as noted in the CVS/Entries. This will cause CVS to happily report to the server that the file is unmodified which can lead to data loss (and in our case test failure). CVS sucks! Work around that by sleeping for a second. Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de> Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-05-29Allow contrib new-workdir to link into bare repositoriesLibravatar Shawn O. Pearce1-5/+7
On one particular system I like to keep a cluster of bare Git repositories and spawn new-workdirs off of them. Since the bare repositories don't have working directories associated with them they don't have a .git/ subdirectory that hosts the repository we are linking to. Using a bare repository as the backing repository for a workdir created by this script does require that the user delete core.bare from the repository's configuration file, so that Git auto-senses the bareness of a repository based on pathname information, and not based on the config file. Signed-off-by: Shawn O. Pearce <spearce@spearce.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-05-29mailsplit: fix for more than one input filesLibravatar Junio C Hamano1-2/+4
Earlier commit d63bd9a broke the case where more than one input files are fed to mailsplit by not incrementing the base counter when splitting second and subsequent input files. This should fix it. Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-05-29cvsserver: Fix some typos in asciidoc documentationLibravatar Frank Lichtenheld1-2/+2
Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de> Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-05-29cvsserver: Note that CVS_SERVER can also be specified as method variableLibravatar Frank Lichtenheld1-1/+11
Reasonably new versions of the cvs CLI client allow one to specifiy CVS_SERVER as a method variable directly in CVSROOT. This is way more convinient than using an environment variable since it gets saved in CVS/Root. Since I only discovered this by accident I guess there might be others out there that learnt CVS on the 1.11 series (or even earlier) and profit from such a note about cvs improvements in the last couple years. Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de> Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-05-29cvsserver: Correct inetd.conf example in asciidoc documentationLibravatar Frank Lichtenheld1-3/+5
While the given example worked, it made us look rather incompetent. Give the correct reason why one needs the more complex syntax and change the example to reflect that. Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de> Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-05-28user-manual: fixed typo in exampleLibravatar Steffen Prohaska1-1/+1
Signed-off-by: Steffen Prohaska <prohaska@zib.de> Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-05-28Add test case for $Id$ expanded in the repositoryLibravatar Andy Parkins1-0/+36
This test case would have caught the bug fixed by revision c23290d5. It puts various forms of $Id$ into a file in the repository, without allowing git to collapse them to uniformity. Then enables the $Id$ expansion on checkout, and checks that what is checked out has coped with the various forms. Signed-off-by: Andy Parkins <andyparkins@gmail.com> Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-05-28Merge branch 'maint-1.5.1' into maintLibravatar Junio C Hamano2-7/+11
* maint-1.5.1: git-svn: avoid md5 calculation entirely if SVN doesn't provide one Fix stupid typo in lookup_tag()
2007-05-28git-svn: avoid md5 calculation entirely if SVN doesn't provide oneLibravatar Eric Wong1-6/+10
There's no point in calculating an MD5 if we're not going to use it. We'll also avoid the possibility of there being a bug in the Perl MD5 library not being able to handle zero-sized files. This is a followup to 20b3d206acbbb042c7ad5f42d36ff8d036a538c5, which allows us to track repositories that do not provide MD5 checksums. Signed-off-by: Eric Wong <normalperson@yhbt.net> Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-05-28Merge branch 'maint' of git://repo.or.cz/git-gui into maintLibravatar Junio C Hamano2-10/+19
* 'maint' of git://repo.or.cz/git-gui: git-gui: Guess our share/git-gui/lib path at runtime if possible Correct key bindings to Control-<foo> git-gui: Tighten internal pattern match for lib/ directory
2007-05-28Makefile: Remove git-fsck and git-verify-pack from PROGRAMSLibravatar Nguyen Thai Ngoc Duy1-2/+2
Those are builtins. Remove them from PROGRAMS variable Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-05-28Fix stupid typo in lookup_tag()Libravatar Johan Herland1-1/+1
Signed-off-by: Johan Herland <johan@herland.net> Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-05-27git-gui: Guess our share/git-gui/lib path at runtime if possibleLibravatar Shawn O. Pearce2-4/+16
Johannes Sixt asked me to try to avoid embedding the runtime location of git-gui's library directory in the executable script. Not embedding it helps the MinGW to be relocatable to another directory should a user wish to install the programs in a directory other than the location the packager wanted them to be installed into. Most of this is a hack. We try to determine if the path of our master git-gui script will be able to locate the lib by ../share/git-gui/lib. This should be true if $(gitexecdir) and $(libdir) have the same prefix. If they do then we defer the assignment of $(libdir) until runtime, and we get it from $argv0 rather than embedding it into the script itself. Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-05-26update diff-delta.c copyrightLibravatar Nicolas Pitre1-13/+6
There is actually nothing left from the original LibXDiff code I used over 2 years ago, and even the GIT implementation has diverged quite a bit from LibXDiff's at this point. Let's update the copyright notice to better reflect that fact. Signed-off-by: Nicolas Pitre <nico@cam.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-05-26improve delta long block matching with big filesLibravatar Nicolas Pitre1-51/+57
Martin Koegler noted that create_delta() performs a new hash lookup after every block copy encoding which are currently limited to 64KB. In case of larger identical blocks, the next hash lookup would normally point to the next 64KB block in the reference buffer and multiple block copy operations will be consecutively encoded. It is however possible that the reference buffer be sparsely indexed if hash buckets have been trimmed down in create_delta_index() when hashing of the reference buffer isn't well balanced. In that case the hash lookup following a block copy might fail to match anything and the fact that the reference buffer still matches beyond the previous 64KB block will be missed. Let's rework the code so that buffer comparison isn't bounded to 64KB anymore. The match size should be as large as possible up front and only then should multiple block copy be encoded to cover it all. Also, fewer hash lookups will be performed in the end. According to Martin, this patch should reduce his 92MB pack down to 75MB with the dataset he has. Tests performed on the Linux kernel repo show a slightly smaller pack and a slightly faster repack. Signed-off-by: Nicolas Pitre <nico@cam.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-05-26Make the pack-refs interfaces usable from outsideLibravatar Linus Torvalds1-28/+38
This just basically creates a "pack_refs()" function that could be used by anybody. You pass it in the flags you want as a bitmask (PACK_REFS_ALL and PACK_REFS_PRUNE), and it will do all the heavy lifting. Of course, it's still static, and it's all in the builtin-pack-refs.c file, so it's not actually visible to the outside, but the next step would be to just move it all to a library file (probably refs.c) and expose it. Then we could easily make "git gc" do this too. While I did it, I also made it check the return value of the fflush and fsync stage, to make sure that we don't overwrite the old packed-refs file with something that got truncated due to write errors! Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-05-26Merge branch 'maint'Libravatar Junio C Hamano11-49/+152
* maint: Fix git-svn to handle svn not reporting the md5sum of a file, and test. Fix mishandling of $Id$ expanded in the repository copy in convert.c More echo "$user_message" fixes. Add tests for the last two fixes. git-commit: use printf '%s\n' instead of echo on user-supplied strings git-am: use printf instead of echo on user-supplied strings Documentation: Add definition of "evil merge" to GIT Glossary Replace the last 'dircache's by 'index' Documentation: Clean up links in GIT Glossary
2007-05-26Merge branch 'maint-1.5.1' into maintLibravatar Junio C Hamano10-47/+115
* maint-1.5.1: Fix git-svn to handle svn not reporting the md5sum of a file, and test. More echo "$user_message" fixes. Add tests for the last two fixes. git-commit: use printf '%s\n' instead of echo on user-supplied strings git-am: use printf instead of echo on user-supplied strings Documentation: Add definition of "evil merge" to GIT Glossary Replace the last 'dircache's by 'index' Documentation: Clean up links in GIT Glossary
2007-05-26Move refspec pattern matching to match_refs().Libravatar Daniel Barkalow4-122/+70
This means that send-pack and http-push will support pattern refspecs, so builtin-push.c doesn't have to expand them, and also git push can just turn --tags into "refs/tags/*", further simplifying builtin-push.c check_ref_format() gets a third "conditionally okay" result for something that's valid as a pattern but not as a particular ref. Signed-off-by: Daniel Barkalow <barkalow@iabervon.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-05-26Fix git-svn to handle svn not reporting the md5sum of a file, and test.Libravatar James Y Knight2-1/+46
Acked-by: Eric Wong <normalperson@yhbt.net> Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-05-26Fix mishandling of $Id$ expanded in the repository copy in convert.cLibravatar Andy Parkins1-2/+37
If the repository contained an expanded ident keyword (i.e. $Id:XXXX$), then the wrong bytes were discarded, and the Id keyword was not expanded. The fault was in convert.c:ident_to_worktree(). Previously, when a "$Id:" was found in the repository version, ident_to_worktree() would search for the next "$" after this, and discarded everything it found until then. That was done with the loop: do { ch = *cp++; if (ch == '$') break; rem--; } while (rem); The above loop left cp pointing one character _after_ the final "$" (because of ch = *cp++). This was different from the non-expanded case, were cp is left pointing at the "$", and was different from the comment which stated "discard up to but not including the closing $". This patch fixes that by making the loop: do { ch = *cp; if (ch == '$') break; cp++; rem--; } while (rem); That is, cp is tested _then_ incremented. This loop exits if it finds a "$" or if it runs out of bytes in the source. After this loop, if there was no closing "$" the expansion is skipped, and the outer loop is allowed to continue leaving this non-keyword as it was. However, when the "$" is found, size is corrected, before running the expansion: size -= (cp - src); This is wrong; size is going to be corrected anyway after the expansion, so there is no need to do it here. This patch removes that redundant correction. To help find this bug, I heavily commented the routine; those comments are included here as a bonus. Signed-off-by: Andy Parkins <andyparkins@gmail.com> Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-05-26More echo "$user_message" fixes.Libravatar Jeff King3-6/+6
Here are fixes to more uses of 'echo "$msg"' where $msg could contain backslashed sequence. Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-05-26Add tests for the last two fixes.Libravatar Junio C Hamano1-3/+22
This updates t4014 to check the two fixes for git-am and git-commit we observed with "echo" that does backslash interpolation by default without being asked with -e option. Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-05-26git-commit: use printf '%s\n' instead of echo on user-supplied stringsLibravatar Junio C Hamano1-4/+4
This fixes the same issue git-am had, which was fixed by Jeff King in the previous commit. Cleverly enough, this commit's log message is a good test case at the same time. Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-05-25git-am: use printf instead of echo on user-supplied stringsLibravatar Jeff King1-2/+2
Under some implementations of echo (such as that provided by dash), backslash escapes are recognized without any other options. This means that echo-ing user-supplied strings may cause any backslash sequences in them to be converted. Using printf resolves the ambiguity. This bug can be seen when using git-am to apply a patch whose subject contains the character sequence "\n"; the characters are converted to a literal newline. Noticed by Szekeres Istvan. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-05-25fixes to output of git-verify-pack -vLibravatar Nicolas Pitre1-10/+9
Now that the default delta depth is 50, it is a good idea to also bump MAX_CHAIN to 50. While at it, make the display a bit prettier by making the MAX_CHAIN limit inclusive, and display the number of deltas that are above that limit at the end instead of the beginning. Signed-off-by: Nicolas Pitre <nico@cam.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-05-25Documentation: Add definition of "evil merge" to GIT GlossaryLibravatar Jakub Narebski1-0/+4
Signed-off-by: Jakub Narebski <jnareb@gmail.com> Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-05-25Replace the last 'dircache's by 'index'Libravatar Jakub Narebski2-2/+2
Signed-off-by: Jakub Narebski <jnareb@gmail.com> Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-05-25Documentation: Clean up links in GIT GlossaryLibravatar Jakub Narebski1-29/+29
Ensure that the same link is not repeated in single glossary entry, and that there is no self-link i.e. link to current entry. Add links to other definitions in git glossary. Remove inappropriate (nonsense) links, or change link to link to correct definition (to correct term). Signed-off-by: Jakub Narebski <jnareb@gmail.com> Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-05-24Add a configuration option to control diffstat after mergeLibravatar Alex Riesen4-7/+20
The diffstat can be controlled either with command-line options (--summary|--no-summary) or with merge.diffstat. The default is left as it was: diffstat is active by default. Signed-off-by: Alex Riesen <raa.lkml@gmail.com> Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-05-24Add another verbosity level to git-fetchLibravatar Alex Riesen1-2/+8
Use "-v -v" to run git-fetch-pack in verbose mode. Signed-off-by: Alex Riesen <raa.lkml@gmail.com> Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-05-24Verbose connect messages to show the IP addresses usedLibravatar Alex Riesen1-1/+37
Also, the patch makes the error messages more verbose. Helps when diagnosing connect problems on weird systems. Signed-off-by: Alex Riesen <raa.lkml@gmail.com> Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-05-24Add option to cvs update before exportLibravatar Robin Rosenberg2-3/+10
Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com> Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-05-24Merge branch 'maint'Libravatar Junio C Hamano3-10/+76
* maint: fix memory leak in parse_object when check_sha1_signature fails name-rev: tolerate clock skew in committer dates Update bash completion for git-config options Teach bash completion about recent log long options Teach bash completion about 'git remote update' Update bash completion header documentation Remove a duplicate --not option in bash completion Teach bash completion about git-shortlog Hide the plumbing diff-{files,index,tree} from bash completion Update bash completion to ignore some more plumbing commands
2007-05-24Merge branch 'master' of git://repo.or.cz/git/fastimport into maintLibravatar Junio C Hamano1-10/+71
* 'master' of git://repo.or.cz/git/fastimport: Update bash completion for git-config options Teach bash completion about recent log long options Teach bash completion about 'git remote update' Update bash completion header documentation Remove a duplicate --not option in bash completion Teach bash completion about git-shortlog Hide the plumbing diff-{files,index,tree} from bash completion Update bash completion to ignore some more plumbing commands