summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Fix javadoc errors and unused imports introduced by ddd0fe25Matthias Sohn2016-06-013-5/+6
| | | | Change-Id: I2d17115843e453c71febd4a58527effe658b48fd Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* RepoCommand: record manifest shallow recommendation in .gitmodulesStefan Beller2016-05-314-5/+104
| | | | | | | | | | | | | Git core learned about the submodule.<name>.shallow option in .gitmodules files, which is a recommendation to clone a submodule shallow. A repo manifest may record a clone depth recommendation as an optional field, which contains more information than a binary shallow/nonshallow recommendation, so any attempted conversion may be lossy. In practice the clone depth recommendation is either '1' or doesn't exist, which is the binary behavior we have in Git core. Change-Id: I51aa9cb6d1d9660dae6ab6d21ad7bae9bc5325e6 Signed-off-by: Stefan Beller <sbeller@google.com>
* RepoCommand: record manifest groups as submodule labelsStefan Beller2016-05-313-8/+140
| | | | | | | | | | | | | | | | | | | | | | | | | | Git core learned about attributes in pathspecs: pathspec: allow querying for attributes The pathspec mechanism is extended via the new ":(attr:eol=input)pattern/to/match" syntax to filter paths so that it requires paths to not just match the given pattern but also have the specified attrs attached for them to be chosen. (177161a5f7, 2016-05-20) We intend to use these pathspec attribute patterns for submodule grouping, similar to the grouping in repo. So the RepoCommand which translates repo manifest files into submodules should propagate this information along. This requires writing information to the .gitattributes file instead of the .gitmodules file. For now we just overwrite any existing .gitattributes file and do not care about prior attributes set. If this becomes an issue we need to figure out how to correctly amend the grouping information to an existing .gitattributes file. Change-Id: I0f55b45786b6b8fc3d5be62d7f6aab9ac00ed60e Signed-off-by: Stefan Beller <sbeller@google.com>
* Remove the deprecated TestRepository.getClock() methodTerry Parker2016-05-311-11/+0
| | | | | | | | Gitles was the holdout and TestRepository.getClock() was removed via: https://gerrit.googlesource.com/gitiles/+/f10481d8384d1695e6981b805c4e5e462e4b71ea Change-Id: I90c0fc17be4891545b097a49763b0f0c202cc004 Signed-off-by: Terry Parker <tparker@google.com>
* Replace use of deprecated method Repository.getRef()Matthias Sohn2016-05-3135-58/+58
| | | | Change-Id: Iecf2b8deafc4991cc3333702fb9fa0638be7b914 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* [findBugs] Prevent potential NPE in FileLfsRepository.getOutputStream()Matthias Sohn2016-05-301-1/+4
| | | | Change-Id: I6f91997e8a976e5f4ace91c082d8b9adf1451adc Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Better report on client side if push failed due to too large objectMatthias Sohn2016-05-304-4/+91
| | | | | | | | | | | | | | | | | JGits PushCommand and BasePackPushConnection were throwing a generic exception when the pushed pack-file was rejected by the server since it contained too large objects. Teach JGit to better analyze the server's response to detect this situation and throw a more specific exception. Detect this situation by parsing the status line sent by the server. This change only recognizes the response sent by a JGit based server. All other servers which report such problems in a different way still lead to a generic TransportExceptions. Also see https://git.eclipse.org/r/#/c/46348/ Change-Id: I8d6d65e4585ebb3846f7207e7d1a2f82fa9cbd86 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* [findBugs] Prevent potential NPE in CloneCommand.init()Matthias Sohn2016-05-303-0/+14
| | | | | | | File.listFiles() returns null if the File is not a directory, improve validation of directory and gitDir to fix this. Change-Id: I763d08835faf96a0beb8e706992df0908526bd2c Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Merge "RepoCommandTest: Improve assertion message for remote branch recording"Terry Parker2016-05-261-2/+2
|\
| * RepoCommandTest: Improve assertion message for remote branch recordingStefan Beller2016-05-251-2/+2
| | | | | | | | | | Change-Id: Ic14e9f9c4bf007b464e463f5047ec5a8d0b9236c Signed-off-by: Stefan Beller <sbeller@google.com>
* | RepoCommand: remove --record-remote-branchesStefan Beller2016-05-252-5/+0
|/ | | | | | | | This function only works in bare mode, and the command line works in non-bare mode, so there's no point in pretending to support it here. Change-Id: Ia017aded93d072bdb9947ec08c424256c3abe438 Signed-off-by: Stefan Beller <sbeller@google.com>
* JGit CLI: allow to call git init with specific directoryRüdiger Herrmann2016-05-223-2/+102
| | | | | | | | With this change it is possible to initialize repositories with 'git init /path/to/new/repo' Change-Id: Ia9b288b4fb34887e8f5e2f3f270e521c44d41b6a Signed-off-by: Rüdiger Herrmann <ruediger.herrmann@gmx.de> Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Redirect all Show output to outsRüdiger Herrmann2016-05-211-2/+8
| | | | | | | | The Show command wrote all diffs to System.out instead of 'outs. Bug: 494143 Change-Id: Ibc78e9a058b7a32d536e03e294c1d933b6c26ba7 Signed-off-by: Rüdiger Herrmann <ruediger.herrmann@gmx.de> Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Support git config [include] section with absolute path(s)Marco Miller2016-05-215-1/+130
| | | | | | | | | | | | | | | | As per [1], but limited to absolute paths indeed. No support yet for tilde or $HOME expansion. Support for the --[no-]includes options ([1]) is not part of this commit scope either, but those options' defaults are in effect as described in [1]. [1] https://git-scm.com/docs/git-config Included path can be a config file that includes other path-s in turn. An exception is thrown if too many recursions (circular includes) happen because of ill-specified config files. Change-Id: I700bd7b7e1625eb7de0180f220c707d8e7b0930b Signed-off-by: Marco Miller <marco.miller@ericsson.com> Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Added filter for merge and non-merges commits.Alcemir Santos2016-05-203-0/+136
| | | | | | | | Added the option to retrieve either merge or non-merge commits in the LogCommand. Change-Id: Ie0e1c515a823f2392783f1a47d385c31230e8167 Signed-off-by: Alcemir Santos <alcemir.santos@gmail.com> Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* [findBugs] Prevent potential NPE in FS_POSIX.readUmask()Matthias Sohn2016-05-191-1/+1
| | | | | | | BufferedReader.readLine() returns null if the end of the stream has been reached. Change-Id: I83102bbfb1316407247e0f29023077af9e8d9606 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* [findBugs] Fix calculation of host header in SignerV4Matthias Sohn2016-05-191-3/+3
| | | | | | | | We ignored the returned concatenation of host name and port number. Fix this and use a StringBuilder to avoid creation of unnecessary String objects. Change-Id: I61fac639d4a4c95412eb41a0f9131d0c38aca794 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Update Orbit repository to S20160518051658 for Neon RC2Matthias Sohn2016-05-193-9/+9
| | | | Change-Id: If1bc2001108091770bccee7fa59b0e7f5e3974d7 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Fix StashApply regarding handling of untracked filesChristian Halstrick2016-05-192-3/+43
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There was a bug regarding how JGit handled untracked files when applying a stash. Problem was that untracked files are applied by doing a merge of HEAD and untrackedFiles commit with a merge base of the stashed HEAD. That's wrong because the untrackedFiles commit has no parent and contains only the untracked files. Using stashed HEAD as merge base leads to unneccessary conflicts on files not event included in the untrackedFiles commit. Imagine this graph directly before you want to apply a stash which was based on 0. You want to apply the stash on current HEAD commit 5. 5 (HEAD,master) / 0---+ \ \ 1---3 (WIP on master) / 2 (untracked files on master) Imagine for a specific (tracked) file f - commit 0 contains X - HEAD contains Y - commit 2 (the untracked files) does not contain file f A merge of 2 and 5 with a merge base of 0 leads to a conflict. The 5 commit wants to modify the file and the 2 commit wants to delete the file -> conflict. If no merge base is set then the semantic is correct. Thanks to Bow for finding this bug and providing the test case. Bug: 485467 Change-Id: I453fa6ec337f81b2a52c4f51f23044faeec409e6 Also-by: Bow Ruggeri <bow@bow.net> Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* GC should not pack objects only referenced by ORIG_HEAD,...Christian Halstrick2016-05-182-4/+18
| | | | | | | | | | | | | | | | | | There are references which are returned by RefDatabase.getAdditionalRefs() which are allowed to point to non-existing objects. These refs should not save objects from being garbage collected. Examples for these references are ORIG_HEAD, MERGE_HEAD, FETCH_HEAD and CHERRY_PICK_HEAD. Native git will not take these references into account when doing a gc and therefore these references may point to non-existing objects after a gc. Teach JGit's GC to behave the same: ignore additional refs if they don't start with "refs/". Examples for refs returned by getAdditionalRefs() which do start with "refs/" are the bootstrap refs when using reftree's (see commit 115f1ad3974d1162b33d1c8eff466019d1f249f3). See also http://article.gmane.org/gmane.comp.version-control.git/294126. Bug: 479697 Change-Id: I10e40589f13e72aacdd9f86f3b44696fd1cd068a Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Make sure to overwrite files when "reset --hard" detects conflictsChristian Halstrick2016-05-182-2/+41
| | | | | | | | | | | | | | | | | | | | | | When performing a "reset --hard" a checkout is done. The pathes are checked for potential checkout conflicts. But in the end for all remaining conflicts these files are simply deleted from the working tree. That's not the right strategy to handle checkout conflicts during "reset --hard". Instead for every conflict we should simply checkout the merge commit's content. This is different from native gits behavior which reports errors when during a "checkout --hard" a file shows up where a folder was expected. "warning: unable to unlink d/c.txt: Not a directory" Why it is like that in native git was asked in http://permalink.gmane.org/gmane.comp.version-control.git/279482. Unless it is explained why native git why this error is reported JGit should overwrite the files. Bug: 474842 Change-Id: I08e23822a577aaf22120c5137eb169b6bd08447b Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Allow setting FileMode to executable when applying patches in ApplyCommandNadav Cohen2016-05-1710-0/+71
| | | | | | | | | git-apply allows modifying file modes in patched files using either "new mode" or "new file mode" headers. This patch adds support for setting files as executables and vice-versa. Change-Id: I24848966b46f686f540a8efa8150b42e0d9c3ad1 Signed-off-by: Nadav Cohen <nadavcoh@gmail.com>
* Fix config value get to return last instead of 1st just like gitMarco Miller2016-05-122-4/+11
| | | | | | | | | | | | | | Before this fix, getting the value of 'key' below used to return value1. This fix makes it so that value3 gets returned instead, just like native git's get. [section] key = value1 key = value2 key = value3 Change-Id: Iccb24de9b63c3ad8646c909494ca3f8c9ed6e29c Signed-off-by: Marco Miller <marco.miller@ericsson.com> Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Remove UTF-8 checking duplication in Config lib subclassesMarco Miller2016-05-123-4/+15
| | | | | Change-Id: Ib9f0ae8207000a36c5bf1a92fcc2c32efc4c0984 Signed-off-by: Marco Miller <marco.miller@ericsson.com> Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Update Maven pluginsMatthias Sohn2016-05-072-22/+22
| | | | | | | | | | | | | | | | | | | | | | | | to the following versions: build-helper-maven-plugin 1.10 eclipse-jarsigner-plugin 1.1.3 findbugs-maven-plugin 3.0.3 jacoco-maven-plugin 0.7.6.201602180812 maven-clean-plugin 3.0.0 maven-compiler-plugin 3.5.1 maven-javadoc-plugin 2.10.3 maven-pmd-plugin 3.6 maven-project-info-reports-plugin 2.9 maven-resources-plugin 2.7 maven-shade-plugin 2.4.3 maven-site-plugin 3.5.1 maven-source-plugin 3.0.0 maven-surefire-plugin 2.19.1 maven-surefire-report-plugin 2.19.1 tycho 0.25 tycho-extras 0.25 wagon-ssh 2.10 Change-Id: I4dc57de77ab7838964e8fe3de1d50f28d67fcf4b Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Fix type parameter in javadoc in TestRepository.delete(String ref)Matthias Sohn2016-05-051-1/+1
| | | | | | Type parameter T extends AnyObjectId in signature of update(String, T) Change-Id: I9c13ddc572b8e94d5c7854f4de1f8206cb5e99ca Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Merge branch 'stable-4.3'Matthias Sohn2016-05-0511-34/+67
|\ | | | | | | | | | | | | | | | | | | | | * stable-4.3: Scan loose ref before packed in case gc about to remove the loose Fix possible NPEs when reporting transport errors Fix calling of clean/smudge filters from Checkout,MergeCommands Fix ApplyCommand when result of patch is an empty file Change-Id: I0dc76b7a8c87ce8e0386a1b9e0fa92a3aa62abf7 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| * Scan loose ref before packed in case gc about to remove the looseMarco Miller2016-05-051-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Before this change, jgit used to read packed-refs before scanning loose refs. That was not a problem if gc didn't run concurrently. When gc did run concurrently with such refs reading, that order sometimes broke the latter. This lead to reading an older version of a ref's tip, which meant "losing" the real tip or commit. The specific read-Vs-gc concurrency scenario which broke reading that way follows: 1. let ref R be in packed-refs and R' be in loose 2. jgit starts reading packed-refs 3. gc also starts its business around that very time 4. jgit still has the time to read R from packed-refs 5. as gc is not done yet updating packed-refs with R' 6. jgit then starts scanning loose refs (or is about to) 7. gc quickly ends up being done moving loose R' to packed-refs 8. so gc (quickly) removes loose refs 9. -while jgit is scanning loose refs, now gone 10. so jgit assumes no loose to consider => packed-refs winning 11. so jgit wrongfully returns R (from 4.) as the tip, instead of R'. This fix switches the order so loose refs are scanned (secured) before taking the time to read packed-refs. This way, knowledge of the likelier tip is guaranteed for ref reading to return the true tip - despite concurrent gc. If there is no loose ref to scan, jgit reads packed-refs and lands on R' (or S), which it then returns, as expected. The gerrit issue [1] should be solved by this fix. [1] https://code.google.com/p/gerrit/issues/detail?id=2302 Change-Id: Ibd120120a361a3a6ed565f3836afc1db706fbcdd Signed-off-by: Marco Miller <marco.miller@ericsson.com> Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| * Fix possible NPEs when reporting transport errorsChristian Halstrick2016-04-271-2/+4
| | | | | | | | | | | | | | | | There was a bug in JGit which caused NPEs being thrown when Transport errors should be reported. Avoid the NPE to let the original error show up. Change-Id: I9e1e2b0195bd61b7e531a09d0fc7bce109bd6515
| * Fix calling of clean/smudge filters from Checkout,MergeCommandsChristian Halstrick2016-04-224-24/+32
| | | | | | | | | | | | | | | | | | When CheckoutCommand or MergeCommand is called then not in all situation the treewalks have been prepared to support clean/smudge filters. Fix this Bug: 491505 Change-Id: Iab5608049221c46d06812552ab97299e44d59e64
| * Fix ApplyCommand when result of patch is an empty fileJon Schneider2016-04-165-6/+30
| | | | | | | | | | | | | | | | | | | | Such hunks are identifiable by a zero value for "new start line". Prior to the fix, JGit throws and ArrayIndexOutOfBoundsException on such patches. Change-Id: I4f3deb5e5f41a08af965fcc178d678c77270cddb Signed-off-by: Jonathan Schneider <jkschneider@gmail.com> Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* | TestRepository: Add delete() methodJonathan Nieder2016-05-041-0/+34
| | | | | | | | Change-Id: Ib4841397ceab44bd38cf2f154314ac36ded73ae0
* | Make BaseReceivePack.setAtomic publicJonathan Nieder2016-05-041-1/+1
| | | | | | | | | | | | | | This makes atomic more consistent with other properties like allowNonFastForwards. Change-Id: Ie3b41f14ffba1d0b206ffecc697377417daa6973
* | ReceivePack: Pass atomic setting from client to BatchRefUpdateJonathan Nieder2016-05-042-0/+28
| | | | | | | | Change-Id: I0e4e6cef693e8138562f5ca345e0db61a8abef9c
* | PersonIdent: Make appendSanitized publicDave Borowitz2016-05-032-1/+13
| | | | | | | | Change-Id: I337c90fff3c013819a42a7622ac6bacc72828c07
* | Config: Improve documentation for setStringListStefan Beller2016-05-031-1/+2
| | | | | | | | | | Change-Id: Idccfa0dfd6db324236f7cb26ab28bdbd80581a8b Signed-off-by: Stefan Beller <sbeller@google.com>
* | Prepare Neon target platformMatthias Sohn2016-05-026-19/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | also use the Neon target platform as the default target platform. Neon Eclipse platform requires BREE 8 so we have to use Java 8 at least for the JGit packaging build (for the compiler settings we still stick to source and target 1.7 since we want to still support Java 7) otherwise unpacking platform pack200 archives will fail since they are built using Java 8 and hence cannot be unpacked using Java 7's unpack200. Update org.junit from 4.11 to 4.11 and org.apache.ant from from 1.9.2 to 1.9.6 since the older versions are not available in Neon orbit version Ignore a couple of tests in ResourceUtilTest which now fail [1] since bug 476585 was fixed in Neon M6. CQ: 10694 CQ: 11308 Change-Id: I1a99a3ac2148693e21c57df5aeb848035b52b97b Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* | PersonIdent: Strip some special chars from external stringsDave Borowitz2016-04-292-6/+76
| | | | | | | | | | | | | | | | | | | | | | The special characters <> and '\n' interfere with parsing of identities. C git strips these special characters, so we should too. Rather than allocating extra strings by calling String#trim(), add a few lines to our sanitization method to perform the same trimming as described in String's Javadoc. Change-Id: I96edcb93a2fc194ee354d60566d352299742a52f
* | PersonIdent: Document that name and email aren't trimmedDave Borowitz2016-04-292-2/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | This might be somewhat surprising behavior to users who might naturally assume the following invariant: ident.equals(parseIdent(ident.toExternalString())) This invariant does not hold since whitespace is only trimmed during serialization. We don't want to mess with the strings during initialization, as this is called during the highly-optimized commit parsing codepath. Change-Id: I081a603f0ac0e33167462244779b0ff3ad51e80c
* | Expose the ObjectInserter that created an ObjectReaderDave Borowitz2016-04-266-2/+62
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We've found in Gerrit Code Review that it is common to pass around both an ObjectReader (or more commonly a RevWalk wrapping one) and an ObjectInserter. These code paths often assume that the ObjectReader can read back any objects created by the ObjectInserter without flushing. However, we previously had no way to enforce that constraint programmatically, leading to hard-to-spot problems. Provide a solution by exposing the ObjectInserter that created an ObjectReader, when known. Callers can either continue passing both objects and check: reader.getCreatedFromInserter() == inserter or they can just pass around ObjectReader and extract the inserter when it's needed (checking that it's not null at usage time). Change-Id: Ibbf5d1968b506f6b47030ab1b046ffccb47352ea
* | Add ObjectReader.Filter, like in ObjectInserterDave Borowitz2016-04-251-0/+98
| | | | | | | | Change-Id: If34ad8185dc8192435e622995fdca598b86add7e
* | Update buck to e64a2e2ada022f81e42be750b774024469551398David Pursehouse2016-04-211-1/+1
| | | | | | | | | | | | | | | | To align with the version used in Gerrit's master build. Change-Id: I3b6e21bf367ad1fb3598dc06b968aee6187d5aed Signed-off-by: David Pursehouse <david.pursehouse@sonymobile.com> Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
* | Support per-BatchRefUpdate atomic transactionsDave Borowitz2016-04-196-5/+77
| | | | | | | | | | | | | | | | | | | | | | | | Repurpose RefDatabase#performsAtomicTransactions() slightly, to indicate that the backend _supports_ atomic transactions, rather than the current definition, which is that the backend always _uses_ atomic transactions regardless of whether or not the caller actually wants them. Allow BatchRefUpdate callers to turn off atomic transactions by calling setAtomic(false). Defaulting to true means this is backwards compatible. Change-Id: I6df78d7df65ab147b4cce7764bd3101db985491c
* | Add .buckd to .gitignoreDave Borowitz2016-04-191-1/+2
| | | | | | | | Change-Id: I527923e282808c905ae9acd128ecc8a5b33d34c7
* | Fix RefsUnreadableInMemoryRepositoryMatthias Sohn2016-04-162-1/+43
| | | | | | | | | | | | | | | | - fix classpath for Eclipse - add missing license header - remove unused import Change-Id: If491fe60678f050f86319388170ac789085fcf5f Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* | Fix Buck build broken by 4812fda.Mike Edgar2016-04-143-1/+2
| | | | | | | | | | | | | | | | Creates a source directory under org.eclipse.jgit.http.test for the new support class. Signed-off-by: Michael Edgar <adgar@google.com> Change-Id: Ie49492c2bbe5c1db96ceb0dc06fa7cb9f927431a
* | Make UploadPack observe exceptions reading refsMike Edgar2016-04-146-24/+150
| | | | | | | | | | | | | | | | | | | | | | | | | | Now if refs are unreadable when serving an upload pack the handler will fail due to the actual underlying failure. Previously all wants would be rejected as invalid because Repository.getAllRefs() returned an empty map. Testing this required a new subclass of InMemoryRepository so that an IOException could be injected at the correct time. Signed-off-by: Michael Edgar <adgar@google.com> Change-Id: Iac708b1db9d0ccce08c4ef5ace599ea0b57afdc0
* | Expose conflicting files in CheckoutConflictExceptionNed Twigg2016-04-112-0/+15
| | | | | | | | | | Change-Id: I5b3b7b0633354d5ccf0c6c320c0df9c93fdf8eeb Signed-off-by: Ned Twigg <ned.twigg@diffplug.com> Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* | Merge "Fix CommitCommand to be able to skip writing to RefLog"Matthias Sohn2016-04-112-1/+37
|\ \
| * | Fix CommitCommand to be able to skip writing to RefLogChristian Halstrick2016-04-112-1/+37
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | CommitCommand already provided a method to set the comment which should be written into the reflog. The underlying RefUpdate class supported to skip writing a reflog entry. But through the CommitCommand API it was not possible to prevent writing a reflog entry. Fix this and allow creating commits which don't occur in the reflog. Change-Id: I193c53de71fb5958ea749c4bfa8360a51acc9b58