summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Update Jetty to 9.2.13.v20150730Matthias Sohn2015-08-209-78/+78
| | | | Change-Id: I0c2a4cafcd1992431888c2a48592d9cb1ac04747 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Restored obsoleted createSymLink/readSymLink in FileUtilAndrey Loskutov2015-08-182-14/+25
| | | | | Bug: 475070 Change-Id: I425ad842dc26b55f747f192348398a3912c0ca6b Signed-off-by: Andrey Loskutov <loskutov@gmx.de>
* Use NIO2 to implement FileUtils.rename() and expose optionsMatthias Sohn2015-08-172-14/+67
| | | | | | | | - use NIO2's Files.move() to reimplement rename() - provide a second method accepting CopyOptions which can be used to request atomic move. Change-Id: Ibcf722978e65745218a1ccda45344ca295911659 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Move createSymLink/readSymLink to FileUtilsAndrey Loskutov2015-08-179-78/+42
| | | | | | Bug: 475070 Change-Id: I258f4bf291e02ef8e6f867b5d71c04ec902b6bcb Signed-off-by: Andrey Loskutov <loskutov@gmx.de>
* Merge "Change FS not to throw NPE when facing InMemory databases"Christian Halstrick2015-08-172-1/+7
|\
| * Change FS not to throw NPE when facing InMemory databasesChristian Halstrick2015-08-162-1/+7
| | | | | | | | | | | | | | | | | | | | The FS class and the subclasses FS_POSIX assumed in the findHook() method that every repository has a valid gitDir. But in tests when using in-memory-repositories this is not true and this method was generating NPEs. Change the method to return null if no repository directory can be determined. Change-Id: I38a4d36dc6452b5dacae3d0dbf562b569ca3c19b
* | Expose the set of root commits in PackStatisticsShawn Pearce2015-08-162-0/+13
|/ | | | | | | | | | | Root commits are commits with zero parents. If a commmit has no parents it is the first commit in the repository. In general the root commits should be unique for any given project, as the first commit will be created at a different time, by a different user with its own message. These root commits can be used as a "fingerprint" to identify disjoint histories. Change-Id: Id891dbc1f17c816cea404569578bb7635ff85cdb
* Fix NPE in DfsGarbageCollector and further reduce memoryShawn Pearce2015-08-142-26/+47
| | | | | | | | | | | | | | | | | | | | | | | | | | | DfsGarbageCollector asks PackWriter for the set of objects packed after the bitmap index is written out. This is now null as it was cleared to release memory. Instead use PackBitmapIndexBuilder to build the set as it also has the objects. Reduce memory in PackBitmapIndexBuilder by fully discarding the ObjectToPack instances. This was the original intent of commit 4bb523475d44 ("PackWriter: shed memory while creating bitmaps") but failed as the instances were still held live here. Switch to BlockList instead of ObjectToPack[]. This allows the JVM to allocate many smaller arrays instead of one contiguous array with 5.2M reference pointers. In a tight heap the smaller allocations are more feasible. Reduce the initial EWAHCompressedBitmaps for the 4 type maps. On average a typical repository is 30% commits, 30% trees and 30% blobs. These bitmaps are typically very dense. PackWriter orders objects by commit, tree, blob when writing the file so these should always be a very dense run of 1s with some 0s before and after. So even the 1/3rd allocation is likely too large, but the later trim() will reduce the internal buffer anyway. Change-Id: If0b80a31cb00894f1485ff8f53ef7ae5a759a046
* Cleanup Attributes and remove obsoleted Java7BasicAttributes classAndrey Loskutov2015-08-132-32/+14
| | | | | | | | | After jgit moved to Java 7 there is no need in an extra Java7BasicAttributes class. Also all fields of Attributes can be made final now. Change-Id: I0be6daf7758189b0eecc4e26294bd278ed8bf7a0 Signed-off-by: Andrey Loskutov <loskutov@gmx.de>
* Merge "Remove "experimental" from the description of the pack bitmap index"Shawn Pearce2015-08-131-2/+1
|\
| * Remove "experimental" from the description of the pack bitmap indexTerry Parker2015-07-201-2/+1
| | | | | | | | | | Change-Id: I940701093eb6c6d26e147b79de77997b0df481a0 Signed-off-by: Terry Parker <tparker@google.com>
* | PackWriter: shed memory while creating bitmapsShawn Pearce2015-08-131-41/+53
| | | | | | | | | | | | | | | | | | | | | | | | | | Once bitmap creation begins the internal maps required for packing are no longer necessary. On a repository with 5.2M objects this can save more than 438 MiB of memory by allowing the ObjectToPack instances to get garbage collected away. Downside is the PackWriter cannot be used for any further opertions except to write the bitmap index. This is an acceptable trade-off as in practice nobody uses the PackWriter after the bitmaps are built. Change-Id: Ibfaf84b22fa0590896a398ff659a91fcf03d7128
* | Merge "Do not retain commit body during bitmap generation"Shawn Pearce2015-08-131-0/+1
|\ \
| * | Do not retain commit body during bitmap generationShawn Pearce2015-08-121-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | The bitmap preparer only needs commit graph topology; it does not use the message body. Allow the RevWalk to free the body after the commit has been parsed to save memory. Change-Id: I97d4a440c9fc313873fd224bd05b9d9e3dc575db
* | | Merge "Bitmap builder: actually compress EWAH bitmaps in memory"Shawn Pearce2015-08-131-0/+5
|\ \ \
| * | | Bitmap builder: actually compress EWAH bitmaps in memoryShawn Pearce2015-08-121-0/+5
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For construction performance each new EWAHBitmap is allocated at the roughly worst-case size the bitmap would need if all of the words must be literal and no run length compression is available. In practice this is far larger than is required, wasting heap memory while the bitmaps are computed. Trim down each bitmap to its minimum required size. This copies the internal array to a new smaller array, allowing the GC to reclaim the prior larger array for reuse. A single bitmap of 5.2M bits is only 79 KiB of memory without this trim call but 15,000 such bitmaps is 1.1 GiB. Trimming can help fit a larger number of bitmaps during processing. Change-Id: I2bd19a786189db5b01c4c96f209b83de50e10c3b
* / / Consider original file mode while checking parent ignore rulesAndrey Loskutov2015-08-122-4/+57
|/ / | | | | | | | | | | | | | | | | | | | | | | The WorkingTreeIterator.isEntryIgnored() should use originally requested file mode while descending to the file tree root and checking ignore rules. Original code asking isEntryIgnored() on a file was using directory mode instead if the .gitignore was not located in the same directory. Bug: 473506 Change-Id: I9f16ba714c3ea9e6585e9c11623270dbdf4fb1df Signed-off-by: Andrey Loskutov <loskutov@gmx.de>
* | Changed default log4j log level from "WARNING" to "WARN"Andrey Loskutov2015-08-111-1/+1
| | | | | | | | | | | | Bug: 474674 Change-Id: I8be8934cf6cb3ee60567b59f8e836475efb780ac Signed-off-by: Andrey Loskutov <loskutov@gmx.de>
* | Clone should create Git instances which are able to close repositoryAndrey Loskutov2015-08-042-2/+2
| | | | | | | | | | | | Bug: 474093 Change-Id: I13be133dac7834d1d2b51eb9948a716b8719d057 Signed-off-by: Andrey Loskutov <loskutov@gmx.de>
* | Merge "Clone should close repository after errors in fetch or checkout"Christian Halstrick2015-08-041-1/+8
|\ \
| * | Clone should close repository after errors in fetch or checkoutAndrey Loskutov2015-08-021-1/+8
| | | | | | | | | | | | | | | | | | Bug: 474093 Change-Id: Ia0a1478260b94a71a947aa8c04ee0c836d390aec Signed-off-by: Andrey Loskutov <loskutov@gmx.de>
* | | containsGitModulesFile() should not crash on bare repositoryAndrey Loskutov2015-08-032-6/+14
|/ / | | | | | | | | Change-Id: Iba7e4674b3d33c730613a6ac703977f48b015853 Signed-off-by: Andrey Loskutov <loskutov@gmx.de>
* | Fixed javadoc: the getBranch() and getFullBranch() can return nullAndrey Loskutov2015-07-291-4/+6
| | | | | | | | | | Change-Id: I284a1b5f8220f68496f992b0e97e6934e03ae616 Signed-off-by: Andrey Loskutov <loskutov@gmx.de>
* | PushCertificate: Omit null pushee from text representationDave Borowitz2015-07-282-3/+6
| | | | | | | | Change-Id: Ie9546f2e0e9ee62e0a3c919572153b6076355195
* | Fix non-externalized string warning in Main.execute()Matthias Sohn2015-07-241-1/+1
| | | | | | | | Change-Id: Ib0404daaf485aa6c8dc6ba0b169b46fb800325e4 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* | Honor also https_proxy environment variableChristian Halstrick2015-07-241-25/+31
| | | | | | | | | | | | | | | | | | In addition to honor the http_proxy variable for setting a proxy for http JGit should also honor the https_proxy variable to set a similar proxy for https traffic Bug: 473365 Change-Id: I1002cb575e26cd842bf81ad751ec7c267b585ce2 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* | Fix ResolveMerger when files should be replaced by foldersChristian Halstrick2015-07-232-7/+83
| | | | | | | | | | | | | | | | | | | | When during Merge for a certain path OURS & BASE contains a file and THEIRS contains a folder there was a bug in JGit leading to unnecessary conflicts. This commit fixes it and adds a test for this situation. Bug: 472693 Change-Id: I71fac5a6a2ef926c01adc266c6f9b3275e870129 Also-by: Clemens Buchacher <drizzd@aon.at> Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* | Merge "Fix typos in javadoc of ObjectId.equals()"Matthias Sohn2015-07-211-4/+4
|\ \
| * | Fix typos in javadoc of ObjectId.equals()Matthias Sohn2015-07-201-4/+4
| |/ | | | | | | Change-Id: Ic2503a2c3c616934d923937fdf8ceb4ae57b7028 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* | Don't keep empty ignore rules in the ignore node listAndrey Loskutov2015-07-213-2/+33
| | | | | | | | | | Change-Id: Icd893dfaba06561bbe5cc60ebf866ec5d8301c22 Signed-off-by: Andrey Loskutov <loskutov@gmx.de>
* | Allow leading/trailing spaces in ignore rulesAndrey Loskutov2015-07-212-2/+63
| | | | | | | | | | | | | | | | | | | | | | According to [1] leading spaces are allowed in ignore rules and trailing spaces are allowed too if they are escaped via backslash. [1] https://www.kernel.org/pub/software/scm/git/docs/gitignore.html Bug: 472762 Change-Id: I5e3ae5599cb9e5d80072f38c82c20cbc9475a18a Signed-off-by: Andrey Loskutov <loskutov@gmx.de>
* | Don't crash while parsing ignore patternsAndrey Loskutov2015-07-214-1/+20
| | | | | | | | | | | | | | | | | | Catch unexpected PatternSyntaxException and convert it to InvalidPatternException. Log such errors, do not silently ignore them. Bug: 463581 Change-Id: Id0936d9816769ec0cfae1898beda0f7a3c146e67 Signed-off-by: Andrey Loskutov <loskutov@gmx.de> Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* | Allow leading literal '#' and '!' in ignore rules if they are escapedAndrey Loskutov2015-07-212-15/+34
| | | | | | | | | | | | | | | | | | | | | | According to [1] backslash can escape leading special characters '#' and '!' in ignore rules, so that they are treated literally. [1] https://www.kernel.org/pub/software/scm/git/docs/gitignore.html Bug: 463581 Change-Id: I4c02927413a9c63ea5dbf2954877080d902ec1b2 Signed-off-by: Andrey Loskutov <loskutov@gmx.de>
* | Don't trim trailing space if it is escaped with backslashAndrey Loskutov2015-07-212-1/+30
| | | | | | | | | | | | | | | | | | | | According to [1] backslash can escape trailing space in ignore rules. [1] https://www.kernel.org/pub/software/scm/git/docs/gitignore.html Bug: 463581 Change-Id: I9cf13f8775cb49f0b6d61cfd3ca3fd6d665fccd8 Signed-off-by: Andrey Loskutov <loskutov@gmx.de>
* | Consider only escaping backslash for regular expressions in ignore rulesAndrey Loskutov2015-07-212-2/+30
|/ | | | | | | | | | | While checking if we should consider an ignore rule without '[]' brackets as a regular expression, check if the backslash escapes one of the glob special characters '?', '*', '[', '\\'. If not, backslash is not a part of a regex and should be treated literally. Bug: 463581 Change-Id: I85208c7f85246fbf6c5029ce3c8b7bb8f4dbd947 Signed-off-by: Andrey Loskutov <loskutov@gmx.de>
* DFS: Remove now-redundant getOneRefJonathan Nieder2015-07-161-9/+1
| | | | | | | Instead of reimplementing exactRef in a separate, private method, use it directly. Change-Id: I0fc06fc46eef0e36e571a6ef622f38dc2aa59038
* DFS: Override exactRef() with optimal versionShawn Pearce2015-07-161-0/+7
| | | | | | | This avoids scanning a directory to find all names and then weeding down to the requested name. Change-Id: I36ce31febad6e881182bc3a278c7ed35cc04cbda
* PushCertificate: Add toTextWithSignature() methodDave Borowitz2015-07-152-2/+16
| | | | Change-Id: Ic0129373cc0c0321ffa43dc11a658d4f891ec2c2
* PushCertificateParser: Add fromString methodDave Borowitz2015-07-152-3/+28
| | | | Change-Id: I74c3f65a9ff297f708d996a4c138456a31a466b8
* BaseReceivePack: Add method to override the push certDave Borowitz2015-07-151-0/+14
| | | | Change-Id: Id912f45c933c78a85b245fa7b6edebbeb40b009c
* BaseReceivePack: Don't throw from getPushCertificate()Dave Borowitz2015-07-151-3/+4
| | | | | | | | | Rather than lazily parsing the push in this method, parse it at the end of recvCommands(), which already contains the necessary try/catch for handling this error. This allows later callers to avoid having to handle this condition superfluously. Change-Id: I5dcaf1a44bf4e321adc281e3381e7e17ac89db06
* PushCertificateStore: Return boolean from batch save methodsDave Borowitz2015-07-152-3/+9
| | | | Change-Id: I9730cb4f60c60ee6d5a7a156a0b6a53f79309ec3
* Allow saving push certs on a subset of refsDave Borowitz2015-07-152-6/+91
| | | | | | | | | | | | | | | | Consider a BatchRefUpdate produced by Gerrit Code Review, where the original command pushed over the wire might refer to "refs/for/master", but that command is ignored and replaced with some additional commands like creating "refs/changes/34/1234/1". We do not want to store the cert in "refs/for/master@{cert}", since that may lead someone looking to the ref to the incorrect conclusion that that ref exists. Add a separate put method that takes a collection of commands, and only stores certs on those refs that have a matching command in the cert. Change-Id: I4661bfe2ead28a2883b33a4e3dfe579b3157d68a
* Update org.apache.httpcomponentsMatthias Sohn2015-07-146-24/+24
| | | | | | | | | | | - update org.apache.httpcomponents.httpcore to 4.3.3 - update org.apache.httpcomponents.httpclient to 4.3.6, 4.3.5 and later are reported to fix vulnerability CVE-2014-3577 CQ: 9220 CQ: 9221 Bug: 470523 Change-Id: I39b80b250c6c1daede6a23e9f177fb2988ac37bb Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Access static member LocalDiskRepositoryTestCase.CONTENT directlyMatthias Sohn2015-07-141-6/+7
| | | | | | | | 37a1e4be moved this constant causing the following error message in Eclipse: "The static field LocalDiskRepositoryTestCase.CONTENT should be accessed directly". Change-Id: I4ceb57a30f2e5a8f7e55109ef260a244ed5e7044 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* PushCertificateStore: Add method to save in batchDave Borowitz2015-07-132-13/+79
| | | | Change-Id: I8bfaee1a52d368ffe2cd7e8af1754a5261569078
* Fixed @since tags on new APIAndrey Loskutov2015-07-122-2/+4
| | | | | Change-Id: I77bc2ec486ffe4c8b864663d103d8cf39c3f35e1 Signed-off-by: Andrey Loskutov <loskutov@gmx.de>
* Store push certificates in refs/meta/push-certsDave Borowitz2015-07-104-0/+753
| | | | | | | | | | | | | | | | | | | | | | | | | Inspired by a proposal from gitolite[1], where we store a file in a tree for each ref name, and the contents of the file is the latest push cert to affect that ref. The main modification from that proposal (other than lacking the out-of-git batching) is to append "@{cert}" to filenames, which allows storing certificates for both refs/foo and refs/foo/bar. Those refnames cannot coexist at the same time in a repository, but we do not want to discard the push certificate responsible for deleting the ref, which we would have to do if refs/foo in the push cert tree changed from a tree to a blob. The "@{cert}" syntax is at least somewhat consistent with gitrevisions(7) wherein @{...} describe operators on ref names. As we cannot (currently) atomically update the push cert ref with the refs that were updated, this operation is inherently racy. Kick the can down the road by pushing this burden on callers. [1] https://github.com/sitaramc/gitolite/blob/cf062b8bb6b21a52f7c5002d33fbc950762c1aa7/contrib/hooks/repo-specific/save-push-signatures Change-Id: Id3eb32416f969fba4b5e4d9c4b47053c564b0ccd
* Add setTargetBranch in RepoCommand.Yuxuan 'fishy' Wang2015-07-102-44/+86
| | | | | | | | This will allow us to write the super project in a branch other than master. Change-Id: I578ed9ecbc6423416239e31ad644531dae9fb5c3 Signed-off-by: Yuxuan 'fishy' Wang <fishywang@google.com>
* Move `RepositoryTestCase.indexState` to parent classChris Price2015-07-102-106/+100
| | | | | | | | | | | | | | | The test helper method `indexState` in `RepositoryTestCase` is very useful for writing tests, even in cases where we need to do things like create more than one repository for a test and thus we don't want to use the built-in `db` member variable that exists in `RepositoryTestCase`. Since the method is static, we can move it up to the parent class `LocalDiskRepositoryTestCase`, where it can be used by tests that aren't a great fit for inheriting directly from `RepositoryTestCase`. Bug: 436200 Change-Id: I2b6de75c001d2d77ddb607488af246548784a67f Signed-off-by: Chris Price <chris@puppetlabs.com>