summaryrefslogtreecommitdiffstats
path: root/org.eclipse.jgit
Commit message (Collapse)AuthorAgeFilesLines
* JGit v3.0.0.201305281830-rc2v3.0.0.201305281830-rc2Matthias Sohn2013-05-293-3/+3
| | | | | Change-Id: I490ad8cc7590f70783d3fbd6dd6f0e0446ae5afe Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Support refspecs with wildcard in middle (not only at end)Robin Stocker2013-05-283-19/+64
| | | | | | | | | | | | | | | The following refspec, which can be used to fetch GitHub pull requests, is supported by C Git but was not yet by JGit: +refs/pull/*/head:refs/remotes/origin/pr/* The reason is that the wildcard in the source is in the middle. This change also includes more validation (e.g. "refs//heads" is not valid) and test cases. Bug: 405099 Change-Id: I9bcef7785a0762ed0a98ca95a0bdf8879d5702aa
* Fix multiple bugs in RawSubStringPattern used by MessageRevFilterRobin Stocker2013-05-281-5/+5
| | | | | | | | | | * Match at end of input was not handled correctly. * When more than one character matched but not all, the next character was not considered as a match start (e.g. pattern "abab" didn't match input "abaabab"). Bug: 409144 Change-Id: Ia44682c618bfbb927f5567c194227421d222a160 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Handle short branch/tag name for setBranch in CloneCommandRobin Stocker2013-05-261-4/+14
| | | | | | | | | | | | | | Before, it was not clear from the documentation what kind of branch name was accepted. Users specifying "branch" (instead of "refs/heads/branch") got no error message and ended up with a repository without HEAD and no checkout. With this, CloneCommand now tries "$branch", then "refs/heads/$branch" and then "refs/tags/$branch". C Git only does the last two, but for compatibility we should still allow "refs/heads/branch". Bug: 390994 Change-Id: I4be13144f2a21a6583e0942f0c7c40da32f2247a Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Apply tree filter marks when pairing DiffEntry for renamesRobin Stocker2013-05-241-0/+2
| | | | | | | | | | When using a RenameDetector to generate new DiffEntries after using DiffEntry.scan, the treeFilterMarks of the original entries were lost. Now it combines the marks from src and dst. See EGit bug 335082 where this is used. Change-Id: I72b34b10ca12e3a6bd10ce44f4fa05b193fc52cc
* Fix BatchRefUpdate progress-monitoring so it doesn't count twiceRoberto Tyley2013-05-191-3/+2
| | | | | | | | | | | | | | | I was seeing output like this while running The BFG: Updating references: 200% (374/187) ...issue sneaked in with 5cf53fda I think. The update call is also moved to the end of the loop, as update() is only supposed to be called after work has been done ("Denote that some work units have been completed"). Change-Id: I1620fa75be16dc80df44745d0e123ea512762e31 Signed-off-by: Robin Stocker <robin@nibor.org>
* Merge "Fix DiffFormatter NPEs for DiffEntry without content change" into ↵Matthias Sohn2013-05-161-1/+6
|\ | | | | | | stable-3.0
| * Fix DiffFormatter NPEs for DiffEntry without content changeRobin Stocker2013-05-151-1/+6
| | | | | | | | | | | | | | | | DiffEntry.getOldId() returns null for a diff without an index line (e.g. only mode changed, rename without content change). Bug: 407743 Change-Id: I42eac87421f2a53c985af260a253338f578492bc
* | Fix AnyObjectId's generic type declaration of ComparableRoberto Tyley2013-05-161-5/+1
|/ | | | | | | | | | | | | | | | | | | | | If you look at any implementation of Comparable in the JDK, you'll see that the type parameter for Comparable is supposed to be the type of the implementing class: http://docs.oracle.com/javase/6/docs/api/java/lang/Comparable.html The current type signature of Comparable<Object> is pretty awful, at the very least because you can not, in fact, successfully compare AnyObjectId with any random subclass of Object. It also causes problems with type-inference and the scala.math.Ordering trait in Scala. In order to compile, this change *does* require removing the AnyObjectId.ompareTo(Object) method - which actually only ever cast to AnyObjectId in any case. Nothing in the JGit test suite requires this method, but it might constitute a breaking API change, so it would be best if it can be added in time for JGit 3.0. Change-Id: I3b549a5519ccd6785f98e444da76d2363bcbe41a
* Fix CommitCommand not to destroy repoChristian Halstrick2013-05-111-60/+71
| | | | | | | | | | | | | | | | | | There was a severe bug in CommitCommand which could corrupt repos. When merging an annotated tag the JGit MergeCommand writes correctly the ID of the tag (and not the id of the commit the tag was pointing to) into MERGE_HEAD. Native git does the same. But CommitCommand was reading this file and trusting blindly that it will contain only IDs of commits. Then the CommitCommand created a commit which has as parent a non-commit object (the tag object). That's so corrupt that even native git gives up when you call "git log" in such a repo. To reproduce that with EGit simply right-click on a tag in the Repository View and select Merge. The result was a corrupt repo! Bug: 336291 Change-Id: I24cd5de19ce6ca7b68b4052c9e73dcc6d207b57c Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Fix the parameters to an exceptionRobin Rosenberg2013-05-101-20/+18
| | | | | | | A parenthesis was in the wrong place passing arguments to the wrong format call. Also fix formatting of enclosing switch statement. Change-Id: I4cb9642f08b58c39033c3a81dab4bd56bebf4fd2 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Prepare post 3.0.0 M7 buildsMatthias Sohn2013-05-083-3/+3
| | | | Change-Id: I062c44529c7ae2f960d3c64a0923a45d2dc8a863 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* JGit v3.0.0.201305080800-m7v3.0.0.201305080800-m7Matthias Sohn2013-05-083-3/+3
| | | | | Change-Id: I377b174993862918a117f54e6cba4733dfc2307c Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Add missing @since tagsMatthias Sohn2013-05-065-1/+12
| | | | | Change-Id: I9657125765716c874bb6ecf8844c34749cb3b069 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Merge "URIish: Allow multiple slashes in paths"Shawn Pearce2013-05-051-2/+3
|\
| * URIish: Allow multiple slashes in pathsRobin Stocker2013-04-271-2/+3
| | | | | | | | | | | | It's also allowed by C Git. Change-Id: Ie0a0d1f57d84e70fd5ef50b7844d22fea43d0e08
* | Remove unused repository field from RevWalkDave Borowitz2013-05-051-9/+1
| | | | | | | | | | | | | | | | The comment about legacy Tag and Object types no longer applies, though prior to Idb273d5a92849b42935ac14eed73b796b80aad50 the field was still being used by RewriteTreeFilter. Change-Id: I9ee5da8f8a3b61c9cf543817c03117ee0609dd8f
* | Merge "Require a DiffConfig when creating a FollowFilter"Shawn Pearce2013-05-054-21/+35
|\ \
| * | Require a DiffConfig when creating a FollowFilterDave Borowitz2013-05-054-21/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The various rename detection options are an inherent part of the filter, similar to the path being followed. This fixes a potential NPE when a RevWalk with a FollowFilter is created without a Repository, since the old code path tried to get the DiffConfig from the RevWalk's possibly-missing repository. Change-Id: Idb273d5a92849b42935ac14eed73b796b80aad50
* | | Extend the FS class for Java7Robin Rosenberg2013-05-049-32/+348
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The most important difference is that in Java7 we have symbolic links and for most operations in the work tree we want to operate on the link itself rather than the link target, which the old File methods generally do. We also add support for the hidden attribute, which only makes sense on Windows and exists, just since there are claims that Files.exists is faster the File.exists. A new bundle is only activated when run with a Java7 execution environment. It is implemented as a fragment. Tycho currently has no way to conditionally include optional features based on the java version used to run the build, this means with this change the jgit packaging build always needs to be run using java 7. Change-Id: I3d6580d6fa7b22f60d7e54ab236898ed44954ffd Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* | TagCommand should be able to create unannotated tags tooRobin Rosenberg2013-05-033-44/+82
| | | | | | | | | | | | | | Using the low level API's is just too cumbersome. Change-Id: Id5b9f560ee095d6db0b2ea5b26aef3e53021626e Signed-off-by: Robin Stocker <robin@nibor.org>
* | Merge "Fix warnings about assigning paramter in util.io"Robin Rosenberg2013-05-025-40/+43
|\ \
| * | Fix warnings about assigning paramter in util.ioRobin Stocker2013-05-015-40/+43
| | | | | | | | | | | | Change-Id: I08bed4275af9ec52aa4d7054067ac82f6a3c9781
* | | Update tags on fetch if --tags or tag refspec specifiedRobin Stocker2013-05-011-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When either --tags or a tag ref is explicitly specified on fetch, C Git updates existing local tags if they are different. Before this change, JGit returned REJECTED in such a case. Now it updates it and returns FORCED. Example: % mkdir a % cd a % git init -q % touch test.txt % git add test.txt % git commit -q -m 'Initial' % git tag v1 % cd .. % git clone -q a b % cd a % echo Test > test.txt % git commit -q -a -m 'Second' % git tag -f v1 Updated tag 'v1' (was bc85c08) % cd ../b % git fetch --tags - [tag update] v1 -> v1 Bug: 388095 Change-Id: I5d5494c2ad1a2cdb8e9e614d3de445289734edfe
* | | Only fetch tags that do not exist locally with auto-followRobin Stocker2013-05-011-15/+8
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This corresponds to what C Git does, quoting from the fetch man page: This is done by first fetching from the remote using the given <refspec>s, and if the repository has objects that are pointed by remote tags that it does not yet have, then fetch those missing tags. Before, JGit would also fetch tags that exist locally but point to a different object, resulting in REJECTED results for these. Also add some test cases to cover more cases. Bug: 388095 Change-Id: Ib03d2d82e9c4b60179d626cfd5174be1da6388b2 Also-by: Stefan Lay <stefan.lay@sap.com>
* | Abort before delete in FileUtils.delete EMPTY_DIRECTORIES_ONLY|RECURSIVERobin Stocker2013-04-291-1/+15
| | | | | | | | | | | | | | | | | | | | | | | | Depending on the order in which items are traversed for RECURSIVE, an empty directory may come first before detecting that there is a file and aborting. This fixes it by traversing files first. Bug: 405558 Change-Id: I638b7da58e33ffeb0fee172b96f4c823943d29e9 Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com> Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* | Merge "Make the Reflog a public API again"Robin Rosenberg2013-04-2714-63/+234
|\ \
| * | Make the Reflog a public API againRobin Rosenberg2013-04-2614-63/+234
| | | | | | | | | | | | Change-Id: I8ced7098da5b345fd9af2fdfafd1ef6a44ccee0d
* | | Merge "Remove unused logger from RecursiveMerger"Robin Rosenberg2013-04-271-3/+0
|\ \ \
| * | | Remove unused logger from RecursiveMergerJonathan Nieder2013-04-261-3/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | JGit doesn't currently use java.util.logging.Logger. Remove this never-used Logger introduced in ab99b78ca08a (Implement recursive merge strategy, 2013-02-21) to make that easier to see. Change-Id: I92c578e7f3617085a667de7c992174057be3eb71
* | | | Refer to getEntryPathLength in docs of getEntryPathBufferRobin Stocker2013-04-271-1/+8
| |_|/ |/| | | | | | | | Change-Id: Icca41d80bd0791cd2d4bf03297795d161afbee70
* | | Allow deletions to occur when there is no HEADAlex Blewitt2013-04-271-1/+1
|/ / | | | | | | | | | | | | | | | | | | | | If the HEAD is not present in a repository, then there is a NullPointerException thrown in the delete code. Since this only exists to verify if the deletion is not the HEAD reference, then skip this check if the HEAD cannot be found. Bug: 406722 Change-Id: I882497202d986096513a4d791cd07fa935a3f9e4 Signed-off-by: Alex Blewitt <alex.blewitt@gmail.com>
* | Merge "status: Print conflict description for unmerged paths"Robin Rosenberg2013-04-251-1/+11
|\ \
| * | status: Print conflict description for unmerged pathsRobin Stocker2013-04-191-1/+11
| | | | | | | | | | | | | | | | | | | | | Prefix unmerged paths with conflict description (e.g. "both modified:"), the same way C Git does. Change-Id: I083cd191ae2ad3e2460aa4052774aed6e36c2699
* | | Document RevTag#getObject() that returned object is unparsedRobin Stocker2013-04-221-1/+9
| | | | | | | | | | | | Change-Id: I238d388e40362721eecf37f64ad7d48a399ff129
* | | Improve class documentation of TagCommandRobin Stocker2013-04-221-4/+13
|/ / | | | | | | Change-Id: I9c636b927fa2d7cfbe1eb5535a9e702b2209f51d
* | Create constants in ConfigConstants for the "diff" sectionRobin Rosenberg2013-04-192-8/+46
| | | | | | | | | | Change-Id: I5cf5fe60374d1e94eb031488e4f92c8e521f41a6 Signed-off-by: Chris Aniszczyk <zx@twitter.com>
* | Fix examples with refs/heads/ in RefSpec JavadocRobin Stocker2013-04-191-8/+8
| | | | | | | | | | Change-Id: I06c1c7242a1b4c8f499c27a598cca714803799b7 Signed-off-by: Chris Aniszczyk <zx@twitter.com>
* | IndexDiff: Provide stage state for conflicting entriesRobin Stocker2013-04-191-5/+133
|/ | | | | | | | | | | | | Adds a new method getConflictingStageStates() which returns a Map<String, StageState> (path to stage state). StageState is an enum for all possible stage combinations (BOTH_DELETED, ADDED_BY_US, ...). This can be used to implement the conflict text for unmerged paths in output of "git status" or in EGit for decorations/hints. Bug: 403697 Change-Id: Ib461640a43111b7df4a0debe92ff69b82171329c Signed-off-by: Chris Aniszczyk <zx@twitter.com>
* Merge "A deleted work tree file is not a conflict when merge wants to delete it"Robin Rosenberg2013-04-191-1/+5
|\
| * A deleted work tree file is not a conflict when merge wants to delete itRobin Rosenberg2013-04-081-1/+5
| | | | | | | | | | Bug: 405199 Change-Id: I4b2ef3dc432d2fad8a6fabd1c8aec407b5c8c5ac Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>
* | Merge "Untracked files should not be included in stash"Robin Rosenberg2013-04-191-3/+11
|\ \
| * | Untracked files should not be included in stashRobin Rosenberg2013-04-181-3/+11
| | | | | | | | | | | | | | | | | | | | | | | | The previous code stashed untracked files and left them in the work tree. Bug: 403282 Change-Id: I71727addb2b55fb8e409cae2b6af8138b1ff7ef1
* | | Remove some unnecessary dependencies on FileRepostoryRobin Rosenberg2013-04-181-3/+3
| | | | | | | | | | | | | | | Change-Id: Ib6ee3a2874a7e2240aa68f4ac32d00c4d1fab5ae Signed-off-by: Chris Aniszczyk <zx@twitter.com>
* | | Improve test coverage of AutoCRLF(In|Out)putStreamRobin Stocker2013-04-181-1/+4
| | | | | | | | | | | | | | | | | | Bug: 405672 Change-Id: I3894e98617fcee16dc2ac9853c203c62eb30c3ab Signed-off-by: Chris Aniszczyk <zx@twitter.com>
* | | Merge changes Id2848c16,I7621c434Shawn Pearce2013-04-173-56/+243
|\ \ \ | | | | | | | | | | | | | | | | | | | | * changes: Rescale "Compressing objects" progress meter by size Split delta search buckets by byte weight
| * | | Rescale "Compressing objects" progress meter by sizeShawn Pearce2013-04-173-16/+58
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Instead of counting objects processed, count number of bytes added into the window. This should rescale the progress meter so that 30% complete means 30% of the total uncompressed content size has been inflated and fed into the window. In theory the progress meter should be more accurate about its percentage complete/remaining fraction than with objects. When counting objects small objects move the progress meter more rapidly than large objects, but demand a smaller amount of work than large objects being compressed. Change-Id: Id2848c16a2148b5ca51e0ca1e29c5be97eefeb48
| * | | Split delta search buckets by byte weightShawn Pearce2013-04-173-42/+187
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Instead of assuming all objects cost the same amount of time to delta compress, aggregate the byte size of objects in the list and partition threads with roughly equal total bytes. Before splitting the list select the N largest paths and assign each one to its own thread. This allows threads to get through the worst cases in parallel before attempting smaller paths that are more likely to be splittable. By running the largest path buckets first on each thread the likely slowest part of compression is done early, while progress is still reporting a low percentage. This gives users a better impression of how fast the phase will run. On very complex inputs the slow part is more likely to happen first, making a user realize its time to go grab lunch, or even run it overnight. If the worst sections are earlier, memory overruns may show up earlier, giving the user a chance to correct the configuration and try again before wasting large amounts of time. It also makes it less likely the delta compression phase reaches 92% in 30 minutes and then crawls for 10 hours through the remaining 8%. Change-Id: I7621c4349b99e40098825c4966b8411079992e5f
* | | | Merge "Support excluding objects during DFS compaction"Shawn Pearce2013-04-171-31/+102
|\ \ \ \
| * | | | Support excluding objects during DFS compactionShawn Pearce2013-04-161-31/+102
| | |/ / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | By excluding objects the compactor can avoid storing objects that are already well packed in the base GC packs, or any other pack not being replaced by the current compaction operation. For deltas the base object is still included even if the base exists in another exclusion set. This favors keeping deltas for recent history, to support faster fetch operations for clients. Change-Id: Ie822fe075fe5072fe3171450fda2f0ca507796a1