Commit Graph

2816 Commits

Author SHA1 Message Date
David Ostrovsky d1da2780c2 Revert "Let ObjectWalk.markUninteresting also mark the root tree as"
The Iff2de881 tried to fix missing tree ..." but introduced severe
performance degradation (>10x in some cases) when acting as server
(git push) and as client (replication). IOW cure is worse than the
disease.

This reverts commit c4797fe986.

Change-Id: I4e6056eb352d51277867f857a0cab380eca153ac
Signed-off-by: David Ostrovsky <david@ostrovsky.org>
2015-04-26 17:52:24 +02:00
Matthias Sohn 10412ddfed Delete deprecated PackWriter.preparePack() methods
Change-Id: I62befa4a933c9ffd42d14519f555554cc513ddd9
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2015-04-25 00:51:02 +02:00
Matthias Sohn ffdacc2bbb Delete deprecated class IgnoreRule
Was replaced by FastIgnoreRule in 3.6

Change-Id: Ia9c3d1231a5d97f3f5bddc81113954c9f9d8ee1e
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2015-04-25 00:43:20 +02:00
Matthias Sohn 5362e1d41c Delete deprecated checkoutEntry() methods in DirCacheCheckout
Change-Id: I7fcf6534e6092ba87360ccd68a7dd7466c5c8911
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2015-04-25 00:22:59 +02:00
Shawn Pearce 6e5c71b358 Remove validate support when reusing cached pack
Cached packs are only used when writing over the network or to
a bundle file and reuse validation is always disabled in these
two contexts. The client/consumer of the stream will be SHA-1
checksumming every object.

Reuse validation is most critical during local GC to avoid silently
ignoring corruption by stopping as soon as a problem is found and
leaving everything alone for the end-user to debug and salvage.
Cached packs are not supported during local GC as the bitmap rebuild
logic does not support including a cached pack in the result.

Strip out the validation and force PackWriter to always disable the
cached pack feature if reuseValidation is enabled.

Change-Id: If0d7baf2ae1bf1f7e71bf773151302c9f7887039
2015-04-24 11:31:22 -07:00
Shawn Pearce a3476ced1f Rename copyThroughCache to shouldCopyThroughCache
Sensible suggestion from Terry Parker as a late comment on
commit f2efcdc6f769d59722b17e9274932d585035cfb6.

Change-Id: I225775bfb6d3d91ae066ff00f9d80a9c02a422c2
2015-04-24 11:07:22 -07:00
Shawn Pearce 1553a6ff55 Add readAheadBuffer hint to ReadableChannel
This hint allows an underlying implementation to read more bytes when
possible and buffer them locally for future read calls to consume.

Change-Id: Ia986a1bb8640eecb91cfbd515c61fa1ff1574a6f
2015-04-24 11:06:56 -07:00
Shawn Pearce c761c8bb5c Avoid storing large packs in block cache during reuse
When a large pack (> 30% of the block cache) is being reused by
copying it pollutes the block cache with noise by storing blocks
that are never referenced again.

Avoid this by streaming the file directly from its channel onto
the output stream.

Change-Id: I2e53de27f3dcfb93de68b1fad45f75ab23e79fe7
2015-04-23 20:22:13 -07:00
David Pletcher 12e38d7275 Expose public getDepth method
The clone or fetch depth is a valuable bit of information
for access logging. Create a public getter to faciliate access.
A precondition check prevents unintentional misuse when the
data isn't valid yet.

Change-Id: I4603d5fd3bd4a767e3e2419b0f2da3664cfbd7f8
Signed-off-by: David Pletcher <dpletcher@google.com>
2015-04-16 15:50:43 -07:00
Matthias Sohn 41c4f9cb2a Fix error message to include cause if ResetCommand fails
Bug: 464048
Change-Id: I6e7d9262b94cb168c84faef1dea22c1e082fe5ad
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2015-04-16 14:28:39 +02:00
Christian Halstrick 510aed1493 Revert "ResolveMerge only needs to visit differing TreeEntries"
This reverts commit bda5e76420. This reduces
performance at least for non-bare repositories.

Change-Id: Ib26cf8372f210798e104112edf14e91bfeaf23ec
2015-04-10 17:06:36 -04:00
Matthias Sohn 017032c465 Fix IllegalArgumentException in AmazonS3
JGit hit IllegalArgumentException: invalid content length
when pushing large packs to S3.

Bug: 463015
Change-Id: Iddf50d90c7e3ccb15b9ff71233338c6b204b3648
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2015-04-09 11:12:01 +02:00
Shawn Pearce 300a55dcba Merge "FS.readPipe() shouldn't log IOException as an error" 2015-04-08 21:08:51 -04:00
Shawn Pearce 9fb6d217b5 Merge "Remove obsolete API warning filters to silence warnings" 2015-04-08 21:08:31 -04:00
Shawn Pearce e0d95ab577 Merge "Use try-with-resources to fix warnings in AddCommand" 2015-04-08 21:08:01 -04:00
Shawn Pearce 481405f770 Merge changes Iad4d4127,I0211bcf0
* changes:
  Silence warning for non-translatable String in AddNoteCommand
  Use try-with-resources to fix warnings in AddNoteCommand
2015-04-08 21:07:06 -04:00
Shawn Pearce a0bc9560aa Merge changes I28a5c7e2,If90a6cca
* changes:
  Replace use of deprecated release() in BasePackPushConnection
  Replace use of deprecated release() in BasePackFetchConnection
2015-04-08 21:05:33 -04:00
Shawn Pearce 5ef9c1709e Merge changes I184945ee,Iacaad1a7
* changes:
  Remove unnecessary $NON-NLS comment in BaseReceivePack
  Use try-with-resources to close resources in BaseReceivePack
2015-04-08 21:04:08 -04:00
Shawn Pearce 9b9087d47d Merge changes Ic555e6e0,Id4cb9a23
* changes:
  Replace use of deprecated release() method in BlameResult
  Use try-with-resource to close BlameGenerator
2015-04-08 20:59:05 -04:00
Shawn Pearce f96e15b1e6 Merge "Use try-with-resource to close resources in BlobBasedConfig" 2015-04-08 20:58:32 -04:00
Shawn Pearce 32cc3c3096 Merge "Use try-with-resource to close resources in BundleFetchConnection" 2015-04-08 20:57:53 -04:00
Shawn Pearce 7810d9bc42 Merge "Use try-with-resource to close resources in BundleWriter" 2015-04-08 20:56:24 -04:00
Matthias Sohn d726f0c1e0 Use try-with-resource to close resources in CommitCommand
Change-Id: Ibbbc74acfd050f28e68f318970660b5959caf7e3
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2015-04-08 22:53:20 +02:00
Matthias Sohn bb2ca576ff Externalize error message used in CheckoutCommand
Change-Id: Ifbc469b07e63218107157ffbf23ae55c52a55ef4
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2015-04-08 22:52:06 +02:00
Matthias Sohn 7343c7a10f Use try-with-resource to close resources in CheckoutCommand
Change-Id: Ia4d4f9bff03a03d116b80022d7691df67bf8b51b
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2015-04-08 22:52:05 +02:00
Shawn Pearce f4ded63880 Merge "Fix resource leak in ChangeIdUtil" 2015-04-08 16:08:43 -04:00
Shawn Pearce 2b2cd4ba53 Merge changes I11631afb,Iaa51a46a
* changes:
  Externalize error messages used in DfsGarbageCollector
  Use try-with-resource to close resources in DfsGarbageCollector
2015-04-08 15:53:48 -04:00
Shawn Pearce 297600f7c2 Merge changes I8c06635c,I62d6de7d
* changes:
  Silence non-externalized string warning in CherryPickCommand
  Use try-with-resource to close resources in CherryPickCommand
2015-04-08 15:30:50 -04:00
Shawn Pearce ba8b275ac5 Merge "Silence non-externalized string warnings in CherryPickResult" 2015-04-08 15:30:17 -04:00
Shawn Pearce b2bba1419f Merge "Use try-with-resource to close resources in CloneCommand" 2015-04-08 15:29:53 -04:00
Shawn Pearce 881dfc0147 Merge "Replace call to deprecated RevWalk.release() in DescribeCommand" 2015-04-08 15:26:21 -04:00
Shawn Pearce 15a95e3911 Merge "Use try-with-resource to close resources in DiffCommand" 2015-04-08 15:26:07 -04:00
Shawn Pearce e0477d3fe0 Merge "Fix resource leak in DiffFormatter" 2015-04-08 15:25:30 -04:00
Shawn Pearce f3a44db491 Merge "Use try-with-resource to close resources in DirCache" 2015-04-08 15:22:58 -04:00
Matthias Sohn 842ae868cf Externalize error messages used in DfsGarbageCollector
Change-Id: I11631afb33a2bb29d994551a0be8775bbe277300
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2015-04-08 12:22:31 -07:00
Matthias Sohn 13cfc83b2b Use try-with-resource to close resources in DfsGarbageCollector
Change-Id: Iaa51a46a9dde13d6f5c0f9ff54a68cea0ef1fde3
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2015-04-08 12:22:31 -07:00
Shawn Pearce 429e96eab6 Merge "Reduce visibility of DirCacheCheckout.checkValidPath()" 2015-04-08 15:21:17 -04:00
Shawn Pearce ad1aa922de Merge "Use try-with-resource to close resources in FetchProcess" 2015-04-08 15:20:37 -04:00
Shawn Pearce a80adfbf9c Merge "Use try-with-resource to close resources in GC" 2015-04-08 15:20:15 -04:00
Shawn Pearce 66a95621a3 Merge "Replace deprecated release() methods by close() in Merger" 2015-04-08 15:19:19 -04:00
Shawn Pearce 6e1dc98672 Merge "Ensure that NameRevCommand.call() closes RevWalk" 2015-04-08 15:18:13 -04:00
Shawn Pearce 754b855f73 Merge "Replace deprecated release() methods by close() in NoteMapMerger" 2015-04-08 15:17:29 -04:00
Shawn Pearce 67568ee630 Merge "Use try-with-resource to close resources in ObjectDatabase" 2015-04-08 15:17:13 -04:00
Shawn Pearce aa94e3f3ae Merge changes Ia3908555,I3bc26847
* changes:
  Silence false null pointer access warnings in PackFile
  Externalize error messages used in ObjectDirectoryInserter
2015-04-08 15:16:53 -04:00
Shawn Pearce 96a5ec43fa Merge "Silence non-externalized string warning in PackIndexV2" 2015-04-08 15:15:47 -04:00
Matthias Sohn 8d41c783c0 Silence non-externalized string warning in PackParser
Change-Id: I1a4181fc292c42157c69479f71c7674b2e00d2ce
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2015-04-04 00:54:24 +02:00
Matthias Sohn e5a6290ac9 Replace call to deprecated release() by close() in PackParser
Change-Id: Ic2db051130059cce89486f55ecca32a7ce6715fd
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2015-04-04 00:53:47 +02:00
Matthias Sohn 6feb7bc9dd Silence non-externalized string warning in PackIndexV2
Change-Id: I8c94811972c593c898f6375178f250a2123d01c6
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2015-04-04 00:51:05 +02:00
Matthias Sohn 4dd4d7e12a Silence false null pointer access warnings in PackFile
Change-Id: Ia39085557b38840dfaa9b4995e6f6c40e19042cb
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2015-04-04 00:49:05 +02:00
Matthias Sohn fc2d723dd9 Externalize error messages used in ObjectDirectoryInserter
Change-Id: I3bc26847071fbc31267a4a4cf5a10b428bcf229d
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2015-04-04 00:45:33 +02:00
Matthias Sohn 1728d1d760 Use try-with-resource to close resources in ObjectDatabase
Change-Id: Ib410bf0d3c300c25b615bb6a51488b3d88aeb3bd
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2015-04-04 00:38:39 +02:00
Matthias Sohn f777ed1d24 Replace deprecated release() methods by close() in NoteMapMerger
Change-Id: Iaa76f0e853bb82cd7f231fd2f462a319f4196d8c
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2015-04-04 00:36:28 +02:00
Matthias Sohn f434f29fd9 Ensure that NameRevCommand.call() closes RevWalk
Change-Id: Icc35a81081759d664fe9e2b05e962ff3cd9aad92
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2015-04-04 00:32:59 +02:00
Matthias Sohn 8e332f1057 Replace deprecated release() methods by close() in Merger
Change-Id: I80ce98511a6e9048f1eea93288d6960dcbf3326f
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2015-04-04 00:19:39 +02:00
Matthias Sohn ed42bad1c6 Use try-with-resource to close resources in GC
Change-Id: I62a755a4ce839a252a5e80abf3f0d21243862376
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2015-04-04 00:17:03 +02:00
Matthias Sohn 2693d6075d Use try-with-resource to close resources in FetchProcess
Change-Id: If489d530ca39ae279c8da848f870b561c38eac3c
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2015-04-04 00:05:14 +02:00
Matthias Sohn 787ca168a9 Reduce visibility of DirCacheCheckout.checkValidPath()
This was deprecated and should only be used by DirCacheCheckout and
friends. Other classes should use SystemReader.checkPath() instead.

Change-Id: I37cf753b1f081602dee9f0f47979eff39d735f92
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2015-04-03 02:03:00 +02:00
Matthias Sohn b84623ac64 Use try-with-resource to close resources in DirCache
Change-Id: I7dd3fd38784689816a1a8e9d8ccb499ae2138a8a
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2015-04-03 01:25:45 +02:00
Matthias Sohn ff0a7b719e Fix resource leak in DiffFormatter
- close RevWalk allocated in scan()
- replace use of deprecated ObjectReader.release() method

Change-Id: I41b2b10a1a44270a6ceaa1741e996c0921439852
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2015-04-03 01:23:31 +02:00
Matthias Sohn b8658e486c Use try-with-resource to close resources in DiffCommand
Change-Id: I13d7c8bd0eb049aa69effd8b74384746226414cb
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2015-04-03 01:15:37 +02:00
Matthias Sohn 5f8308bdb9 Replace call to deprecated RevWalk.release() in DescribeCommand
Change-Id: Ie4bfdeb37d345d6ff1525a737f3b7653b2f8e23e
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2015-04-03 00:58:50 +02:00
Matthias Sohn 4bae608e84 Use try-with-resource to close resources in CloneCommand
Change-Id: I9536bc208a5f3ec34f0a82fb565b4253be38e074
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2015-04-03 00:38:42 +02:00
Matthias Sohn b53e2a99b3 Silence non-externalized string warnings in CherryPickResult
Change-Id: I515abbcb4319b744c5074de5a0c56caed13c2fb5
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2015-04-03 00:36:36 +02:00
Matthias Sohn 588965c6da Silence non-externalized string warning in CherryPickCommand
Change-Id: I8c06635ce655470b5b650fa5c0c546e64445420c
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2015-04-03 00:33:01 +02:00
Matthias Sohn 58c2c52219 Use try-with-resource to close resources in CherryPickCommand
Change-Id: I62d6de7d67c7de2460f4cbe918ad2bb8109650b9
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2015-04-03 00:32:08 +02:00
Matthias Sohn 3f79182081 Fix resource leak in ChangeIdUtil
Change-Id: I5cb3e9c7e167248697932933eef925c446514683
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2015-04-02 01:30:14 +02:00
Matthias Sohn d4380a9c81 Use try-with-resource to close resources in BundleWriter
Change-Id: I5341973737f6d21c04982bcbefc2ed672ac9bcff
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2015-04-02 01:25:46 +02:00
Matthias Sohn 9e37f6d144 Use try-with-resource to close resources in BundleFetchConnection
Change-Id: Id79c01133b835e278d5b494b5bc5972d7aeed9a9
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2015-04-02 01:24:05 +02:00
Matthias Sohn d6692d54a9 Use try-with-resource to close resources in BlobBasedConfig
Change-Id: Idb890788a88049d07326cd48e7c5534148f18e32
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2015-04-02 01:21:55 +02:00
Matthias Sohn 48622e0ec2 Replace use of deprecated release() method in BlameResult
Change-Id: Ic555e6e0443337aed694bc6445a60abe08e07ad2
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2015-04-02 01:18:42 +02:00
Matthias Sohn e03b6c5cf8 Use try-with-resource to close BlameGenerator
Change-Id: Id4cb9a236dddfc674b55e9e7037329a885455288
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2015-04-02 01:15:59 +02:00
Matthias Sohn 21eee62f7d Remove unnecessary $NON-NLS comment in BaseReceivePack
Change-Id: I184945ee29fb9a6b1f30aec88958375e7b5239b3
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2015-04-02 01:12:22 +02:00
Matthias Sohn c1edc1a07e Use try-with-resources to close resources in BaseReceivePack
Change-Id: Iacaad1a7e0719541e5616d231422ea6fd4c95161
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2015-04-02 01:11:22 +02:00
Matthias Sohn 6691c20bc2 Replace use of deprecated release() in BasePackPushConnection
Change-Id: I28a5c7e222daf35e3d1a1a6fda8ed6ef9b960f78
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2015-04-02 01:06:08 +02:00
Matthias Sohn b61be2cf3e Replace use of deprecated release() in BasePackFetchConnection
Change-Id: If90a6cca9a2ae80474f5ad023cb2a0a8905010be
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2015-04-02 01:02:21 +02:00
Matthias Sohn 81c84c088f Use try-with-resources to close walks in ArchiveCommand
Change-Id: I77120d77a12f1bab5c918a23b0e3eac90e320b2b
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2015-04-02 00:58:13 +02:00
Matthias Sohn 114dee6770 Silence warning for non-translatable String in AddNoteCommand
Change-Id: Iad4d41271eff4e8744efece5bc777c1cb06dead7
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2015-04-02 00:51:02 +02:00
Matthias Sohn 3206f37cc3 Use try-with-resources to fix warnings in AddNoteCommand
Replaces use of deprecated release() methods.

Change-Id: I0211bcf0a76a2fccc2c85fa74778e20c256984ba
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2015-04-02 00:46:59 +02:00
Matthias Sohn e5b81e49e8 Use try-with-resources to fix warnings in AddCommand
- replaces use of deprecated ObjectInserter.release()
- auto-close TreeWalk

Change-Id: I540ee711b8c3430a71fdff07add506b7d9c039dc
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2015-04-02 00:41:19 +02:00
Matthias Sohn 5d22a7b108 Remove obsolete API warning filters to silence warnings
Change-Id: I958d540a6afb1462a3fbb3d76c8f51f386ac068e
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2015-04-02 00:29:34 +02:00
Shawn Pearce d94ce9c754 Buffer overflow output stream
Most callers/users of TemporaryBuffer are sizing the in-memory
portion large enough that most outputs fit into RAM. With this
assumption they don't pay close attention to the size of IOs
being written, as it "should" just be a copy from one byte array
to another.

Overflow sets up a local file handle, which is costly to write to
for small IO units. Wrap the local file in a BufferedOutputStream
to combine small writes together. Larger writes can still bypass the
buffer as BOS automatically avoids copying for larger writes.

Change-Id: I09f4136dd65c48830cfda86d9101bc647581018a
2015-04-01 13:02:09 -07:00
Shawn Pearce e4433e5e37 Fix overflow stream leak during merge conflicts
When reading back from an overflowed TemporaryBuffer the InputStream
must be closed to close the FileInputStream that is reading from
the backing file.

Change-Id: Id83d8f16f5b2c2618a9f841ec3508508455a6ae1
2015-04-01 13:02:09 -07:00
Shawn Pearce 6884ea24cd Use local GIT_DIR for overflow during merge conflicts
By writing the temporary overflow merge result to $GIT_DIR JGit
can ensure the same filesystem permissions apply to protect the
file contents.

If no directory is available from the repository (e.g. DfsRepository)
null will be passed and the system temporary directory will be used
instead.

Change-Id: I95532aa092676d18f1dc1e3fdbe6dcb1f91b782e
2015-04-01 13:02:08 -07:00
Shawn Pearce 835955fc5b Use try-with-resources and BufferedOutputStream for local merge conflicts
Change-Id: If5539aab1de19bb22400c862bbe2cdf7c3e85535
2015-04-01 13:02:08 -07:00
Shawn Pearce 1b63323212 Optimize EolAwareOutputStream for bulk output
Formatting merge conflicts one byte at a time is going to be very
slow when the final OutputStream is a FileOutputStream and the JVM
is making system calls for each byte output.

When outputting a range of bytes from a byte[] the bol (beginning
of line) value only depends on the value of the last byte written.
Other bytes in the array can be passed directly to the lower stream
for more efficient output.

Change-Id: I3415f9a390ee215210a17bb5bf39164d197e1348
2015-04-01 13:02:07 -07:00
Matthias Sohn bda5e76420 ResolveMerge only needs to visit differing TreeEntries
This should considerably speed up the treewalk on larger repositories.

Found by discussing new EGit API to support model merge in change
eda23bb556d342f421f03b93c7faa160998598aa

Change-Id: I822721c76c64e614f87a080ced2457941f53adcd
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
cc: Laurent Delaigue <laurent.delaigue@obeo.fr>
2015-03-31 17:33:31 +02:00
Matthias Sohn 6e653aef1d FS.readPipe() shouldn't log IOException as an error
This unintentionally was changed from severity debug to error which is
causing unexpected log entries.

Bug: 463349
Change-Id: I4b6d42a1420652ab6824e237bd231ba86896acbf
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2015-03-28 10:10:47 +01:00
André de Oliveira 3cd7d0d85a Do not add a newline at the end if neither merged side had one
Bug: 390833
Change-Id: I29f7b79b241929877c93ac485c677487a91bb77b
Signed-off-by: André de Oliveira <andre.oliveira@liferay.com>
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2015-03-27 20:42:49 -04:00
Laurent Delaigue a5c40a3862 Make RepositoryState.REBASING_MERGE reachable again.
If a non interactive rebase is launched, stopping after a conflict
should set the repository state to RepositoryState.REBASING_MERGE
instead of RepositoryState.REBASING_INTERACTIVE.

Bug: 452623
Change-Id: Ie885aab6d71dabd158a718af0d14fff643c9b850
Also-by: Arthur Daussy <arthur.daussy@obeo.fr>
Signed-off-by: Laurent Delaigue <laurent.delaigue@obeo.fr>
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2015-03-27 15:58:05 +01:00
Christian Halstrick 2bd3556e7e Fix RecursiveMerger in case of multiple, independent base commits
When RecursiveMerger found that there are multiple base-commits for the
commits to be merged it tries to temporarily merge the base commits. But
if these base commits have no common predecessor there was a bug in JGit
leading to a NPE. This commit fixes this by enforcing that an empty tree
is used as base when merging two unrelated base commits.

This logic was already there when merging two commits which have no
common predecessor (ThreeWayMerger.mergeBase()). But the code which was
computing a new temporary base commit in case of criss-cross merges
didn't take care to pick an empty tree when no common predecessor can be
found.

Bug: 462671
Change-Id: Ibd96302f5f81383f36d3b1e3edcbf5822147b1a4
2015-03-25 10:49:58 +01:00
Matthias Sohn 197e3393a5 Merge bundle org.eclipse.jgit.java7 into org.eclipse.jgit
As we moved minimum Java version to 7 we don't need a separate bundle
and feature for JGit features depending on Java 7 anymore.

Change-Id: Ib5da61b0886ddbdea65298f1e8c6d65c9879ced1
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2015-03-23 14:23:07 +01:00
Matthias Sohn 8ec01500e2 Add missing @since tag to DiffInterruptedException
Change-Id: Ibadbc1b476bfe0d1fe11979ec237a3554966eb59
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2015-03-19 14:53:43 +01:00
Jonathan Nieder 5967b65838 Revert "CommitBuilder should check for duplicate parents"
This reverts commit 6bc48cdc62.

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>
2015-03-18 16:26:05 -07:00
Dave Borowitz 65c379e02d Merge changes I51167503,I794eca3a
* changes:
  TemporaryBuffer: Clear block pointer list instead of reallocating
  TemporaryBuffer: Allow presizing block pointer list
2015-03-18 17:19:52 -04:00
Dave Borowitz e3e9e1f003 TemporaryBuffer: Clear block pointer list instead of reallocating
The block pointer list may have been relatively large, so no need to
make more garbage. Instead, just clear the list and null out all the
elements.

Another possible motivation: a caller may have provided an inaccurate
estimated size, so the list might have been resized several times. If
the list is reused later for a similarly underestimated workload, this
fix will prevent additional resizing on subsequent usages.

Change-Id: I511675035dcff1117381a46c294cc11aded10893
2015-03-18 13:38:58 -07:00
Dave Borowitz edf4368b0c TemporaryBuffer: Allow presizing block pointer list
Callers may wish to use TemporaryBuffer as an essentially unbounded
buffer by passing Integer.MAX_VALUE as the size. (This makes it
behave like ByteArrayOutputStream, only without requiring contiguous
memory.) Unfortunately, it was always allocating an array in the
backing block pointer list to hold enough blocks to MAX_VALUE--all
262,016 of them. It wasn't allocating the blocks themselves, but this
array was still extremely wasteful, using about 2MiB of memory on a
64-bit system.

Tweak the interface to specify an estimated size, and only allocate
the block pointer list enough entries to hold that size. It's an
ArrayList, so if that estimate was wrong, it'll grow. We assume the
cost of finding enough contiguous memory to grow that array is
acceptable.

While we're in there, fix an off-by-one error: due to integer division
we were undercounting the number of blocks needed to store n bytes of
data as (n / SZ).

Change-Id: I794eca3ac4472bcc605b3641e177922aca92b9c0
2015-03-18 13:38:57 -07:00
Christian Halstrick ebed526329 Merge "Make MyersDiff interruptible" 2015-03-18 14:40:29 -04:00
Dave Borowitz 89b91ad406 InMemoryRepository: Use a real Builder class
Change-Id: I161b98a58503415955a21f2720395611f439ce98
2015-03-18 10:22:12 -04:00
Dave Borowitz fd402f71a3 Git: Don't close underlying repo if it came from from a caller
Since 27ae8bc65 Git has implemented AutoCloseable, which means Eclipse
may warn if close() is never called on a Git instance. For example,
the following would result in a resource warning:

  Repository repo = openRepository(foo);
  Git git = new Git(repo);
  try {
    git.someCommand().call();
  } finally {
    repo.close();
  }

(The same warning would occur if repo were created in a try-with-
resources block.)

The "obvious" fix is to open git in a try-with-resources block:

  try (Repository repo = openRepository(foo);
      Git git = new Git(repo)) {
    git.someCommand().call();
  }

Unfortunately, this construction was subtly broken: it would call both
git.close() and repo.close(), but git.close() would call repo.close()
again. Depending on the repository implementation, this might or might
not be ok. If it's not ok, it might not immediately cause an error, if
the reference count of repo was >2 at the time of closing.

Of course, explicitly calling git.close() followed by repo.close() in
two finally blocks has had the same double-closing problem since
forever. But the problem became worse when Git started implementing
AutoCloseable, because now Eclipse is _actively encouraging_
developers to change working code into broken code.

To work around this, keep track in Git's constructor of whether the
repository was passed in or opened at construction time, and only
close the repository if it was opened by Git.

Note that in the original example, there was not _actually_ a resource
leak, since repo was closed exactly once; git did not _need_ to be
closed in this case. But at least fixing this false-positive warning
no longer introduces a real bug.

Change-Id: Ie927a26ce3ae2bf8c3ef5cb963a60847067db95a
2015-03-17 17:05:55 -07:00
Hugo Arès 954306be81 Make MyersDiff interruptible
For some specific file, MyersDiff goes into an infinite loop[1]. Since
this problem is hard to reproduce and possibly harder to fix, this
change makes the MyersDiff interruptible so the diff can be aborted at
least when such infinite loop happens.

[1]https://bugs.eclipse.org/bugs/show_bug.cgi?id=444623

Change-Id: I6e006ccb122d1e68c9846a24d5399d94776c2858
Signed-off-by: Hugo Arès <hugo.ares@ericsson.com>
2015-03-17 16:28:46 -04:00