aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Always close the GZIPOutputStream to release DeflaterShawn O. Pearce2011-11-301-2/+5
| | | | | | | | The stream must be closed to ensure the native resources associated with its internal Deflater instance are cleaned up early, instead of waiting for GC to identify the dead object and finialize it. Change-Id: Ic31b5df563f19404ed4682556999f4332aa61562
* Fix HTTP unit testsShawn O. Pearce2011-11-301-2/+1
| | | | | | | | I modified the way errors are returned, and this particular test is now getting a different access denied response. The new text happens to be what I intended to have here, so update the test. Change-Id: I53f8410ca0a52755d80473cd5cbcdb4d8502febf
* Merge "RepositoryState: add method canAmend"Christian Halstrick2011-11-301-0/+18
|\
| * RepositoryState: add method canAmendJens Baumgart2011-11-281-0/+18
| | | | | | | | | | | | | | | | The method canAmend was added to RepositoryState. It returns true if amending the HEAD commit is allowed in the current repository state. Change-Id: Idd0c4eea83a23c41340789b7b877959b457d951e Signed-off-by: Jens Baumgart <jens.baumgart@sap.com>
* | Merge "Always checkout master when it matches the advertised HEAD"Shawn Pearce2011-11-282-0/+22
|\ \
| * | Always checkout master when it matches the advertised HEADKevin Sawicki2011-11-282-0/+22
| | | | | | | | | | | | | | | | | | | | | This parallels the CGit behavior of always using refs/heads/master when it matches the remote advertised HEAD commit. Change-Id: I5a5cd1516b58d116e334056aba1ef7990697ec30
* | | Merge "Update maven plugin versions"Shawn Pearce2011-11-282-12/+12
|\ \ \
| * | | Update maven plugin versionsMatthias Sohn2011-11-292-12/+12
| |/ / | | | | | | | | | | | | Change-Id: I7400e08a1059f57c85a53aebe2719f81c00f58e8 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* | | Merge "Implement Serializable interface in ReflogEntry"Shawn Pearce2011-11-281-1/+5
|\ \ \
| * | | Implement Serializable interface in ReflogEntryKevin Sawicki2011-11-281-1/+5
| |/ / | | | | | | | | | Change-Id: Idf798dd3981bef3dc9e17c13c12809f89089e96f
* / / Remove calls to printStackTrace in catch blocksKevin Sawicki2011-11-283-6/+1
|/ / | | | | | | Change-Id: I7a4179f10a4841e80b6546e1e7662cab71eac5e9
* | Merge "Reset SSH connection and credentials on "Auth fail""Shawn Pearce2011-11-262-20/+55
|\ \
| * | Reset SSH connection and credentials on "Auth fail"Matthias Sohn2011-11-272-20/+55
| |/ | | | | | | | | | | | | | | | | | | | | When SSH user/password authentication failed this may have been caused by changed credentials on the server side. When the SSH credentials of a user change the SSH connection needs to be re-established and credentials which may have been stored by the credentials provider need to be reset in order to enable prompting for the new credentials. Bug: 356233 Change-Id: I7d64c5f39b68a9687c858bb68a961616eabbc751 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* / Don't iterate over advertised refs when HEAD is nullKevin Sawicki2011-11-261-3/+3
|/ | | | | | | Moves the check from inside the loop to outside the loop and returns immediately if the HEAD advertisded ref is null Change-Id: I539da6cafb4f73610b8e00259e32bd4d57f4f4cc
* Merge "tools/release: Handle v1.0.0.201106090707-r-NN-gdeadbeef"Matthias Sohn2011-11-241-1/+1
|\
| * tools/release: Handle v1.0.0.201106090707-r-NN-gdeadbeefShawn O. Pearce2011-06-241-1/+1
| | | | | | | | | | | | | | | | The 1.0.0 release tags have a new suffix. Account for this. Change-Id: Ic6f260b6a5ba353af3b312b722f576155208eaa0 Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
* | Merge "Adapt merge message to C Git for remote-tracking branch"Shawn Pearce2011-11-232-4/+4
|\ \
| * | Adapt merge message to C Git for remote-tracking branchRobin Stocker2011-11-232-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Commit 13931236b9ee2895a98ffdbdacbd0f895956d8a8 in C Git (2011-11-02) changed the message format: -Merge remote branch 'origin/foo' +Merge remote-tracking branch 'origin/foo' This change does the same in EGit to be consistent. Change-Id: I7d9c5afa95771dbfe6079b5f89a10b248fee0172 Signed-off-by: Robin Stocker <robin@nibor.org>
* | | Merge changes I828ac2de,I80e5b7cfShawn O. Pearce2011-11-238-98/+357
|\ \ \ | |/ / |/| | | | | | | | | | | * changes: Add utilities for smart HTTP error handling Strip leading slashes in RepositoryFilter
| * | Add utilities for smart HTTP error handlingShawn O. Pearce2011-11-228-96/+355
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The GitSmartHttpTools class started as utility functions to help report useful error messages to users of the android.googlesource.com service. Now that the GitServlet and GitFilter classes support filters before a git-upload-pack or git-receive-pack request, server implementors may these routines helpful to report custom messages to clients. Using the sendError() method to return an HTTP 200 OK with error text embedded in the payload prevents native Git clients from retrying the action with a dumb Git or WebDAV HTTP request. Refactor some of the existing code to use these new error functions and protocol constants. The new sendError() function is very close to being identical to the old error handling code in RepositoryFilter, however we now use the POST Content-Type rather than the Accept HTTP header to check if the client will accept the error data in the response body rather than using the HTTP status code. This is a more reliable way of checking for native Git clients, as the Accept header was not always populated with the correct string in older versions of Git smart HTTP. Change-Id: I828ac2deb085af12b6689c10f86662ddd39bd1a2
| * | Strip leading slashes in RepositoryFilterShawn O. Pearce2011-11-221-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | If removing the leading slash results in an empty string, return with an HTTP 404 error before trying to use the RepositoryResolver. Moving this into a loop ahead of the length check ensures there is no empty string passed into the resolver. Change-Id: I80e5b7cf25ae9f2164b5c396a29773e5c7d7286e
* | | Guard against null branch in PullCommandKevin Sawicki2011-11-224-1/+19
| | | | | | | | | | | | | | | | | | | | | | | | Throw a NoHeadException when Repository.getFullBranch returns null Bug: 351543 Change-Id: I666cd5b67781508a293ae553c6fe5c080c8f4d99 Signed-off-by: Kevin Sawicki <kevin@github.com>
* | | Support adding all refs to LogCommandKevin Sawicki2011-11-222-0/+110
| | | | | | | | | | | | | | | Bug: 353310 Change-Id: Ifa2e7ed58c7f2bdfe3aafbd500b5a38c1f94c2ec Signed-off-by: Kevin Sawicki <kevin@github.com>
* | | Merge "Provide merge result when revert command fails"Shawn Pearce2011-11-221-0/+22
|\ \ \
| * | | Provide merge result when revert command failsKevin Sawicki2011-11-211-0/+22
| |/ / | | | | | | | | | | | | | | | | | | This allows callers to determine why the revert did not complete successfully Change-Id: Ie44bb8523cac388b63748bc69ebdd3c3a3665d06 Signed-off-by: Kevin Sawicki <kevin@github.com>
* / / maxObjectSizeLimit for receive-pack.Sasa Zivkov2011-11-226-2/+242
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ReceivePack (and PackParser) can be configured with the maxObjectSizeLimit in order to prevent users from pushing too large objects to Git. The limit check is applied to all object types although it is most likely that a BLOB will exceed the limit. In all cases the size of the object header is excluded from the object size which is checked against the limit as this is the size of which a BLOB object would take in the working tree when checked out as a file. When an object exceeds the maxObjectSizeLimit the receive-pack will abort immediately. Delta objects (both offset and ref delta) are also checked against the limit. However, for delta objects we will first check the size of the inflated delta block against the maxObjectSizeLimit and abort immediately if it exceeds the limit. In this case we even do not know the exact size of the resolved delta object but we assume it will be larger than the given maxObjectSizeLimit as delta is generally only chosen if the delta can copy more data from the base object than the delta needs to insert or needs to represent the copy ranges. Aborting early, in this case, avoids unnecessary inflating of the (huge) delta block. Unfortunately, it is too expensive (especially for a large delta) to compute SHA-1 of an object that causes the receive-pack to abort. This would decrease the value of this feature whose main purpose is to protect server resources from users pushing huge objects. Therefore we don't report the SHA-1 in the error message. Change-Id: I177ef24553faacda444ed5895e40ac8925ca0d1e Signed-off-by: Sasa Zivkov <sasa.zivkov@sap.com> Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* | Merge "Add missing '' characters around quoted variables"Shawn Pearce2011-11-182-7/+7
|\ \
| * | Add missing '' characters around quoted variablesKevin Sawicki2011-11-182-7/+7
| | | | | | | | | | | | | | | | | | | | | | | | Double ' characters are needed for variables to appear in single quotes. Variables surrounded with a s single ' will not be replaced when formatted Change-Id: I0182c1f679ba879ca19dd81bf46924f415dc6003 Signed-off-by: Kevin Sawicki <kevin@github.com>
* | | Fix duplicate objects in "thin+cached" packs from DFSShawn O. Pearce2011-11-181-25/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The DfsReader must offer every representation of an object that exists on the local repository when PackWriter asks for them. This is necessary to identify objects in the thin pack part that are also in the cached pack that will be appended onto the end of the stream. Without looking at all alternatives, PackWriter may pack the same object twice (once in the thin section, again in the cached base pack). This may cause the command line C version to go into an infinite loop when repacking the resulting repository, as it may see a delta chain cycle with one of those duplicate copies of the object. Previously the DfsReader tried to avoid looking at packs that it might not care about, but this is insufficient, as all versions must be considered during pack generation. Change-Id: Ibf4a3e8ea5c42aef16404ffc42a5781edd97b18e
* | | Do not write edge objects to the pack streamShawn O. Pearce2011-11-181-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Consider two objects A->B where A uses B as a delta base, and these are in the same source pack file ordered as "A B". If cached packs is enabled and B is also in the cached pack that will be appended onto the end of the thin pack, and both A, B are supposed to be in the thin pack, PackWriter must consider the fact that A's base B is an edge object that claims to be part of the new pack, but is actually "external" and cannot be written first. If the object reuse system considered B candidates fist this bug does not arise, as B will be marked as edge due to it existing in the cached pack. When the A candidates are later examined, A sees a valid delta base is available as an edge, and will not later try to "write base first" during the writing phase. However, when the reuse system considers A candidates first they see that B will be in the outgoing pack, as it is still part of the thin pack, and arrange for A to be written first. Later when A switches from being in-pack to being an edge object (as it is part of the cached pack) the pointer in B does not get its type changed from ObjectToPack to ObjectId, so B thinks A is non-edge. We work around this case by also checking that the delta base B is non-edge before writing the object to the pack. Later when A writes its object header, delta base B's ObjectToPack will have an offset == 0, which makes isWritten() = false, and the OBJ_REF delta format will be used for A's header. This will be resolved by the client to the copy of B that appears in the later cached pack. Change-Id: Ifab6bfdf3c0aa93649468f49bcf91d67f90362ca
* | | Use long for more object counts in PackWriterShawn O. Pearce2011-11-181-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Packs can contain up to 2^32-1 objects, which exceeds the range of a Java int. Try harder to accept higher object counts in some cases by using long more often when we are working with the object count value. This is a trivial refactoring, we may have to make even more changes to the object handling code to support more than 2^31-1 objects. Change-Id: I8cd8146e97cd1c738ad5b48fa9e33804982167e7
* | | Search for annotated tag reuse firstShawn O. Pearce2011-11-181-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Annotated tags are relatively rare and currently are scheduled in a pack file near the commits, decreasing the time it takes to resolve client requests reading tags as part of a history traversal. Putting them first before the commits allows the storage system to page in the tag area, and have it relatively hot in the LRU when the nearby commit area gets examined too. Later looking at the tree and blob data will pollute the cache, making it more likely the tags are not loaded and would require file IO. Change-Id: I425f1f63ef937b8447c396939222ea20fdda290f
* | | Correct progress monitor on "Getting sizes:" phaseShawn O. Pearce2011-11-181-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | This counter always was running 1 higher, because it incremented after the queue was exhausted (and every object was processed). Move increments to be after the queue has provided a result, to ensure we do not show a higher in-progress count than total count. Change-Id: I97f815a0492c0957300475af409b6c6260008463
* | | Refactor DfsReader selection of cached packsShawn O. Pearce2011-11-181-3/+6
|/ / | | | | | | | | | | | | | | | | Make the code more clear with a simple refactoring of the boolean logic into a method that describes the condition we are looking for on each pack file. A cached pack is possible if there exists a tips collection, and the collection is non-empty. Change-Id: I4ac42b0622b39d159a0f4f223e291c35c71f672c
* | Merge changes I366435e2,I64577f8fShawn Pearce2011-11-182-1/+8
|\ \ | | | | | | | | | | | | | | | * changes: [findBugs] Silence returning null for StringUtils.toBooleanOrNull() [findBugs] Prefer short-cut logic as it's more performant
| * | [findBugs] Silence returning null for StringUtils.toBooleanOrNull()Matthias Sohn2011-11-161-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | As the method name and its javadoc clearly state that this method can return null we can ignore this FindBugs warning. Change-Id: I366435e26eda5d910f5d1a907db51f08efd4bb8c Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| * | [findBugs] Prefer short-cut logic as it's more performantMatthias Sohn2011-11-161-1/+1
| | | | | | | | | | | | Change-Id: I64577f8fd19ee0d2d407479cc70e521adc367f37 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* | | Keep track of a static collection of all PackWriter instancesDave Borowitz2011-11-141-0/+52
| | | | | | | | | | | | | | | | | | | | | | | | | | | Stored in a weak concurrent hash map, which we clean up while iterating. Usually the weak reference behavior should not be necessary because PackWriters should be released with release(), but we still want to avoid leaks when dealing with broken client code. Change-Id: I337abb952ac6524f7f920fedf04065edf84d01d2
* | | Estimate the amount of memory used by a PackWriterDave Borowitz2011-11-141-3/+42
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Memory usage is dominated by three terms: - The maximum memory allocated to each delta window. - The maximum size of a single file held in memory during delta search. - ObjectToPack instances owned by the writer. For the first two terms, rather than doing complex instrumentation of the DeltaWindows, we just overestimate based on the config parameters (though we may underestimate if the maximum size is not set). For the ObjectToPack instances, we do some rough byte accounting of the underlying Java object representation. Change-Id: I23fe3cf9d260a91f1aeb6ea22d75af8ddb9b1939
* | | Add an object encapsulating the state of a PackWriterDave Borowitz2011-11-143-14/+108
|/ / | | | | | | | | | | | | | | Exposes essentially the same state machine to the programmer as is exposed to the client via a ProgressMonitor, using a wrapper around beginTask()/endTask(). Change-Id: Ic3622b4acea65d2b9b3551c668806981fa7293e3
* | Merge "Implement DirCacheEntry.toString() to ease debugging"Christian Halstrick2011-11-111-0/+10
|\ \
| * | Implement DirCacheEntry.toString() to ease debuggingMatthias Sohn2011-11-101-0/+10
| | | | | | | | | | | | | | | Change-Id: I9aa1b5817a18fb340411f47b25b6711d533590fd Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* | | Clean up tab usage in Directory/File conflict tableRobin Rosenberg2011-11-101-9/+9
| | | | | | | | | | | | | | | Change-Id: I394fc1ef714c8465cbd5af9c73338b9a324ad9c4 Signed-off-by: Chris Aniszczyk <zx@twitter.com>
* | | Add detection of untracked folders to IndexDiffFilterJens Baumgart2011-11-103-3/+157
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Decorators need to know whether folders in the working tree contain only untracked files. This change enhances IndexDiffFilter to report such folders. This works only together with treewalks which operate in default traversal mode. For treewalks which process entries in postorder mode (files are walked before their parent folder is walked) this detection doesn't work. Bug: 359264 Change-Id: I9298d1e3ccac0aec8bbd4e8ac867bc06a5c89c9f Signed-off-by: Christian Halstrick <christian.halstrick@sap.com> Signed-off-by: Jens Baumgart <jens.baumgart@sap.com> Signed-off-by: Chris Aniszczyk <zx@twitter.com>
* | | [blame] Fix blame following renames in non-toplevel directoriesCarsten Pfeiffer2011-11-103-11/+102
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Mark the treeWalk as recursive; otherwise following renames only works for toplevel files. Bug: 302549 Change-Id: I70867928eadf332b0942f8bf6877a3acb3828c87 Signed-off-by: Carsten Pfeiffer <carsten.pfeiffer@gebit.de> Signed-off-by: Matthias Sohn <matthias.sohn@sap.com> Signed-off-by: Chris Aniszczyk <zx@twitter.com>
* | | Support a configured credentials provider in LsRemoteCommandKevin Sawicki2011-11-106-216/+192
|/ / | | | | | | | | | | | | | | | | | | | | | | Refactored the three common transport configuration options: credentials provider, timeout, and transport config callback into a new TransportCommand base class which is now extended by all commands that use a Transport object during execution. Bug: 349188 Change-Id: I90c2c14fb4e3cc4712905158f9047153a0c235c2 Signed-off-by: Kevin Sawicki <kevin@github.com> Signed-off-by: Chris Aniszczyk <zx@twitter.com>
* | Merge changes Ibb3467f7,I2af99903Robin Rosenberg2011-11-101-36/+42
|\ \ | | | | | | | | | | | | | | | * changes: Always use try/finally around DfsBlockCache.clockLock DfsBlockCache: Fix NPE when evicting empty cell
| * | Always use try/finally around DfsBlockCache.clockLockShawn O. Pearce2011-11-081-35/+41
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Any RuntimeException or Error in this block will leave the lock held by the caller thread, which can later result in deadlock or just cache requests hanging forever because they cannot get to the lock object. Wrap everything in try/finally to prevent the lock from hanging, even though a RuntimeException or Error should never happen in any of these code paths. Change-Id: Ibb3467f7ee4c06f617b737858b4be17b10d936e0
| * | DfsBlockCache: Fix NPE when evicting empty cellShawn O. Pearce2011-11-081-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | The cache starts with a single empty Ref that has no data, as the clock list does not support being empty. When this Ref is removed, the size has to be decremented from the associated DfsPackKey, which was previously null. Make it always be non-null. Change-Id: I2af99903e8039405ea6d67f383576ffa43839cff
* | | Merge "Do not use the deprecated Tree class internally"Christian Halstrick2011-11-091-31/+47
|\ \ \