summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Implemented first part of the repo sub-command.Yuxuan 'fishy' Wang2014-04-235-0/+410
| | | | | | | | Currently the repo sub-command only "works", but the submodules will have .git directories themselves, and lacks group support. Change-Id: I88a6ee07109187c6c9bfd92a044775fcfb5befa6 Signed-off-by: Yuxuan 'fishy' Wang <fishywang@google.com>
* Merge "blame: Format commit and author only once per range"Shawn Pearce2014-04-231-13/+23
|\
| * blame: Format commit and author only once per rangeShawn Pearce2014-04-211-13/+23
| | | | | | | | | | | | | | | | | | | | | | | | When a commit is blamed for multiple lines of the result file the command line interface prints the same text before each line in that span. Format these strings once and reuse them as the line prefix. For long files (e.g. 2425 lines of ReceiveCommits.java in Gerrit) this can save as much as 20ms during the output phase of the command line blame program. Change-Id: Ie42787d77c8d0cbca7ccbf59c795120494a2a891
* | Merge changes Icb1d49e5,I8bcab447,I3fa19b86,I2cda031b,I8b2dbf63Shawn Pearce2014-04-223-28/+42
|\| | | | | | | | | | | | | | | | | * changes: blame: Reuse existing blameEntireRegionOnParent method blame: Remove unnecessary curly braces around single statement if blame: Allow candidate to manage its setup before output blame: Do not update candidate regionList during output blame: Only use computeRange if -L was requested
| * blame: Reuse existing blameEntireRegionOnParent methodShawn Pearce2014-04-211-3/+1
| | | | | | | | | | | | | | | | Skipping directly to the parent is already possible with an existing helper method. Update the source path (to follow the rename) and then use the existing code path to push the parent inside the current entry. Change-Id: Icb1d49e53d14b599efc478990613625a9e058e09
| * blame: Remove unnecessary curly braces around single statement ifShawn Pearce2014-04-211-2/+1
| | | | | | | | Change-Id: I8bcab44785fe08bbf3519c634e57ebfea8d3f0f9
| * blame: Allow candidate to manage its setup before outputShawn Pearce2014-04-212-2/+12
| | | | | | | | | | | | | | | | Pass in the RevWalk and let the candidate decide how to prepare itself for output. This removes the conditional for the missing sourceCommit, as candidates missing a commit can override the method with a no-op. Change-Id: I3fa19b8676dfd3c177583f8f42593b5000b5350d
| * blame: Do not update candidate regionList during outputShawn Pearce2014-04-211-21/+24
| | | | | | | | | | | | | | | | Instead of updating the candidate's regionList field to iterate through the linked list of regions, use a special purpose field in the BlameGenerator. This allows the candidate to be unmodified. Change-Id: I2cda031b59220ab603ef82050e741ecbbaa1953f
| * blame: Only use computeRange if -L was requestedShawn Pearce2014-04-211-0/+4
| | | | | | | | | | | | | | The computeRange method is inefficient for computing the entire file. If the entire file was selected ask for the entire file. Change-Id: I8b2dbf635e875cc125443dac50be121208646540
* | pgm: Flush stderr during shutdownShawn Pearce2014-04-211-0/+2
|/ | | | | | | | If an error occurs in command line option parsing the error message may be stuck in a Java level buffer. Flush the stream to ensure everything is made available to the calling process or terminal. Change-Id: I55b16e43aa96fc81c1197121032f5cdd901d412c
* Expose ReceiveCommand version of TrackingRefUpdateShawn Pearce2014-04-181-2/+9
| | | | | | | | | If the caller uses a BatchRefUpdate to execute these (e.g. fetch) there may be more detailed status information inside of the command that was used to execute it. Allow the caller to obtain that status data from the ReceiveCommand version of the TrackingRefUpdate. Change-Id: I47209377fb8fcef0346d7678f1ab27f4790b49bc
* Merge changes I483c40e8,Ib16d684d,I9fb25229,I5f7c4855,I36905959Shawn Pearce2014-04-186-50/+251
|\ | | | | | | | | | | | | | | | | * changes: diff: Optimize single line edits blame: Reduce running time ~4.5% by skipping common subtrees blame: Micro optimize blob lookup in tree blame: Automatically increase commit abbreviation length Blame correctly in the presence of conflicting merges
| * diff: Optimize single line editsShawn Pearce2014-04-182-1/+7
| | | | | | | | | | | | | | | | If the header and trailer are identical up to a single line on both sides, return that REPLACE edit as the only result. No algorithm can break down a REPLACE with height of 1. Change-Id: I483c40e8790cc3e8b322ef6dfce2299491fd0ac7
| * blame: Reduce running time ~4.5% by skipping common subtreesShawn Pearce2014-04-172-17/+60
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | With this commit running blame on render_view_impl.cc[1] saves about 644 ms over prior versions, reducing the time about 4.5%. Large projects often contain strands of commits where no changes are made to a particular subtree. Blame used to dive recursively into these subtrees to look for the blob and check if its SHA-1 was changed. In chromium/src[1] only 20% of the commits modify the content/renderer subtree relevant for the file. The recursivePath is necessary to check for '/' and remember if common subtree elimination should be attempted. When a file lives within a subtree the extra cost to check for unmodified subtrees saves time. However for files in the root tree the extra work incurred by TreeWalk is not worthwhile and would significantly increase overall running time. Now typical running times from an otherwise idle desktop: real 0m13.387s 0m13.341s 0m13.443s user 0m15.410s 0m15.220s 0m15.350s previously: real 0m14.085s 0m14.049s 0m13.968s user 0m15.730s 0m15.820s 0m15.770s [1] https://chromium.googlesource.com/chromium/src/+show/34d6e5c5b4248b1b199405af7ad00f961921f347/content/renderer/render_view_impl.cc Change-Id: Ib16d684df7ffa034ee28def3fb22c797998d5b7b
| * blame: Micro optimize blob lookup in treeShawn Pearce2014-04-171-10/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | Avoid converting the raw mode to FileMode. This is an expensive if-else-if sort of test to just check if the thing is a blob. Instead test the bit mask directly, which is at least a few instructions shorter. The TreeWalk is already recursive and will auto-dive into any subtrees found. isSubtree check is unnecessary, as is the loop, as only one result will ever be returned by next(). Change-Id: I9fb25229ebed857469427bfbdf74aedebfddfac8
| * blame: Automatically increase commit abbreviation lengthShawn Pearce2014-04-172-3/+29
| | | | | | | | | | | | | | | | | | Ensure commit object names are unique by extending the default abbreviation as long as necessary. This allows `jgit blame` to more closely match the formatted output of `git blame` on large histories like Gerrit Code Review's ReceiveCommits.java file. Change-Id: I5f7c4855769ee9dcba973389df9e109005dcdb5b
| * Blame correctly in the presence of conflicting mergesKonrad Kügler2014-04-173-19/+147
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: The BlameGenerator used the RevFlag SEEN to mark commits it had already looked at (but not necessarily processed), to prevent processing a commit multiple times. If a commit is a conflicting merge that contains lines of the merge base, that have been deleted in its first parent, either these lines or the lines untouched since the merge base would not be blamed properly. This happens for example if a file is modified on a main branch in an earlier commit M and on a side branch in a later commit S. For this example, M deletes some lines relative to the common base commit B, and S modifies a subset of these lines, leaving some other of these lines untouched. Then side is merged into main, creating a conflict for these lines. The merge resolution shall carry over some unmodified lines from B that would otherwise be deleted by M. The route to blame these lines is via S to B. They can't be blamed via M, as they don't exist there anymore. Q |\ | \ | S | | M | | / |/ B Blaming the merged file first blames via S, because that is the most recent commit. Doing so, it also looks at B to blame the unmodified lines of B carried over by S into the merge result. In the course of this, B is submitted for later processing and marked SEEN. Later M is blamed. It notices that its parent commit B has been SEEN and aborts processing for M. B is blamed after that, but only for the lines that survived via S. As a result, only the lines contributed by S or by B via S are blamed. All the other lines that were unchanges by both M and S, which should have been blamed to B via M, are not blamed. Solution: Don't abort processing when encountering a SEEN commit. Rather add the new region list of lines to be blamed to those of the already SEEN and enqueued commit's region list. This way when the B commit of the above example is processed, it will blame both the lines of M and S, yielding a complete blame result. Bug: 374382 Change-Id: I369059597608022948009ea7708cc8190f05a8d3 Signed-off-by: Konrad Kügler <swamblumat-eclipsebugs@yahoo.de> Signed-off-by: Shawn Pearce <spearce@spearce.org>
* | Merge branch 'stable-3.3'Matthias Sohn2014-04-181-0/+1
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | * stable-3.3: JGit v3.3.2.201404171909-r Fix version.sh to update Eclipse-SourceBundle version Change-Id: Ic4f5d5c73f18775ca4449bb79d46e3b807a46ab2 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| * | JGit v3.3.2.201404171909-rv3.3.2.201404171909-rstable-3.3Matthias Sohn2014-04-1855-59/+59
| | | | | | | | | | | | | | | Change-Id: I1d7e40156d0b6e30bd5f3a40f18c836b7d1ba78f Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| * | Fix version.sh to update Eclipse-SourceBundle versionMatthias Sohn2014-04-181-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | The version attribute of Eclipse-SourceBundle must match the bundle version. Change-Id: Ic629ccae1d89c9070e4ec80420a0e2ed7d403922 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* | | Allow ArchiveCommand.registerFormat to be called twiceJonathan Nieder2014-04-163-22/+91
| | | | | | | | | | | | | | | | | | | | | | | | This should make it possible for the gitiles plugin to register its archive formats after gerrit has already registered them. Signed-off-by: Jonathan Nieder <jrn@google.com> Change-Id: Icb80a446e583961a7278b707d572d6fe456c372c
* | | Merge "Make ArchiveFormats final and implement equals()"Dave Borowitz2014-04-145-5/+55
|\ \ \
| * | | Make ArchiveFormats final and implement equals()Jonathan Nieder2014-04-115-5/+55
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This should make it easier to modify ArchiveCommand to allow an archive format to be registered twice while still noticing if different callers try to register different implementations for the same format. Change-Id: I32261bc8dc1877a853b49e0da0a6e78921791812 Signed-off-by: Jonathan Nieder <jrn@google.com>
* | | | Merge branch 'stable-3.3'Matthias Sohn2014-04-141-2/+2
|\ \ \ \ | | |/ / | |/| | | | | | | | | | | | | | | | | | | | | | * stable-3.3: Ensure that stored credentials aren't reset too early Change-Id: Idcd57e12f5fe905952be49edb4f82db6b7ed469f Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| * | | Ensure that stored credentials aren't reset too earlyMatthias Sohn2014-04-141-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Some commands are started without showing a dialog allowing to enter credentials if needed. Hence we need to tolerate one failing HTTP authentication to trigger loading credentials from the secure store. Hence we should not immediately reset the stored credentials if the first attempt to authenticate fails. Bug: 431209 Change-Id: I1b9fa34c3d70be226bb1c59c9ebe995998d29bc8 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* | | | Update Software User AgreementMatthias Sohn2014-04-1415-197/+285
| |_|/ |/| | | | | | | | | | | Bug: 431255 Change-Id: I8a44028d8c48ddd1b9d2f9ef4af4d417c5454881
* | | Merge changes Id9a641dd,If2ee1f42Robin Rosenberg2014-04-092-1/+86
|\ \ \ | | | | | | | | | | | | | | | | | | | | * changes: Added TestCase for 7d5e1f Fixed RevWalk.isMergedInto() Fixed RevWalk.isMergedInto() returning wrong results
| * | | Added TestCase for 7d5e1f Fixed RevWalk.isMergedInto()Sven Selberg2014-04-091-0/+80
| | | | | | | | | | | | | | | | | | | | | | | | Change-Id: Id9a641dd67c4182bb3a0dc83a6864fee43e7653f Signed-off-by: Gustaf Lundh <gustaf.lundh@sonymobile.com> Signed-off-by: Sven Selberg <sven.selberg@sonymobile.com>
| * | | Fixed RevWalk.isMergedInto() returning wrong resultsGustaf Lundh2014-03-241-1/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Under certain circumstances isMergedInto() returned false even though base is reachable from the tip. This will hinder pushes and receives by falsely detecting "non fast forward" merges. o---o---o---o---o / \ / o---o---A---o---M / / ---2---1- if M (tip) was compared to 1 (base), the method isMergedInto() could still return false, since two mergeBases will be detected and the return statement will only look at one of them: return next() == base; In most cases this would pass, but if "A" is a commit with an old timestamp, the Generator would walk down to "2" before completing the walk pass "A" and first finding the other merge base "1". In this case, the first call to next() returns 2, which compared to base evaluates as false. This is fixed by iterating merge bases and returning true if base is found among them. Change-Id: If2ee1f4270f5ea4bee73ecb0e9c933f8234818da Signed-off-by: Gustaf Lundh <gustaf.lundh@sonymobile.com> Signed-off-by: Sven Selberg <sven.selberg@sonymobile.com>
* | | | Fix ValidRefNameTest on WindowsRobin Rosenberg2014-04-061-23/+55
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There are certain ref names which native git can be create only on non-windows systems (e.g. "refs/tags/>"). On Windows systems we can't persist this refs because the ref names are not valid file names. Our tests in ValidRefNameTest assumed that these are valid refs on all systems. This broke the tests on Windows. Change-Id: Ic53c396c88b84cbdf579a636953f7519952270c0
* | | | Fix FileTreeIteratorTest#testIsModifiedFileSmudged() on WindowsRobin Rosenberg2014-04-061-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This would be a problem for any OS where Java lets the subscond part through to the File API. The fix is to force the timetamp of the index rather than trusting it to just happen to be right. Bug: 430765 Change-Id: Id6b3ba003f58427a3ffaacd224649e2d6c93566b Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>
* | | | Don't use package private classes when overriding a public interfaceRobin Rosenberg2014-04-052-4/+6
| |_|/ |/| | | | | | | | Change-Id: If8522d4e02254766e3310a70e42badafa5ab9768 Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>
* | | Mark getParent deprecated in CanonicalTreeParserShawn Pearce2014-04-031-0/+1
| | | | | | | | | | | | | | | | | | | | | @deprecated in Javadoc must be accompanied by @Deprecated annotation on the class member. Change-Id: Ifdf787f496ff3ffd6ffe8f3321d56320cb08454f
* | | Fix ObjectChecker when normalization is enabledShawn Pearce2014-04-032-3/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When safeForMacOS is enabled the checker verifies a name does not match against another name in the same tree after normalization to NFC. The check was incorrect and failed when the first name was put in, rejecting simple trees containing only one file like "F". Add a test for this simple tree to verify it is accepted. Fix the test for NFC normalization to actually normalize and have a collision. Change-Id: I39e7d71150948872bff6cd2b06bf8dae52aa3c33
* | | Abbreviate SHA-1s when reporting invalid objectsShawn Pearce2014-04-031-1/+2
| | | | | | | | | | | | | | | | | | | | | The full 40 digit name is rather long. In most cases an abbreviated name should be sufficient. Change-Id: Id16a37c6c745ede1fa0d97c5bc390491799500bc
* | | Throw CorruptObjectException when a bad object is foundShawn Pearce2014-04-032-3/+19
| | | | | | | | | | | | | | | | | | This makes it easier to identify higher in the call stack. Change-Id: I829431c38c71fa1899e33916252b75f09db8ecbd
* | | Merge "Add missing space to invalid object error messages"Matthias Sohn2014-04-031-1/+1
|\ \ \
| * | | Add missing space to invalid object error messagesShawn Pearce2014-04-031-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | "Invalid tree aa6f10291050a00de83b4630783030b9e3b969ec:duplicate entry names" is hard to read. A space after the object name and before the message makes the message more readable. Change-Id: I96406100dbef8e4bc8fe2047d102681194dc8847
* | | | Avoid calls to System.exit() and throw an exception insteadGuillaume Nodet2014-04-023-2/+37
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The exception is caught in Main and System.exit() is called. Bug: 413522 Change-Id: Ibe68f7104d4fd55b832000a7840c07a169e7dd58 Signed-off-by: Guillaume Nodet <gnodet@gmail.com> Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* | | | Add an input stream and an error stream to TextBuiltin base classGuillaume Nodet2014-03-3010-52/+88
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Leverage these streams to remove calls to System.in and System.err Bug: 413522 Change-Id: I8396f3e273c93e23861e8bcfb2ab8182fb09220d Signed-off-by: Guillaume Nodet <gnodet@gmail.com> Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* | | | Add launchers for running tests with Java 8Robin Rosenberg2014-03-293-0/+78
| | | | | | | | | | | | | | | | Change-Id: I91a7225cff350f11cc224129439622c7dfd9f4f3 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* | | | Make sure we include the Java 7 module in tests when using JDK 8Robin Rosenberg2014-03-293-3/+3
| | | | | | | | | | | | | | | | Change-Id: Idfb3b16725d8f2ad25338dd0910fb1334c00cde4
* | | | Cleanup javadocs so they pass the java8 doclint checksRobin Rosenberg2014-03-2935-84/+102
| | | | | | | | | | | | | | | | | | | | | | | | Bug: 431552 Change-Id: I469316f5645205016e1fa6b0fbd2ff3b509b14bc Signed-off-by: Robin Stocker <robin@nibor.org>
* | | | Allow full compiles on Java 8.Alexander Kurtakov2014-03-281-3/+2
|/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | Make jgit.java6 and jgit.java7 activation based on ranges so modules in jgit.java6 are enabled for Java 1.6+ and modules in jgit.java7 are enabled for Java 1.7+. This enables full compiles on Java 8 and also removes the need to list org.eclipse.jgit.console in both profiles. Change-Id: Iabfcff18737ff435ba8d5e8efc7a581abc9a46ce Signed-off-by: Alexander Kurtakov <akurtako@redhat.com>
* | | Interactive rebase: Fix order of commit messages on squashStefan Lay2014-03-272-8/+8
| | | | | | | | | | | | | | | | | | | | | Bug: 431214 Change-Id: I295bfdc5751545b046d7fe7efc3f8b39ab4f5415 Signed-off-by: Stefan Lay <stefan.lay@sap.com> Signed-off-by: Robin Rosennberg <robin.rosenberg@dewire.com>
* | | Fix missing NON-NLS tag in RebaseCommandStefan Lay2014-03-271-1/+1
| | | | | | | | | | | | Change-Id: Ied3e7ec0d825416226cacb2f14d5bca003af36da Signed-off-by: Stefan Lay <stefan.lay@sap.com>
* | | Fix GarbageCollection not to pack HEADChristian Halstrick2014-03-262-1/+69
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When working on a non-bare repository with a detached HEAD jgit's GC was packing the ref named "HEAD" into the packed-refs file and deleted the loose ref (the file .git/HEAD!). This made the repo unusable for native git. This is fixed by telling jgit to only pack refs starting from "refs/" Change-Id: I50018aa006f18b244d2cae2ff78b5ffe1b821d63
* | | Fix NameRevCommand when repo has no annotated tagsDave Borowitz2014-03-252-5/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, calling addAnnotatedTags() did not modify any state when there were no annotated tags in the repository. This caused the code to assume no addFoo() methods had been called, and fell back to the default of adding refs/*. Instead, use null to indicate neither addRefs() nor addAnnotatedTags() was called. Add a test for this behavior. Change-Id: I9926e5ac17e1a983cd399798993031c72bd79c2c
* | | Merge branch 'stable-3.3'Matthias Sohn2014-03-254-14/+25
|\ \ \ | |/ / |/| / | |/ | | | | | | | | | | | | | | | | | | * stable-3.3: Prepare 3.3.2-SNAPSHOT builds JGit v3.3.1.201403241930-r Retry to call credentials provider if http authentication failed Ensure that ssh authentication is retried only in JGit [findBugs] Ensure streams are closed in a finally block Update com.jcraft.jsch to 0.1.50 also in pom dependencies Change-Id: I45b48a3f2dc8c7708e9518645d72bc5645002836 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| * Prepare 3.3.2-SNAPSHOT buildsMatthias Sohn2014-03-2555-258/+258
| | | | | | | | | | Change-Id: I48271980a258acd0ada7c418b24c61c1bf0a0cd2 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>