You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

JGitText.java 20KB

Implement similarity based rename detection Content similarity based rename detection is performed only after a linear time detection is performed using exact content match on the ObjectIds. Any names which were paired up during that exact match phase are excluded from the inexact similarity based rename, which reduces the space that must be considered. During rename detection two entries cannot be marked as a rename if they are different types of files. This prevents a symlink from being renamed to a regular file, even if their blob content appears to be similar, or is identical. Efficiently comparing two files is performed by building up two hash indexes and hashing lines or short blocks from each file, counting the number of bytes that each line or block represents. Instead of using a standard java.util.HashMap, we use a custom open hashing scheme similiar to what we use in ObjecIdSubclassMap. This permits us to have a very light-weight hash, with very little memory overhead per cell stored. As we only need two ints per record in the map (line/block key and number of bytes), we collapse them into a single long inside of a long array, making very efficient use of available memory when we create the index table. We only need object headers for the index structure itself, and the index table, but not per-cell. This offers a massive space savings over using java.util.HashMap. The score calculation is done by approximating how many bytes are the same between the two inputs (which for a delta would be how much is copied from the base into the result). The score is derived by dividing the approximate number of bytes in common into the length of the larger of the two input files. Right now the SimilarityIndex table should average about 1/2 full, which means we waste about 50% of our memory on empty entries after we are done indexing a file and sort the table's contents. If memory becomes an issue we could discard the table and copy all records over to a new array that is properly sized. Building the index requires O(M + N log N) time, where M is the size of the input file in bytes, and N is the number of unique lines/blocks in the file. The N log N time constraint comes from the sort of the index table that is necessary to perform linear time matching against another SimilarityIndex created for a different file. To actually perform the rename detection, a SxD matrix is created, placing the sources (aka deletions) along one dimension and the destinations (aka additions) along the other. A simple O(S x D) loop examines every cell in this matrix. A SimilarityIndex is built along the row and reused for each column compare along that row, avoiding the costly index rebuild at the row level. A future improvement would be to load a smaller square matrix into SimilarityIndexes and process everything in that sub-matrix before discarding the column dimension and moving down to the next sub-matrix block along that same grid of rows. An optional ProgressMonitor is permitted to be passed in, allowing applications to see the progress of the detector as it works through the matrix cells. This provides some indication of current status for very long running renames. The default line/block hash function used by the SimilarityIndex may not be optimal, and may produce too many collisions. It is borrowed from RawText's hash, which is used to quickly skip out of a longer equality test if two lines have different hash functions. We may need to refine this hash in the future, in order to minimize the number of collisions we get on common source files. Based on a handful of test commits in JGit (especially my own recent rename repository refactoring series), this rename detector produces output that is very close to C Git. The content similarity scores are sometimes off by 1%, which is most probably caused by our SimilarityIndex type using a different hash function than C Git uses when it computes the delta size between any two objects in the rename matrix. Bug: 318504 Change-Id: I11dff969e8a2e4cf252636d857d2113053bdd9dc Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
14 years ago
Implement similarity based rename detection Content similarity based rename detection is performed only after a linear time detection is performed using exact content match on the ObjectIds. Any names which were paired up during that exact match phase are excluded from the inexact similarity based rename, which reduces the space that must be considered. During rename detection two entries cannot be marked as a rename if they are different types of files. This prevents a symlink from being renamed to a regular file, even if their blob content appears to be similar, or is identical. Efficiently comparing two files is performed by building up two hash indexes and hashing lines or short blocks from each file, counting the number of bytes that each line or block represents. Instead of using a standard java.util.HashMap, we use a custom open hashing scheme similiar to what we use in ObjecIdSubclassMap. This permits us to have a very light-weight hash, with very little memory overhead per cell stored. As we only need two ints per record in the map (line/block key and number of bytes), we collapse them into a single long inside of a long array, making very efficient use of available memory when we create the index table. We only need object headers for the index structure itself, and the index table, but not per-cell. This offers a massive space savings over using java.util.HashMap. The score calculation is done by approximating how many bytes are the same between the two inputs (which for a delta would be how much is copied from the base into the result). The score is derived by dividing the approximate number of bytes in common into the length of the larger of the two input files. Right now the SimilarityIndex table should average about 1/2 full, which means we waste about 50% of our memory on empty entries after we are done indexing a file and sort the table's contents. If memory becomes an issue we could discard the table and copy all records over to a new array that is properly sized. Building the index requires O(M + N log N) time, where M is the size of the input file in bytes, and N is the number of unique lines/blocks in the file. The N log N time constraint comes from the sort of the index table that is necessary to perform linear time matching against another SimilarityIndex created for a different file. To actually perform the rename detection, a SxD matrix is created, placing the sources (aka deletions) along one dimension and the destinations (aka additions) along the other. A simple O(S x D) loop examines every cell in this matrix. A SimilarityIndex is built along the row and reused for each column compare along that row, avoiding the costly index rebuild at the row level. A future improvement would be to load a smaller square matrix into SimilarityIndexes and process everything in that sub-matrix before discarding the column dimension and moving down to the next sub-matrix block along that same grid of rows. An optional ProgressMonitor is permitted to be passed in, allowing applications to see the progress of the detector as it works through the matrix cells. This provides some indication of current status for very long running renames. The default line/block hash function used by the SimilarityIndex may not be optimal, and may produce too many collisions. It is borrowed from RawText's hash, which is used to quickly skip out of a longer equality test if two lines have different hash functions. We may need to refine this hash in the future, in order to minimize the number of collisions we get on common source files. Based on a handful of test commits in JGit (especially my own recent rename repository refactoring series), this rename detector produces output that is very close to C Git. The content similarity scores are sometimes off by 1%, which is most probably caused by our SimilarityIndex type using a different hash function than C Git uses when it computes the delta size between any two objects in the rename matrix. Bug: 318504 Change-Id: I11dff969e8a2e4cf252636d857d2113053bdd9dc Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
14 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466
  1. /*
  2. * Copyright (C) 2010, Sasa Zivkov <sasa.zivkov@sap.com>
  3. * and other copyright owners as documented in the project's IP log.
  4. *
  5. * This program and the accompanying materials are made available
  6. * under the terms of the Eclipse Distribution License v1.0 which
  7. * accompanies this distribution, is reproduced below, and is
  8. * available at http://www.eclipse.org/org/documents/edl-v10.php
  9. *
  10. * All rights reserved.
  11. *
  12. * Redistribution and use in source and binary forms, with or
  13. * without modification, are permitted provided that the following
  14. * conditions are met:
  15. *
  16. * - Redistributions of source code must retain the above copyright
  17. * notice, this list of conditions and the following disclaimer.
  18. *
  19. * - Redistributions in binary form must reproduce the above
  20. * copyright notice, this list of conditions and the following
  21. * disclaimer in the documentation and/or other materials provided
  22. * with the distribution.
  23. *
  24. * - Neither the name of the Eclipse Foundation, Inc. nor the
  25. * names of its contributors may be used to endorse or promote
  26. * products derived from this software without specific prior
  27. * written permission.
  28. *
  29. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
  30. * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
  31. * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  32. * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  33. * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  34. * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  35. * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
  36. * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  37. * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
  38. * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
  39. * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  40. * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
  41. * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  42. */
  43. package org.eclipse.jgit;
  44. import org.eclipse.jgit.nls.NLS;
  45. import org.eclipse.jgit.nls.TranslationBundle;
  46. /**
  47. * Translation bundle for JGit core
  48. */
  49. public class JGitText extends TranslationBundle {
  50. /**
  51. * @return an instance of this translation bundle
  52. */
  53. public static JGitText get() {
  54. return NLS.getBundleFor(JGitText.class);
  55. }
  56. /***/ public String DIRCChecksumMismatch;
  57. /***/ public String DIRCExtensionIsTooLargeAt;
  58. /***/ public String DIRCExtensionNotSupportedByThisVersion;
  59. /***/ public String DIRCHasTooManyEntries;
  60. /***/ public String JRELacksMD5Implementation;
  61. /***/ public String URINotSupported;
  62. /***/ public String URLNotFound;
  63. /***/ public String aNewObjectIdIsRequired;
  64. /***/ public String abbreviationLengthMustBeNonNegative;
  65. /***/ public String advertisementCameBefore;
  66. /***/ public String advertisementOfCameBefore;
  67. /***/ public String amazonS3ActionFailed;
  68. /***/ public String amazonS3ActionFailedGivingUp;
  69. /***/ public String ambiguousObjectAbbreviation;
  70. /***/ public String anExceptionOccurredWhileTryingToAddTheIdOfHEAD;
  71. /***/ public String anSSHSessionHasBeenAlreadyCreated;
  72. /***/ public String atLeastOnePathIsRequired;
  73. /***/ public String atLeastOnePatternIsRequired;
  74. /***/ public String atLeastTwoFiltersNeeded;
  75. /***/ public String badBase64InputCharacterAt;
  76. /***/ public String badEntryDelimiter;
  77. /***/ public String badEntryName;
  78. /***/ public String badEscape;
  79. /***/ public String badGroupHeader;
  80. /***/ public String badObjectType;
  81. /***/ public String badSectionEntry;
  82. /***/ public String base64InputNotProperlyPadded;
  83. /***/ public String baseLengthIncorrect;
  84. /***/ public String bareRepositoryNoWorkdirAndIndex;
  85. /***/ public String blobNotFound;
  86. /***/ public String blobNotFoundForPath;
  87. /***/ public String cannotBeCombined;
  88. /***/ public String cannotCombineTreeFilterWithRevFilter;
  89. /***/ public String cannotCommitOnARepoWithState;
  90. /***/ public String cannotCommitWriteTo;
  91. /***/ public String cannotConnectPipes;
  92. /***/ public String cannotConvertScriptToText;
  93. /***/ public String cannotCreateConfig;
  94. /***/ public String cannotCreateDirectory;
  95. /***/ public String cannotCreateHEAD;
  96. /***/ public String cannotDeleteFile;
  97. /***/ public String cannotDeleteStaleTrackingRef2;
  98. /***/ public String cannotDeleteStaleTrackingRef;
  99. /***/ public String cannotDetermineProxyFor;
  100. /***/ public String cannotDownload;
  101. /***/ public String cannotExecute;
  102. /***/ public String cannotGet;
  103. /***/ public String cannotListRefs;
  104. /***/ public String cannotLock;
  105. /***/ public String cannotLockFile;
  106. /***/ public String cannotLockPackIn;
  107. /***/ public String cannotMatchOnEmptyString;
  108. /***/ public String cannotMoveIndexTo;
  109. /***/ public String cannotMovePackTo;
  110. /***/ public String cannotOpenService;
  111. /***/ public String cannotParseGitURIish;
  112. /***/ public String cannotRead;
  113. /***/ public String cannotReadBlob;
  114. /***/ public String cannotReadCommit;
  115. /***/ public String cannotReadFile;
  116. /***/ public String cannotReadHEAD;
  117. /***/ public String cannotReadObject;
  118. /***/ public String cannotReadTree;
  119. /***/ public String cannotResolveLocalTrackingRefForUpdating;
  120. /***/ public String cannotStoreObjects;
  121. /***/ public String cannotUnloadAModifiedTree;
  122. /***/ public String cannotWorkWithOtherStagesThanZeroRightNow;
  123. /***/ public String cantFindObjectInReversePackIndexForTheSpecifiedOffset;
  124. /***/ public String cantPassMeATree;
  125. /***/ public String channelMustBeInRange0_255;
  126. /***/ public String characterClassIsNotSupported;
  127. /***/ public String checkoutConflictWithFile;
  128. /***/ public String checkoutConflictWithFiles;
  129. /***/ public String classCastNotA;
  130. /***/ public String collisionOn;
  131. /***/ public String commandWasCalledInTheWrongState;
  132. /***/ public String commitAlreadyExists;
  133. /***/ public String commitMessageNotSpecified;
  134. /***/ public String commitOnRepoWithoutHEADCurrentlyNotSupported;
  135. /***/ public String compressingObjects;
  136. /***/ public String connectionFailed;
  137. /***/ public String connectionTimeOut;
  138. /***/ public String contextMustBeNonNegative;
  139. /***/ public String corruptObjectBadStream;
  140. /***/ public String corruptObjectBadStreamCorruptHeader;
  141. /***/ public String corruptObjectGarbageAfterSize;
  142. /***/ public String corruptObjectIncorrectLength;
  143. /***/ public String corruptObjectInvalidEntryMode;
  144. /***/ public String corruptObjectInvalidMode2;
  145. /***/ public String corruptObjectInvalidMode3;
  146. /***/ public String corruptObjectInvalidMode;
  147. /***/ public String corruptObjectInvalidType2;
  148. /***/ public String corruptObjectInvalidType;
  149. /***/ public String corruptObjectMalformedHeader;
  150. /***/ public String corruptObjectNegativeSize;
  151. /***/ public String corruptObjectNoAuthor;
  152. /***/ public String corruptObjectNoCommitter;
  153. /***/ public String corruptObjectNoHeader;
  154. /***/ public String corruptObjectNoObject;
  155. /***/ public String corruptObjectNoTagName;
  156. /***/ public String corruptObjectNoTaggerBadHeader;
  157. /***/ public String corruptObjectNoTaggerHeader;
  158. /***/ public String corruptObjectNoType;
  159. /***/ public String corruptObjectNotree;
  160. /***/ public String corruptObjectPackfileChecksumIncorrect;
  161. /***/ public String corruptionDetectedReReadingAt;
  162. /***/ public String couldNotCheckOutBecauseOfConflicts;
  163. /***/ public String couldNotDeleteLockFileShouldNotHappen;
  164. /***/ public String couldNotDeleteTemporaryIndexFileShouldNotHappen;
  165. /***/ public String couldNotLockHEAD;
  166. /***/ public String couldNotReadIndexInOneGo;
  167. /***/ public String couldNotRenameDeleteOldIndex;
  168. /***/ public String couldNotRenameTemporaryFile;
  169. /***/ public String couldNotRenameTemporaryIndexFileToIndex;
  170. /***/ public String couldNotURLEncodeToUTF8;
  171. /***/ public String couldNotWriteFile;
  172. /***/ public String countingObjects;
  173. /***/ public String creatingDeltasIsNotImplemented;
  174. /***/ public String daemonAlreadyRunning;
  175. /***/ public String deletingNotSupported;
  176. /***/ public String destinationIsNotAWildcard;
  177. /***/ public String dirCacheDoesNotHaveABackingFile;
  178. /***/ public String dirCacheFileIsNotLocked;
  179. /***/ public String dirCacheIsNotLocked;
  180. /***/ public String dirtyFilesExist;
  181. /***/ public String doesNotHandleMode;
  182. /***/ public String downloadCancelled;
  183. /***/ public String downloadCancelledDuringIndexing;
  184. /***/ public String duplicateAdvertisementsOf;
  185. /***/ public String duplicateRef;
  186. /***/ public String duplicateRemoteRefUpdateIsIllegal;
  187. /***/ public String duplicateStagesNotAllowed;
  188. /***/ public String eitherGitDirOrWorkTreeRequired;
  189. /***/ public String emptyPathNotPermitted;
  190. /***/ public String encryptionError;
  191. /***/ public String endOfFileInEscape;
  192. /***/ public String entryNotFoundByPath;
  193. /***/ public String errorDecodingFromFile;
  194. /***/ public String errorEncodingFromFile;
  195. /***/ public String errorInBase64CodeReadingStream;
  196. /***/ public String errorInPackedRefs;
  197. /***/ public String errorInvalidProtocolWantedOldNewRef;
  198. /***/ public String errorListing;
  199. /***/ public String errorOccurredDuringUnpackingOnTheRemoteEnd;
  200. /***/ public String errorReadingInfoRefs;
  201. /***/ public String exceptionCaughtDuringExecutionOfAddCommand;
  202. /***/ public String exceptionCaughtDuringExecutionOfCommitCommand;
  203. /***/ public String exceptionCaughtDuringExecutionOfMergeCommand;
  204. /***/ public String exceptionCaughtDuringExecutionOfTagCommand;
  205. /***/ public String exceptionOccuredDuringAddingOfOptionToALogCommand;
  206. /***/ public String exceptionOccuredDuringReadingOfGIT_DIR;
  207. /***/ public String expectedACKNAKFoundEOF;
  208. /***/ public String expectedACKNAKGot;
  209. /***/ public String expectedBooleanStringValue;
  210. /***/ public String expectedCharacterEncodingGuesses;
  211. /***/ public String expectedEOFReceived;
  212. /***/ public String expectedGot;
  213. /***/ public String expectedPktLineWithService;
  214. /***/ public String expectedReceivedContentType;
  215. /***/ public String expectedReportForRefNotReceived;
  216. /***/ public String failedUpdatingRefs;
  217. /***/ public String failureDueToOneOfTheFollowing;
  218. /***/ public String failureUpdatingFETCH_HEAD;
  219. /***/ public String failureUpdatingTrackingRef;
  220. /***/ public String fileCannotBeDeleted;
  221. /***/ public String fileIsTooBigForThisConvenienceMethod;
  222. /***/ public String fileIsTooLarge;
  223. /***/ public String fileModeNotSetForPath;
  224. /***/ public String flagIsDisposed;
  225. /***/ public String flagNotFromThis;
  226. /***/ public String flagsAlreadyCreated;
  227. /***/ public String funnyRefname;
  228. /***/ public String hugeIndexesAreNotSupportedByJgitYet;
  229. /***/ public String hunkBelongsToAnotherFile;
  230. /***/ public String hunkDisconnectedFromFile;
  231. /***/ public String hunkHeaderDoesNotMatchBodyLineCountOf;
  232. /***/ public String illegalArgumentNotA;
  233. /***/ public String illegalStateExists;
  234. /***/ public String improperlyPaddedBase64Input;
  235. /***/ public String inMemoryBufferLimitExceeded;
  236. /***/ public String incorrectHashFor;
  237. /***/ public String incorrectOBJECT_ID_LENGTH;
  238. /***/ public String incorrectObjectType_COMMITnorTREEnorBLOBnorTAG;
  239. /***/ public String indexFileIsInUse;
  240. /***/ public String indexFileIsTooLargeForJgit;
  241. /***/ public String indexSignatureIsInvalid;
  242. /***/ public String indexWriteException;
  243. /***/ public String integerValueOutOfRange;
  244. /***/ public String internalRevisionError;
  245. /***/ public String interruptedWriting;
  246. /***/ public String invalidAdvertisementOf;
  247. /***/ public String invalidAncestryLength;
  248. /***/ public String invalidBooleanValue;
  249. /***/ public String invalidChannel;
  250. /***/ public String invalidCharacterInBase64Data;
  251. /***/ public String invalidCommitParentNumber;
  252. /***/ public String invalidEncryption;
  253. /***/ public String invalidGitType;
  254. /***/ public String invalidId;
  255. /***/ public String invalidIdLength;
  256. /***/ public String invalidIntegerValue;
  257. /***/ public String invalidKey;
  258. /***/ public String invalidLineInConfigFile;
  259. /***/ public String invalidModeFor;
  260. /***/ public String invalidModeForPath;
  261. /***/ public String invalidObject;
  262. /***/ public String invalidOldIdSent;
  263. /***/ public String invalidPacketLineHeader;
  264. /***/ public String invalidPath;
  265. /***/ public String invalidRefName;
  266. /***/ public String invalidStageForPath;
  267. /***/ public String invalidTagOption;
  268. /***/ public String invalidTimeout;
  269. /***/ public String invalidURL;
  270. /***/ public String invalidWildcards;
  271. /***/ public String invalidWindowSize;
  272. /***/ public String isAStaticFlagAndHasNorevWalkInstance;
  273. /***/ public String kNotInRange;
  274. /***/ public String largeObjectException;
  275. /***/ public String largeObjectOutOfMemory;
  276. /***/ public String largeObjectExceedsByteArray;
  277. /***/ public String largeObjectExceedsLimit;
  278. /***/ public String lengthExceedsMaximumArraySize;
  279. /***/ public String listingAlternates;
  280. /***/ public String localObjectsIncomplete;
  281. /***/ public String localRefIsMissingObjects;
  282. /***/ public String lockCountMustBeGreaterOrEqual1;
  283. /***/ public String lockError;
  284. /***/ public String lockOnNotClosed;
  285. /***/ public String lockOnNotHeld;
  286. /***/ public String malformedpersonIdentString;
  287. /***/ public String mergeStrategyAlreadyExistsAsDefault;
  288. /***/ public String mergeStrategyDoesNotSupportHeads;
  289. /***/ public String mergeUsingStrategyResultedInDescription;
  290. /***/ public String missingAccesskey;
  291. /***/ public String missingDeltaBase;
  292. /***/ public String missingForwardImageInGITBinaryPatch;
  293. /***/ public String missingObject;
  294. /***/ public String missingPrerequisiteCommits;
  295. /***/ public String missingSecretkey;
  296. /***/ public String mixedStagesNotAllowed;
  297. /***/ public String multipleMergeBasesFor;
  298. /***/ public String need2Arguments;
  299. /***/ public String needPackOut;
  300. /***/ public String needsAtLeastOneEntry;
  301. /***/ public String needsWorkdir;
  302. /***/ public String newlineInQuotesNotAllowed;
  303. /***/ public String noApplyInDelete;
  304. /***/ public String noClosingBracket;
  305. /***/ public String noHEADExistsAndNoExplicitStartingRevisionWasSpecified;
  306. /***/ public String noHMACsupport;
  307. /***/ public String noMergeHeadSpecified;
  308. /***/ public String noSuchRef;
  309. /***/ public String noXMLParserAvailable;
  310. /***/ public String notABoolean;
  311. /***/ public String notABundle;
  312. /***/ public String notADIRCFile;
  313. /***/ public String notAGitDirectory;
  314. /***/ public String notAPACKFile;
  315. /***/ public String notARef;
  316. /***/ public String notASCIIString;
  317. /***/ public String notAValidPack;
  318. /***/ public String notFound;
  319. /***/ public String notValid;
  320. /***/ public String nothingToFetch;
  321. /***/ public String nothingToPush;
  322. /***/ public String objectAtHasBadZlibStream;
  323. /***/ public String objectAtPathDoesNotHaveId;
  324. /***/ public String objectIsCorrupt;
  325. /***/ public String objectIsNotA;
  326. /***/ public String objectNotFoundIn;
  327. /***/ public String offsetWrittenDeltaBaseForObjectNotFoundInAPack;
  328. /***/ public String onlyAlreadyUpToDateAndFastForwardMergesAreAvailable;
  329. /***/ public String onlyOneFetchSupported;
  330. /***/ public String onlyOneOperationCallPerConnectionIsSupported;
  331. /***/ public String openFilesMustBeAtLeast1;
  332. /***/ public String openingConnection;
  333. /***/ public String outputHasAlreadyBeenStarted;
  334. /***/ public String packChecksumMismatch;
  335. /***/ public String packCorruptedWhileWritingToFilesystem;
  336. /***/ public String packDoesNotMatchIndex;
  337. /***/ public String packFileInvalid;
  338. /***/ public String packHasUnresolvedDeltas;
  339. /***/ public String packObjectCountMismatch;
  340. /***/ public String packTooLargeForIndexVersion1;
  341. /***/ public String packetSizeMustBeAtLeast;
  342. /***/ public String packetSizeMustBeAtMost;
  343. /***/ public String packfileCorruptionDetected;
  344. /***/ public String packfileIsTruncated;
  345. /***/ public String packingCancelledDuringObjectsWriting;
  346. /***/ public String pathIsNotInWorkingDir;
  347. /***/ public String peeledLineBeforeRef;
  348. /***/ public String peerDidNotSupplyACompleteObjectGraph;
  349. /***/ public String prefixRemote;
  350. /***/ public String problemWithResolvingPushRefSpecsLocally;
  351. /***/ public String progressMonUploading;
  352. /***/ public String propertyIsAlreadyNonNull;
  353. /***/ public String pushCancelled;
  354. /***/ public String pushIsNotSupportedForBundleTransport;
  355. /***/ public String pushNotPermitted;
  356. /***/ public String rawLogMessageDoesNotParseAsLogEntry;
  357. /***/ public String readTimedOut;
  358. /***/ public String readingObjectsFromLocalRepositoryFailed;
  359. /***/ public String receivingObjects;
  360. /***/ public String refUpdateReturnCodeWas;
  361. /***/ public String reflogsNotYetSupportedByRevisionParser;
  362. /***/ public String remoteConfigHasNoURIAssociated;
  363. /***/ public String remoteDoesNotHaveSpec;
  364. /***/ public String remoteDoesNotSupportSmartHTTPPush;
  365. /***/ public String remoteHungUpUnexpectedly;
  366. /***/ public String remoteNameCantBeNull;
  367. /***/ public String renamesAlreadyFound;
  368. /***/ public String renamesBreakingModifies;
  369. /***/ public String renamesFindingByContent;
  370. /***/ public String renamesFindingExact;
  371. /***/ public String renamesRejoiningModifies;
  372. /***/ public String repositoryAlreadyExists;
  373. /***/ public String repositoryConfigFileInvalid;
  374. /***/ public String repositoryIsRequired;
  375. /***/ public String repositoryNotFound;
  376. /***/ public String repositoryState_applyMailbox;
  377. /***/ public String repositoryState_bisecting;
  378. /***/ public String repositoryState_conflicts;
  379. /***/ public String repositoryState_merged;
  380. /***/ public String repositoryState_normal;
  381. /***/ public String repositoryState_rebase;
  382. /***/ public String repositoryState_rebaseInteractive;
  383. /***/ public String repositoryState_rebaseOrApplyMailbox;
  384. /***/ public String repositoryState_rebaseWithMerge;
  385. /***/ public String requiredHashFunctionNotAvailable;
  386. /***/ public String resolvingDeltas;
  387. /***/ public String searchForReuse;
  388. /***/ public String serviceNotPermitted;
  389. /***/ public String shortCompressedStreamAt;
  390. /***/ public String shortReadOfBlock;
  391. /***/ public String shortReadOfOptionalDIRCExtensionExpectedAnotherBytes;
  392. /***/ public String shortSkipOfBlock;
  393. /***/ public String signingNotSupportedOnTag;
  394. /***/ public String similarityScoreMustBeWithinBounds;
  395. /***/ public String sizeExceeds2GB;
  396. /***/ public String smartHTTPPushDisabled;
  397. /***/ public String sourceDestinationMustMatch;
  398. /***/ public String sourceIsNotAWildcard;
  399. /***/ public String sourceRefDoesntResolveToAnyObject;
  400. /***/ public String sourceRefNotSpecifiedForRefspec;
  401. /***/ public String staleRevFlagsOn;
  402. /***/ public String startingReadStageWithoutWrittenRequestDataPendingIsNotSupported;
  403. /***/ public String statelessRPCRequiresOptionToBeEnabled;
  404. /***/ public String submodulesNotSupported;
  405. /***/ public String symlinkCannotBeWrittenAsTheLinkTarget;
  406. /***/ public String tagNameInvalid;
  407. /***/ public String tagOnRepoWithoutHEADCurrentlyNotSupported;
  408. /***/ public String tSizeMustBeGreaterOrEqual1;
  409. /***/ public String theFactoryMustNotBeNull;
  410. /***/ public String timerAlreadyTerminated;
  411. /***/ public String topologicalSortRequired;
  412. /***/ public String transportExceptionBadRef;
  413. /***/ public String transportExceptionEmptyRef;
  414. /***/ public String transportExceptionInvalid;
  415. /***/ public String transportExceptionMissingAssumed;
  416. /***/ public String transportExceptionReadRef;
  417. /***/ public String treeEntryAlreadyExists;
  418. /***/ public String treeIteratorDoesNotSupportRemove;
  419. /***/ public String truncatedHunkLinesMissingForAncestor;
  420. /***/ public String truncatedHunkNewLinesMissing;
  421. /***/ public String truncatedHunkOldLinesMissing;
  422. /***/ public String unableToCheckConnectivity;
  423. /***/ public String unableToStore;
  424. /***/ public String unableToWrite;
  425. /***/ public String unencodeableFile;
  426. /***/ public String unexpectedEndOfConfigFile;
  427. /***/ public String unexpectedHunkTrailer;
  428. /***/ public String unexpectedOddResult;
  429. /***/ public String unexpectedRefReport;
  430. /***/ public String unexpectedReportLine2;
  431. /***/ public String unexpectedReportLine;
  432. /***/ public String unknownDIRCVersion;
  433. /***/ public String unknownHost;
  434. /***/ public String unknownIndexVersionOrCorruptIndex;
  435. /***/ public String unknownObject;
  436. /***/ public String unknownObjectType;
  437. /***/ public String unknownRepositoryFormat2;
  438. /***/ public String unknownRepositoryFormat;
  439. /***/ public String unknownZlibError;
  440. /***/ public String unmergedPath;
  441. /***/ public String unpackException;
  442. /***/ public String unreadablePackIndex;
  443. /***/ public String unrecognizedRef;
  444. /***/ public String unsupportedCommand0;
  445. /***/ public String unsupportedEncryptionAlgorithm;
  446. /***/ public String unsupportedEncryptionVersion;
  447. /***/ public String unsupportedOperationNotAddAtEnd;
  448. /***/ public String unsupportedPackIndexVersion;
  449. /***/ public String unsupportedPackVersion;
  450. /***/ public String updatingRefFailed;
  451. /***/ public String userConfigFileInvalid;
  452. /***/ public String walkFailure;
  453. /***/ public String windowSizeMustBeLesserThanLimit;
  454. /***/ public String windowSizeMustBePowerOf2;
  455. /***/ public String writeTimedOut;
  456. /***/ public String writerAlreadyInitialized;
  457. /***/ public String writingNotPermitted;
  458. /***/ public String writingNotSupported;
  459. /***/ public String writingObjects;
  460. /***/ public String wrongDecompressedLength;
  461. }