Skip to main content
aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)AuthorFilesLines
2011-03-03Improve readability of timestamps shown by debug-show-dir-cacheMatthias Sohn1-1/+1
The old format is hard to read. Change-Id: I27f3a7dbd92b26256993d27d5223b743fef70902 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2011-03-03Enhance debug-show-dir-cache command to show stageMatthias Sohn1-0/+4
Change-Id: I6fb17ec7f04f8bfaf1253b2ff08200ef9fc51898 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2011-03-02PackWriter: Avoid CRC-32 validation when feeding IndexPackShawn O. Pearce1-1/+1
There is no need to validate the object contents during copyObjectAsIs if the result is going to be parsed by unpack-objects or index-pack. Both programs will compute the SHA-1 of the object, and also validate most of the pack structure. For git daemon like servers, this work is already done on the client end of the connection, so the server doesn't need to repeat that work itself. Disable object validation for the 3 transport cases where we know the remote side will handle object validation for us (push, bundle creation, and upload pack). This improves performance on the server side by reducing the work that must be done. Change-Id: Iabb78eec45898e4a17f7aab3fb94c004d8d69af6 Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2011-03-01Merge "ProgressMonitor: Refactor to use background alarms"Chris Aniszczyk1-1/+4
2011-03-01Show notes in Log CLI command - Part 2Sasa Zivkov4-39/+29
This change fixes issues identified in the commit 5f3d577e5a1e8f23a2b6ea6a2bf24516806e01b8. Change-Id: Idbd935f5f60ad043faa0d4982b3e101ef7c07d60 Signed-off-by: Sasa Zivkov <sasa.zivkov@sap.com>
2011-03-01ProgressMonitor: Refactor to use background alarmsShawn O. Pearce1-1/+4
Instead of polling the system clock on every update(1) method call, use a scheduled executor to toggle a volatile once per second until the task is done. Check the volatile on each update(int), looking to see if output should occur. This limits progress output to either once per 1% complete, or once per second. To save time during update calls the timer isn't reset during each 1% of output, which means we may see one unnecessary output trigger if at least 1% completed during the one second of the alarm time. Change-Id: I8fdd7e31c37bef39a5d1b3da7105da0ef879eb84 Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2011-02-23Show notes in Log CLI commandSasa Zivkov3-0/+124
Support for --no-standard-notes and --show-notes=REF options is added to the Log command. The --show-notes option can be specified more than once if more than one notes branch should be used for showing notes. The notes are displayed from note branches in the order how the note branches are specified in the command line. However, the standard note, from the refs/notes/commits, is always displayed as first unless the --no-standard-notes options is given. Change-Id: I4e7940804ed9d388b625b8e8a8e25bfcf5ee15a6 Signed-off-by: Chris Aniszczyk <caniszczyk@gmail.com>
2011-02-17Add Reset to the JGit CLIChris Aniszczyk2-0/+93
Change-Id: I85368c849c0964b9a539fa1991920adb2ace94df Signed-off-by: Chris Aniszczyk <caniszczyk@gmail.com>
2011-02-15pgm: Make --git-dir a stringShawn O. Pearce6-18/+27
DHT based repository types don't use a java.io.File to name the repository. Moving the type to a string starts to open up more types of repository names, making the standard pgm package easier to reuse on other storage systems. Change-Id: I262ccc8c01cd6db88f832ef317b0e1e5db2d016a Signed-off-by: Shawn O. Pearce <spearce@spearce.org> Signed-off-by: Chris Aniszczyk <caniszczyk@gmail.com>
2011-02-15daemon: Use HTTP's resolver and factory patternShawn O. Pearce2-6/+11
Using a resolver and factory pattern for the anonymous git:// Daemon class makes transport.Daemon more useful on non-file storage systems, or in embedded applications where the caller wants more precise control over the work tasks constructed within the daemon. Rather than defining new interfaces, move the existing HTTP ones into transport.resolver and make them generic on the connection handle type. For HTTP, continue to use HttpServletRequest, and for transport.Daemon use DaemonClient. To remain compatible with transport.Daemon, FileResolver needs to learn how to use multiple base directories, and how to export any Repository instance at a fixed name. Change-Id: I1efa6b2bd7c6567e983fbbf346947238ea2e847e Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2011-02-12Qualify post 0.11 buildsMatthias Sohn2-21/+21
Change-Id: Ibcef4fc4c986c2cda01e943d16aa1c53eff99f25 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2011-02-11JGit 0.11.1v0.11.1Matthias Sohn2-21/+21
Change-Id: I9ac2fdfb4326536502964ba614d37d0bd103f524 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2011-01-28[findbugs] Do not ignore exceptional return value of mkdirMatthias Sohn1-2/+2
java.io.File.mkdir() and mkdirs() report failure as an exceptional return value false. Fix the code which silently ignored this exceptional return value. Change-Id: I41244f4b9d66176e68e2c07e2329cf08492f8619 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2011-01-26Fixed several NPEs in the Fetch CLISasa Zivkov1-5/+10
The Fetch command line was failing with NPE in case some options were omitted. Additionally, it was setting a negative timeout when no timeout option was used which caused HttpURLConnection to throw an IllegalArgumentException. Change-Id: I2c67e2e1a03044284d183d73f0b82bb7ff79de95 Signed-off-by: Sasa Zivkov <sasa.zivkov@sap.com> Signed-off-by: Chris Aniszczyk <caniszczyk@gmail.com>
2011-01-26Fixed NLS in JGit command line interfaceSasa Zivkov1-2/+2
There was one place where the parameter substitution wasn't done which caused text fragments like "{0}" to appear in JGits output. Bug: 325025 Change-Id: I89b881a8b5ef39f609437546310463ed4f6e1fb5 Signed-off-by: Sasa Zivkov <sasa.zivkov@sap.com> Signed-off-by: Chris Aniszczyk <caniszczyk@gmail.com>
2011-01-25Refactor IndexPack to not require local filesystemShawn O. Pearce1-17/+18
By moving the logic that parses a pack stream from the network (or a bundle) into a type that can be constructed by an ObjectInserter, repository implementations have a chance to inject their own logic for storing object data received into the destination repository. The API isn't completely generic yet, there are still quite a few assumptions that the PackParser subclass is storing the data onto the local filesystem as a single file. But its about the simplest split of IndexPack I can come up with without completely ripping the code apart. Change-Id: I5b167c9cc6d7a7c56d0197c62c0fd0036a83ec6c Signed-off-by: Shawn O. Pearce <spearce@spearce.org> Signed-off-by: Chris Aniszczyk <caniszczyk@gmail.com>
2010-12-20clone: Use DirCacheCheckoutShawn O. Pearce1-9/+4
This simple change lets us get rid of WorkDirCheckout from JGit, and all of its supporting code. Change-Id: I1a5aabe9ab4a2b156fd37cc7e9ededb4ed70f53a Signed-off-by: Shawn O. Pearce <spearce@spearce.org> Signed-off-by: Chris Aniszczyk <caniszczyk@gmail.com>
2010-12-17Qualify post 0.10 buildsMatthias Sohn2-21/+21
Change-Id: Ifcb8fdea95286779c8aea6bf4d7647e8c1c98d63 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2010-12-17Merge branch 'stable-0.10'Matthias Sohn2-21/+21
2010-12-17Qualify post 0.10.1 buildsstable-0.10Matthias Sohn2-21/+21
Change-Id: I320f1f739f3689daf11d532a55ae1133785aec8e Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2010-12-17JGit 0.10.1v0.10.1Matthias Sohn2-21/+21
Change-Id: I4a46d35d354193e5d4f28ef7dfae75944be8ffcf Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2010-12-15Reduce calls to Repository.getConfigShawn O. Pearce1-5/+8
Each time getConfig() is called on FileRepository, it checks the last modified time of both ~/.gitconfig and $GIT_DIR?config. If $GIT_DIR/config appears to have been modified, it is read back in from disk and the current config is wiped out. When mutating a configuration file, this may cause in-memory edits to disappear. To avoid that callers need to avoid calling getConfig until after the configuration has been saved to disk. Unfortunately the API is still horribly broken. Configuration should be modified only while a lock is held on the configuration file, very similar to the way a ref is updated via its locking protocol. But our existing API is really broken for that so we'll have to defer cleaning up the edit path for a future change. Change-Id: I5888dd97bac20ddf60456c81ffc1eb8df04ef410 Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2010-12-08Clarify WorkingTreeOptions and filemode usageShawn O. Pearce1-1/+4
To improve runtime performance, caching the WorkingTreeOptions inside of the Config object using the Config.SectionParser API allows the WorkingTreeOptions to be accessed more efficiently whenever a FileTreeIterator is constructed for the Repository. Instead of passing the filemode handling option into isModified(), the WorkingTreeIterator should always honor whatever setting has been configured in this repository, as defined by its own copy of the WorkingTreeOptions. This simplifies all of the callers as they no longer need to lookup core.filemode on their own. A few locations were changed from always using a hardcoded "true" on the file mode to passing what is actually configured in the repository. This is a behavior change, but corrects what should be considered to be bugs as the core.filemode variable wasn't always being used. Change-Id: Idb176736fa0dc97af372f1d652a94ecc72fb457c Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2010-12-08Remove empty iterator from TreeWalkShawn O. Pearce3-4/+1
Its confusing that a new TreeWalk() needs to have reset() invoked on it before addTree(). This is a historical accident caused by how TreeWalk was abused within ObjectWalk. Drop the initial empty tree from the TreeWalk and thus remove a number of pointless reset() operations from unit tests and some of the internal JGit code. Existing application code which is still calling reset() will simply be incurring a few unnecessary field assignments, but they should consider cleaning up their code in the future. Change-Id: I434e94ffa43491019e7dff52ca420a4d2245f48b Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2010-12-07Avoid NPE in InitChris Aniszczyk1-2/+5
We should grab the repository directory from the command to avoid an NPE if no git directory is passed in via the CLI. Change-Id: I649467c6d84bbc0d26a070d0d4ff1e6f81fd5bad Signed-off-by: Chris Aniszczyk <caniszczyk@gmail.com>
2010-12-06Update Init to use InitCommandChris Aniszczyk1-9/+7
Change-Id: I3ff700a87dfa6ac255c1aaf3fe11a07264594aab Signed-off-by: Chris Aniszczyk <caniszczyk@gmail.com>
2010-11-25Make diff algorithm configurableChristian Halstrick1-13/+2
The diff algorithm which is used by Merge, Cherry-Pick, Rebase should be configurable. A new configuration parameter "diff.algorithm" is introduced which currently accepts the values "myers" or "histogram". Based on this parameter for example the ResolveMerger will choose a diff algorithm. The reason for this is bug 331078. This bug shows that JGit is more compatible with C Git when histogram diff is in place. But since histogram diff is quite new we need an easy way to fall back to Myers diff. Bug: 331078 Change-Id: I2549c992e478d991c61c9508ad826d1a9e539ae3 Signed-off-by: Christian Halstrick <christian.halstrick@sap.com> Signed-off-by: Philipp Thun <philipp.thun@sap.com>
2010-11-23Add the Checkout command to the Git CLIChris Aniszczyk2-0/+74
The implementation delegates to the CheckoutCommand and therefore only supports some of the options supported by the CheckoutCommand. Signed-off-by: Chris Aniszczyk <caniszczyk@gmail.com>
2010-11-22Update Rm in the JGit CLIChris Aniszczyk1-38/+12
Since we have the RmCommand API now, update Rm to use it. Change-Id: I6e2cb37573cc8a29846f01e09e8c07e0dc279dbe Signed-off-by: Chris Aniszczyk <caniszczyk@gmail.com>
2010-11-10Implement command line support for CredentialsProviderShawn O. Pearce1-3/+3
Instead of configuring the JSch session factory, configure a more generic CredentialsProvider, which will work for other transport types such as http, in addition to the existing ssh. Change-Id: I22b13303c17e654ba6720edf4be2ef15fe29537a Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2010-11-08Merge "Make Repository.shortenRefName static"Shawn Pearce1-1/+1
2010-11-08Fixed help of Diff and ShowCommands commandsChristian Halstrick3-3/+5
jgit.sh <command> --help was not working for the commands Diff and ShowCommands because of missing metaVar information. Missing information is added here. Change-Id: I0ab7e35006b6aa7d4326a634309dddfcdb78f2a6 Signed-off-by: Christian Halstrick <christian.halstrick@sap.com>
2010-11-07Merge "Implemented the git add commandline command."Chris Aniszczyk3-5/+81
2010-11-07Implemented the git add commandline command.Sasa Zivkov3-5/+81
Implementation delegates all work to the AddCommand class and, therefore, supports only those options currently supported by the AddCommand which means: --update and the filepattern... arguments. Change-Id: I4827d37e08b4c988c2458d9ba60a61b6ad414d10 Signed-off-by: Sasa Zivkov <sasa.zivkov@sap.com>
2010-11-06Make Repository.shortenRefName staticRobin Stocker1-1/+1
The method has no reason to be non-static. Change-Id: I1c09e074395d49cee0e6e53679b499d1f0c351ea
2010-11-05Fixed the git init to properly set bare=trueSasa Zivkov1-0/+3
When --git-dir=X is given JGit creates a bare repository in the directory X. However, when the --bare option is not explicitly given, this is not properly reflected in the X/config file i.e. the bare=true is missing. This change fixes this minor issue. Signed-off-by: Sasa Zivkov <sasa.zivkov@sap.com>
2010-10-26Add option to select diff algorithm for diff commandChristian Halstrick2-0/+19
The diff command in the pgm package was enhanced to allow choosing the diff algorithm (currently myers or histogram) Change-Id: I72083e78fb5c92868eb5d8ec512277d212a39349 Signed-off-by: Christian Halstrick <christian.halstrick@sap.com>
2010-10-17Allow pgm Main to be extendedShawn O. Pearce1-21/+51
3rd party packages that use repository types other than FileRepository may wish to extend our pgm package and implement their own resolution scheme for repository "names" that are passed in by the --git-dir command line option. Make that possible by allowing the package to extend the Main class and override the lookup. This is primarily useful when developing new storage implementations and trying to experiment with the results, without linking all of it into the core JGit package. Change-Id: Id30e168da16341e5da43365688a63aa30c7b7e2c Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2010-10-13Fix three-word command namesShawn O. Pearce1-0/+1
Command names like MakeCacheTree weren't coming up with hyphens between every word, so they read "debug-make-cachetree" rather than the expected "debug-make-cache-tree". On each lowercase character reset the lastWasDash flag so the next uppercase will insert a hyphen before the next word. Change-Id: I539fabb339e60896165619c307dec71e3317b0d8 Signed-off-by: Shawn O. Pearce <spearce@spearce.org> Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2010-10-12Merge "Update Tag to use TagCommand API"Shawn Pearce1-55/+11
2010-10-11Delete PatienceDiffShawn O. Pearce1-27/+0
HistogramDiff outperforms it for any case where PatienceDiff needs to fallback to another algorithm. Consequently it's not worth keeping around, because we would always want a fallback enabled. Change-Id: I39b99cb1db4b3be74a764dd3d68cd4c9ecd91481 Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2010-10-11debug-diff-algorithms: Real world performance test implementationsShawn O. Pearce2-0/+401
When working on a difference algorithm's implementation, its generally more important to care about how it behaves on real-world inputs than it does on fake inputs created for unit test cases. Run each implementation against a number of real-world repositories, looking at changes between files in each commit. This gives a better picture of how a particular algorithm performs. This test suite run against JGit and linux-2.6 with the current available algorithms shows HistogramDiff always out-performs MyersDiff, and by a wide margin on the linux-2.6 sources. As HistogramDiff has similar output properties as PatienceDiff, the resulting edits are probably also more human-readable. These test results show that HistogramDiff is a good choice for the default implementation, and also show that PatienceDiff isn't worth keeping. jgit: start at baa83ae 2686 files, 760 commits N= 3 min lines, 3016 max lines Algorithm Time(ns) ( Time(ns) on Time(ns) on ) ( N=3 N=3016 ) --------------------------------------------------------------------- histogram_myers 314652100 ( 3900 298100 ) histogram 315973000 ( 3800 302100 ) patience 774724900 ( 4500 347900 ) patience_histogram_myers 786332800 ( 3700 351200 ) myers 819359300 ( 4100 379100 ) patience_myers 843416700 ( 3800 348000 ) linux-2.6.git: start at 85a3318 4001 files, 2680 commits N= 2 min lines, 39098 max lines Algorithm Time(ns) ( Time(ns) on Time(ns) on ) ( N=2 N=39098 ) --------------------------------------------------------------------- histogram_myers 1229870000 ( 5900 2642700 ) histogram 1235654100 ( 6000 2695400 ) patience 3856546000 ( 5900 2627700 ) patience_histogram_myers 3866728100 ( 7000 2624000 ) patience_myers 4004875300 ( 8000 2651700 ) myers 9794679000 ( 7200 2716200 ) Change-Id: I2502684d31f7851e720356820d04d8cf767f7229 Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2010-10-10Update Push to use latest APIChris Aniszczyk1-31/+17
Change-Id: I57ea8634a46472f40046f4ec69de505abbf5f6cf Signed-off-by: Chris Aniszczyk <caniszczyk@gmail.com>
2010-09-27Update Fetch to use FetchCommand APIChris Aniszczyk3-26/+23
Change-Id: I06ddc74f1ef658f4876e2bbcc3eaad3475a5371e Signed-off-by: Chris Aniszczyk <caniszczyk@gmail.com>
2010-09-24debug-text-hashfunctions: Test suite for content hashesShawn O. Pearce2-0/+508
This is the test suite I was using to help understand why we had such a high collision rate with RawTextComparator, and to select a replacement function. Since its not something we will run very often, lets make it a program in the debug package rather than a JUnit test. This way we can run it on demand against any corpus of files we choose, but we aren't bottlenecking our daily builds running tests with no assertions. Adding a new hash function to this suite is simple, just define a new instance member of type "Hash" with the logic applied to the region passed in. Change-Id: Iec0b176adb464cf95b06cda157932b79c0b59886 Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2010-09-22Update Tag to use TagCommand APIChris Aniszczyk1-55/+11
Change-Id: I4f7f8e29c47980536398d73f2a71ed2b2c00f4f2 Signed-off-by: Chris Aniszczyk <caniszczyk@gmail.com>
2010-09-17Qualify builds as 0.10.0Shawn O. Pearce2-21/+21
Change-Id: I54815c85b32b9492c059064b39f48677e68c5e90 Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2010-09-17Merge branch 'stable-0.9'Shawn O. Pearce4-25/+31
* stable-0.9: Qualify post-0.9.3 builds JGit 0.9.3 clone: Correct formatting of init message Fix cloning of repositories with big objects Qualify post-0.9.1 builds JGit 0.9.1 Fix PlotCommitList to set lanes on child-less commits
2010-09-16Add --all option to RevWalkTextBuiltinChristian Halstrick1-0/+17
Allow our command line commands like Glog, Log to accept the --all option to walk all known refs. Change-Id: I6a0c84fc19e7fa80ddaa2315851c58ba89d43ca5 Signed-off-by: Christian Halstrick <christian.halstrick@sap.com>
2010-09-15Qualify post-0.9.3 buildsstable-0.9Matthias Sohn2-21/+21
Change-Id: Ideab4923a5d8055f0e8a36ddcf0bc8adbf71c329 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>

Back to the top