]> source.dussan.org Git - jgit.git/log
jgit.git
8 years agoReceivePack: remove unnecessary try-catch around parseCommand 51/76651/1
Shawn Pearce [Tue, 5 Jul 2016 19:57:58 +0000 (12:57 -0700)]
ReceivePack: remove unnecessary try-catch around parseCommand

This exception is already handled in the outer catch block.

Change-Id: Ifc04b8e138732a97b9c0ee323af923b8e52a7f8e

8 years agoReceivePack: enable capabilities immediately on first line 50/76650/1
Shawn Pearce [Tue, 5 Jul 2016 19:37:26 +0000 (12:37 -0700)]
ReceivePack: enable capabilities immediately on first line

Instead of deferring until after command parsing, enable the
capabilities after the first pkt-line has been read from the client.
This allows the server to setup the side-band-64k channel immediately.

Change-Id: I141b7fc92e983a41d3a58da8e1464a6917422b6c

8 years agoReceivePack: Use Java 7 multi-catch for unpackError 49/76649/1
Shawn Pearce [Tue, 5 Jul 2016 19:35:26 +0000 (12:35 -0700)]
ReceivePack: Use Java 7 multi-catch for unpackError

Change-Id: I328f5952f23185a7d8f81a144979b4f8a095bd60

8 years agoPushConnectionTest: Use Java 7 try-with-resources 48/76648/1
Shawn Pearce [Tue, 5 Jul 2016 19:32:24 +0000 (12:32 -0700)]
PushConnectionTest: Use Java 7 try-with-resources

Change-Id: I429066d2af9c5fb8bf8bc038b99ebe5a7dc09170

8 years agopush: Report fatal server errors during pack writing 65/76565/2
Shawn Pearce [Tue, 5 Jul 2016 05:10:55 +0000 (22:10 -0700)]
push: Report fatal server errors during pack writing

If the push client has requested side-band support the server can
signal a fatal error parsing the pack using the error channel (3)
and then hang up. This may cause the PackWriter to fail to write to
data onto the network socket, which throws a misleading error back
up to the application and the user.

During a write failure poll the input to see if the side band system
can parse out an error message off channel 3. This should be fast as
there will either be an error present in the buffer, or the remote will
also have hung-up on the side band channel. In the case of a hang-up
just rethrow the original IOException as its a network error.

This roughly matches what C git does; once commands are sent and the
packer is started a new thread runs in the background to decode any
possible server error during unpacking on the remote peer

Change-Id: Idb37a4a122a565ec4b59130e08c27d963ba09395

8 years agoReceivePack: Catch InvalidObjectIdException instead of IAE 62/76562/2
Shawn Pearce [Tue, 5 Jul 2016 01:26:53 +0000 (18:26 -0700)]
ReceivePack: Catch InvalidObjectIdException instead of IAE

The more specific type InvalidObjectIdException is thrown by
ObjectId.fromString().  Use it here in ReceivePack as the more
generic IAE is never thrown by the body of the try-catch block.

Change-Id: I53fc13c561c7d429a50b5eb82773f1a670431c54

8 years agoUploadPack: Include peeled ObjectId as advertised 60/76560/2
Shawn Pearce [Tue, 5 Jul 2016 00:23:47 +0000 (17:23 -0700)]
UploadPack: Include peeled ObjectId as advertised

A RefAdvertiser writing to the network includes both the reference's
ObjectId and its peeled ObjectId in the advertised set.  In smart HTTP
negotiation requests may bypass the RefAdvertiser and quickly build
the set based on current refs; include the peeled ObjectIds to match
behavior with the normal bidirectional protocols on git:// and SSH.

Change-Id: I5371bed60da36e8d12c4ad9a5c1d91a0f0ad486b

8 years agoMerge "UploadPack: Remove duplicate sentReady assignment"
Christian Halstrick [Tue, 5 Jul 2016 06:28:56 +0000 (02:28 -0400)]
Merge "UploadPack: Remove duplicate sentReady assignment"

8 years agoUploadPack: Remove duplicate sentReady assignment 59/76559/1
Shawn Pearce [Tue, 5 Jul 2016 00:19:06 +0000 (17:19 -0700)]
UploadPack: Remove duplicate sentReady assignment

This field was being set twice within the block.  Setting it just once
is sufficient.  writeString() does not examine the field so it is fine
to set it after the call.

Change-Id: Ib4c74df4f1304e9df3015885bf360bf0d7bc6ca2

8 years agoMerge "Remove duplicate LFS feature from P2 repository"
Matthias Sohn [Mon, 4 Jul 2016 22:45:37 +0000 (18:45 -0400)]
Merge "Remove duplicate LFS feature from P2 repository"

8 years agoMerge "UploadPack: Correct typo of negotiation in Javadoc"
Matthias Sohn [Mon, 4 Jul 2016 22:23:52 +0000 (18:23 -0400)]
Merge "UploadPack: Correct typo of negotiation in Javadoc"

8 years agoRemove duplicate LFS feature from P2 repository 96/76496/2
Christian Halstrick [Mon, 4 Jul 2016 09:35:22 +0000 (11:35 +0200)]
Remove duplicate LFS feature from P2 repository

Change-Id: I1887e7f5c8b34b38fa1d6d699bf637c93bc36e7c

8 years agoUploadPack: Correct typo of negotiation in Javadoc 53/76553/1
Shawn Pearce [Mon, 4 Jul 2016 21:35:40 +0000 (14:35 -0700)]
UploadPack: Correct typo of negotiation in Javadoc

Change-Id: Ibab89fddda7ccfe3390348aa129ab2e5e3b7f538

8 years agoRemove no longer needed API problem filters 83/76483/1
Matthias Sohn [Sun, 3 Jul 2016 22:49:24 +0000 (00:49 +0200)]
Remove no longer needed API problem filters

Change-Id: I2332ce2f29e105b60b62a9a6fc7d4656a0c89343
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoEnhance test coverage when core.filemode is false 41/69841/3
Christian Halstrick [Mon, 4 Apr 2016 13:14:10 +0000 (15:14 +0200)]
Enhance test coverage when core.filemode is false

Some branches in WorkingTreeIterator.getIndexFileMode() have not been
covered by tests. Enhance the tests to increase test coverage.

Change-Id: I400a221048f0f6cbaa987350eaf998b0ebb50a4e

8 years agoFix typo in system config error message 64/75964/2
Michael Keppler [Sat, 25 Jun 2016 13:30:56 +0000 (15:30 +0200)]
Fix typo in system config error message

Change-Id: I14daca6c81b003123e5862b384718fe06fb3ebd0
Signed-off-by: Michael Keppler <michael.keppler@gmx.de>
8 years agoAdd configureJSch method to allow configuration of JSch objects 07/75607/5
markdingram [Tue, 21 Jun 2016 16:31:20 +0000 (17:31 +0100)]
Add configureJSch method to allow configuration of JSch objects

Example use case is to set a different IdentityRepository, for example,
a RemoteIdentityRepository to allow SSH Agent supplied credentials.

Change-Id: Id4a4afd64464e452ffe6d6ad49036f9e283b4655
Signed-off-by: markdingram <markdingram@gmail.com>
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoRemove duplicated single quotes in text not handled by MessageFormat 31/76231/2
Markus Keller [Wed, 29 Jun 2016 17:28:54 +0000 (19:28 +0200)]
Remove duplicated single quotes in text not handled by MessageFormat

Change-Id: I4b803b34d30a86105d111be417d4a4e6bfb1057b
Signed-off-by: Markus Keller <markus_keller@ch.ibm.com>
8 years agoMerge changes from topic 'dfs-gc'
Shawn Pearce [Mon, 27 Jun 2016 15:52:00 +0000 (11:52 -0400)]
Merge changes from topic 'dfs-gc'

* changes:
  Prune UNREACHABLE_GARBAGE packs when they expire
  Use try-with-resources in DfsGarbageCollector.writePack
  Fix lastModified to be consistent in DfsGarbageCollector
  Add GC_REST PackSource to better order DFS packs

8 years agoPrune UNREACHABLE_GARBAGE packs when they expire 18/76018/1
Mike Williams [Fri, 17 Jun 2016 15:34:36 +0000 (11:34 -0400)]
Prune UNREACHABLE_GARBAGE packs when they expire

DfsGarbageCollector will now enforce a maximum time to live (TTL) for
UNREACHABLE_GARBAGE packs.  The default TTL is 1 day, which should be
enough time to avoid races with other processes that are inserting
data into the repository.

Change-Id: Id719e6e2a03cfc9a0c0aef8ed71d261dda14bd0c
Signed-off-by: Mike Williams <miwilliams@google.com>
8 years agoUse try-with-resources in DfsGarbageCollector.writePack 82/75982/1
Shawn Pearce [Sun, 26 Jun 2016 18:28:29 +0000 (11:28 -0700)]
Use try-with-resources in DfsGarbageCollector.writePack

Change-Id: I9a73125581b4d760b733fd045c3436c2aaaab730

8 years agoFix lastModified to be consistent in DfsGarbageCollector 81/75981/1
Shawn Pearce [Sun, 26 Jun 2016 18:18:59 +0000 (11:18 -0700)]
Fix lastModified to be consistent in DfsGarbageCollector

Set all packs written by the DfsGarbageCollector to use the same
starting timestamp as lastModified. This makes it easier to see
which packs came from the same DfsGarbageCollector run, as they
share the same timestamp.

Change-Id: Id633573fbc3f0f360887b4745cacf33d6fc09320

8 years agoAdd GC_REST PackSource to better order DFS packs 80/75980/2
Shawn Pearce [Sun, 26 Jun 2016 17:58:38 +0000 (10:58 -0700)]
Add GC_REST PackSource to better order DFS packs

Force reads to use a search ordering of:

  INSERT / RECEIVE
  COMPACT
  GC (heads)
  GC_REST (non-heads)
  GC_TXN (refs/txn)
  UNREACHABLE_GARBAGE

This has provided decent performance for object lookups.  Starting
from an arbitrary reference may find the content in a newer pack
created by DfsObjectInserter or a ReceivePack server.  Compaction of
recent packs also contains newer content, and then most interesting
data is in the "main" GC pack.  As the GC pack is self-contained (has
no edges leading outside) readers typically do not need to go further.

Adding a new GC_REST PackSource allows the DfsGarbageCollector to
identify to the pack ordering code which pack is which, so the
non-heads are scanned second during reads.  This removes a hack that
was unique to Google's implementation that enforced this behavior by
fixing up the lastModified timestamp.

Renumber the PackSource's categories to reflect this search ordering.

Change-Id: I19fdaab8a8d6687cbe8c88488e6daa0630bf189a

8 years agoFix TreeWalk to reset attributes cache for each entry 57/75857/1
Christian Halstrick [Thu, 23 Jun 2016 15:08:45 +0000 (17:08 +0200)]
Fix TreeWalk to reset attributes cache for each entry

Treewalk has a member 'attr' which caches the attributes for the current
entry. We did not reset the cache always when moving to next entry. The
effect was that when there are no attributes for an entry 'a' but 'a'
was skipped by a Treewalk filter then Treewalk stopped looking for
attributes until TreeWalk.next() was called again.

Change-Id: Ied39b7fb5f56afe7a237da17801003d0abe6b1c7

8 years agoFix DirCacheCheckout to return CheckoutConflictException 43/75443/6
Christian Halstrick [Fri, 17 Jun 2016 14:41:14 +0000 (16:41 +0200)]
Fix DirCacheCheckout to return CheckoutConflictException

Problem occurs when the checkout wants to create a file 'd/f' but
the workingtree contains a dirty file 'd'. In order to create d/f the
file 'd' would have to be deleted and since the file is dirty that
content would be lost. This should lead to a CheckoutConflictException
for d/f when failOnConflict was set to true.

This fix also changes jgit checkout semantics to be more like native
gits checkout semantics. If during a checkout jgit wants to delete a
folder but finds that the working tree contains a dirty file at this
path then JGit will now throw an exception instead of silently keeping
the dirty file. Like in this example:

git init
touch b
git add b
git commit -m addB
mkdir a
touch a/c
git add a/c
git commit -m addAC
rm -fr a
touch a
git checkout HEAD~

Change-Id: I9089123179e09dd565285d50b0caa308d290cccd
Signed-off-by: Rüdiger Herrmann <ruediger.herrmann@gmx.de>
Also-by: Rüdiger Herrmann <ruediger.herrmann@gmx.de>
8 years agoOptimize RefAdvertiser for wire protocol 24/75524/1
Shawn Pearce [Sun, 19 Jun 2016 04:40:35 +0000 (21:40 -0700)]
Optimize RefAdvertiser for wire protocol

The native wire protocol sends ref advertisements in the pkt-line
format, which requires encoding the ObjectId and ref name onto a byte
sequence.  Busy servers show this is a very high source of garbage,
which pushes the garbage collector harder when there are many refs in
the repository (e.g.  70k, in a Gerrit managed repository).

Optimize the side band advertiser by retaining the CharsetEncoder,
minimizing the amount of temporary garbage built during encoding.

Change-Id: I406c654bf82c1eb94b38862da2425e98396134cb

8 years agoMerge branch 'stable-4.4' 98/75198/1
Matthias Sohn [Mon, 13 Jun 2016 22:11:37 +0000 (00:11 +0200)]
Merge branch 'stable-4.4'

* stable-4.4:
  Prepare 4.4.1-SNAPSHOT builds
  JGit v4.4.0.201606070830-r
  Prepare 4.4.0-SNAPSHOT builds
  JGit v4.4.0.201606011500-rc2
  Prepare 4.4.0-SNAPSHOT builds
  JGit v4.4.0.201605250940-rc1
  Update Orbit repository for Neon to R20160520211859
  Fix computation of id in WorkingTreeIterator with autocrlf and
    smudging
  Prepare 4.3.2-SNAPSHOT builds
  JGit v4.3.1.201605051710-r
  Prepare 4.4.0-SNAPSHOT builds
  JGit v4.4.0.201605041135-m1
  Run Maven build in release.sh concurrently to speedup release

Change-Id: I25ef0497a4455b8229b453e1023abb4631d4b6d3
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoUpdate Neon orbit repository to final release R20160520211859 51/75051/1
Matthias Sohn [Fri, 10 Jun 2016 10:20:24 +0000 (12:20 +0200)]
Update Neon orbit repository to final release R20160520211859

Change-Id: I7c439ab7679472217426453bd0a7c443ebd4b009
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoMerge "Add method to read time unit from config"
Shawn Pearce [Fri, 10 Jun 2016 04:26:45 +0000 (00:26 -0400)]
Merge "Add method to read time unit from config"

8 years agoPrepare 4.4.1-SNAPSHOT builds 00/74800/1
Matthias Sohn [Tue, 7 Jun 2016 15:30:33 +0000 (17:30 +0200)]
Prepare 4.4.1-SNAPSHOT builds

Change-Id: I4fe1c84b1418126f5b245b8a4f72bb7e37f48eae
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoJGit v4.4.0.201606070830-r 64/74764/1 v4.4.0.201606070830-r
Matthias Sohn [Tue, 7 Jun 2016 11:51:02 +0000 (13:51 +0200)]
JGit v4.4.0.201606070830-r

Change-Id: I5c771a62ac0420424a655a4025c62a4bc28dc44e
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agohttp transport does not use authentication fallback 28/71028/10
Christian Pontesegger [Wed, 20 Apr 2016 06:31:18 +0000 (08:31 +0200)]
http transport does not use authentication fallback

Git servers supporting HTTP transport can send multiple WWW-Authenticate
challenges [1] for different authentication schemes the server supports.
If authentication fails now retry all authentication types proposed by
the server.

[1] https://tools.ietf.org/html/rfc2617#page-3

Bug: 492057
Change-Id: I01d438a5896f9b1008bd6b751ad9c7cbf780af1a
Signed-off-by: Christian Pontesegger <christian.pontesegger@web.de>
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoAdd method to read time unit from config 28/74528/2
Hugo Arès [Fri, 3 Jun 2016 13:11:58 +0000 (09:11 -0400)]
Add method to read time unit from config

Time units supported:

-milliseconds (1 ms, 2 milliseconds)
-seconds (1 s, 1 sec, 1 second, 2 seconds)
-minutes (1 m, 1 min, 1 minute, 2 minutes)
-hours (1 h, 1 hr, 1 hour, 2 hours)
-days (1 d, 1 day, 2 days)
-weeks (1 w, 1 week, 2 weeks)
-months (1 mon, 1 month, 2 months)
-years (1 y, 1 year, 2 years)

This functionality is implemented in Gerrit ConfigUtil class. Add it to
JGit so it can eventually be remove from Gerrit.

Change-Id: I2d6564ff656b6ab9424a9360624061c94fd5f413
Signed-off-by: Hugo Arès <hugo.ares@ericsson.com>
8 years agoAdd $NON-NLS to suppress "Non-externalized string literal" warnings 61/74561/1
Hugo Arès [Fri, 3 Jun 2016 19:57:12 +0000 (15:57 -0400)]
Add $NON-NLS to suppress "Non-externalized string literal" warnings

Change-Id: I1643775c6b200a5963ac1a6ca9b4d6e807e0b45a
Signed-off-by: Hugo Arès <hugo.ares@ericsson.com>
8 years agoBatchRefUpdate: Include command message in toString() 30/74430/1
Dave Borowitz [Thu, 2 Jun 2016 17:24:59 +0000 (13:24 -0400)]
BatchRefUpdate: Include command message in toString()

Change-Id: I359f33af5aa84af77c3628e6cd9a5ee3f7f38d49

8 years agoMerge "DfsBlock: throw DataFormatException on 0 bytes"
Shawn Pearce [Thu, 2 Jun 2016 14:58:11 +0000 (10:58 -0400)]
Merge "DfsBlock: throw DataFormatException on 0 bytes"

8 years agoMerge "Add missing @Test annotation in RepositoryCacheTest"
Christian Halstrick [Thu, 2 Jun 2016 07:30:03 +0000 (03:30 -0400)]
Merge "Add missing @Test annotation in RepositoryCacheTest"

8 years agoMerge "Add missing @Test annotations"
Christian Halstrick [Thu, 2 Jun 2016 07:28:00 +0000 (03:28 -0400)]
Merge "Add missing @Test annotations"

8 years agoDfsBlock: throw DataFormatException on 0 bytes 42/74342/1
Shawn Pearce [Thu, 2 Jun 2016 04:48:21 +0000 (21:48 -0700)]
DfsBlock: throw DataFormatException on 0 bytes

setInput should always push at least 1 byte into the Inflater.  If 0
bytes (or negative!) are being sent the DfsBlock is inconsistent with
the position passed in.  This indicates a severe programming problem
in the caller, and may cause an infinite loop in DfsReader.

Today we saw a handful of live examples of this but don't know what
the cause is.  Guard against this error condition and throw with a
more verbose failure, which may prevent an infinite loop.  Callers
will eventually catch DataFormatException and rethrow with more detail
about the object that cannot be inflated, with the DFE in the chain.

Change-Id: I64ed2a471520e48283675c6210c6db8a60634635

8 years agoMerge "Prepare 4.5.0-SNAPSHOT builds"
Matthias Sohn [Wed, 1 Jun 2016 22:13:33 +0000 (18:13 -0400)]
Merge "Prepare 4.5.0-SNAPSHOT builds"

8 years agoDfsInserter: Optionally disable existing object check 23/74323/2
Dave Borowitz [Wed, 1 Jun 2016 21:07:19 +0000 (17:07 -0400)]
DfsInserter: Optionally disable existing object check

When using a DfsInserter for high-throughput insertion of many
objects (analogous to git-fast-import), we don't necessarily want to
do a random object lookup for each. It'll be faster from the
inserter's perspective to insert the duplicate objects and let a later
GC handle the deduplication.

Change-Id: Ic97f5f01657b4525f157e6df66023f1f07fc1851

8 years agoPrepare 4.5.0-SNAPSHOT builds 32/74332/1
Matthias Sohn [Wed, 1 Jun 2016 20:49:55 +0000 (22:49 +0200)]
Prepare 4.5.0-SNAPSHOT builds

Change-Id: I572fe9fea0e5ca0bec4648c916ae95a5b1ccf125
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoPrepare 4.4.0-SNAPSHOT builds 15/74315/1
Matthias Sohn [Wed, 1 Jun 2016 20:36:21 +0000 (22:36 +0200)]
Prepare 4.4.0-SNAPSHOT builds

Change-Id: Ib41dfe4103f013ba87a1ce62ee24bc9e10300eff
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoAdd missing @Test annotations 09/74309/2
Hugo Arès [Wed, 1 Jun 2016 19:56:18 +0000 (15:56 -0400)]
Add missing @Test annotations

Change-Id: Ie5ffcbf18233dc9b3eb232f714b5b58b6b93f4e0
Signed-off-by: Hugo Arès <hugo.ares@ericsson.com>
8 years agoAdd missing @Test annotation in RepositoryCacheTest 01/74301/4
Hugo Arès [Wed, 1 Jun 2016 18:54:53 +0000 (14:54 -0400)]
Add missing @Test annotation in RepositoryCacheTest

Change-Id: I25a9b294084f7b9769efa67001a4973647da4079
Signed-off-by: Hugo Arès <hugo.ares@ericsson.com>
8 years agoJGit v4.4.0.201606011500-rc2 98/74298/1 v4.4.0.201606011500-rc2
Matthias Sohn [Wed, 1 Jun 2016 18:37:53 +0000 (20:37 +0200)]
JGit v4.4.0.201606011500-rc2

Change-Id: Ifd7b7baba7d676a630e2f742d369c4186ea450a6
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoMerge branch 'master' into stable-4.4 39/74239/1
Matthias Sohn [Wed, 1 Jun 2016 14:09:40 +0000 (16:09 +0200)]
Merge branch 'master' into stable-4.4

* master:
  Fix javadoc errors and unused imports introduced by ddd0fe25
  RepoCommand: record manifest shallow recommendation in .gitmodules
  RepoCommand: record manifest groups as submodule labels
  Remove the deprecated TestRepository.getClock() method
  Replace use of deprecated method Repository.getRef()
  [findBugs] Prevent potential NPE in
    FileLfsRepository.getOutputStream()
  Better report on client side if push failed due to too large object
  [findBugs] Prevent potential NPE in CloneCommand.init()
  RepoCommand: remove --record-remote-branches
  RepoCommandTest: Improve assertion message for remote branch recording

Change-Id: I4fbce4f84925a933fcc9a48058ed6793f5821b97
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoFix javadoc errors and unused imports introduced by ddd0fe25 85/74185/2
Matthias Sohn [Wed, 1 Jun 2016 08:16:00 +0000 (10:16 +0200)]
Fix javadoc errors and unused imports introduced by ddd0fe25

Change-Id: I2d17115843e453c71febd4a58527effe658b48fd
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoRepoCommand: record manifest shallow recommendation in .gitmodules 40/73840/7
Stefan Beller [Tue, 31 May 2016 22:19:52 +0000 (15:19 -0700)]
RepoCommand: record manifest shallow recommendation in .gitmodules

Git core learned about the submodule.<name>.shallow option in
.gitmodules files, which is a recommendation to clone a submodule
shallow. A repo manifest may record a clone depth recommendation as
an optional field, which contains more information than a binary
shallow/nonshallow recommendation, so any attempted conversion may be
lossy. In practice the clone depth recommendation is either '1' or doesn't
exist, which is the binary behavior we have in Git core.

Change-Id: I51aa9cb6d1d9660dae6ab6d21ad7bae9bc5325e6
Signed-off-by: Stefan Beller <sbeller@google.com>
8 years agoRepoCommand: record manifest groups as submodule labels 53/71653/12
Stefan Beller [Tue, 31 May 2016 22:18:20 +0000 (15:18 -0700)]
RepoCommand: record manifest groups as submodule labels

Git core learned about attributes in pathspecs:

    pathspec: allow querying for attributes

    The pathspec mechanism is extended via the new
    ":(attr:eol=input)pattern/to/match" syntax to filter paths so that it
    requires paths to not just match the given pattern but also have the
    specified attrs attached for them to be chosen.

(177161a5f7, 2016-05-20)

We intend to use these pathspec attribute patterns for submodule
grouping, similar to the grouping in repo. So the RepoCommand which
translates repo manifest files into submodules should propagate this
information along. This requires writing information to the
.gitattributes file instead of the .gitmodules file. For now we just
overwrite any existing .gitattributes file and do not care about prior
attributes set. If this becomes an issue we need to figure out how to
correctly amend the grouping information to an existing .gitattributes
file.

Change-Id: I0f55b45786b6b8fc3d5be62d7f6aab9ac00ed60e
Signed-off-by: Stefan Beller <sbeller@google.com>
8 years agoRemove the deprecated TestRepository.getClock() method 90/74090/1
Terry Parker [Tue, 31 May 2016 17:14:55 +0000 (10:14 -0700)]
Remove the deprecated TestRepository.getClock() method

Gitles was the holdout and TestRepository.getClock() was removed via:
https://gerrit.googlesource.com/gitiles/+/f10481d8384d1695e6981b805c4e5e462e4b71ea

Change-Id: I90c0fc17be4891545b097a49763b0f0c202cc004
Signed-off-by: Terry Parker <tparker@google.com>
8 years agoReplace use of deprecated method Repository.getRef() 53/73253/2
Matthias Sohn [Fri, 20 May 2016 09:28:21 +0000 (11:28 +0200)]
Replace use of deprecated method Repository.getRef()

Change-Id: Iecf2b8deafc4991cc3333702fb9fa0638be7b914
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years ago[findBugs] Prevent potential NPE in FileLfsRepository.getOutputStream() 71/73171/3
Matthias Sohn [Thu, 19 May 2016 13:31:51 +0000 (15:31 +0200)]
[findBugs] Prevent potential NPE in FileLfsRepository.getOutputStream()

Change-Id: I6f91997e8a976e5f4ace91c082d8b9adf1451adc
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoBetter report on client side if push failed due to too large object 33/73433/3
Matthias Sohn [Mon, 23 May 2016 23:12:20 +0000 (01:12 +0200)]
Better report on client side if push failed due to too large object

JGits PushCommand and BasePackPushConnection were throwing a generic
exception when the pushed pack-file was rejected by the server since it
contained too large objects. Teach JGit to better analyze the server's
response to detect this situation and throw a more specific exception.

Detect this situation by parsing the status line sent by the server.
This change only recognizes the response sent by a JGit based server.
All other servers which report such problems in a different way still
lead to a generic TransportExceptions.

Also see https://git.eclipse.org/r/#/c/46348/

Change-Id: I8d6d65e4585ebb3846f7207e7d1a2f82fa9cbd86
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years ago[findBugs] Prevent potential NPE in CloneCommand.init() 68/73168/3
Matthias Sohn [Thu, 19 May 2016 13:25:02 +0000 (15:25 +0200)]
[findBugs] Prevent potential NPE in CloneCommand.init()

File.listFiles() returns null if the File is not a directory, improve
validation of directory and gitDir to fix this.

Change-Id: I763d08835faf96a0beb8e706992df0908526bd2c
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoMerge "RepoCommandTest: Improve assertion message for remote branch recording"
Terry Parker [Thu, 26 May 2016 22:10:25 +0000 (18:10 -0400)]
Merge "RepoCommandTest: Improve assertion message for remote branch recording"

8 years agoRepoCommand: remove --record-remote-branches 57/71657/5
Stefan Beller [Fri, 29 Apr 2016 00:27:57 +0000 (17:27 -0700)]
RepoCommand: remove --record-remote-branches

This function only works in bare mode, and the command line works in
non-bare mode, so there's no point in pretending to support it here.

Change-Id: Ia017aded93d072bdb9947ec08c424256c3abe438
Signed-off-by: Stefan Beller <sbeller@google.com>
8 years agoRepoCommandTest: Improve assertion message for remote branch recording 36/71936/3
Stefan Beller [Tue, 3 May 2016 18:27:13 +0000 (11:27 -0700)]
RepoCommandTest: Improve assertion message for remote branch recording

Change-Id: Ic14e9f9c4bf007b464e463f5047ec5a8d0b9236c
Signed-off-by: Stefan Beller <sbeller@google.com>
8 years agoPrepare 4.4.0-SNAPSHOT builds 68/73668/1
Matthias Sohn [Wed, 25 May 2016 21:30:21 +0000 (23:30 +0200)]
Prepare 4.4.0-SNAPSHOT builds

Change-Id: Iba6e423294d3315465648d19087a674a73b5ef28
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoJGit v4.4.0.201605250940-rc1 01/73601/1 v4.4.0.201605250940-rc1
Matthias Sohn [Wed, 25 May 2016 13:14:46 +0000 (15:14 +0200)]
JGit v4.4.0.201605250940-rc1

Change-Id: Idd8e1664730b979cfbd9a2196081a48a1efa3330
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoUpdate Orbit repository for Neon to R20160520211859 95/73595/1
Matthias Sohn [Wed, 25 May 2016 13:03:04 +0000 (15:03 +0200)]
Update Orbit repository for Neon to R20160520211859

Change-Id: I5e051a652848d8aae0d10c9e1bd42f6b320145f9
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoMerge branch 'master' into stable-4.4 92/73492/1
Matthias Sohn [Tue, 24 May 2016 14:59:15 +0000 (16:59 +0200)]
Merge branch 'master' into stable-4.4

* master:
  JGit CLI: allow to call git init with specific directory
  Redirect all Show output to outs
  Support git config [include] section with absolute path(s)
  Added filter for merge and non-merges commits.
  [findBugs] Prevent potential NPE in FS_POSIX.readUmask()
  [findBugs] Fix calculation of host header in SignerV4
  Update Orbit repository to S20160518051658 for Neon RC2
  Fix StashApply regarding handling of untracked files
  GC should not pack objects only referenced by ORIG_HEAD,...
  Make sure to overwrite files when "reset --hard" detects conflicts
  Allow setting FileMode to executable when applying patches in
    ApplyCommand
  Fix config value get to return last instead of 1st just like git
  Remove UTF-8 checking duplication in Config lib subclasses
  Update Maven plugins
  Fix type parameter in javadoc in TestRepository.delete(String ref)
  TestRepository: Add delete() method
  Make BaseReceivePack.setAtomic public
  ReceivePack: Pass atomic setting from client to BatchRefUpdate

Change-Id: I5c9c5b7ccb23fb48b44b3da10b2c5d876d043d24
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoMerge branch 'stable-4.3' into stable-4.4 91/73491/1
Matthias Sohn [Tue, 24 May 2016 14:44:03 +0000 (16:44 +0200)]
Merge branch 'stable-4.3' into stable-4.4

* stable-4.3:
  Fix computation of id in WorkingTreeIterator with autocrlf and
    smudging
  Prepare 4.3.2-SNAPSHOT builds
  JGit v4.3.1.201605051710-r
  Scan loose ref before packed in case gc about to remove the loose
  Fix possible NPEs when reporting transport errors
  Fix calling of clean/smudge filters from Checkout,MergeCommands
  Fix ApplyCommand when result of patch is an empty file

Change-Id: I829f06699f6670e519d04c927bdba4b82df29199
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoFix computation of id in WorkingTreeIterator with autocrlf and smudging 91/73291/2
Christian Halstrick [Wed, 18 May 2016 13:03:51 +0000 (15:03 +0200)]
Fix computation of id in WorkingTreeIterator with autocrlf and smudging

JGit failed to do checkouts when the index contained smudged entries and
autocrlf was on. In such cases the WorkingTreeIterator calculated the
SHA1 sometimes on content which was not correctly filtered. The SHA1 was
computed on content which two times went through a lf->crlf conversion.

We used to tell the treewalk whether it is a checkin or checkout
operation and always use the related filters when reading any content.
If on windows and autocrlf is true and we do a checkout operation then
we always used a lf->crlf conversion on any text content. That's not
correct. Even during a checkout we sometimes need the crlf->lf
conversion. E.g. when calculating the content-id for working-tree
content we need to use crlf->lf filtering although the overall operation
type is checkout.

Often this bug does not have effects because we seldom compute the
content-id of filesystem content during a checkout. But we do need to
know whether a file is dirty or not before we overwrite it during a
checkout. And if the index entries are smudged we don't trust the index
and compute filesystem-content-sha1's explicitly.

This caused EGit not to be able to switch branches anymore on Windows
when autocrlf was true. EGit denied the checkout because it thought
workingtree files are dirty because content-sha1 are computed on wrongly
filtered content.

Bug: 493360
Change-Id: I1072a57b4c529ba3aaa50b7b02d2b816bb64a9b8
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoJGit CLI: allow to call git init with specific directory 51/73351/2
Rüdiger Herrmann [Sat, 21 May 2016 13:11:29 +0000 (15:11 +0200)]
JGit CLI: allow to call git init with specific directory

With this change it is possible to initialize repositories with
'git init /path/to/new/repo'

Change-Id: Ia9b288b4fb34887e8f5e2f3f270e521c44d41b6a
Signed-off-by: Rüdiger Herrmann <ruediger.herrmann@gmx.de>
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoRedirect all Show output to outs 75/73275/2
Rüdiger Herrmann [Fri, 20 May 2016 12:06:08 +0000 (14:06 +0200)]
Redirect all Show output to outs

The Show command wrote all diffs to System.out instead of 'outs.

Bug: 494143
Change-Id: Ibc78e9a058b7a32d536e03e294c1d933b6c26ba7
Signed-off-by: Rüdiger Herrmann <ruediger.herrmann@gmx.de>
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoSupport git config [include] section with absolute path(s) 44/72444/5
Marco Miller [Fri, 6 May 2016 17:18:38 +0000 (13:18 -0400)]
Support git config [include] section with absolute path(s)

As per [1], but limited to absolute paths indeed. No support yet for
tilde or $HOME expansion. Support for the --[no-]includes options
([1]) is not part of this commit scope either, but those options'
defaults are in effect as described in [1].

[1] https://git-scm.com/docs/git-config

Included path can be a config file that includes other path-s in turn.
An exception is thrown if too many recursions (circular includes)
happen because of ill-specified config files.

Change-Id: I700bd7b7e1625eb7de0180f220c707d8e7b0930b
Signed-off-by: Marco Miller <marco.miller@ericsson.com>
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoAdded filter for merge and non-merges commits. 07/70507/4
Alcemir Santos [Tue, 12 Apr 2016 18:11:32 +0000 (20:11 +0200)]
Added filter for merge and non-merges commits.

Added the option to retrieve either merge or non-merge commits in the
LogCommand.

Change-Id: Ie0e1c515a823f2392783f1a47d385c31230e8167
Signed-off-by: Alcemir Santos <alcemir.santos@gmail.com>
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years ago[findBugs] Prevent potential NPE in FS_POSIX.readUmask() 63/73163/1
Matthias Sohn [Thu, 19 May 2016 13:04:46 +0000 (15:04 +0200)]
[findBugs] Prevent potential NPE in FS_POSIX.readUmask()

BufferedReader.readLine() returns null if the end of the stream has been
reached.

Change-Id: I83102bbfb1316407247e0f29023077af9e8d9606
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years ago[findBugs] Fix calculation of host header in SignerV4 61/73161/2
Matthias Sohn [Thu, 19 May 2016 12:50:12 +0000 (14:50 +0200)]
[findBugs] Fix calculation of host header in SignerV4

We ignored the returned concatenation of host name and port number. Fix
this and use a StringBuilder to avoid creation of unnecessary String
objects.

Change-Id: I61fac639d4a4c95412eb41a0f9131d0c38aca794
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoPrepare 4.3.2-SNAPSHOT builds 36/73136/1
Matthias Sohn [Thu, 19 May 2016 08:17:39 +0000 (10:17 +0200)]
Prepare 4.3.2-SNAPSHOT builds

Change-Id: I71997a8be83841765111cb7b55506bd8edd8adad
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoUpdate Orbit repository to S20160518051658 for Neon RC2 06/73106/1
Matthias Sohn [Wed, 18 May 2016 22:55:24 +0000 (00:55 +0200)]
Update Orbit repository to S20160518051658 for Neon RC2

Change-Id: If1bc2001108091770bccee7fa59b0e7f5e3974d7
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoFix StashApply regarding handling of untracked files 12/71712/3
Christian Halstrick [Fri, 29 Apr 2016 14:54:23 +0000 (16:54 +0200)]
Fix StashApply regarding handling of untracked files

There was a bug regarding how JGit handled untracked files when applying
a stash. Problem was that untracked files are applied by doing a merge
of HEAD and untrackedFiles commit with a merge base of the stashed HEAD.
That's wrong because the untrackedFiles commit has no parent and
contains only the untracked files. Using stashed HEAD as merge base
leads to unneccessary conflicts on files not event included in the
untrackedFiles commit.

Imagine this graph directly before you want to apply a stash which was
based on 0. You want to apply the stash on current HEAD commit 5.

  5 (HEAD,master)
 /
0---+
 \   \
  1---3 (WIP on master)
     /
    2 (untracked files on master)

Imagine for a specific (tracked) file f
- commit 0 contains X
- HEAD contains Y
- commit 2 (the untracked files) does not contain file f

A merge of 2 and 5 with a merge base of 0 leads to a conflict. The 5
commit wants to modify the file and the 2 commit wants to delete the
file -> conflict.

If no merge base is set then the semantic is correct.

Thanks to Bow for finding this bug and providing the test case.

Bug: 485467
Change-Id: I453fa6ec337f81b2a52c4f51f23044faeec409e6
Also-by: Bow Ruggeri <bow@bow.net>
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoGC should not pack objects only referenced by ORIG_HEAD,... 69/72569/2
Christian Halstrick [Wed, 11 May 2016 20:36:10 +0000 (22:36 +0200)]
GC should not pack objects only referenced by ORIG_HEAD,...

There are references which are returned by
RefDatabase.getAdditionalRefs() which are allowed to point to
non-existing objects. These refs should not save objects from being
garbage collected. Examples for these references are ORIG_HEAD,
MERGE_HEAD, FETCH_HEAD and CHERRY_PICK_HEAD. Native git will not take
these references into account when doing a gc and therefore these
references may point to non-existing objects after a gc. Teach JGit's
GC to behave the same: ignore additional refs if they don't start with
"refs/". Examples for refs returned by getAdditionalRefs() which do
start with "refs/" are the bootstrap refs when using reftree's (see
commit 115f1ad3974d1162b33d1c8eff466019d1f249f3). See also
http://article.gmane.org/gmane.comp.version-control.git/294126.

Bug: 479697
Change-Id: I10e40589f13e72aacdd9f86f3b44696fd1cd068a
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoMake sure to overwrite files when "reset --hard" detects conflicts 99/57799/6
Christian Halstrick [Fri, 9 Oct 2015 14:14:10 +0000 (16:14 +0200)]
Make sure to overwrite files when "reset --hard" detects conflicts

When performing a "reset --hard" a checkout is done. The pathes are
checked for potential checkout conflicts. But in the end for all
remaining conflicts these files are simply deleted from the working
tree. That's not the right strategy to handle checkout conflicts during
"reset --hard". Instead for every conflict we should simply checkout the
merge commit's content.

This is different from native gits behavior which reports errors when
during a "checkout --hard" a file shows up where a folder was expected.

  "warning: unable to unlink d/c.txt: Not a directory"

Why it is like that in native git was asked in
http://permalink.gmane.org/gmane.comp.version-control.git/279482. Unless
it is explained why native git why this error is reported JGit should
overwrite the files.

Bug: 474842
Change-Id: I08e23822a577aaf22120c5137eb169b6bd08447b
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoAllow setting FileMode to executable when applying patches in ApplyCommand 58/71758/3
Nadav Cohen [Mon, 2 May 2016 02:06:39 +0000 (19:06 -0700)]
Allow setting FileMode to executable when applying patches in ApplyCommand

git-apply allows modifying file modes in patched files using either
"new mode" or "new file mode" headers. This patch adds support for
setting files as executables and vice-versa.

Change-Id: I24848966b46f686f540a8efa8150b42e0d9c3ad1
Signed-off-by: Nadav Cohen <nadavcoh@gmail.com>
8 years agoFix config value get to return last instead of 1st just like git 96/72296/4
Marco Miller [Fri, 6 May 2016 20:19:42 +0000 (16:19 -0400)]
Fix config value get to return last instead of 1st just like git

Before this fix, getting the value of 'key' below used to return
value1. This fix makes it so that value3 gets returned instead,
just like native git's get.

[section]
  key = value1
  key = value2
  key = value3

Change-Id: Iccb24de9b63c3ad8646c909494ca3f8c9ed6e29c
Signed-off-by: Marco Miller <marco.miller@ericsson.com>
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoRemove UTF-8 checking duplication in Config lib subclasses 15/72315/2
Marco Miller [Mon, 9 May 2016 16:36:00 +0000 (12:36 -0400)]
Remove UTF-8 checking duplication in Config lib subclasses

Change-Id: Ib9f0ae8207000a36c5bf1a92fcc2c32efc4c0984
Signed-off-by: Marco Miller <marco.miller@ericsson.com>
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoUpdate Maven plugins 65/72365/1
Matthias Sohn [Sat, 7 May 2016 21:43:23 +0000 (23:43 +0200)]
Update Maven plugins

to the following versions:
build-helper-maven-plugin 1.10
eclipse-jarsigner-plugin 1.1.3
findbugs-maven-plugin 3.0.3
jacoco-maven-plugin 0.7.6.201602180812
maven-clean-plugin 3.0.0
maven-compiler-plugin 3.5.1
maven-javadoc-plugin 2.10.3
maven-pmd-plugin 3.6
maven-project-info-reports-plugin 2.9
maven-resources-plugin 2.7
maven-shade-plugin 2.4.3
maven-site-plugin 3.5.1
maven-source-plugin 3.0.0
maven-surefire-plugin 2.19.1
maven-surefire-report-plugin 2.19.1
tycho 0.25
tycho-extras 0.25
wagon-ssh 2.10

Change-Id: I4dc57de77ab7838964e8fe3de1d50f28d67fcf4b
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoJGit v4.3.1.201605051710-r 68/72168/1 v4.3.1.201605051710-r
Matthias Sohn [Thu, 5 May 2016 21:08:18 +0000 (23:08 +0200)]
JGit v4.3.1.201605051710-r

Change-Id: I25fb72cc17d7a27b0b69746d907dac9ccd4d7997
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoFix type parameter in javadoc in TestRepository.delete(String ref) 66/72166/1
Matthias Sohn [Thu, 5 May 2016 20:51:14 +0000 (22:51 +0200)]
Fix type parameter in javadoc in TestRepository.delete(String ref)

Type parameter T extends AnyObjectId in signature of update(String, T)

Change-Id: I9c13ddc572b8e94d5c7854f4de1f8206cb5e99ca
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoMerge branch 'stable-4.3' 12/72112/2
Matthias Sohn [Wed, 4 May 2016 23:13:35 +0000 (01:13 +0200)]
Merge branch 'stable-4.3'

* stable-4.3:
  Scan loose ref before packed in case gc about to remove the loose
  Fix possible NPEs when reporting transport errors
  Fix calling of clean/smudge filters from Checkout,MergeCommands
  Fix ApplyCommand when result of patch is an empty file

Change-Id: I0dc76b7a8c87ce8e0386a1b9e0fa92a3aa62abf7
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoScan loose ref before packed in case gc about to remove the loose 40/71240/4
Marco Miller [Wed, 20 Apr 2016 21:42:34 +0000 (17:42 -0400)]
Scan loose ref before packed in case gc about to remove the loose

Before this change, jgit used to read packed-refs before scanning
loose refs. That was not a problem if gc didn't run concurrently. When
gc did run concurrently with such refs reading, that order sometimes
broke the latter. This lead to reading an older version of a ref's
tip, which meant "losing" the real tip or commit. The specific
read-Vs-gc concurrency scenario which broke reading that way follows:

1. let ref R be in packed-refs and R' be in loose
2. jgit starts reading packed-refs
3. gc also starts its business around that very time
4. jgit still has the time to read R from packed-refs
5. as gc is not done yet updating packed-refs with R'
6. jgit then starts scanning loose refs (or is about to)
7. gc quickly ends up being done moving loose R' to packed-refs
8. so gc (quickly) removes loose refs
9. -while jgit is scanning loose refs, now gone
10. so jgit assumes no loose to consider => packed-refs winning
11. so jgit wrongfully returns R (from 4.) as the tip, instead of R'.

This fix switches the order so loose refs are scanned (secured) before
taking the time to read packed-refs. This way, knowledge of the
likelier tip is guaranteed for ref reading to return the true tip
- despite concurrent gc. If there is no loose ref to scan, jgit reads
packed-refs and lands on R' (or S), which it then returns, as
expected. The gerrit issue [1] should be solved by this fix.

[1] https://code.google.com/p/gerrit/issues/detail?id=2302

Change-Id: Ibd120120a361a3a6ed565f3836afc1db706fbcdd
Signed-off-by: Marco Miller <marco.miller@ericsson.com>
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoTestRepository: Add delete() method 11/72111/2
Jonathan Nieder [Wed, 4 May 2016 22:48:36 +0000 (15:48 -0700)]
TestRepository: Add delete() method

Change-Id: Ib4841397ceab44bd38cf2f154314ac36ded73ae0

8 years agoMake BaseReceivePack.setAtomic public 09/72109/1
Jonathan Nieder [Wed, 4 May 2016 22:01:47 +0000 (15:01 -0700)]
Make BaseReceivePack.setAtomic public

This makes atomic more consistent with other properties like
allowNonFastForwards.

Change-Id: Ie3b41f14ffba1d0b206ffecc697377417daa6973

8 years agoReceivePack: Pass atomic setting from client to BatchRefUpdate 93/72093/1
Jonathan Nieder [Wed, 4 May 2016 21:00:42 +0000 (14:00 -0700)]
ReceivePack: Pass atomic setting from client to BatchRefUpdate

Change-Id: I0e4e6cef693e8138562f5ca345e0db61a8abef9c

8 years agoPrepare 4.4.0-SNAPSHOT builds 88/72088/1
Matthias Sohn [Wed, 4 May 2016 20:00:12 +0000 (22:00 +0200)]
Prepare 4.4.0-SNAPSHOT builds

Change-Id: Ib95be1300b1b95cc7e8153170d509282bdc4e328
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoJGit v4.4.0.201605041135-m1 48/72048/1 v4.4.0.201605041135-m1
Matthias Sohn [Wed, 4 May 2016 15:35:15 +0000 (17:35 +0200)]
JGit v4.4.0.201605041135-m1

Change-Id: Ic9b6d7dae293887c3ac3a11f92e153501abad1dc
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoRun Maven build in release.sh concurrently to speedup release 47/72047/1
Matthias Sohn [Wed, 4 May 2016 15:33:40 +0000 (17:33 +0200)]
Run Maven build in release.sh concurrently to speedup release

Change-Id: Iad8696825bb81becab945cd9ed2c33bea3778e17
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoPersonIdent: Make appendSanitized public 50/71950/2
Dave Borowitz [Tue, 3 May 2016 20:18:52 +0000 (16:18 -0400)]
PersonIdent: Make appendSanitized public

Change-Id: I337c90fff3c013819a42a7622ac6bacc72828c07

8 years agoConfig: Improve documentation for setStringList 52/71652/2
Stefan Beller [Thu, 28 Apr 2016 22:18:35 +0000 (15:18 -0700)]
Config: Improve documentation for setStringList

Change-Id: Idccfa0dfd6db324236f7cb26ab28bdbd80581a8b
Signed-off-by: Stefan Beller <sbeller@google.com>
8 years agoPrepare Neon target platform 64/69964/5
Matthias Sohn [Mon, 4 Apr 2016 09:12:21 +0000 (11:12 +0200)]
Prepare Neon target platform

also use the Neon target platform as the default target platform.

Neon Eclipse platform requires BREE 8 so we have to use Java 8 at least
for the JGit packaging build (for the compiler settings we still stick
to source and target 1.7 since we want to still support Java 7)
otherwise unpacking platform pack200 archives will fail since they are
built using Java 8 and hence cannot be unpacked using Java 7's
unpack200.

Update org.junit from 4.11 to 4.11 and org.apache.ant from from 1.9.2 to
1.9.6 since the older versions are not available in Neon orbit version

Ignore a couple of tests in ResourceUtilTest which now fail [1] since
bug 476585 was fixed in Neon M6.

CQ: 10694
CQ: 11308
Change-Id: I1a99a3ac2148693e21c57df5aeb848035b52b97b
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
8 years agoPersonIdent: Strip some special chars from external strings 11/71711/2
Dave Borowitz [Fri, 29 Apr 2016 15:10:36 +0000 (11:10 -0400)]
PersonIdent: Strip some special chars from external strings

The special characters <> and '\n' interfere with parsing of
identities. C git strips these special characters, so we should too.

Rather than allocating extra strings by calling String#trim(), add a
few lines to our sanitization method to perform the same trimming as
described in String's Javadoc.

Change-Id: I96edcb93a2fc194ee354d60566d352299742a52f

8 years agoPersonIdent: Document that name and email aren't trimmed 10/71710/2
Dave Borowitz [Fri, 29 Apr 2016 14:47:17 +0000 (10:47 -0400)]
PersonIdent: Document that name and email aren't trimmed

This might be somewhat surprising behavior to users who might
naturally assume the following invariant:
  ident.equals(parseIdent(ident.toExternalString()))

This invariant does not hold since whitespace is only trimmed during
serialization. We don't want to mess with the strings during
initialization, as this is called during the highly-optimized commit
parsing codepath.

Change-Id: I081a603f0ac0e33167462244779b0ff3ad51e80c

8 years agoFix possible NPEs when reporting transport errors 98/71498/1
Christian Halstrick [Wed, 27 Apr 2016 07:47:28 +0000 (09:47 +0200)]
Fix possible NPEs when reporting transport errors

There was a bug in JGit which caused NPEs being thrown when Transport
errors should be reported. Avoid the NPE to let the original error show
up.

Change-Id: I9e1e2b0195bd61b7e531a09d0fc7bce109bd6515

8 years agoExpose the ObjectInserter that created an ObjectReader 59/71359/4
Dave Borowitz [Mon, 25 Apr 2016 17:36:46 +0000 (13:36 -0400)]
Expose the ObjectInserter that created an ObjectReader

We've found in Gerrit Code Review that it is common to pass around
both an ObjectReader (or more commonly a RevWalk wrapping one) and an
ObjectInserter. These code paths often assume that the ObjectReader
can read back any objects created by the ObjectInserter without
flushing. However, we previously had no way to enforce that constraint
programmatically, leading to hard-to-spot problems.

Provide a solution by exposing the ObjectInserter that created an
ObjectReader, when known. Callers can either continue passing both
objects and check:
  reader.getCreatedFromInserter() == inserter
or they can just pass around ObjectReader and extract the inserter
when it's needed (checking that it's not null at usage time).

Change-Id: Ibbf5d1968b506f6b47030ab1b046ffccb47352ea

8 years agoAdd ObjectReader.Filter, like in ObjectInserter 58/71358/2
Dave Borowitz [Mon, 25 Apr 2016 17:28:43 +0000 (13:28 -0400)]
Add ObjectReader.Filter, like in ObjectInserter

Change-Id: If34ad8185dc8192435e622995fdca598b86add7e

8 years agoFix calling of clean/smudge filters from Checkout,MergeCommands 33/70833/3
Christian Halstrick [Tue, 12 Apr 2016 12:38:37 +0000 (14:38 +0200)]
Fix calling of clean/smudge filters from Checkout,MergeCommands

When CheckoutCommand or MergeCommand is called then not in all situation
the treewalks have been prepared to support clean/smudge filters. Fix
this

Bug: 491505
Change-Id: Iab5608049221c46d06812552ab97299e44d59e64

8 years agoUpdate buck to e64a2e2ada022f81e42be750b774024469551398 19/71119/1
David Pursehouse [Thu, 21 Apr 2016 07:31:24 +0000 (16:31 +0900)]
Update buck to e64a2e2ada022f81e42be750b774024469551398

To align with the version used in Gerrit's master build.

Change-Id: I3b6e21bf367ad1fb3598dc06b968aee6187d5aed
Signed-off-by: David Pursehouse <david.pursehouse@sonymobile.com>
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
8 years agoSupport per-BatchRefUpdate atomic transactions 62/70962/2
Dave Borowitz [Tue, 19 Apr 2016 13:24:18 +0000 (09:24 -0400)]
Support per-BatchRefUpdate atomic transactions

Repurpose RefDatabase#performsAtomicTransactions() slightly, to
indicate that the backend _supports_ atomic transactions, rather than
the current definition, which is that the backend always _uses_ atomic
transactions regardless of whether or not the caller actually wants
them. Allow BatchRefUpdate callers to turn off atomic transactions by
calling setAtomic(false). Defaulting to true means this is backwards
compatible.

Change-Id: I6df78d7df65ab147b4cce7764bd3101db985491c