summaryrefslogtreecommitdiffstats
path: root/org.eclipse.jgit/resources
Commit message (Collapse)AuthorAgeFilesLines
* Support per-BatchRefUpdate atomic transactionsDave Borowitz2016-04-191-0/+1
| | | | | | | | | | | | 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
* daemon: Add --ketch=LEADER flagShawn Pearce2016-01-191-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Experimental flag to turn on the KetchLeader within this daemon JVM. This is a manually elected leader process, set from the command line. Remote followers for each repository are configured per-repository using remote sections with ketch-type = FULL. For example: Manually elected leader's $GIT_DIR/config: [ketch] name = A [remote "A"] ketch-type = FULL [remote "B"] url = git://127.0.0.1:9421/sample.git ketch-type = FULL [remote "C"] url = git://127.0.0.1:9422/sample.git ketch-type = FULL Replica B and C daemons: git daemon \ --export-all \ --enable=receive-pack \ --listen=127.0.0.1 --port=9421 \ --base-path=$HOME/ketch_test/follower_one \ $HOME/ketch_test/follower_one & git daemon \ --export-all \ --enable=receive-pack \ --listen=127.0.0.1 --port=9422 \ --base-path=$HOME/ketch_test/follower_two \ $HOME/ketch_test/follower_two & Change-Id: I165f85970a77e16b5263115290d685d8a00566f5
* Ketch: Intercept push and route it through KetchShawn Pearce2016-01-191-0/+5
| | | | | | | Capture commands and pass to the in-process KetchLeader, allowing it to replicate to followers. Change-Id: I25dfeb2a93821af65354337f391480a72bae2210
* Ketch: Basic replication systemShawn Pearce2016-01-191-0/+7
| | | | | | | | | | | | | | | | | | Git Ketch is a multi-master Git repository management system. Writes are successful only if a majority of participant servers agree. Acked writes are durable against server failures as a majority of the participants store all required objects. Git Ketch is modeled on the Raft Consensus Algorithm[1]. A ketch sailing vessel is faster and more nimble than a raft. It can also carry more source codes. Git Ketch front-loads replication costs, which vaguely resembles a ketch sailing vessel's distinguishing feature of the main mast on the front of the ship. [1] https://raft.github.io/ Change-Id: Ib378dab068961fc7de624cd96030266660b64fb4
* ObjectChecker: honor some git-core fsck.* optionsShawn Pearce2015-12-301-3/+6
| | | | | | | | | | | | | | | | Accept some of the same section keys that fsck does in git-core, allowing repositories to skip over specific kinds of acceptable broken objects, e.g.: [fsck] duplicateEntries = ignore zeroPaddedFilemode = ignore The zeroPaddedFilemode = ignore is a synonym for the JGit specific allowLeadingZeroFileMode = true. Only accept the JGit key if git-core key was not specified. Change-Id: Idaed9310e2a5ce5511670ead1aaea2b30aac903c
* Null-annotated Ref class and fixed related compiler errorsAndrey Loskutov2015-12-151-0/+2
| | | | | | | | | This change fixes all compiler errors in JGit and replaces possible NPE's with either appropriate exceptions, avoiding multiple "Nullable return" method calls or early returning from the method. Change-Id: I24c8a600ec962d61d5f40abf73eac4203e115240 Signed-off-by: Andrey Loskutov <loskutov@gmx.de>
* Support atomic push in JGit clientShawn Pearce2015-12-021-0/+1
| | | | | | | | | | | | | This should mirror the behavior of `git push --atomic` where the client asks the server to apply all-or-nothing. Some JGit servers already support this based on a custom DFS backend. InMemoryRepository is extended to support atomic push for unit testing purposes. Local disk server side support inside of JGit is a more complex animal due to the excessive amount of file locking required to protect every reference as a loose reference. Change-Id: I15083fbe48447678e034afeffb4639572a32f50c
* Add support for clean filtersChristian Halstrick2015-11-271-0/+2
| | | | | | | | | When filters are defined for certain paths in gitattributes make sure that clean filters are processed when adding new content to the object database. Change-Id: Iffd72914cec5b434ba4d0de232e285b7492db868 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Null-annotated Repository class and fixed related compiler errorsAndrey Loskutov2015-11-251-0/+2
| | | | | | | | | | | | | | | | | | | | | | org.eclipse.jgit.lib.Repository class is an example of the API which should be written with Java 8 java.util.Optional<T> type. Unfortunately this API is already released and widely used. The good clients are currently doing their best with checking return values for null and bad clients do not know how bad their code is. I've tried not to change any logic and to be as less intrusive as possible. Most of the JGit code was well prepared to this, only few classes needed some smaller fixes. This change fixes all compiler errors in JGit and replaces possible NPE's with either appropriate exceptions, avoiding multiple "Nullable return" method calls or early returning from the method. Because annotating getDirectory() and getFS() as Nullable would cause lot of additional changes in JGit and EGit they are postponed. Change-Id: Ie8369d2c9c5fac5ce83b3b1b9bc217d7b55502a3 Signed-off-by: Andrey Loskutov <loskutov@gmx.de>
* Raise error if FileNotFoundException is caught for an existing fileMatthias Sohn2015-11-241-0/+1
| | | | | | | | | | | | File, FileInputStream and friends may throw FileNotFoundException even if the file is existing e.g. when file permissions don't allow to access the file content. In most cases this is a severe error we should not suppress hence rethrow the FileNotFoundException in this case. This may also fix bug 451508. Bug: 451508 Change-Id: If4a94217fb5b7cfd4c04d881902f3e86193c7008 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Throw IndexReadException if existing index can't be readChristian Halstrick2015-11-191-0/+1
| | | | | | | | | If the index file exists but can't be read for example because of wrong filesystem permissions we should throw a specific exception. This allows EGit to handle this error situation. Bug: 482607 Change-Id: I50bfcb719c45caac3cb5550a8b16307c2ea9def4 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Adding AES Walk Encryption support in http://www.jets3t.org/ modeAndrei Pozolotin2015-10-181-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | See previous attempt: https://git.eclipse.org/r/#/c/16674/ Here we preserve as much of JetS3t mode as possible while allowing to use new Java 8+ PBE algorithms such as PBEWithHmacSHA512AndAES_256 Summary of changes: * change pom.xml to control long tests * add WalkEncryptionTest.launch to run long tests * add AmazonS3.Keys to to normalize use of constants * change WalkEncryption to support AES in JetS3t mode * add WalkEncryptionTest to test remote encryption pipeline * add support for CI configuration for live Amazon S3 testing * add log4j based logging for tests in both Eclipse and Maven build To test locally, check out the review branch, then: * create amazon test configuration file * located your home dir: ${user.home} * named jgit-s3-config.properties * file format follows AmazonS3 connection settings file: accesskey = your-amazon-access-key secretkey = your-amazon-secret-key test.bucket = your-bucket-for-testing * finally: * run in Eclipse: WalkEncryptionTest.launch * or * run in Shell: mvn test --define test=WalkEncryptionTest Change-Id: I6f455fd9fb4eac261ca73d0bec6a4e7dae9f2e91 Signed-off-by: Andrei Pozolotin <andrei.pozolotin@gmail.com>
* Use java.nio.file consistently in FSMatthias Sohn2015-09-271-1/+0
| | | | | | | | | | | | | | | | Since 4.0 we require Java 7 so there is no longer a need to override the following methods in FS_POSIX, FS_Win32, FS_Win32_Cygwin - lastModified() - setLastModified() - length() - isSymlink() - exists() - isDirectory() - isFile() - isHidden() Hence implement these methods in FS and remove overrides in subclasses. Change-Id: I5dbde6ec806c66c86ac542978918361461021294 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* UploadPack: Verify clients send only commits for shallow linesShawn Pearce2015-09-141-0/+1
| | | | | | | | | | | | | | | | | | | | | If a client mistakenly tries to send a tag object as a shallow line JGit blindly assumes this is a commit and tries to parse the tag buffer using the commit parser. This can cause an obtuse error like: InvalidObjectIdException: Invalid id: t c0ff331234... The "t" comes from the "object c0ff331234..." line of the tag tring to be parsed as though it where the "tree" line of a commit. Run any client supplied shallow lines through the RevWalk to lookup the object types. Fail fast with a protocol exception if any of them are non-commit. Skip objects not known to this repository. This matches behavior with git-core's upload-pack, which sliently skips over any shallow line object named by the client but not known by the server. Change-Id: Ic6c57a90a42813164ce65c2244705fc42e84d700
* Handle stale file handles on packed-refs fileMartin Fick2015-08-261-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | On a local filesystem the packed-refs file will be orphaned if it is replaced by another client while the current client is reading the old one. However, since NFS servers do not keep track of open files, instead of orphaning the old packed-refs file, such a replacement will cause the old file to be garbage collected instead. A stale file handle exception will be raised on NFS servers if the file is garbage collected (deleted) on the server while it is being read. Since we no longer have access to the old file in these cases, the previous code would just fail. However, in these cases, reopening the file and rereading it will succeed (since it will reopen the new replacement file). So retrying the read is a viable strategy to deal with stale file handles on the packed-refs file, implement such a strategy. Since it is possible that the packed-refs file could be replaced again while rereading it (multiple consecutive updates can easily occur with ref deletions), loop on stale file handle exceptions, up to 5 extra times, trying to read the packed-refs file again, until we either read the new file, or find that the file no longer exists. The limit of 5 is arbitrary, and provides a safe upper bounds to prevent infinite loops consuming resources in a potential unforeseen persistent error condition. Change-Id: I085c472bafa6e2f32f610a33ddc8368bb4ab1814 Signed-off-by: Martin Fick<mfick@codeaurora.org> Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Move createSymLink/readSymLink to FileUtilsAndrey Loskutov2015-08-171-2/+1
| | | | | | Bug: 475070 Change-Id: I258f4bf291e02ef8e6f867b5d71c04ec902b6bcb Signed-off-by: Andrey Loskutov <loskutov@gmx.de>
* Don't crash while parsing ignore patternsAndrey Loskutov2015-07-211-0/+1
| | | | | | | | | Catch unexpected PatternSyntaxException and convert it to InvalidPatternException. Log such errors, do not silently ignore them. Bug: 463581 Change-Id: Id0936d9816769ec0cfae1898beda0f7a3c146e67 Signed-off-by: Andrey Loskutov <loskutov@gmx.de> Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Store push certificates in refs/meta/push-certsDave Borowitz2015-07-101-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | 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
* Fix non-escaped quotes in JGitText.propertiesMatthias Sohn2015-07-071-8/+8
| | | | | | | | In most texts we use "cannot" hence instead of escaping the apostroph in "can't" use "cannot". Bug: 471796 Change-Id: Icda5b4db38076789d06498428909306aef3cb68b Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Avoid double-colon in InvalidObjectIdException descriptionJonathan Nieder2015-07-061-0/+1
| | | | | | | | | | | | | | | The invalidId message in JGitText and the asAscii bad id both contain a colon, so the resulting message would say Invalid id: : a78987c98798ufa Fix it by keeping the colon in the translated message and not adding another colon programmatically. Noticed by code inspection. Change-Id: I13972eebde27a4128828e6c64517666f0ba6288b Signed-off-by: Jonathan Nieder <jrn@google.com>
* Rewrite push certificate parsingDave Borowitz2015-06-111-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Consistently return structured data, such as actual ReceiveCommands, which is more useful for callers that are doing things other than verifying the signature, e.g. recording the set of commands. - Store the certificate version field, as this is required to be part of the signed payload. - Add a toText() method to recreate the actual payload for signature verification. This requires keeping track of the un-chomped command strings from the original protocol stream. - Separate the parser from the certificate itself, so the actual PushCertificate object can be immutable. Make a fair attempt at deep immutability, but this is not possible with the current mutable ReceiveCommand structure. - Use more detailed error messages that don't involve NON-NLS strings. - Document null return values more thoroughly. Instead of having the undocumented behavior of throwing NPE from certain methods if they are not first guarded by enabled(), eliminate enabled() and return null from those methods. - Add tests for parsing a push cert from a section of pkt-line stream using a real live stream captured with Wireshark (which, it should be noted, uncovered several simply incorrect statements in C git's Documentation/technical/pack-protocol.txt). This is a slightly breaking API change to classes that were technically public and technically released in 4.0. However, it is highly unlikely that people were actually depending on public behavior, since there were no public methods to create PushCertificates with anything other than null field values, or a PushCertificateParser that did anything other than infinite loop or throw exceptions when reading. Change-Id: I5382193347a8eb1811032d9b32af9651871372d0
* Clarify description of ServiceNotAuthorizedExceptionJonathan Nieder2015-06-021-1/+1
| | | | | | | | | | | | | | | | | | | This exception's detail message states Service not permitted and according to the Javadoc it indicates that the current user does not have access to the service. In practice, though, callers handle this exception by presenting a '401 Unauthorized' response to the client, meaning that the user is unauthenticated and should authenticate. Clarify the documentation and detail message to match the practice. The exception message is not used anywhere except logs. No client-visible effect intended. Change-Id: I2c6be9cb74af932f0dcb121a381a64f2ad876766 Signed-off-by: Jonathan Nieder <jrn@google.com>
* Improve exception thrown when pull can't find advertised refMatthias Sohn2015-05-291-1/+1
| | | | | | | | | - throw an API exception instead of an internal exception to allow applications to handle this problem - improve error message to give hints about possible root causes Bug: 464660 Change-Id: Ib7d18bb2eeeac0fc218daea375b290ea5034bda1 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* FS: Extract GobblerThread into a private static classDave Borowitz2015-05-271-0/+1
| | | | | | | | | | | | | | | | | | The primary goal is to improve exception readability. Since this is a standalone thread, just logging the stack trace of the caught exception is not very useful: java.io.IOException: Stream closed at java.io.BufferedInputStream.getBufIfOpen(BufferedInputStream.java:162) at java.io.BufferedInputStream.read(BufferedInputStream.java:258) at org.eclipse.jgit.util.FS$2.run(FS.java:451) Providing a named class eliminates the "FS$2", and including the command name provides a little more context in the error message. A future improvement might include the stack trace that created the GobblerThread as well. Change-Id: Ibf16d15b47a85b6f41844a177e398c2fc94f27b0
* Externalize translatable texts in org.eclipse.jgitMatthias Sohn2015-05-261-2/+66
| | | | Change-Id: Ibf4c299f9d203c78cae79e61f88d4bea60ea2795 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Remove pack from list when file handle is staleHugo Arès2015-04-301-0/+1
| | | | | | | | | | | | | | This error happens on nfs file system when you try to read a file that was deleted or replaced. When the error happens because the file was deleted, removing it from the list is the proper way to handle the error, same use case as FileNotFoundException. When the error happens because the file was replaced, removing the file from the list will cause the file to be re-read so it will get the latest version of the file. Bug: 462868 Change-Id: I368af61a6cf73706601a3e4df4ef24f0aa0465c5 Signed-off-by: Hugo Arès <hugo.ares@ericsson.com>
* Externalize error message used in CheckoutCommandMatthias Sohn2015-04-081-0/+1
| | | | Change-Id: Ifbc469b07e63218107157ffbf23ae55c52a55ef4 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Externalize error messages used in DfsGarbageCollectorMatthias Sohn2015-04-081-0/+2
| | | | | Change-Id: I11631afb33a2bb29d994551a0be8775bbe277300 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Externalize error messages used in ObjectDirectoryInserterMatthias Sohn2015-04-041-0/+2
| | | | Change-Id: I3bc26847071fbc31267a4a4cf5a10b428bcf229d Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Revert "CommitBuilder should check for duplicate parents"Jonathan Nieder2015-03-181-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | 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>
* CommitBuilder should check for duplicate parentsChristian Halstrick2015-03-121-0/+1
| | | | | | | | | 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>
* Refactored pre-commit hook to make it less invasive.Laurent Delaigue2015-03-021-1/+1
| | | | | | | | | 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-271-0/+1
| | | | | | | | 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
* Merge branch 'stable-3.7'Matthias Sohn2015-02-271-3/+4
|\ | | | | | | | | | | | | | | | | | | * stable-3.7: Prepare 3.7.1-SNAPSHOT builds JGit v3.7.0.201502260915-r Read user.name and email from environment first Provide more details in exceptions thrown when packfile is invalid Change-Id: I427f861c6bc94da5e3e05dbbebbf0ad15719a323 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| * Provide more details in exceptions thrown when packfile is invalidMatthias Sohn2015-02-171-3/+4
| | | | | | | | | | | | | | | | | | Mention packfile path in exceptions thrown when we detect that a packfile is invalid and make excplicit that corrupt packs are removed from the pack list. Change-Id: I454ada5f8e69307d3f34d1c1b8f3cb87607ddf35 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* | Port push certificatesStefan Beller2015-02-231-0/+1
|/ | | | | | | | | | | | Push certificates ("git push --signed") have been part of git-core since version 2.2.0 (released Nov 26 2014). We also want to support that feature. This is not complete and is lacking the actual functionality to validate the signature for now. Change-Id: I249869cadb2d55aef016371b9311b8583591b9cf Signed-off-by: Stefan Beller <sbeller@google.com>
* Support for the pre-commit hookLaurent Goubet2015-02-021-0/+1
| | | | | | | | | Introduce support for the pre-commit hook into JGit, along with the --no-verify commit command option to bypass it when rebasing / cherry-picking. Change-Id: If86df98577fa56c5c03d783579c895a38bee9d18 Signed-off-by: Laurent Goubet <laurent.goubet@obeo.fr> Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Introduce hook support into the FS implementationsLaurent Goubet2015-02-021-0/+2
| | | | | | | | | | | This introduces the background plumbing necessary to run git hooks from JGit. This implementation will be OS-dependent as it aims to be compatible with existing hooks, mostly written in Shell. It is compatible with unix systems and windows as long as an Unix emulator such as Cygwin is in its PATH. Change-Id: I1f82a5205138fd8032614dd5b52aef14e02238ed Signed-off-by: Laurent Goubet <laurent.goubet@obeo.fr> Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* If a pack isn't found on disk remove it from pack listMatthias Sohn2015-01-271-0/+1
| | | | | | | | | If accessing a pack throws FileNotFoundException the pack was deleted and we need to remove it from the pack list. This can be caused e.g. by git gc. Change-Id: I5d10f87f364dadbbdbfb61b6b2cbdee9c7457f3d Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Don't remove pack from pack list for problems which could be transientMatthias Sohn2015-01-211-0/+1
| | | | | | | | | | | | | If we hit a corrupt object or invalid pack remove the pack from the pack list. Other IOException could be transient hence we should not remove the pack from the list to avoid the problem reported on the Gerrit list [1]. It looks like in the reported case the pack was removed from the pack list causing MissingObjectExceptions which disappear when the server is restarted. [1] https://groups.google.com/forum/#!topic/repo-discuss/Qdmbl-YZ4NU Change-Id: I331626110d54b190e46cddc2c40f29ddeb9613cd Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Log reason for ignoring pack when IOException occurredMatthias Sohn2015-01-151-0/+1
| | | | | | | | | | This should help to identify the root cause of the problem discussed on the Gerrit list [1]. [1] https://groups.google.com/forum/#!topic/repo-discuss/Qdmbl-YZ4NU Change-Id: I871f70e4bb1227952e1544b789013583b14e2b96 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Allow explicit configuration of git directory in InitCommandChristian Halstrick2014-12-151-0/+2
| | | | | | | | | | | | | | Native git's "init" command allows to specify the location of the .git folder with the option "--separate-git-dir". This allows for example to setup repositories with a non-standard layout. E.g. .git folder under /repos/a.git and the worktree under /home/git/a. Both directories contain pointers to the other side: /repos/a.git/config contains core.worktree=/home/git/a . And /home/git/a/.git is a file containing "gitdir: /repos/a.git". This commit adds that option to InitCommand. This feature is needed to support the new submodule layout where the .git folder of the submodules is under .git/modules/<submodule>. Change-Id: I0208f643808bf8f28e2c979d6e33662607775f1f
* Fix variable name and error message for sideband testingStefan Beller2014-11-101-1/+1
| | | | | | | | Actually the test only allows a range from [1,255], so let's name the variable so. Change-Id: Iecdb8149b83389c67e3cd2f64f4a654c175475be Signed-off-by: Stefan Beller <sbeller@google.com>
* Implement atomic refs update, if possible by databaseStefan Beller2014-11-071-0/+1
| | | | | | | | | | | | | Inspired by the series[1], this implements the possibility to have atomic ref transactions. If the database supports atomic ref update capabilities, we'll advertise these. If the client wishes to use this feature, either all refs will be updated or none at all. [1] http://thread.gmane.org/gmane.comp.version-control.git/259019/focus=259024 Change-Id: I7b5d19c21f3b5557e41b9bcb5d359a65ff1a493d Signed-off-by: Stefan Beller <sbeller@google.com>
* Prevent NPE if no CredentialsProvider is registeredMatthias Sohn2014-09-011-0/+1
| | | | | | | | | If the git server requires authentication and no CredentialsProvider is registered TransportHttp.connect() would throw an NPE since it tries to reset the credentials provider. Instead throw a TransportException explaining the problem. Change-Id: Ib274e7d9c43bba301089975423de6a05ca5169f6 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* PackIndexV2 should check for possible corruptionMarc Strapetz2014-08-291-0/+1
| | | | | Change-Id: I1803ec6d8141f07dd4085778da6461abe81c30a9 Signed-off-by: Marc Strapetz <marc.strapetz@syntevo.com>
* Add support to <include> tag in repo manifest xml.Yuxuan 'fishy' Wang2014-08-131-0/+2
| | | | | Change-Id: I32d468f92e24701ea680435bf3417e3850857303 Signed-off-by: Yuxuan 'fishy' Wang <fishywang@google.com>
* Add a method to ObjectInserter to read back inserted objectsDave Borowitz2014-08-131-0/+2
| | | | | | | | | | | | | | | | | | In the DFS implementation, flushing an inserter writes a new pack to the storage system and is potentially very slow, but was the only way to ensure previously-inserted objects were available. For some tasks, like performing a series of three-way merges, the total size of all inserted objects may be small enough to avoid flushing the in-memory buffered data. DfsOutputStream already provides a read method to read back from the not-yet-flushed data, so use this to provide an ObjectReader in the DFS case. In the file-backed case, objects are written out loosely on the fly, so the implementation can just return the existing WindowCursor. Change-Id: I454fdfb88f4d215e31b7da2b2a069853b197b3dd
* Fixed message for exception thrown during recursive mergeChristian Halstrick2014-07-281-0/+1
| | | | | | | | | | During recursive merge jgit potentially has to merge multiple common ancestors. If this fails because there are conflicts then the exception thrown for that should have a message which states this clearly. Previously a wrong message was given ("More than 200 merge bases ...") Change-Id: Ia3c058d5575decdefd50390ed83b63668d31c1d1
* Clarify comments in message properties files (and fix grammar)Robin Stocker2014-06-301-1/+1
| | | | | | Bug: 438261 Change-Id: I7b98475886ef789ae7635d8c9e008fc1aa00d534 Signed-off-by: Robin Stocker <robin@nibor.org>