]> source.dussan.org Git - jgit.git/log
jgit.git
8 years agoUse AnyLongObjectId instead of LongObjectId in LFS API 77/83977/1
Matthias Sohn [Wed, 26 Oct 2016 20:27:44 +0000 (22:27 +0200)]
Use AnyLongObjectId instead of LongObjectId in LFS API

Change-Id: I083ad1ea3e8d3685df7c306854c2498c92b05ffb
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoSpeedup CleanFilter by transferring data in chunks of 8k 79/83779/3
Matthias Sohn [Mon, 24 Oct 2016 11:26:58 +0000 (13:26 +0200)]
Speedup CleanFilter by transferring data in chunks of 8k

Transferring data byte per byte is slow, running add with CleanFilter on
a 2.9MB file takes 20 seconds. Using a buffer of 8k shrinks this time to
70ms.

Change-Id: I3bc2d8c11fe6cfaffcc99dc2a00643e01ac4e9cc
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoAdd missing @since tag for new protected field in ObjectReader 89/83789/1
Matthias Sohn [Mon, 24 Oct 2016 14:05:24 +0000 (16:05 +0200)]
Add missing @since tag for new protected field in ObjectReader

Change-Id: I93d67d7fd2fde55be39480944d9d7072dbb6c600
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoMake streamFileThreshold configurable 01/70601/4
Kevin Corcoran [Wed, 13 Apr 2016 22:55:08 +0000 (15:55 -0700)]
Make streamFileThreshold configurable

Previously, the streamFileThreshold, the threshold at which a file
would be streamed rather than loaded entirely into memory, was only
configurable on a global basis.

This commit makes this threshold configurable on a per-loader basis.

Bug: 490404
Change-Id: I492c18c3155dbf56eedda9044a61d76120fd75f9
Signed-off-by: Kevin Corcoran <kevin.corcoran@puppetlabs.com>
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
8 years agoMerge "Preserve backslashes within double quotes in CLIGitCommand::split()"
David Pursehouse [Sun, 23 Oct 2016 23:18:37 +0000 (19:18 -0400)]
Merge "Preserve backslashes within double quotes in CLIGitCommand::split()"

8 years agoPreserve backslashes within double quotes in CLIGitCommand::split() 52/73352/2
Rüdiger Herrmann [Sat, 21 May 2016 13:19:24 +0000 (15:19 +0200)]
Preserve backslashes within double quotes in CLIGitCommand::split()

Change-Id: Ia6a56512baa6a0f27e2eef1b19ebb60291ba377f
Signed-off-by: Rüdiger Herrmann <ruediger.herrmann@gmx.de>
8 years agoMove constants used for config-files to ConfigConstants 86/83686/3
Christian Halstrick [Thu, 20 Oct 2016 14:13:24 +0000 (16:13 +0200)]
Move constants used for config-files to ConfigConstants

Change-Id: I7d8db4bfa1a851afd599bb8eaa8f8273204d2e1d

8 years agoImplement auto gc 14/70714/7
Matthias Sohn [Wed, 13 Apr 2016 12:54:09 +0000 (14:54 +0200)]
Implement auto gc

With the auto option, gc checks whether any housekeeping is required; if
not, it exits without performing any work. Some JGit commands run gc
--auto after performing operations that could create many loose objects.
Housekeeping is required if there are too many loose objects or too many
packs in the repository.

If the number of loose objects exceeds the value of the gc.auto option
jgit's GC consolidates all existing packs into a single pack (equivalent
to -A option), whereas git-core would combine all loose objects into a
single pack using repack -d -l. Setting the value of gc.auto to 0
disables automatic packing of loose objects.

If the number of packs exceeds the value of gc.autoPackLimit, then
existing packs (except those marked with a .keep file) are consolidated
into a single pack by using the -A option of repack. Setting
gc.autoPackLimit to 0 disables automatic consolidation of packs.

Like git the following jgit commands run auto gc:
- fetch
- merge
- rebase
- receive-pack

The auto gc for receive-pack can be suppressed by setting the config
option receive.autogc = false

Change-Id: I68a2a051b39ec2c53cb7c4b8f6c596ba65eeba5d
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoCheckoutCommand: Add method to add multiple paths 36/83736/1
David Pursehouse [Sat, 22 Oct 2016 01:11:54 +0000 (10:11 +0900)]
CheckoutCommand: Add method to add multiple paths

The new method addPaths(List<String>) allows callers to add multiple
paths without having to iterate over several calls to addPath(String).

Change-Id: I2c3746a97ead7118fb0ed5543a2c843224719031
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
8 years agoCheckout: Add the ability to checkout all paths. 81/79981/2
Ned Twigg [Fri, 18 Mar 2016 09:46:38 +0000 (02:46 -0700)]
Checkout: Add the ability to checkout all paths.

Change-Id: Ie1e59c566b63d0dfac231e44e7ebd7f3f08f3e9f
Signed-off-by: Ned Twigg <ned.twigg@diffplug.com>
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
8 years agoFix possible SIOOBE in RefDirectory.parsePackedRefs 17/79417/4
Marc Strapetz [Mon, 22 Aug 2016 07:53:18 +0000 (09:53 +0200)]
Fix possible SIOOBE in RefDirectory.parsePackedRefs

This SIOOBE happens reproducibly when trying to access
a repository containing Cygwin symlinks

Change-Id: I25f103fcc723bac7bfaaeee333a86f11627a92c7
Signed-off-by: Marc Strapetz <marc.strapetz@syntevo.com>
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
8 years agoTransportBundleFile: Resolve remote repository locally 02/77802/4
Thomas Meyer [Fri, 22 Jul 2016 05:51:50 +0000 (07:51 +0200)]
TransportBundleFile: Resolve remote repository locally

Remove the assumption that the local repository is a file based one.

Change-Id: I8f10fe7a54e9fc07f2a23d7901e52b65aa570d45
Signed-off-by: Thomas Meyer <thomas.mey@web.de>
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoTreeFormatter: disallow empty filenames in trees 46/81946/6
David Turner [Mon, 26 Sep 2016 20:41:19 +0000 (16:41 -0400)]
TreeFormatter: disallow empty filenames in trees

Git barfs on these (and they don't make any sense), so we certainly
shouldn't write them.

Change-Id: I3faf8554a05f0fd147be2e63fbe55987d3f88099
Signed-off-by: David Turner <dturner@twosigma.com>
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
8 years agoAdd "concurrencyLevel" option to DfsBlockCache 57/82857/3
Philipp Marx [Mon, 10 Oct 2016 15:27:28 +0000 (17:27 +0200)]
Add "concurrencyLevel" option to DfsBlockCache

Allow for higher concurrency on DfsBlockCache by adding a configuration
for number of estimated concurrent requests.

Change-Id: Ia65e58ecb2c459b6d9c9697a2f715d933270f7e6
Signed-off-by: Philipp Marx <smigfu@googlemail.com>
8 years agoDiffCommandTest: Don't call toString on String instances 90/83490/2
David Pursehouse [Wed, 19 Oct 2016 05:03:27 +0000 (14:03 +0900)]
DiffCommandTest: Don't call toString on String instances

Change-Id: Ib308b3498593d595b3d8741a9b2d241bbc7441c3
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
8 years agoFileNameMatcherTest: Use Character.valueOf rather than new Character 89/83489/2
David Pursehouse [Wed, 19 Oct 2016 05:00:18 +0000 (14:00 +0900)]
FileNameMatcherTest: Use Character.valueOf rather than new Character

Change-Id: I9d6e20a258d34ae1d2700fbe8e6c6e3b0ba94424
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
8 years agoArchiveTest: Don't use string concatenation in loop 86/83486/2
David Pursehouse [Wed, 19 Oct 2016 03:54:46 +0000 (12:54 +0900)]
ArchiveTest: Don't use string concatenation in loop

According to FindBugs:

  In each iteration, the String is converted to a StringBuffer/
  StringBuilder, appended to, and converted back to a String. This
  can lead to a cost quadratic in the number of iterations, as the
  growing string is recopied in each iteration.

Replace string concatenation with StringBuffer.

Change-Id: I60e09f274bed6722f4e0e4d096b0f2b1b31ec1b4
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
8 years agoCLIRepositoryTestCase: Remove unused 'trash' member 85/83485/1
David Pursehouse [Wed, 19 Oct 2016 03:51:14 +0000 (12:51 +0900)]
CLIRepositoryTestCase: Remove unused 'trash' member

Change-Id: I813f3de5f059e6e5cd34af20fce1e117bfe55b55
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
8 years agoMerge branch 'stable-4.5' 84/83484/1
David Pursehouse [Wed, 19 Oct 2016 02:45:05 +0000 (11:45 +0900)]
Merge branch 'stable-4.5'

* stable-4.5:
  Config: do not add spaces before units

Change-Id: I54185f54e6d78d7aac873ee5f990f09582318857
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
8 years agoConfig: do not add spaces before units 83/83483/1
David Turner [Fri, 14 Oct 2016 20:44:51 +0000 (16:44 -0400)]
Config: do not add spaces before units

Adding a space before the unit ('g', 'm', 'k) causes git to fail with
the error:

  fatal: bad numeric config value

Change-Id: I57f11d3a1cdcca4549858e773af1a2a80fc0369f
Signed-off-by: David Turner <dturner@twosigma.com>
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
8 years agoUse valueOf rather than constructor for Integer and Boolean 11/83411/2
David Pursehouse [Tue, 18 Oct 2016 05:05:45 +0000 (14:05 +0900)]
Use valueOf rather than constructor for Integer and Boolean

Change-Id: I1c65b2e40ba6ec5860903b11b4631e014f3dc5ce
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
8 years agoFS: Fix lazy initialization of non-volatile static field 10/83410/2
David Pursehouse [Tue, 18 Oct 2016 04:51:27 +0000 (13:51 +0900)]
FS: Fix lazy initialization of non-volatile static field

The 'factory' field is lazy initialized in the detect() method.

According to FindBugs:

   Because the compiler or processor may reorder instructions, threads
   are not guaranteed to see a completely initialized object, if the
   method can be called by multiple threads.

Fix this by declaring the member as 'volatile'.

Change-Id: Ib32663bb28c9564584256e01f625b4e7875e6223
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
8 years agoPackOutputStream: Add comment for intentional use of non-short-circuit logic 09/83409/2
David Pursehouse [Tue, 18 Oct 2016 04:43:41 +0000 (13:43 +0900)]
PackOutputStream: Add comment for intentional use of non-short-circuit logic

To avoid that people try to "fix" it.

Change-Id: Ib4b35e357e4c068a17243ebd2d57b058c54d5834
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
8 years agoGit{Add|Clone}Task: Catch specific exceptions rather than Exception 08/83408/3
David Pursehouse [Tue, 18 Oct 2016 04:17:26 +0000 (13:17 +0900)]
Git{Add|Clone}Task: Catch specific exceptions rather than Exception

Change-Id: If3db5a1375485e97f9811546e310e441475db1a6
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
8 years agoMain: Add missing $NON-NLS tag 07/83407/2
David Pursehouse [Tue, 18 Oct 2016 04:13:37 +0000 (13:13 +0900)]
Main: Add missing $NON-NLS tag

Change-Id: I030910b88a8f60ca174e38f0a213959f9b0a776f
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
8 years agoStatus: remove unused lineFormat member 38/83338/2
David Pursehouse [Mon, 17 Oct 2016 07:20:05 +0000 (16:20 +0900)]
Status: remove unused lineFormat member

Change-Id: I3c4d83583edb1a6e1fbee1ea496dcf93302831b3
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
8 years agoLfsStore: Don't invoke toString on String variable 37/83337/2
David Pursehouse [Mon, 17 Oct 2016 07:18:22 +0000 (16:18 +0900)]
LfsStore: Don't invoke toString on String variable

Change-Id: I15d234e5d907d0bbb22a95cf781e915798bead30
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
8 years agoUpgrade buck to 7b7817c48f30687781040b2b82ac9218d5c4eaa4 68/81668/5
David Pursehouse [Thu, 22 Sep 2016 09:26:28 +0000 (11:26 +0200)]
Upgrade buck to 7b7817c48f30687781040b2b82ac9218d5c4eaa4

Upgrade to match the version used on Gerrit's master branch.

Requires a couple of modifications to make the tests work:

- Remove source_under_test parameters from java_test calls.

- Add vm_args with explicit setting of tmpdir location for http
  tests. This is needed due to upstream changes in temporary
  directory handling [1].

[1] https://github.com/facebook/buck/issues/946

Change-Id: I5d5dd5edc335d44b118e8587f69ba89b83fc7fbb
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
8 years agoMerge "Fix JGit CLI to follow native git's interpretation of http_proxy..."
Christian Halstrick [Mon, 17 Oct 2016 06:41:17 +0000 (02:41 -0400)]
Merge "Fix JGit CLI to follow native git's interpretation of http_proxy..."

8 years agoFix JGit CLI to follow native git's interpretation of http_proxy... 16/83216/2
Christian Halstrick [Fri, 14 Oct 2016 12:20:40 +0000 (14:20 +0200)]
Fix JGit CLI to follow native git's interpretation of http_proxy...

Native git (as many other tools) interprets the environment variables
http_proxy, HTTP_PROXY, ... in a specific way. "http_proxy" has to be
lowercase while "https_proxy" can be lowercase or uppercase (means:
"HTTPS_PROXY"). Lowercase has precedence. This can be looked up in
"ENVIRONMENT" section of [1]. Teach JGit CLI to behave similar.

Additionally teach JGit not to interpret the environment variables if
the java process was explicitly started with the system properties
telling JVM which proxy to use. A call like "http_proxy=proxy1 java
-Dhttp.proxyHost=proxy2 ..." should use proxy2 as proxy.

[1] https://curl.haxx.se/docs/manpage.html

Change-Id: I2ad78f209792bf8f1285cf2f8ada8ae0c28f8e5a

8 years agoMerge branch 'stable-4.5' 67/83167/1
Matthias Sohn [Thu, 13 Oct 2016 22:04:05 +0000 (00:04 +0200)]
Merge branch 'stable-4.5'

* stable-4.5:
  Unconditionally close repositories in RepositoryCache.clear()
  Fix eviction of repositories with negative usage count

Adapt to parameter removed from
RepositoryCache.unregisterAndCloseRepository().

Change-Id: I7087667056ced401a3b3a027977f2715cd77a1c5
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoUnconditionally close repositories in RepositoryCache.clear() 34/82934/5
Matthias Sohn [Tue, 11 Oct 2016 13:28:41 +0000 (15:28 +0200)]
Unconditionally close repositories in RepositoryCache.clear()

Earlier we tried to close the repository before removing it from the
cache, so close only reduced refcount but didn't close it.

Now that we no longer leak usage count on purpose and the usage count is
now ignored anyway, there is no longer a need to run the removal twice.

Change-Id: I8b62cec6d8a3e88c096d1f37a1f7f5a5066c90a0
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoHttpClientConnection: Register connection socket factory for http 03/83103/1
Matthias Sohn [Thu, 13 Oct 2016 10:27:22 +0000 (12:27 +0200)]
HttpClientConnection: Register connection socket factory for http

It is necessary to register a socket connection factory to prevent the
"http protocol is not supported" error when connecting over a proxy.

Change-Id: Iedf554acef841f52c1f2e3401ef0a0583ac5253b
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoAdd dependency to org.apache.commons.logging used by Apache HttpClient 02/83102/1
Matthias Sohn [Thu, 13 Oct 2016 10:29:25 +0000 (12:29 +0200)]
Add dependency to org.apache.commons.logging used by Apache HttpClient

Without this dependency running JGit CLI in Eclipse will hit
ClassNotFoundExceptions when HttpClient is trying to log something.

Change-Id: I2d50d9a18fac4c302de2c3a16c07f90ce3e5072e
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoContent type constants used in lfs should be final 52/82952/2
Matthias Sohn [Tue, 11 Oct 2016 14:18:27 +0000 (16:18 +0200)]
Content type constants used in lfs should be final

Change-Id: Ia56a9f58e336c25255a81d9402e198e5ce5da442
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoAmazonS3: ensure that errorStream is closed 23/82923/2
Matthias Sohn [Tue, 11 Oct 2016 12:17:46 +0000 (14:17 +0200)]
AmazonS3: ensure that errorStream is closed

Change-Id: I2abde5dbd4b785d70b7bc0b77188c0a075130eeb
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoMerge "Add toString() to CherryPickCommand and ResetCommand"
Matthias Sohn [Wed, 12 Oct 2016 12:38:30 +0000 (08:38 -0400)]
Merge "Add toString() to CherryPickCommand and ResetCommand"

8 years agoFix eviction of repositories with negative usage count 18/83018/1
Hugo Arès [Wed, 12 Oct 2016 10:54:52 +0000 (06:54 -0400)]
Fix eviction of repositories with negative usage count

If the repository close method was called twice (or more) for one open,
the usage count became negative and the repository was never be evicted
from the cache because the method checking if repository is expired was
not considering negative usage count.

Change-Id: I18a80c415c54c37d1b9def2b311ff2d0afa455ca
Signed-off-by: Hugo Arès <hugo.ares@ericsson.com>
8 years agoMerge branch 'stable-4.5' 82/82882/1
Matthias Sohn [Mon, 10 Oct 2016 22:34:42 +0000 (00:34 +0200)]
Merge branch 'stable-4.5'

* stable-4.5:
  pgm: Fix misspelled key of an externalized string
  Add missing online help for Ketch server type option in CLI daemon
  Remove wrong junit dependencies in org.eclipse.jgit.pgm

Change-Id: I9cac024c0b488101b539c713b0f5ffc8c01b55bd
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoFix symlink content comparison on MacOS in tree walk 16/63116/8
Thomas Wolf [Mon, 21 Dec 2015 18:43:56 +0000 (19:43 +0100)]
Fix symlink content comparison on MacOS in tree walk

Symlinks on MacOS are written as UTF-8 NFD, but
readSymbolicLink().toString() converts to NFC with potentially fewer
bytes. May occur in particular if the link target has non-ASCII
characters for which the NFC and NFD encodings differ. This may lead
to an EOFException: Short read of block.

This causes all kinds of weird effects in EGit, ranging from failing
rebases (which report the exception to the user) to EGit decorations in
the navigator silently disappearing (and never coming back).

* Rename readContentAsNormalizedString() to readSymlinkTarget() as it's
  called only for symlinks. Also make it protected.
* Fix by allowing the read to succeed even if less than the expected
  number of bytes are returned by the entry's input stream.
* Override in FileTreeIterator to use fs.readSymlink() directly.

Includes a new MacOS-only test.

Change-Id: I264c5972d67b1cbb1ed690580f5706e671b9affd
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoMerge "Fix CheckoutCommand to return updated files even on NONDELETED status"
Christian Halstrick [Mon, 10 Oct 2016 14:19:07 +0000 (10:19 -0400)]
Merge "Fix CheckoutCommand to return updated files even on NONDELETED status"

8 years agoAdd toString() to CherryPickCommand and ResetCommand 08/82808/1
Matthias Sohn [Sun, 9 Oct 2016 21:46:39 +0000 (23:46 +0200)]
Add toString() to CherryPickCommand and ResetCommand

Change-Id: Ie2dd87943350e3b0a2df72a70e5219139d110a8f
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agopgm: Fix misspelled key of an externalized string 63/81863/2
Matthias Sohn [Sun, 25 Sep 2016 09:46:09 +0000 (11:46 +0200)]
pgm: Fix misspelled key of an externalized string

Bug: 502107
Change-Id: I76d0981c8463b63bd049f50cdc7d549fa0604b3c
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoAdd missing online help for Ketch server type option in CLI daemon 62/81862/2
Matthias Sohn [Sat, 24 Sep 2016 08:50:21 +0000 (10:50 +0200)]
Add missing online help for Ketch server type option in CLI daemon

Change-Id: I19d27bbdbfdb1c7a5a688e41dfcba73a142a1afd
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoRemove wrong junit dependencies in org.eclipse.jgit.pgm 23/82323/1
Matthias Sohn [Sat, 1 Oct 2016 23:13:53 +0000 (01:13 +0200)]
Remove wrong junit dependencies in org.eclipse.jgit.pgm

Bug: 503010
Change-Id: I8fa99f53020af41eb15c1f63b6f3ba094d56bfef
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoDelay inserter.flush in WalkFetchConnection 03/82303/2
Zhen Chen [Fri, 30 Sep 2016 19:11:46 +0000 (12:11 -0700)]
Delay inserter.flush in WalkFetchConnection

Spawn an ObjectReader from the ObjectInserter, so the flush can be
delayed at the end of the fetch.

Change-Id: I35fe8c8370c06c25262645202aec2b1318057c19
Signed-off-by: Zhen Chen <czhen@google.com>
8 years agoRemove unused code from class Repository 11/81911/2
Rüdiger Herrmann [Mon, 26 Sep 2016 13:47:48 +0000 (15:47 +0200)]
Remove unused code from class Repository

The package-private method Repository::gitInternalSlash() is not
referenced from anywhere within the package.

Last uses were removed with
0f8743d4 "Remove deprecated Tree, TreeEntry, FileTreeEntry and friends"
6e9fdce9 "Kill GitIndex"

Signed-off-by: Rüdiger Herrmann <ruediger.herrmann@gmx.de>
Change-Id: I514bf684ad0da808f6523e9e46db9674a25e1fb5

8 years agoFix CheckoutCommand to return updated files even on NONDELETED status 98/81998/1
Christian Halstrick [Tue, 27 Sep 2016 13:38:53 +0000 (15:38 +0200)]
Fix CheckoutCommand to return updated files even on NONDELETED status

CheckoutCommand was not returning updated and removed files in case of
an overall status of NONDELETED. That's status which occurs especially
on the Windows platform when Checkout wanted to delete files but the
filesystem doesn't allow this. The situation is more seldom on linux/mac
because open filehandles don't stop a deletion attempt and checkout
succeeds more often.

Change-Id: I4828008e58c09bd8f9edaf0f7eda0a79c629fb57

8 years agoMerge branch 'stable-4.5' 44/81844/1
Matthias Sohn [Sat, 24 Sep 2016 08:51:05 +0000 (10:51 +0200)]
Merge branch 'stable-4.5'

* stable-4.5:
  Fix carrying over flags during a RevWalk

Change-Id: Ibf4573c5664271dfa7a6ecc3ede6eaad749f89d8
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoMerge "Fix carrying over flags during a RevWalk" into stable-4.5
Shawn Pearce [Sat, 24 Sep 2016 05:16:47 +0000 (01:16 -0400)]
Merge "Fix carrying over flags during a RevWalk" into stable-4.5

8 years agoFix carrying over flags during a RevWalk 91/81491/2
Christian Halstrick [Mon, 12 Sep 2016 23:29:11 +0000 (01:29 +0200)]
Fix carrying over flags during a RevWalk

There was a bug when carrying over flags from a merge commit to its
non-first parents. The first parent of a merge commit was handled
differently and correct but the non-first parents are handled by a
recursive algorithm. Flags should be copied from the root merge commit
to parent-2, to grandparent-2, ... up to the limit of STACK_DEPTH==500
parents-levels. But the recursive algorithm was always copying only to
the direct parents of the merge commit and not the grand*-parents.

This seems to be no problem when commits are handled in a strict date
order because then copying only one level is no problem if children are
handled before parents. But when commits are not seperated anymore by
distinctive correct dates (e.g. because all commits have the same date)
then it may happen that a merge-parent is handled before the merge
commit and when dealing later with the merge commit one has to copy
flags down to more than one level

Bug: 501211
Change-Id: I2d79a7cf1e3bce21a490905ccd9d5e502d7b8421

8 years agoMerge "Use consistent feature and category names"
Matthias Sohn [Fri, 23 Sep 2016 08:57:16 +0000 (04:57 -0400)]
Merge "Use consistent feature and category names"

8 years agoRepositoryCache#unregisterAndCloseRepository: Remove unused db parameter 07/81707/2
David Pursehouse [Thu, 22 Sep 2016 14:54:33 +0000 (16:54 +0200)]
RepositoryCache#unregisterAndCloseRepository: Remove unused db parameter

Change-Id: Ibee48cba85089324dc8db45066d311ad5db4f3ee
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
8 years ago[releng] maven: compile against the Java 1.8 libraries 45/81745/1
Thomas Wolf [Fri, 23 Sep 2016 05:37:21 +0000 (07:37 +0200)]
[releng] maven: compile against the Java 1.8 libraries

Remove the JDK_HOME settings that were introduced to build against the
Java 1.7 libraries. Now that the minimum requirement is Java 1.8, this
is wrong and prevents use of Java 1.8 features.

Change-Id: I91a194c9449d7810ef02b038907dbbc708e600a5
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
8 years agoUse consistent feature and category names 12/81712/2
Matthias Sohn [Thu, 22 Sep 2016 15:39:03 +0000 (17:39 +0200)]
Use consistent feature and category names

These names are presented to users when they install JGit so they should
be consistent.

Bug: 496101
Change-Id: I88a1abd8c3717d9a2f958e3a39edb2dbce3a415b
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agopgm, test: Add missing dependency for buck build 67/81667/2
David Pursehouse [Thu, 22 Sep 2016 09:30:14 +0000 (11:30 +0200)]
pgm, test: Add missing dependency for buck build

Change-Id: I26d69fb6d35c6fb120360ef143d1b1f565d4014c
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoDfsBlockCache: Suppress warnings about unchecked conversion of Ref<T> 44/81544/3
David Pursehouse [Wed, 21 Sep 2016 08:07:34 +0000 (10:07 +0200)]
DfsBlockCache: Suppress warnings about unchecked conversion of Ref<T>

There are already suppressions for the same warnings in other parts
of this class.

Change-Id: Ic3b45525c6c8200cba975d14c7650cedb4409a4d
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
8 years agoLfsServerTest: Remove unnecessary suppression of 'restriction' warning 42/81542/4
David Pursehouse [Wed, 21 Sep 2016 07:54:22 +0000 (09:54 +0200)]
LfsServerTest: Remove unnecessary suppression of 'restriction' warning

Change-Id: I23386808848746d201ca1ac13f114c06fc8e86c5
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
8 years agoWrappedRequest: Don't use deprecated ServletRequestWrapper#realPath 41/81541/4
David Pursehouse [Wed, 21 Sep 2016 07:53:14 +0000 (09:53 +0200)]
WrappedRequest: Don't use deprecated ServletRequestWrapper#realPath

Change-Id: I268e66d2299a1a12f7ae44b67a6b947339038245
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
8 years agoSuppress deprecation warnings related to UploadPackLogger 33/81533/4
David Pursehouse [Wed, 21 Sep 2016 07:07:24 +0000 (09:07 +0200)]
Suppress deprecation warnings related to UploadPackLogger

UploadPackLogger is deprecated but will not be removed until
JGit version 5.0.

Suppress the unavoidable deprecation warnings on usages of the
interface that are kept for backwards compatibility.

Add a TODO so that we don't forget to remove it in 5.0.

Change-Id: Id248002b9bdf23db192427196d54c722a012106c
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
8 years agoAppServer: Remove unnecessary 'unused' suppressions 32/81532/4
David Pursehouse [Wed, 21 Sep 2016 07:03:29 +0000 (09:03 +0200)]
AppServer: Remove unnecessary 'unused' suppressions

Change-Id: Ic27106f38af14833147f739179c3ef8ec6b6ee31
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
8 years agoHttpClientConnection: Don't use deprecated HttpClient classes 05/81505/4
David Pursehouse [Tue, 20 Sep 2016 19:19:44 +0000 (21:19 +0200)]
HttpClientConnection: Don't use deprecated HttpClient classes

- raise minimum version for HttpClient packages to 4.3 since some of the
used classes aren't available in older versions
- recompute OSGi uses clauses

Change-Id: I8f0bff1433762561e02f7439db27a6a9e846c290
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoFix wrong @since tags introduced by 1beb3ccd 41/81641/1
Matthias Sohn [Wed, 21 Sep 2016 21:37:18 +0000 (23:37 +0200)]
Fix wrong @since tags introduced by 1beb3ccd

1beb3ccd1ed3be0dde703a604deeff3a4b9f27eb was submitted in 4.6.0-SNAPSHOT

Change-Id: I33e027dbd0995ba36491bd9e2d4b3c84f9f0abd6
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoMerge branch 'stable-4.5' 89/81589/2
Matthias Sohn [Wed, 21 Sep 2016 16:08:00 +0000 (18:08 +0200)]
Merge branch 'stable-4.5'

* stable-4.5:
  Turn off doclint also during Maven site generation
  Prepare 4.5.1-SNAPSHOT builds
  JGit v4.5.0.201609210915-r
  Unconditionally close repository in unregisterAndCloseRepository

Change-Id: Ibfd11669cd74d2e62b014c18fd39b646b200c8c5
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoTurn off doclint also during Maven site generation 06/81606/2
Matthias Sohn [Wed, 21 Sep 2016 15:01:13 +0000 (17:01 +0200)]
Turn off doclint also during Maven site generation

Change-Id: Iefc77114de21e7a101642f5c3a8f0fb317886ba2
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoPrepare 4.5.1-SNAPSHOT builds 03/81603/1
Matthias Sohn [Wed, 21 Sep 2016 15:05:27 +0000 (17:05 +0200)]
Prepare 4.5.1-SNAPSHOT builds

Change-Id: I3305e8a09a3fb06f25a316cff2bdbb551d3ade68
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoJGit v4.5.0.201609210915-r 86/81586/1 v4.5.0.201609210915-r
Matthias Sohn [Wed, 21 Sep 2016 13:06:18 +0000 (15:06 +0200)]
JGit v4.5.0.201609210915-r

Change-Id: Idc02a1a1d74f84605d764c239803f0cfbad94eb7
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoUnconditionally close repository in unregisterAndCloseRepository 63/81563/2
Saša Živkov [Wed, 21 Sep 2016 09:32:36 +0000 (11:32 +0200)]
Unconditionally close repository in unregisterAndCloseRepository

Repository.close() method is used when reference counting and expiration
needs to be honored. The RepositoryCache.unregisterAndCloseRepository
method should close the repository unconditionally. This is also indicated
from its javadoc.

Change-Id: I19392d1eaa17f27ae44b55eea49dcff05a52f298

8 years agoMerge "Add ReceivedPackStatistics for PackParser"
Shawn Pearce [Tue, 20 Sep 2016 19:29:24 +0000 (15:29 -0400)]
Merge "Add ReceivedPackStatistics for PackParser"

8 years agoChange JGit minimum execution environment to JavaSE-1.8 82/79782/4
Matthias Sohn [Thu, 25 Aug 2016 23:36:28 +0000 (01:36 +0200)]
Change JGit minimum execution environment to JavaSE-1.8

Bug: 500059
Change-Id: I47f3f6749a67da52029f84e002d9b155ed56d2b7
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoMove AtomicObjectOutputStream to lfs/internal 88/76588/8
Christian Halstrick [Tue, 5 Jul 2016 07:05:59 +0000 (09:05 +0200)]
Move AtomicObjectOutputStream to lfs/internal

The class AtomicObjectOutputStream should be available to all lfs
related classes, not only to the server side. Move the class from
org.eclipse.jgit.lfs.server.fs to org.eclipse.jgit.lfs.internal to
achieve that.

Change-Id: I028e1c9ec7c21f316340b21d558b9a6b77e2060d

8 years agoAdd built-in LFS smudge filter for local case 31/76131/10
Christian Halstrick [Mon, 27 Jun 2016 14:00:44 +0000 (16:00 +0200)]
Add built-in LFS smudge filter for local case

Adds a JGit built-in implementation of the "git lfs smudge" filter. This
filter should do the same as the one described in [1] besides that it
only supports the local case when the lfs objects are already present in
the media directory. Remote cases where download of LFS objects from an
LFS server is needed will be done in a later commit.

[1] https://github.com/github/git-lfs/blob/master/docs/man/git-lfs-smudge.1.ronn

Change-Id: I8ff661d4edd3667ef7f86f3b4fa33e568eb4c8f4

8 years agoAdd built-in LFS clean filter 30/76130/9
Christian Halstrick [Mon, 27 Jun 2016 14:00:09 +0000 (16:00 +0200)]
Add built-in LFS clean filter

Adds a JGit built-in implementation of the "git lfs clean" filter. This
filter should do the same as the one described in [1]. But since this
filter is written in Java and can be called by JGit without forking new
processes it should be much faster

[1]
https://github.com/github/git-lfs/blob/master/docs/man/git-lfs-clean.1.ronn

Change-Id: If60e387e97870245b4bd765eda6717eb84cffb1d

8 years agoAdd configuration parameter to enable built-in hooks/filters 84/71984/12
Christian Halstrick [Tue, 3 May 2016 11:41:39 +0000 (13:41 +0200)]
Add configuration parameter to enable built-in hooks/filters

If the configuration parameter filter.<filterDriverName>.useJGitBuiltin
is set to true then for all corresponding filters JGit will try to
execute the built-in filter instead of the filter-command which is
defined in git configuration. It will fallback to the non-built-in
filters if no built-in filters are registered or if constructing them
leads to exceptions. If set to false JGit will not try to execute
built-in filters for the specified filter driver.

Example: The configuration contains the following lines

  [filter "lfs"]
    clean = git-lfs clean -- %f
    smudge = git-lfs smudge -- %f
    useJGitBuiltin = true

Addtionally the .gitattributes file in the root of the working tree
contains:

    *.bin filter=lfs

In this case when new content is added similar to "git add 1.bin" then
the following will happen:

  - jgit will check whether a built-in command factory was registered
    for the command "jgit://builtin/lfs/clean". If that is true the
    factory is used to create a built-in filter command and that
    command is used to filter the content
  - Otherwise jgit will call the external program "git lfs clean ..."
    to do the filtering

Change-Id: Idadb1db06b1e89e7031d7ed6319904973c367d38

8 years agoAdd support for built-in smudge filters 83/71983/12
Christian Halstrick [Tue, 3 May 2016 12:59:57 +0000 (14:59 +0200)]
Add support for built-in smudge filters

JGit supports smudge filters defined in repository configuration. The
filters are implemented as external programs filtering content by
accepting the original content (as seen in git's object database) on
stdin and which emit the filtered content on stdout. This content is
then written to the file in the working tree. To run such a filter JGit
has to start an external process and pump data into/from this process.

This commit adds support for built-in smudge filters which are
implemented in Java and which are executed by jgit's main thread. When a
filter is defined in the configuration as
"jgit://builtin/<filterDriverName>/smudge" then JGit will lookup in a
static map whether a builtin filter is registered under this name. If
found such a filter is called to do the filtering.

The functionality in this commit requires that a program using JGit
explicitly calls the JGit API to register built-in implementations for
specific smudge filters. In follow-up commits configuration parameters
will be added which trigger such registrations.

Change-Id: Ia743aa0dbed795e71e5792f35ae55660e0eb3c24

8 years agoAdd support for built-in clean filters 82/71982/11
Christian Halstrick [Mon, 2 May 2016 13:24:26 +0000 (15:24 +0200)]
Add support for built-in clean filters

JGit supports clean filters defined in repository configuration. The
filters are implemented as external programs filtering content by
accepting the original content (as seen in the working tree) on stdin
and which emit the filtered content on stdout. To run such a filter JGit
has to start an external process and pump data into/from this process.

This commit adds support for clean filters which are implemented
in Java and which are executed by jgit's main thread. When a filter is
defined in the configuration as
"jgit://builtin/<filterDriverName>/clean" then JGit will lookup in a
static map whether a filter is registered under this name. If found
such a filter is called to do the filtering.

The functionality in this commit requires that a program using JGit
explicitly calls the JGit API to register built-in implementations for
specific clean filters. In follow-up commits configuration parameters
will be added which trigger such registrations. Other commits will add
implementations for lfs filters.

Change-Id: I0344d3c54801c9a46e5a606c5df17e5f2e17b2be

8 years agoAdd ReceivedPackStatistics for PackParser 50/81050/4
Masaya Suzuki [Wed, 14 Sep 2016 00:43:18 +0000 (17:43 -0700)]
Add ReceivedPackStatistics for PackParser

This is like PackStatistics, but for PackParser.

Change-Id: I854215c0956fd0b36843d631780be303e021b8be
Signed-off-by: Masaya Suzuki <masayasuzuki@google.com>
8 years agoPrepare 4.6.0-SNAPSHOT builds 63/81363/1
Matthias Sohn [Mon, 19 Sep 2016 15:06:42 +0000 (17:06 +0200)]
Prepare 4.6.0-SNAPSHOT builds

Change-Id: Id2eafc331ee32c332c2a9b867b05c260beb0d10f
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoHandle all values of branch.[name].rebase 31/79031/3
Thomas Wolf [Mon, 15 Aug 2016 05:55:44 +0000 (07:55 +0200)]
Handle all values of branch.[name].rebase

BranchConfig treated this config property as a boolean, but git also
allows the values "preserve" and "interactive". Config property
pull.rebase also allows the same values.

Replace private enum PullCommand.PullRebaseMode by new public enum
BranchConfig.BranchRebaseMode and adapt all uses. Add a new setter to
PullCommand.

Note: PullCommand will treat "interactive" like "true", i.e., as a
non-interactive rebase. Not sure how "interactive" should be handled.
At least it won't balk on it.

Bug: 499482
Change-Id: I7309360f5662b2c2efa1bd8ea6f112c63cf064af
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
8 years agoIgnore trailing spaces in directory rule patterns 58/81058/3
Andrey Loskutov [Wed, 14 Sep 2016 07:29:20 +0000 (09:29 +0200)]
Ignore trailing spaces in directory rule patterns

Bug: 500967
Change-Id: I7fabc2654af97011c62f46d5c30ee992341e45e2
Signed-off-by: Andrey Loskutov <loskutov@gmx.de>
8 years agoAdd support for post-commit hooks 65/80865/3
Martin Goellnitz [Sat, 10 Sep 2016 09:29:30 +0000 (11:29 +0200)]
Add support for post-commit hooks

Change-Id: I6691b454404dd4db3c690ecfc7515de765bc2ef7
Signed-off-by: Martin Goellnitz <m.goellnitz@outlook.com>
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoDon't log error if system git config does not exist 60/80360/3
Matthias Sohn [Sun, 4 Sep 2016 10:07:37 +0000 (12:07 +0200)]
Don't log error if system git config does not exist

- enhance FS.readPipe to throw an exception if the external command
fails to enable the caller to handle the command failure
- reduce log level to warning if system git config does not exist
- improve log message

Bug: 476639
Change-Id: I94ae3caec22150dde81f1ea8e1e665df55290d42
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoAdd missing dependency to slf4j-log4j bridge 52/80352/2
Matthias Sohn [Sat, 3 Sep 2016 09:10:38 +0000 (11:10 +0200)]
Add missing dependency to slf4j-log4j bridge

Without the bridge JGit tests don't show log output in Eclipse console.

Change-Id: I7acce1f1787960b5ca98377cb5c7f599a8a220b5
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoRename FSJava7Test to FSTest 51/80351/1
Matthias Sohn [Fri, 2 Sep 2016 22:03:00 +0000 (00:03 +0200)]
Rename FSJava7Test to FSTest

Since 4.0 JGit does no longer support Java versions older than Java 7 so
there is no need anymore to mention Java 7 in the class name.

Change-Id: Ic46c9d89a7e919ae4a69487fa06de0478d2b21f0
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoImprove JavaDoc for LfsProtocolServlet.getLargeFileRepository 62/80062/2
Matthias Sohn [Tue, 30 Aug 2016 19:24:19 +0000 (21:24 +0200)]
Improve JavaDoc for LfsProtocolServlet.getLargeFileRepository

Guide implementors which exception to throw in case of errors.

Change-Id: I74fb76cdf6b7cdef513f3fe8c144572e869cc533
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoCLI: implement option -d for deleting tags 27/79327/4
Ned Twigg [Fri, 18 Mar 2016 10:08:44 +0000 (03:08 -0700)]
CLI: implement option -d for deleting tags

Change-Id: I438456b76aefd361384729686271288186d3be3b
Signed-off-by: Ned Twigg <ned.twigg@diffplug.com>
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoAdded a clean command. 24/79324/5
Ned Twigg [Fri, 18 Mar 2016 07:54:52 +0000 (00:54 -0700)]
Added a clean command.

Change-Id: I05d5392789b5b64e6ee44f678556cf25dc30d7ba
Signed-off-by: Ned Twigg <ned.twigg@diffplug.com>
8 years agoAdd specific exception for LFS unavailable 08/79908/2
David Pursehouse [Mon, 29 Aug 2016 03:18:38 +0000 (12:18 +0900)]
Add specific exception for LFS unavailable

Instead of returning null, LfsProtocolServlet#getLargeFileRepository
should throw LfsUnavailable.

If null is returned, throw a generic LfsException.

Handle LfsException as an internal server error and return HTTP 500.

Change-Id: I33e2a19fcc0fde8aaf0f703860c8fa8ce2de2db5
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
8 years agoAdd Javadoc for LFS exception messages 07/79907/2
David Pursehouse [Mon, 29 Aug 2016 03:04:42 +0000 (12:04 +0900)]
Add Javadoc for LFS exception messages

Change-Id: I4967b5f7a9a7e9488d20f60aaa949efe97442429
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
8 years agoReceivePack: integrate push option parsing into recvCommands 57/79957/2
Shawn Pearce [Mon, 29 Aug 2016 19:11:11 +0000 (12:11 -0700)]
ReceivePack: integrate push option parsing into recvCommands

This allows the same try/catch to handle parsing the command list,
push certificate and push options. Any errors will be caught and
handled by the same catch block, as the client is in the same state.

Change-Id: I13a66f9100e2dc8ca8f72cd701a5bd44d093ec84

8 years agoReceivePack: simplify getPushOptions 56/79956/2
Shawn Pearce [Mon, 29 Aug 2016 19:12:23 +0000 (12:12 -0700)]
ReceivePack: simplify getPushOptions

Checking if the instance allows push options before returning the
collection or null is a bit overkill. Just return the collection
or return null.

Change-Id: Icdc3755194373966e5819284aeb9bfe8dd34de82

8 years agoReceivePack: allow push options to be set 55/79955/3
Shawn Pearce [Mon, 29 Aug 2016 18:54:15 +0000 (11:54 -0700)]
ReceivePack: allow push options to be set

Some embeddings of JGit require creating a ReceivePack instance in
another process from the one that handled the network socket with the
client.  Similar to the PushCertificate add a setter to allow the
option list to be supplied.

Change-Id: I303a30e54942ad067c79251eff8b53329c406628

8 years agoMake GC.RepoStatistics static 89/79889/1
Jonathan Nieder [Fri, 26 Aug 2016 23:28:43 +0000 (16:28 -0700)]
Make GC.RepoStatistics static

Noticed by error-prone (http://errorprone.info/bugpattern/ClassCanBeStatic).

Change-Id: Ie271e9e789a5bc764a287f7bd2a8c8af297d7d41

8 years agoReceivePack: refactor push option parsing 87/79887/4
Shawn Pearce [Fri, 26 Aug 2016 21:44:44 +0000 (14:44 -0700)]
ReceivePack: refactor push option parsing

Refactor all of the push option support code to allocate the list
immediately before parsing the options section off the stream.

Move option support down to ReceivePack instead of BaseReceivePack.
Push options are specific to the ReceivePack protocol and are not
likely to appear in the 4 year old subscription proposal.  These
changes are OK before JGit 4.5 ships as no consumer should be relying
on these new APIs.

Change-Id: Ib07d18c877628aba07da07cd91875f918d509c49

8 years agoFix push option initalization on HTTP 86/79886/2
Stefan Beller [Fri, 26 Aug 2016 21:10:06 +0000 (14:10 -0700)]
Fix push option initalization on HTTP

Initialize pushOptions when we decide to use them, instead of when we
advertise them.

In the case of HTTP the advertisement is in a different network
request, hence in a different instance of the BaseReceivePack.

Change-Id: I094c60942e04de82cb6d8433c9cd43a46ffae332
Signed-off-by: Stefan Beller <sbeller@google.com>
8 years agoMerge "DfsReader: check object type during open"
Shawn Pearce [Fri, 26 Aug 2016 02:45:31 +0000 (22:45 -0400)]
Merge "DfsReader: check object type during open"

8 years agoMerge "Fix HttpClientConnection leaking temporary buffer files"
Shawn Pearce [Fri, 26 Aug 2016 02:31:08 +0000 (22:31 -0400)]
Merge "Fix HttpClientConnection leaking temporary buffer files"

8 years agoDfsReader: check object type during open 86/79786/2
Shawn Pearce [Fri, 26 Aug 2016 01:59:15 +0000 (18:59 -0700)]
DfsReader: check object type during open

Do not open an OBJ_TREE if the caller is expecting an OBJ_BLOB or
OBJ_COMMIT; instead throw IncorrectObjectTypeException.  This better
matches behavior of WindowCursor, the ObjectReader implementation of
the local file based object store.

Change-Id: I3fb0e77f54895b123679a405e1b6ba5b95752ff0

8 years agoClarify the semantics of DfsRefDatabase#compareAndPut 33/77433/5
Masaya Suzuki [Fri, 26 Aug 2016 01:25:48 +0000 (18:25 -0700)]
Clarify the semantics of DfsRefDatabase#compareAndPut

DfsRefDatabase#compareAndPut had a vague semantics for reference
matching. Because of this, an operation to make a symbolic
reference had been broken for some DFS implementations even if they
followed the contract of compareAndPut. The clarified semantics
requires the implementations to satisfy the followings:

* Matching references should be both symbolic references or both
  object ID references.
* If both are symbolic references, both should have the same target
  name.
* If both are object ID references, both should have the same object
  ID.

This semantics is defined based on
https://git.eclipse.org/r/#/c/77416/. Before this commit,
DfsRefDatabase couldn't see the target of symbolic references.

InMemoryRepository is changed to comply with the new semantics. This
semantics change can affect the existing DFS implementations that only
checks object IDs. This commit adds two tests that the previous
InMemoryRepository couldn't pass.

Change-Id: I6c6b5d3cc8241a81f4a37782381c88e8a59fdf15
Signed-off-by: Masaya Suzuki <masayasuzuki@google.com>
8 years agoMerge "Do not fake a SymbolicRef as an ObjectIdRef"
Shawn Pearce [Fri, 26 Aug 2016 00:57:39 +0000 (20:57 -0400)]
Merge "Do not fake a SymbolicRef as an ObjectIdRef"