aboutsummaryrefslogtreecommitdiffstats
path: root/org.eclipse.jgit.test
Commit message (Collapse)AuthorAgeFilesLines
* RefDirectory.exactRef: Do not ignore symrefs to unborn branchJonathan Nieder2015-11-111-0/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When asked to read a symref pointing to a branch-yet-to-be-born (such as HEAD in a newly initialized repository), DfsRepository and FileRepository return different results. FileRepository: exactRef("HEAD") => null DfsRepository: exactRef("HEAD") => SymbolicRef[HEAD -> refs/heads/master=00000000] getRef("HEAD") returns the same as DfsRepository's exactRef in both backends. The intended behavior is the DfsRepository one: exactRef() is supposed to be like getRef(), but more exact because it doesn't need to traverse the search path. The discrepancy is because DfsRefDatabase implements exactRef() directly with the intended semantics, while RefDirectory uses a fallback implementation built on top of getRefs(). getRefs() skips symrefs to an unborn branch. Override the fallback implementation with a correct implementation that is similar to getRef() to avoid this. A followup change will fix the fallback. Change-Id: Ic138a5564a099ebf32248d86b93e2de9ab3c94ee Reported-by: David Pursehouse <david.pursehouse@sonymobile.com> Improved-by: Christian Halstrick <christian.halstrick@sap.com> Bug: 478865
* Prepare 4.1.1-SNAPSHOT buildsMatthias Sohn2015-09-282-41/+41
| | | | | Change-Id: I035f3a8d0f0de86e8b8f00e668be5ce008402e82 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* JGit v4.1.0.201509280440-rv4.1.0.201509280440-rMatthias Sohn2015-09-282-2/+2
| | | | | Change-Id: I9a536870b9f5c1247c52d6c976a954115982fa1c Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* [ignore rules] fix for backslash handlingAndrey Loskutov2015-09-261-8/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | An attempt to re-implement not well documented Git CLI behavior for patterns with backslashes. It looks like Git silently ignores all \ characters in ignore rules, if they are NOT covered by 3 cases described in [1]: {quote} 1) ... Put a backslash ("\") in front of the first hash for patterns that begin with a hash. ... 2) Trailing spaces are ignored unless they are quoted with backslash ("\"). ... 3) Put a backslash ("\") in front of the first "!" for patterns that begin with a literal "!", for example, "\!important!.txt". {quote} Undocumented also is the fact that backslash itself can be escaped by backslash. So \h\e\l\l\o\.t\x\t rule matches hello.txt and a\\\\b a\b in Git CLI. Additionally, the glob parser [2] knows special meaning of backslash: {quote} One can remove the special meaning of '?', '*' and '[' by preceding them by a backslash, or, in case this is part of a shell command line, enclosing them in quotes. Between brackets these characters stand for themselves. Thus, "[[?*\]" matches the four characters '[', '?', '*' and '\'. {quote} [1] https://www.kernel.org/pub/software/scm/git/docs/gitignore.html [2] http://man7.org/linux/man-pages/man7/glob.7.html Bug: 478065 Change-Id: I3dc973475d1943c5622103701fa8cb3ea0684e3e Signed-off-by: Andrey Loskutov <loskutov@gmx.de>
* [ignore rules] Fix for character group matcherAndrey Loskutov2015-09-261-0/+1
| | | | | | | | | | Currently we fail to properly recognize character group if the pattern before character group contains opening bracket. See comment from Sebastien Arod on https://git.eclipse.org/r/56678/ Change-Id: I70d3657a2a328818ea2bdc1409d18ecb3a85825b Signed-off-by: Andrey Loskutov <loskutov@gmx.de>
* Merge "Show submodule difference as a hunk"Matthias Sohn2015-09-251-3/+2
|\
| * Show submodule difference as a hunkJacob Keller2015-09-241-3/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Current DiffFormat behavior regarding submodules (aka git links) is incorrect. The "Subproject commit <sha1>" appears as part of the diff header, rather than as its own hunk. --> From JGit implementation diff --git a/plugins/cookbook-plugin b/plugins/cookbook-plugin index b9d3ca8..ec6ed89 160000 --- a/plugins/cookbook-plugin +++ b/plugins/cookbook-plugin -Subproject commit b9d3ca8a65030071e28be19296ba867ab424fbbf +Subproject commit ec6ed89c47ba7223f82d9cb512926a6c5081343e --> From C Git 2.5.2 diff --git a/plugins/cookbook-plugin b/plugins/cookbook-plugin index b9d3ca8..ec6ed89 160000 --- a/plugins/cookbook-plugin +++ b/plugins/cookbook-plugin @@ -1 +1 @@ -Subproject commit b9d3ca8a65030071e28be19296ba867ab424fbbf +Subproject commit ec6ed89c47ba7223f82d9cb512926a6c5081343e The current way of processing submodules results in no hunk header and includes the contents of the hunk as part of the headers. To fix this, we can't just have our writeGitLinkDiffText output the hunk header. We have to change the flow so that the raw text gets parsed as a diff. The easiest way to do this is to fake the RawText in the FormatResult when we have a GITLINK. It should be noted that it seems possible for there to be a difference between a GITLINK and a non-GITLINK, but I don't think this can happen in practice, so I don't think we need to worry too much about it. This patch also fixes up the test for GitLink headers, as the test was for the old behavior. My setup has 3 other failing tests which may or may not be the result of environmental changes. However, the same tests fail without this commit, so I do not believe they are related. Bug: 477759 Change-Id: If13f7b406904fad814416c93ed09ea47ef183337 Signed-off-by: Jacob Keller <jacob.keller@gmail.com>
* | Properly support special regex characters in ignore rulesAndrey Loskutov2015-09-241-0/+78
| | | | | | | | | | | | | | | | | | | | Ignore rules should escape $^(){}+| chars if using regular expressions, because they should be treated literally if they aren't part of a character group. Bug: 478055 Change-Id: Ic7276442d7f8f02594b85eae1ef697362e62d3bd Signed-off-by: Andrey Loskutov <loskutov@gmx.de>
* | Remove unneeded @SuppressWarnings("boxing")Hugo Arès2015-09-231-5/+3
|/ | | | | | | | Fix the unit tests to not do boxing by using assertEquals(int, int) instead of assertThat with a matcher. Change-Id: I5412fe2f72c8ea0227b9ff3a3352ccb555e22231 Signed-off-by: Hugo Arès <hugo.ares@ericsson.com>
* Fix endless loop in ObjectChecker for MacOSChristian Halstrick2015-09-171-0/+11
| | | | | Bug: 477090 Change-Id: I0ba416f1cc172a835dd2723ff7fa904597ffd097 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Fix integer boxing eclipse warningHugo Arès2015-09-171-1/+1
| | | | | Change-Id: I89a8495a799254586016393e51697cfbceacac8b Signed-off-by: Hugo Arès <hugo.ares@ericsson.com>
* URIish: fall back to host as humanish namePatrick Steinhardt2015-09-101-0/+58
| | | | | | | | | | | | | | | When we have a URI that contains an empty path component (that is it only contains a "/") we want to fall back to the host as humanish name. This change is according to the behavior of upstream git, which falls back on the hostname when guessing directory names for newly cloned repositories (see [1] for the discussion). [1] http://article.gmane.org/gmane.comp.version-control.git/274669 Change-Id: I44400c6ab72a2722d2155d53d63671bd867d6c44 Signed-off-by: Patrick Steinhardt <ps@pks.im>
* PushCertificateStore: Don't add no-op command to batchDave Borowitz2015-09-021-0/+28
| | | | | | | | | | | | | If no refs match the input list and we are writing to a batch, the returned new commit from write() will match the current commit. Adding a command to the batch for this case is harmless as it will succeed, but it's more straightforward to just skip adding a command in this case. Add tests or the combination of saving matching refs and saving to a batch. Change-Id: I6837389b08e6c80bc2d4c9e9c506d07293ea5fb2
* Use NIO2 to implement FileUtils.rename() and expose optionsMatthias Sohn2015-08-171-0/+12
| | | | | | | | - 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>
* Consider original file mode while checking parent ignore rulesAndrey Loskutov2015-08-121-0/+50
| | | | | | | | | | | | 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>
* containsGitModulesFile() should not crash on bare repositoryAndrey Loskutov2015-08-031-0/+8
| | | | | Change-Id: Iba7e4674b3d33c730613a6ac703977f48b015853 Signed-off-by: Andrey Loskutov <loskutov@gmx.de>
* PushCertificate: Omit null pushee from text representationDave Borowitz2015-07-281-0/+1
| | | | Change-Id: Ie9546f2e0e9ee62e0a3c919572153b6076355195
* Fix ResolveMerger when files should be replaced by foldersChristian Halstrick2015-07-231-0/+74
| | | | | | | | | | 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>
* Don't keep empty ignore rules in the ignore node listAndrey Loskutov2015-07-211-1/+21
| | | | | Change-Id: Icd893dfaba06561bbe5cc60ebf866ec5d8301c22 Signed-off-by: Andrey Loskutov <loskutov@gmx.de>
* Allow leading/trailing spaces in ignore rulesAndrey Loskutov2015-07-211-0/+61
| | | | | | | | | | | 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>
* Allow leading literal '#' and '!' in ignore rules if they are escapedAndrey Loskutov2015-07-211-0/+12
| | | | | | | | | | | 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-211-0/+6
| | | | | | | | | | 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-211-0/+10
| | | | | | | | | | | 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>
* PushCertificate: Add toTextWithSignature() methodDave Borowitz2015-07-151-0/+1
| | | | Change-Id: Ic0129373cc0c0321ffa43dc11a658d4f891ec2c2
* PushCertificateParser: Add fromString methodDave Borowitz2015-07-151-3/+10
| | | | Change-Id: I74c3f65a9ff297f708d996a4c138456a31a466b8
* PushCertificateStore: Return boolean from batch save methodsDave Borowitz2015-07-151-1/+5
| | | | Change-Id: I9730cb4f60c60ee6d5a7a156a0b6a53f79309ec3
* Allow saving push certs on a subset of refsDave Borowitz2015-07-151-2/+24
| | | | | | | | | | | | | | | | 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
* 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-131-0/+22
| | | | Change-Id: I8bfaee1a52d368ffe2cd7e8af1754a5261569078
* Store push certificates in refs/meta/push-certsDave Borowitz2015-07-101-0/+304
| | | | | | | | | | | | | | | | | | | | | | | | | 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-101-30/+51
| | | | | | | | 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>
* PushCertificateParser: Make pushee optionalDave Borowitz2015-07-091-0/+20
| | | | | | | | When pushing to an HTTP server using the C git client, I observed a certificate lacking a pushee field. Handle this gracefully in the parser. Change-Id: I7f3c5fa78f2e35172a93180036e679687415cac4
* PushCertificateParser: Add method for parsing from a streamDave Borowitz2015-07-091-0/+60
| | | | | | | | | We intend to store received push certificates somewhere, like a particular ref in the repository in question. For reading data back out, it will be useful to read push certificates (without pkt-line framing) in a streaming fashion. Change-Id: I70de313b1ae463407b69505caee63e8f4e057ed4
* IO: Add a method for reading linesDave Borowitz2015-07-081-0/+116
| | | | Change-Id: Ib7be76aa7ac889354ad4782e2b64d4221a0e25b9
* BaseReceivePack: Treat all LFs as optionalDave Borowitz2015-07-072-18/+82
| | | | | | | | | | | | | | | | Discussion on the git mailing list has concluded[1] that the intended behavior for all (non-sideband) portions of the receive-pack protocol is for trailing LFs in pkt-lines to be optional. Go back to using PacketLineIn#readString() everywhere. For push certificates specifically, we agreed that the payload signed by the client is always concatenated with LFs even though the client MAY omit LFs when framing the certificate for the wire. This is still reflected in the implementation of PushCertificate#toText(). [1] http://thread.gmane.org/gmane.comp.version-control.git/273175/focus=273412 Change-Id: I817231c4d4defececb8722142fea18ff42e06e44
* BaseReceivePack: More validation during parseCommandDave Borowitz2015-07-072-15/+37
| | | | Change-Id: I25f3a5582a45dd0ec8f78f5daf74c2203797a184
* Throw InvalidObjectIdException from ObjectId.fromString("tooshort")Jonathan Nieder2015-07-061-0/+17
| | | | | | | | | | | ObjectId.fromString already throws InvalidObjectIdException for most malformed object ids, but for this kind it previously threw IllegalArgumentException. Since InvalidObjectIdException is a child of IllegalArgumentException, callers that catch IllegalArgumentException will continue to work. Change-Id: I24e1422d51607c86a1cb816a495703279e461f01 Signed-off-by: Jonathan Nieder <jrn@google.com>
* Merge branch 'stable-4.0'Matthias Sohn2015-06-241-0/+44
|\ | | | | | | Change-Id: I5c965206ad10bababe366a51ab7c33a8836a7868 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| * Prepare 4.0.2-SNAPSHOT buildsMatthias Sohn2015-06-242-41/+41
| | | | | | | | | | Change-Id: I645cacfdde21aa28aa2e17c10dec0576b170ed0e Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| * JGit v4.0.1.201506240215-rv4.0.1.201506240215-rMatthias Sohn2015-06-242-2/+2
| | | | | | | | | | Change-Id: Ib7713b657e7812b0debd72bb4eece0daa187e80d Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| * Add a grace period for packfiles during GCChristian Halstrick2015-06-221-0/+44
| | | | | | | | | | | | | | | | | | For loose objects an expiration date can be set which will save too young objects from being deleted. Add the same for packfiles. Packfiles which are too young are not deleted. Bug: 468024 Change-Id: I3956411d19b47aaadc215dab360d57fa6c24635e Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| * Prepare 4.0.1-SNAPSHOT buildsMatthias Sohn2015-06-092-41/+41
| | | | | | | | | | Change-Id: I51d03d1a47d1e3cd453701e397750749867028a2 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| * JGit v4.0.0.201506090130-rv4.0.0.201506090130-rMatthias Sohn2015-06-092-2/+2
| | | | | | | | | | Change-Id: I01ad84fc74555656c42934cd62a85269a7030557 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| * Prepare post 4.0-RC3 buildsMatthias Sohn2015-06-022-2/+2
| | | | | | | | | | Change-Id: I74469f1243503098fb05b5ddec3fa609132debab Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| * JGit v4.0.0.201506020755-rc3v4.0.0.201506020755-rc3Matthias Sohn2015-06-022-2/+2
| | | | | | | | | | Change-Id: I31c6177d19cba228aa67b2b5c3e0d82c38395cda Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* | API to remove repositories from RepositoryCacheTobias Oberlies2015-06-231-0/+28
| | | | | | | | | | | | | | | | | | Add methods that allow to unregister repositories from the RepositoryCache individually. Bug: 470234 Change-Id: Ib918a634d829c9898072ae7bdeb22b099a32b1c9 Signed-off-by: Tobias Oberlies <tobias.oberlies@sap.com> Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* | PackCertificateParser: return null if nothing was receivedDave Borowitz2015-06-181-30/+99
| | | | | | | | | | | | Add test for this case in both the enabled and disabled cases. Change-Id: If9d12192a2dc9f9dd1eac9844b5a7b0edadc0b34
* | Add a separate type for the identity in a push certificateDave Borowitz2015-06-181-0/+196
| | | | | | | | | | | | | | | | | | | | | | | | | | | | These differ subtly from a PersonIdent, because they can contain anything that is a valid User ID passed to gpg --local-user. Upstream git push --signed will just take the configuration value from user.signingkey and pass that verbatim in both --local-user and the pusher field of the certificate. This does not necessarily contain an email address, which means the parsing implementation ends up being substantially different from RawParseUtils.parsePersonIdent. Nonetheless, we try hard to match PersonIdent behavior in questionable cases. Change-Id: I37714ce7372ccf554b24ddbff56aa61f0b19cbae
* | PushCertificateParser: include begin/end lines in signatureDave Borowitz2015-06-181-4/+4
| | | | | | | | | | | | | | | | The signature is intended to be passed to a verification library such as Bouncy Castle, which expects these lines to be present in order to parse the signature. Change-Id: I22097bead2746da5fc53419f79761cafd5c31c3b
* | Extract a class for signed push configurationDave Borowitz2015-06-181-2/+1
| | | | | | | | | | | | | | | | | | The default behavior is to read a repository's signed push configuration from that repo's config file, but this is not very flexible when it comes to managing groups of repositories (e.g. with Gerrit). Allow callers to override the configuration using a POJO. Change-Id: Ib8f33e75daa0b2fbd000a2c4558c01c014ab1ce5