summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* JGit v4.0.0.201503231230-m1v4.0.0.201503231230-m1Matthias Sohn2015-03-2346-49/+49
| | | | | Change-Id: I195239ac3a3f0efbe1409f0ebaad2d1a29c4782e Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Include slf4j and log4j in jgit command lineMatthias Sohn2015-03-233-0/+42
| | | | | | | | | | | | | This enables the command line to log. Include log4j configuration to log warnings and errors to stderr. Exclude the dependencies which log4j 1.2.15 should have marked optional. See http://unitstep.net/blog/2009/05/18/resolving-log4j-1215-dependency-problems-in-maven-using-exclusions/ for details Change-Id: Ie730db4007fb7614fd7d130cd0858b1ac550066a Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Merge bundle org.eclipse.jgit.java7 into org.eclipse.jgitMatthias Sohn2015-03-2379-3390/+580
| | | | | | | As we moved minimum Java version to 7 we don't need a separate bundle and feature for JGit features depending on Java 7 anymore. Change-Id: Ib5da61b0886ddbdea65298f1e8c6d65c9879ced1 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Add missing @since tag to DiffInterruptedExceptionMatthias Sohn2015-03-191-0/+1
| | | | Change-Id: Ibadbc1b476bfe0d1fe11979ec237a3554966eb59 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Revert "CommitBuilder should check for duplicate parents"Jonathan Nieder2015-03-185-147/+33
| | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 6bc48cdc62287934ce1b7003280b19a5994e7668. Until git v1.7.10.2~29^2~1 (builtin/merge.c: reduce parents early, 2012-04-17), C git merge would make merge commits with duplicate parents when asked to with a series of commands like the following: git checkout origin/master git merge --no-ff origin/master Nowadays "git merge" removes redundant parents more aggressively (whenever one parent is an ancestor of another and not just when duplicates exist) but merges with duplicate parents are still permitted and can be created with git fast-import or git commit-tree and history viewers need to be able to cope with them. CommitBuilder is an interface analagous to commit-tree, so it should allow duplicate parents. (That said, an option to automatically remove redundant parents would be useful.) Reported-by: Dave Borowitz <dborowitz@google.com> Change-Id: Ia682238397eb1de8541802210fa875fdd50f62f0 Signed-off-by: Jonathan Nieder <jrn@google.com>
* Merge changes I51167503,I794eca3aDave Borowitz2015-03-182-11/+71
|\ | | | | | | | | | | * changes: TemporaryBuffer: Clear block pointer list instead of reallocating TemporaryBuffer: Allow presizing block pointer list
| * TemporaryBuffer: Clear block pointer list instead of reallocatingDave Borowitz2015-03-181-6/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | The block pointer list may have been relatively large, so no need to make more garbage. Instead, just clear the list and null out all the elements. Another possible motivation: a caller may have provided an inaccurate estimated size, so the list might have been resized several times. If the list is reused later for a similarly underestimated workload, this fix will prevent additional resizing on subsequent usages. Change-Id: I511675035dcff1117381a46c294cc11aded10893
| * TemporaryBuffer: Allow presizing block pointer listDave Borowitz2015-03-182-5/+67
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Callers may wish to use TemporaryBuffer as an essentially unbounded buffer by passing Integer.MAX_VALUE as the size. (This makes it behave like ByteArrayOutputStream, only without requiring contiguous memory.) Unfortunately, it was always allocating an array in the backing block pointer list to hold enough blocks to MAX_VALUE--all 262,016 of them. It wasn't allocating the blocks themselves, but this array was still extremely wasteful, using about 2MiB of memory on a 64-bit system. Tweak the interface to specify an estimated size, and only allocate the block pointer list enough entries to hold that size. It's an ArrayList, so if that estimate was wrong, it'll grow. We assume the cost of finding enough contiguous memory to grow that array is acceptable. While we're in there, fix an off-by-one error: due to integer division we were undercounting the number of blocks needed to store n bytes of data as (n / SZ). Change-Id: I794eca3ac4472bcc605b3641e177922aca92b9c0
* | Merge "Make MyersDiff interruptible"Christian Halstrick2015-03-182-0/+57
|\ \ | |/ |/|
| * Make MyersDiff interruptibleHugo Arès2015-03-172-0/+57
| | | | | | | | | | | | | | | | | | | | | | | | For some specific file, MyersDiff goes into an infinite loop[1]. Since this problem is hard to reproduce and possibly harder to fix, this change makes the MyersDiff interruptible so the diff can be aborted at least when such infinite loop happens. [1]https://bugs.eclipse.org/bugs/show_bug.cgi?id=444623 Change-Id: I6e006ccb122d1e68c9846a24d5399d94776c2858 Signed-off-by: Hugo Arès <hugo.ares@ericsson.com>
* | InMemoryRepository: Use a real Builder classDave Borowitz2015-03-181-6/+13
| | | | | | | | Change-Id: I161b98a58503415955a21f2720395611f439ce98
* | TestRepository: Expose a Git instanceDave Borowitz2015-03-181-0/+12
| | | | | | | | Change-Id: I2fab7dd9a24205686db4724e77c0fd0a28f2075e
* | Git: Don't close underlying repo if it came from from a callerDave Borowitz2015-03-171-22/+41
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since 27ae8bc65 Git has implemented AutoCloseable, which means Eclipse may warn if close() is never called on a Git instance. For example, the following would result in a resource warning: Repository repo = openRepository(foo); Git git = new Git(repo); try { git.someCommand().call(); } finally { repo.close(); } (The same warning would occur if repo were created in a try-with- resources block.) The "obvious" fix is to open git in a try-with-resources block: try (Repository repo = openRepository(foo); Git git = new Git(repo)) { git.someCommand().call(); } Unfortunately, this construction was subtly broken: it would call both git.close() and repo.close(), but git.close() would call repo.close() again. Depending on the repository implementation, this might or might not be ok. If it's not ok, it might not immediately cause an error, if the reference count of repo was >2 at the time of closing. Of course, explicitly calling git.close() followed by repo.close() in two finally blocks has had the same double-closing problem since forever. But the problem became worse when Git started implementing AutoCloseable, because now Eclipse is _actively encouraging_ developers to change working code into broken code. To work around this, keep track in Git's constructor of whether the repository was passed in or opened at construction time, and only close the repository if it was opened by Git. Note that in the original example, there was not _actually_ a resource leak, since repo was closed exactly once; git did not _need_ to be closed in this case. But at least fixing this false-positive warning no longer introduces a real bug. Change-Id: Ie927a26ce3ae2bf8c3ef5cb963a60847067db95a
* Fix string externalization warnings in BaseFormatMatthias Sohn2015-03-123-4/+8
| | | | Change-Id: Ie40aa1f889191e45e4d4a7a144c3176d521f6cfa Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Add missing @since tags for new API methods in archive bundleMatthias Sohn2015-03-126-0/+17
| | | | Change-Id: I891e2cf9ca89ae1948e9713a412d31ec66faac86 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* CommitBuilder should check for duplicate parentsChristian Halstrick2015-03-125-33/+147
| | | | | | | | | When setting the parents of a commit with setParentIds() or addParentId() it should be checked that we don't have duplicate parents. An IllegalArgumentException should be thrown in this case. Change-Id: I9fa9f31149b7732071b304bca232f037146de454 Signed-off-by: Christian Halstrick <christian.halstrick@sap.com>
* CLI status should support --untracked-filesKaloyan Raev2015-03-126-219/+568
| | | | | | | | | | | | | | | | | | A special options handler is added to properly handle the short -u alias of the option. The "normal" mode is not supported by this patch, because this mode of listing untracked files is not supported by the org.eclipse.jgit.lib.IndexDiff class. This mode is not necessary for my use case. It can be added later if anyone really needs it. The StatusTest is updated to cover all possible combinations of the --porcelain and --untracked-files options. Bug: 459319 Change-Id: I305ac95739cfed0c16735e0987844e57fa27e236 Signed-off-by: Kaloyan Raev <kaloyan.r@zend.com> Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* TestRepository: Allow setting explicit Change-IdDave Borowitz2015-03-122-9/+33
| | | | | | | This includes both leaving existing Change-Ids alone (as, for example Gerrit's commit-msg hook does) and programmatically setting a value. Change-Id: Iaaffb0107ae27de24df1f0e95a8d628fb8ea5364
* TestRepository: Ignore existing Change-Id in messageDave Borowitz2015-03-122-0/+14
| | | | Change-Id: I343c3065fa369ef8aab2b033ac1e392b28d10daf
* TestRepository: Support committing to unborn symrefDave Borowitz2015-03-122-2/+11
| | | | Change-Id: I6bcee635adda7c929f6fa68ef20438fe77e49184
* TestRepository: Expose some getters for CommitBuilderDave Borowitz2015-03-121-0/+16
| | | | Change-Id: Ic6d179bd2de0081633c22fb82ca68ea619cb686f
* TestRepository: Add methods to amend commits or refsDave Borowitz2015-03-122-13/+192
| | | | Change-Id: I47082416f6e281262b160ba15272258f9109abd1
* TestRepository: Add a reset method to move HEAD aroundDave Borowitz2015-03-123-15/+180
| | | | | | | | | This flushed out a number of bugs in the way DfsRefUpdate, or at least the InMemoryRepository implementation, processes symrefs. These have been fixed, to an extent, in InMemoryRepository, but other implementations may still suffer from these bugs. Change-Id: Ifd12115a0060b9ff45a88d305b72f91ca0472f9a
* TestRepository: Optionally insert Change-Id in commit messageDave Borowitz2015-03-122-1/+113
| | | | | | Copied the implementation from CommitCommand. Change-Id: Iade0e2d70bde70cfa830fe23bcc41959b011a14a
* Merge topic 'testrepo'Shawn Pearce2015-03-121-83/+90
|\ | | | | | | | | | | * changes: TestRepository: Allow custom author/committer per-commit TestRepository: Use try-with-resources where appropriate
| * TestRepository: Allow custom author/committer per-commitDave Borowitz2015-03-111-9/+32
| | | | | | | | Change-Id: I078fe00470ebe60f93f4a718c163dd1412fdc776
| * TestRepository: Use try-with-resources where appropriateDave Borowitz2015-03-111-74/+58
| | | | | | | | Change-Id: I06f9534ab84278df37a140700fc2bed5ab667299
* | Fix compile error due to missing dependencies and since tagsMarkus Duft2015-03-123-0/+3
|/ | | | Change-Id: I98a9f17f987c4f3ea19d107f681c44754ed83dca Signed-off-by: Markus Duft <markus.duft@ssi-schaefer.com>
* Merge "ArchiveCommand: Allow to pass options to underlying stream"Shawn Pearce2015-03-119-17/+232
|\
| * ArchiveCommand: Allow to pass options to underlying streamDavid Ostrovsky2015-02-209-17/+232
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Current ArchiveCommand design doesn't allow to pass in options to underlying stream implementations. To overcome this, client has to implement custom format implementation (it cannot be derived from the existing one, because the classes are marked as final), and set the options using ThreadLocal, before the method ArchiveOutputStream createArchiveOutputStream(OutputStream s) is get called. This change extends the ArchiveCommand.Format by allowing to pass option map during creation of ArchiveOutputStream. ArchiveCommand is extended correspondingly. That way client can easily pass options to the underlying streams: Map<String, Object> level = ImmutableMap.<String, Object> of( "level", new Integer(9)); new ArchiveCommand(repo) .setFormat("zip") .setFormatOptions(level) .setTree(tree) .setPaths(paths) .setPrefix(prefix) .setOutputStream(sidebandOut) .call(); Change-Id: I1d92a1e5249117487da39d19c7593e4b812ad97a Signed-off-by: David Ostrovsky <david@ostrovsky.org>
* | Merge changes I627681be,I334034a2Shawn Pearce2015-03-101-8/+17
|\ \ | | | | | | | | | | | | | | | * changes: TreeWalk: Do not close reader passed explicitly to constructor TreeWalk: Stop using deprecated ObjectReader#release()
| * | TreeWalk: Do not close reader passed explicitly to constructorDave Borowitz2015-03-101-4/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | The TreeWalk(ObjectReader) constructor is explicitly to handle the case where the caller is responsible for opening and closing the reader. The reader should only be closed when it was created in the TreeWalk(Repository) constructor. Change-Id: I627681be80d69ea549f953255a64c7b3b68bcec9
| * | TreeWalk: Stop using deprecated ObjectReader#release()Dave Borowitz2015-03-101-4/+1
| | | | | | | | | | | | Change-Id: I334034a2991a07664302bc8d1f3dead85c2caffe
* | | Make s3 domain dynamic to support different s3 regionsMatthew Spurrier2015-03-101-4/+10
|/ / | | | | | | | | Change-Id: If8f9e85368c56d88bb6ae9efe1b3a29cc18cc1d5 Signed-off-by: Matthew Spurrier <matthew@spurrier.com.au>
* | RevWalk: Do not close reader passed explicitly to constructorDave Borowitz2015-03-101-7/+18
| | | | | | | | | | | | | | | | | | The RevWalk(ObjectReader) constructor is explicitly to handle the case where the caller is responsible for opening and closing the reader. The reader should only be closed when it was created in the RevWalk(Repository) constructor. Change-Id: Ic0d595dc8d10de79e87549546c6c5ea2dc617e9b
* | RevWalk: Stop using deprecated ObjectReader#release()Dave Borowitz2015-03-101-2/+2
| | | | | | | | Change-Id: If4d34f18352bd17467aeded6fd3478f29244657b
* | Update all standard maven plugins to latest versionsDave Borowitz2015-03-101-9/+9
| | | | | | | | | | | | | | | | The latest versions of the javadoc and source plugins in particular avoid some pathological slowness I'd been seeing on Linux with Java 7 or later. Change-Id: I9fddd7e6ef513debec5f014ed2efc4fea6917d1f
* | Merge "Add "--long" option to JGit describe"Christian Halstrick2015-03-105-6/+81
|\ \
| * | Add "--long" option to JGit describeChristian Halstrick2015-03-095-6/+81
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Native git supports "git describe --long". This will enforce returning a long description of a commit even if a tag is directly pointing to the commit (in contrast to just returning the tag name as it is now). This commit teaches JGits DescribeCommand and the describe command in the pgm package to support "--long". Bug: 460991 Change-Id: I65e179b79e89049c6deced3c71cb3ebb08ed0a8f Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* | | Remove AutoCloseable from internal PackFile and friendsShawn Pearce2015-03-094-5/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | PackFile is held by the block cache and cannot be auto closed in a try-with-resources statement. Remove the interface as JGit does explicit management of the instances. ObjectDatabase and RefDatabase are internal details of Repository and are managed with the Repository. Marking them AutoCloseable provides no value to the library or an application using the API. Change-Id: Ibee19eadd66233e6666b601583daa1834a7778f1
* | | PushCertificateParser: Fix check for blank line after headerShawn Pearce2015-03-091-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Reference equality (!= or ==) cannot be used to check for String equality. String objects are not necessarily interned to the same instance. Use .isEmpty() since the function only cares about an empty string and does not need to test a specific string value. Change-Id: If530cb59666a8196d57d2348c893706a517ea541
* | | Cleanup some push certificate related javadocShawn Pearce2015-03-092-45/+22
| | | | | | | | | | | | Change-Id: I319ee4e99462598bf6a934b1efc7939bc4b057a5
* | | Fix an invalid format stringDavid Pletcher2015-03-091-3/+12
|/ / | | | | | | | | | | | | | | The %x format specifier is not valid for a byte array. This patch fixes a bug that would cause an IllegalFormatConversionException. Change-Id: I025975eca7b2f10bbafa39f5519f8668e6536541 Signed-off-by: David Pletcher <dpletcher@google.com>
* | Merge "Support for the commit-msg hook."Matthias Sohn2015-03-026-0/+262
|\ \
| * | Support for the commit-msg hook.Laurent Delaigue2015-03-026-0/+262
| | | | | | | | | | | | | | | | | | | | | | | | This hook uses the file .git/COMMIT_EDITMSG to receive and potentially modify the commit message. Change-Id: Ibe2faadfb5d3932a5a3da2252d8156c4c04856c7 Signed-off-by: Laurent Delaigue <laurent.delaigue@obeo.fr> Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* | | Merge "Allow public access to PackIndex"Shawn Pearce2015-03-021-1/+11
|\ \ \ | |/ / |/| |
| * | Allow public access to PackIndexDavid Pletcher2015-03-021-1/+11
| | | | | | | | | | | | | | | | | | | | | The index provides access to a list of objects in a pack. This will be helpful for repository integrity checking. Change-Id: I435eeeb3fe1b1f5632d40528936416e97491d412 Signed-off-by: David Pletcher <dpletcher@google.com>
* | | Refactored pre-commit hook to make it less invasive.Laurent Delaigue2015-03-0217-238/+435
|/ / | | | | | | | | | | | | | | | | Hooks are now obtained via a convenient API like git commands, and callers don't have to check for their existence. The pre-commit hook has been updated accordingly. Change-Id: I3383ffb10e2f3b588d7367b9139b606ec7f62758 Signed-off-by: Laurent Delaigue <laurent.delaigue@obeo.fr> Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* | Add an in-process pack transport for use in testsDave Borowitz2015-02-275-0/+445
| | | | | | | | | | | | | | | | This allows for testing arbitrary sets of push/fetch hooks (e.g. PreReceiveHook) without depending on either an external protocol (e.g. HTTP) or the local filesystem. Change-Id: I4ba2fff9c8a484f990dea05e14b0772deddb7411
* | Extract classes for transport within a JGit processDave Borowitz2015-02-273-174/+305
| | | | | | | | | | | | | | | | | | | | | | | | | | TransportLocal knows how to spin up a thread to allow two repositories in the same process to communicate using the wire protocol. However, it is still tied to local on-disk filesystems, and needs to be able to fork processes if not using the default git-{upload,receive}-pack implementation. Extract out the connection classes so they can be used by other transport implementations. Change-Id: I5db59086740735508c2e70a597c2d1a89014b072