summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* LfsProtocolServlet: Add support for rate limit and bandwidth limit errorsDavid Pursehouse2016-08-203-0/+132
| | | | | | | | | | | | | | | | | | | | | | The git-lfs specification [1] describes the following optional status codes that may be returned: 429 - The user has hit a rate limit with the server. Though the API does not specify any rate limits, implementors are encouraged to set some for availability reasons. 509 - Returned if the bandwidth limit for the user or repository has been exceeded. The API does not specify any bandwidth limit, but implementors may track usage. Add two new exception classes to represent these cases. Implementations may throw these from #getLargeFileRepository(), causing the corresponding HTTP status codes to be returned to the client. [1] https://github.com/github/git-lfs/blob/master/docs/api/v1/http-v1-batch.md Change-Id: I7b93f3cf90f7344c90b1587e07927fdeb167097e Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
* LfsProtocolServlet: Always include message in error responseDavid Pursehouse2016-08-201-1/+2
| | | | | | | | | If the message is not sent, the client shows: Unable to parse HTTP response for POST http://admin@localhost:8080/test-project/info/lfs/objects/batch Change-Id: I8b72d1aded2bcd41b7389676e2373034625a1379 Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
* LfsRepository{NotFound,ReadOnly}: Externalize message stringsDavid Pursehouse2016-08-204-3/+15
| | | | | | | | Instead of hard-coding the message strings, define them in a properties file. This will allow them to be translated. Change-Id: I77556881579e66b2c13d187759c7efdddfee87ae Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
* Merge "DownloadTest: Use enums from org.apache.http.HttpStatus"Matthias Sohn2016-08-191-3/+8
|\
| * DownloadTest: Use enums from org.apache.http.HttpStatusDavid Pursehouse2016-08-201-3/+8
| | | | | | | | | | | | | | | | Instead of using hard-coded HTTP status codes, use the enums which makes it a bit easier to see what's expected. Change-Id: I2da5d25632f374b8625d64da4df70d1c9c406bb1 Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
* | Merge "Ignore IOException thrown from close"Shawn Pearce2016-08-191-1/+10
|\ \ | |/ |/|
| * Ignore IOException thrown from closeMasaya Suzuki2016-08-191-1/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | AddCommandTest is flaky because IOException is thrown sometimes. Caused by: java.io.IOException: Stream closed at java.lang.ProcessBuilder$NullOutputStream.write(ProcessBuilder.java:433) at java.io.OutputStream.write(OutputStream.java:116) at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82) at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:140) at java.io.FilterOutputStream.close(FilterOutputStream.java:158) at org.eclipse.jgit.util.FS.runProcess(FS.java:993) at org.eclipse.jgit.util.FS.execute(FS.java:1102) at org.eclipse.jgit.treewalk.WorkingTreeIterator.filterClean(WorkingTreeIterator.java:470) ... 22 more OpenJDK replaces the underlying OutputStream with NullOutputStream when the process exits. This throws IOException for all write operation. When it exits before JGit writes the input to the pipe buffer, the input stays in BufferedOutputStream. The close method tries to write it again, and IOException is thrown. Since we ignore IOException in StreamGobbler, we also ignore it when we close the stream. Fixes Bug 499633. Change-Id: I30c7ac78e05b00bd0152f697848f4d17d53efd17 Signed-off-by: Masaya Suzuki <draftcode@gmail.com>
* | DfsObjDatabase: clear PackList dirty bit if no new packsShawn Pearce2016-08-191-1/+14
|/ | | | | | | | | | | If a reference was updated more recently than a pack was written (typical) the PackList was perpetually dirty until the next GC was completed for the repository. Detect this condition by observing no changes to the PackList membership and resetting the dirty bit. Change-Id: Ie2133aca1f8083307c73b6a26358175864f100ef
* Enhance ResetCommand to allow disabling reflog updateMatthias Sohn2016-08-172-2/+68
| | | | | | | This will be used by EGit for implementing commit amend in the staging view (see Idcd1efeeee8b3065bae36e285bfc0af24ab1e88f). Change-Id: Ice9ebbb1c0c3314c679f4db40cdd3664f61c27c3 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* LfsProtocolServlet: Always set the Content-Type header on responseDavid Pursehouse2016-08-161-2/+3
| | | | | | | | | | | If the Content-Type is not set on error responses, the git-lfs client does not read the body which contains the error message, and instead just displays a generic error message. Also set the charset on the Content-Type header. Change-Id: I88e6f07f20b622a670e7c5063145dffb8b630aee Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
* LfsProtocolServlet: Don't set pretty printing on GsonDavid Pursehouse2016-08-161-5/+4
| | | | | | | | Pretty printing is only used for outputting json content, which is interpreted by the client and does not need to be pretty printed. Change-Id: I48e0280241b6b0f5706300ae0f4c9bc461a89110 Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
* Merge "BaseReceivePack: null and IllegalStateException cases for getPushOptions"Jonathan Nieder2016-08-151-3/+19
|\
| * BaseReceivePack: null and IllegalStateException cases for getPushOptionsDan Wang2016-08-101-3/+19
| | | | | | | | | | Change-Id: I5c6790719991931d615d821c900bfd90a20e540b Signed-off-by: Dan Wang <dwwang@google.com>
* | Update .mailmapDavid Pursehouse2016-08-091-0/+1
| | | | | | | | | | Change-Id: I167f9e4746b8aa814b361e884c3c9a25e95b9d54 Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
* | LfsProtocolServlet: Reuse existing Writer when sending error responseDavid Pursehouse2016-08-091-27/+19
| | | | | | | | | | | | | | | | Trying to open a new writer on the response causes an illegal state exception and the response is not sent. Change-Id: Ic718d23cfb3e74f5691cc2aea7283003af7df207 Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
* | RepoCommand: Avoid group lists shadowing groups stringsJonathan Nieder2016-08-082-10/+10
| | | | | | | | | | | | Reported-by: David Pursehouse <david.pursehouse@gmail.com> Change-Id: I9e9b021d335bda4d58b6bcc30f59b81ac5b37724 Signed-off-by: Jonathan Nieder <jrn@google.com>
* | PackWriter: Fix Javadoc tag for thrown exception in preparePackDavid Pursehouse2016-08-091-1/+1
| | | | | | | | | | | | | | Use @throws instead of @param Change-Id: Ic9419d254c617e60a9b10e49205b11069442eb27 Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
* | Merge "Document new PackWriter#preparePack variant's parameters and exceptions"Jonathan Nieder2016-08-081-0/+20
|\ \
| * | Document new PackWriter#preparePack variant's parameters and exceptionsJonathan Nieder2016-08-081-0/+20
| | | | | | | | | | | | Change-Id: Id4fa272c611a855bf4ef1bf5399f3e4305664103
* | | Silence API errors in LfsProtocolServletMatthias Sohn2016-08-091-0/+17
| | | | | | | | | | | | | | | | | | | | | | | | bb9988c2 changed the signature of getLargeFileRepository() which is only breaking implementors which is ok according to OSGi semantic versioning rules. Change-Id: I68bda7900b72e217571f74aee53705167f8100a2 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* | | Add missing @since tags for new APIMatthias Sohn2016-08-093-1/+10
| | | | | | | | | | | | Change-Id: I8db29a0313fbc476152cef47f2eaa76954f1e280 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* | | Merge "Require-Bundle com.jcraft.jsch replaced by Import-Package statement"Matthias Sohn2016-08-081-1/+1
|\ \ \ | |/ / |/| |
| * | Require-Bundle com.jcraft.jsch replaced by Import-Package statementJens Offenbach2016-08-091-1/+1
| | | | | | | | | | | | | | | | | | Bug: 359288 Change-Id: Ifbbf953f5389c6bd3ba960b598c0e92656b522e3 Signed-off-by: Jens Offenbach <wolle5050@gmx.de> Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* | | Merge changes Ib0d8c294,Idfb83482Jonathan Nieder2016-08-082-6/+30
|\ \ \ | |/ / |/| | | | | | | | | | | | | | | | | * changes: Shallow fetch: Pass along "shallow"s in unparsed-wants case, too Shallow fetch: Pass a DepthWalk to PackWriter Change-Id: I7d1c3b4d0b7ebc254b53404d1618522b0174ac23
| * | Shallow fetch: Pass along "shallow"s in unparsed-wants case, tooJonathan Nieder2016-08-082-3/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since 84d2738ff21c (Don't skip want validation when the client sends no haves, 2013-06-21), this branch is not taken. Process the "shallow"s anyway as a defensive measure in case the code path gets revived. Change-Id: Idfb834825d77f51e17191c1635c9d78c78738cfd Signed-off-by: Jonathan Nieder <jrn@google.com>
| * | Shallow fetch: Pass a DepthWalk to PackWriterJonathan Nieder2016-08-081-3/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d385a7a5e5ca (Shallow fetch: Respect "shallow" lines, 2016-08-03) forgot that UploadPack wasn't passing a DepthWalk to PackWriter in the first place. As a result, shallow clones fail: java.lang.IllegalArgumentException: Shallow packs require a DepthWalk at org.eclipse.jgit.internal.storage.pack.PackWriter.preparePack(PackWriter.java:756) at org.eclipse.jgit.transport.UploadPack.sendPack(UploadPack.java:1497) at org.eclipse.jgit.transport.UploadPack.sendPack(UploadPack.java:1381) at org.eclipse.jgit.transport.UploadPack.service(UploadPack.java:774) at org.eclipse.jgit.transport.UploadPack.upload(UploadPack.java:667) at org.eclipse.jgit.http.server.UploadPackServlet.doPost(UploadPackServlet.java:191) Change-Id: Ib0d8c2946eebfea910a2b767fb92e23da15d4749
* | | Fix non-parameterized generic type warningMatthias Sohn2016-08-081-1/+3
| | | | | | | | | | | | Change-Id: Ib857166f64420aebf7c31d72825cac44bd770dbd Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* | | Merge "Add path src/ to source path in build.properties"Matthias Sohn2016-08-082-2/+4
|\ \ \
| * | | Add path src/ to source path in build.propertiesMatthias Sohn2016-08-062-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | This fixes the warning "src/ is missing from source.." Change-Id: I166e3a6a3d5230e4110d3283ec4dbc7d1dfe6732 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* | | | Merge "Skip cleaning inner repositories by default in CleanCommand"Christian Halstrick2016-08-072-11/+113
|\ \ \ \
| * | | | Skip cleaning inner repositories by default in CleanCommandMatthaus Owens2016-08-042-11/+113
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously jgit would attempt to clean git repositories that had not been committed by calling a non-recursive delete on them, which would fail as they are directories. This commit addresses that issue in the following ways. Repositories are skipped in a default clean, similarly to cgit and only cleaned when the force flag is applied. When the force flag is applied repositories are deleted using a recursive delete call. The force flag and setForce method are added here to CleanCommand to support this change. Bug: 498367 Change-Id: Ib6cfff65a033d0d0f76395060bf76719e13fc467 Signed-off-by: Matthaus Owens <matthaus@puppetlabs.com>
* | | | | Merge "Add testCleanDirsWithSubmodule test to CleanCommandTest"Christian Halstrick2016-08-071-0/+28
|\| | | | | |/ / / |/| | |
| * | | Add testCleanDirsWithSubmodule test to CleanCommandTestMatthaus Owens2016-08-041-0/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit adds some test coverage to cleaning a repository with a submodule, which did not previously exist. Bug: 498367 Change-Id: Ia5c4e4cc53488800dd486f8556dc57656783f1c4 Signed-off-by: Matthaus Owens <matthaus@puppetlabs.com>
* | | | Merge changes I27961679,I91be6165,If0dbd562Jonathan Nieder2016-08-058-29/+323
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * changes: LfsProtocolServlet: Allow access to objects in request LfsProtocolServlet: Allow getLargeFileRepository to raise exceptions Remove references to org.eclipse.jgit.java7
| * | | | LfsProtocolServlet: Allow access to objects in requestDavid Pursehouse2016-08-052-1/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Classes implementing the LFS servlet should be able to inspect the objects given in the request. Add a getObjects method. Make the LfsObject class public, and add accessor methods. Change-Id: I27961679f620eb3a89dc8521aadd4ea2f936c60e Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
| * | | | LfsProtocolServlet: Allow getLargeFileRepository to raise exceptionsDavid Pursehouse2016-08-055-6/+292
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | According to the specification [1] the server may return the following HTTP error responses: - 403: The user has read, but not write access. - 404: The repository does not exist for the user. - 422: Validation error with one or more of the objects in the request. In the current implementation, however, getLargeFileRepository can only return null to indicate an error. This results in the error code: - 503: Service Unavailable being returned to the client regardless of what the actual reason was. Add exception classes to cover these cases, derived from a common base exception, and change the specification of getLargeFileRepository to throw the base exception. In LfsProtocolServlet#post, handle the new exceptions and send back the appropriate HTTP responses as mentioned above. The specification also mentions several other optional response codes (406, 429, 501, and 509) but these are not implemented in this commit. It should be trivial to implement them in follow-up commits. [1] https://github.com/github/git-lfs/blob/master/docs/api/v1/http-v1-batch.md#response-errors Change-Id: I91be6165bcaf856d0cefc533882330962e2fc9b2 Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
| * | | | Remove references to org.eclipse.jgit.java7David Pursehouse2016-08-052-22/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The bundle org.eclipse.jgit.java7 was removed in 4.0. Remove references to it from the README.md. Remove reference to it from org.eclipse.jgit.test/.project, which causes an error message when opening the project in Eclipse: Resource '/org.eclipse.jgit.java7' does not exist. Change-Id: If0dbd562dcd60550bec3c0f793289474b7624bce Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
* | | | | Shallow fetch/clone: Make --depth mean the total history depthTerry Parker2016-08-055-13/+67
| |_|/ / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | cgit changed the --depth parameter to mean the total depth of history rather than the depth of ancestors to be returned [1]. JGit still uses the latter meaning, so update it to match cgit. depth=0 still means a non-shallow clone. depth=1 now means only the wants rather than the wants and their direct parents. This is accomplished by changing the semantic meaning of "depth" in UploadPack and PackWriter to mean the total depth of history desired, while keeping "depth" in DepthWalk.{RevWalk,ObjectWalk} to mean the depth of traversal. Thus UploadPack and PackWriter always initialize their DepthWalks with "depth-1". [1] upload-pack: fix off-by-one depth calculation in shallow clone https://code.googlesource.com/git/+/682c7d2f1a2d1a5443777237450505738af2ff1a Change-Id: I87ed3c0f56c37e3491e367a41f5e555c4207ff44 Signed-off-by: Terry Parker <tparker@google.com>
* | | | Shallow fetch: Respect "shallow" linesTerry Parker2016-08-055-24/+88
|/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When fetching from a shallow clone, the client sends "have" lines to tell the server about objects it already has and "shallow" lines to tell where its local history terminates. In some circumstances, the server fails to honor the shallow lines and fails to return objects that the client needs. UploadPack passes the "have" lines to PackWriter so PackWriter can omit them from the generated pack. UploadPack processes "shallow" lines by calling RevWalk.assumeShallow() with the set of shallow commits. RevWalk creates and caches RevCommits for these shallow commits, clearing out their parents. That way, walks correctly terminate at the shallow commits instead of assuming the client has history going back behind them. UploadPack converts its RevWalk to an ObjectWalk, maintaining the cached RevCommits, and passes it to PackWriter. Unfortunately, to support shallow fetches the PackWriter does the following: if (shallowPack && !(walk instanceof DepthWalk.ObjectWalk)) walk = new DepthWalk.ObjectWalk(reader, depth); That is, when the client sends a "deepen" line (fetch --depth=<n>) and the caller has not passed in a DepthWalk.ObjectWalk, PackWriter throws away the RevWalk that was passed in and makes a new one. The cleared parent lists prepared by RevWalk.assumeShallow() are lost. Fortunately UploadPack intends to pass in a DepthWalk.ObjectWalk. It tries to create it by calling toObjectWalkWithSameObjects() on a DepthWalk.RevWalk. But it doesn't work: because DepthWalk.RevWalk does not override the standard RevWalk#toObjectWalkWithSameObjects implementation, the result is a plain ObjectWalk instead of an instance of DepthWalk.ObjectWalk. The result is that the "shallow" information is thrown away and objects reachable from the shallow commits can be omitted from the pack sent when fetching with --depth from a shallow clone. Multiple factors collude to limit the circumstances under which this bug can be observed: 1. Commits with depth != 0 don't enter DepthGenerator's pending queue. That means a "have" cannot have any effect on DepthGenerator unless it is also a "want". 2. DepthGenerator#next() doesn't call carryFlagsImpl(), so the uninteresting flag is not propagated to ancestors there even if a "have" is also a "want". 3. JGit treats a depth of 1 as "1 past the wants". Because of (2), the only place the UNINTERESTING flag can leak to a shallow commit's parents is in the carryFlags() call from markUninteresting(). carryFlags() only traverses commits that have already been parsed: commits yet to be parsed are supposed to inherit correct flags from their parent in PendingGenerator#next (which doesn't happen here --- that is (2)). So the list of commits that have already been parsed becomes relevant. When we hit the markUninteresting() call, all "want"s, "have"s, and commits to be unshallowed have been parsed. carryFlags() only affects the parsed commits. If the "want" is a direct parent of a "have", then it carryFlags() marks it as uninteresting. If the "have" was also a "shallow", then its parent pointer should have been null and the "want" shouldn't have been marked, so we see the bug. If the "want" is a more distant ancestor then (2) keeps the uninteresting state from propagating to the "want" and we don't see the bug. If the "shallow" is not also a "have" then the shallow commit isn't parsed so (2) keeps the uninteresting state from propagating to the "want so we don't see the bug. Here is a reproduction case (time flowing left to right, arrows pointing to parents). "C" must be a commit that the client reports as a "have" during negotiation. That can only happen if the server reports it as an existing branch or tag in the first round of negotiation: A <-- B <-- C <-- D First do git clone --depth 1 <repo> which yields D as a "have" and C as a "shallow" commit. Then try git fetch --depth 1 <repo> B:refs/heads/B Negotiation sets up: have D, shallow C, have C, want B. But due to this bug B is marked as uninteresting and is not sent. Change-Id: I6e14b57b2f85e52d28cdcf356df647870f475440 Signed-off-by: Terry Parker <tparker@google.com>
* | | Merge changes from topic 'shallowClone'Jonathan Nieder2016-08-043-6/+88
|\ \ \ | | | | | | | | | | | | | | | | | | | | * changes: RevWalk: Make fields available to DepthWalk Shallow fetch: avoid sending unneeded blobs
| * | | RevWalk: Make fields available to DepthWalkTerry Parker2016-08-041-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | DepthWalk needs to override toObjectWalkWithSameObjects() and thus needs to be able to directly set the objects and freeFlags fields, so make them package private. Change-Id: I24561b82c54ba3d6522582ca25105b204d777074 Signed-off-by: Terry Parker <tparker@google.com>
| * | | Shallow fetch: avoid sending unneeded blobsTerry Parker2016-08-042-5/+87
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When doing an incremental fetch from JGit, "have" commits are marked as "uninteresting". In a non-shallow fetch, when the RevWalk hits an "uninteresting" commit it marks the commit's corresponding tree as uninteresting. That has the effect of dropping those trees and all the trees and blobs they reference out of the thin pack returned to the client. However, shallow fetches use a DepthWalk to limit the RevWalk, which nearly always causes the RevWalk to terminate before encountering the "have" commits. As a result the pack created for the incremental fetch never encounters "uninteresting" tree objects and thus includes duplicate objects that it knows the client already has. Change-Id: I7b1f7c3b0d83e04d34cd2fa676f1ad4fec904c05 Signed-off-by: Terry Parker <tparker@google.com>
* | | | Merge "PackWriterTest: Improve readability"Terry Parker2016-08-041-10/+17
|\| | |
| * | | PackWriterTest: Improve readabilityTerry Parker2016-08-041-10/+17
| |/ / | | | | | | | | | | | | | | | | | | | | | Add wants() and haves() static utility functions to improve readability. Change-Id: I4d44e17a9af97c0203e2ebe112eabb1f67d272a6 Signed-off-by: Terry Parker <tparker@google.com>
* / / DiffFormatter: Support setting a reader without a repoDave Borowitz2016-08-033-25/+42
|/ / | | | | | | Change-Id: I575cdb9c0a9a341b79ef5e3c7a35e68cde142540
* | Merge "RefSpec: Make WildcardMode public"Jonathan Nieder2016-07-281-2/+20
|\ \
| * | RefSpec: Make WildcardMode publicStefan Beller2016-07-281-2/+20
| | | | | | | | | | | | | | | | | | | | | | | | We have to be able to access the enum from outside the package as part of the API. Change-Id: I4bdc6bd53a14237c5f4fb9397ae850f9a24c4cfb Signed-off-by: Stefan Beller <sbeller@google.com>
* | | Fix typo in email address in copyright headersDavid Pursehouse2016-07-285-5/+5
| | | | | | | | | | | | | | | Change-Id: Ib7b73d7d37574682bb58f969822c842e4e579233 Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
* | | LfsServerTest: Treat response body as UTF-8 when decoding error messageDavid Pursehouse2016-07-281-9/+12
| | | | | | | | | | | | | | | Change-Id: I495f0b60b7128fff27502641e6a5d05f888d4e8a Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
* | | LfsProtocolServlet: Pass request and path to getLargeFileRepositoryDavid Pursehouse2016-07-272-14/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Passing the request and path to the method will allow implementations to have more control over determination of the backend, for example: - return different backends for different requests - accept or refuse requests based on request characteristics - etc Change-Id: I1ec6ec54c91a5f0601b620ed18846eb4a3f46783 Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>