]> source.dussan.org Git - jgit.git/log
jgit.git
11 years agoUploadPack: refactor want validation 02/14002/4
Dave Borowitz [Mon, 24 Jun 2013 00:02:29 +0000 (17:02 -0700)]
UploadPack: refactor want validation

Associate each RequestPolicy with an implementation of a
RequestValidator interface that contains the validation logic. The
checkWants method is only called if there are wants that were not
advertised, since clients may always request any advertised want
according to the git protocol. Calling the method only once at the
end of parsing the want list also means policy implementations can be
stateful, unlike the previous switch statement inside a loop.

For the special handling of unidirectional pipes, simply check
isBiDirectional() and delegate to other implementations if necessary.

Change-Id: I52a174999ac3a5aca46d3469cb0b81edd1710580

11 years agoUploadPack: set RefFilter from TransportConfig 00/13900/7
Dave Borowitz [Tue, 18 Jun 2013 23:41:58 +0000 (16:41 -0700)]
UploadPack: set RefFilter from TransportConfig

Teach TransportConfig to respect uploadpack.hiderefs, which is new in
C git 1.8.2.

Change-Id: Id12e7f00b9a60258e996410f67fa10616459f53f

11 years agoUploadPack: configure RequestPolicy with TransportConfig 99/13899/7
Dave Borowitz [Tue, 18 Jun 2013 22:31:17 +0000 (15:31 -0700)]
UploadPack: configure RequestPolicy with TransportConfig

C git 1.8.2 supports setting the equivalent of RequestPolicy.TIP with
uploadpack.allowtipsha1. Parse this into TransportConfig and use it
from UploadPack. An explicitly set RequestPolicy overrides the config,
and the policy may still be upgraded on a unidirectional connection to
avoid races.

Defer figuring out the effective RequestPolicy to later in the
process. This is a minor semantic change to fix a bug: previously,
calling setRequestPolicy(ADVERTISED) _after_ calling
setBiDirectionalPipe(true) would have reintroduced the race condition
otherwise fixed by 01888db892aa9590862d886c01f3b293140db153.

Change-Id: I264e028a76574434cecb34904d9f5944b290df78

11 years agoUploadPack: advertise allow-tip-sha1-in-want 98/13898/7
Dave Borowitz [Tue, 18 Jun 2013 22:07:19 +0000 (15:07 -0700)]
UploadPack: advertise allow-tip-sha1-in-want

This protocol capability, new in C git 1.8.2, corresponds to
RequestPolicy.TIP, so advertise it if that request policy was set.

Change-Id: I0d52af8a7747e951a87f060a5124f822ce1b2b26

11 years agoAdd RequestPolicy.TIP to allow fetching non-advertised ref tips 97/13897/6
Dave Borowitz [Tue, 18 Jun 2013 21:58:44 +0000 (14:58 -0700)]
Add RequestPolicy.TIP to allow fetching non-advertised ref tips

Users of UploadPack may set a custom RefFilter or AdvertisedRefsHook
that limits which refs are advertised, but clients may learn of a
SHA-1 that the server should have as a ref tip through some
alternative means. Support serving such objects from the server side
with a new RequestPolicy.

As with ADVERTISED, we need a special relaxed RequestPolicy to allow
commits reachable from the set of valid tips for unidirectional
connections.

Change-Id: I0d0cc4f8ee04d265e5be8221b9384afb1b374315

11 years agoMerge "Update HEAD in cherry-picking several commits"
Robin Stocker [Tue, 2 Jul 2013 11:12:32 +0000 (07:12 -0400)]
Merge "Update HEAD in cherry-picking several commits"

11 years agoUse a bucket sort for PackReverseIndex. 54/14154/3
Colby Ranger [Fri, 28 Jun 2013 17:37:56 +0000 (10:37 -0700)]
Use a bucket sort for PackReverseIndex.

Previously it took 1200ms to create a reverse index (sorted by offset).
Using a simple bucket sort algorithm, that time is reduced to 450ms.
The bucket index into the offset array is kept, in order to decrease
the binary search window.

Don't keep a copy of the offsets. Instead, use nth position
to lookup the offset in the PackIndex.

Change-Id: If51ab76752622e04a4430d9a14db95ad02f5329d

11 years agoUpdate HEAD in cherry-picking several commits 64/14164/3
Hiroshi Tomita [Sun, 30 Jun 2013 16:07:10 +0000 (01:07 +0900)]
Update HEAD in cherry-picking several commits

Without update, index is wrongly detected to be dirty
when picking the second commit.

Change-Id: Idf47ecb33e8bd38340d760806d629f67be92d2d5
Signed-off-by: Hiroshi Tomita <tomykaira@gmail.com>
Bug: 411963

11 years agoImplement get nth offset in PackIndex. 53/14153/2
Colby Ranger [Fri, 28 Jun 2013 21:02:26 +0000 (14:02 -0700)]
Implement get nth offset in PackIndex.

Currently, the offset can only be retrieved by ObjectId or iterating all
of the entries. Add a method to lookup the offset by position in the
index sorted by SHA1.

Change-Id: I45e9ac8b752d1dab47b202753a1dcca7122b958e

11 years agoMerge "Add missing @since tag"
Matthias Sohn [Wed, 26 Jun 2013 23:35:42 +0000 (19:35 -0400)]
Merge "Add missing @since tag"

11 years agoMerge "Move gc to package org.eclipse.jgit.pgm"
Christian Halstrick [Mon, 24 Jun 2013 09:32:59 +0000 (05:32 -0400)]
Merge "Move gc to package org.eclipse.jgit.pgm"

11 years agoFix HTTP response processing for WWW-Authenticate headers 85/13285/2
Alex Rukhlin [Wed, 6 Mar 2013 21:35:52 +0000 (16:35 -0500)]
Fix HTTP response processing for WWW-Authenticate headers

The original code was able to process only one WWW-Authenticate
header in an HTTP response, and if this header was not one of
two expected, authentication failed regardless of that there
could be other headers in the response.

All WWW-Authenticate headers in an HTTP response have to be
browsed to find one of supported, i.e. Basic or Digest.
By that if both are present, the Digest one should be used
as more preferable.

Bug: 357719
Change-Id: Icf601a41fec63f7d40308f3c85aaa4f71a7c095b
Signed-off-by: Alex Rukhlin <arukhlin@microsoft.com>
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
11 years agoDon't skip want validation when the client sends no haves 97/13997/1
Dave Borowitz [Fri, 21 Jun 2013 23:14:30 +0000 (16:14 -0700)]
Don't skip want validation when the client sends no haves

Change-Id: I5e80b3befca5cf1dcb06075862d6d48e6491cc0f

11 years agoMove gc to package org.eclipse.jgit.pgm 95/13995/1
Matthias Sohn [Fri, 21 Jun 2013 22:57:26 +0000 (00:57 +0200)]
Move gc to package org.eclipse.jgit.pgm

All bugs reported for gc have been fixed and it seems we reached a
stable implementation.

Change-Id: I78a96ee2103beb48325da0f6ee10b2498bdc0267
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
11 years agoAdd missing @since tag 43/13943/1
Matthias Sohn [Thu, 20 Jun 2013 07:52:11 +0000 (09:52 +0200)]
Add missing @since tag

Change-Id: I80cfc3e81d5cebf810f36ddf2760aee955c6f50a
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
11 years agoRemove fix-headers and rewrite-history 38/13938/1
Shawn Pearce [Wed, 19 Jun 2013 22:29:15 +0000 (15:29 -0700)]
Remove fix-headers and rewrite-history

These scripts were created to bootstrap the initial contribution for
Eclipse using information from the pre-Eclipse history. We are well
past the point where the project will rewrite history in order to
correct copyright statements, so these tools no longer make sense
to keep in the tip of the tree.

Change-Id: If68419ead0766035d17a21a53a3e5e761eaa70c4

11 years agoAdd a method to DfsOutputStream to read as an InputStream 21/12421/5
Dave Borowitz [Tue, 30 Apr 2013 21:40:11 +0000 (14:40 -0700)]
Add a method to DfsOutputStream to read as an InputStream

Change-Id: I0ec1f17a88bc14f22c10f9bc8d6f5b5118410e3a

11 years agoAdd the other test launchers as favorites 46/13846/2
Robin Rosenberg [Sun, 16 Jun 2013 10:03:04 +0000 (12:03 +0200)]
Add the other test launchers as favorites

The user may not see them otherwise

Change-Id: I43b7c0172870a9446cfb35c7b3fee6394f3292e3
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
11 years agoFix tests for OS X when the tmpdir is the default /tmp 45/13845/2
Robin Rosenberg [Sun, 16 Jun 2013 10:02:14 +0000 (12:02 +0200)]
Fix tests for OS X when the tmpdir is the default /tmp

/tmp is a symbolic link and some tests break when the path
gets canonicalized by JGit or Jetty. Allow Jetty to serve
symlinks by setting init parameter "aliases" to true [1].

[1] http://wiki.eclipse.org/Jetty/Howto/How_to_serve_symbolically_linked_files

Change-Id: I45359a40435e8a33def6e0bb6784b4d8637793ac
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
11 years agoFix running maven http tests on OS X 44/13844/2
Robin Rosenberg [Sun, 16 Jun 2013 09:28:36 +0000 (11:28 +0200)]
Fix running maven http tests on OS X

In 36144e12d8 tests were changed to use the system tmp directory as defined
by java.io.tmpdir, which was then overridden in the pom files to usea custom
directory that made som tests work, but not all.

Change-Id: I2fa04878f8830ad9c9b32a6f3fe8d2e2d66fe411

11 years agoDisable warning about assigning to parameter 62/12962/3
Robin Stocker [Sat, 18 May 2013 10:47:27 +0000 (12:47 +0200)]
Disable warning about assigning to parameter

See change I08bed4275af9ec52aa4d7054067ac82f6a3c9781, where fixing such
warning lead to complaints.

If fixing is not wanted, disable it instead.

Change-Id: If31d4028fa1c6377a11e83ed5688b45701cec68b

11 years agoAdd missing @since tags 34/13834/1
Matthias Sohn [Fri, 14 Jun 2013 23:10:33 +0000 (01:10 +0200)]
Add missing @since tags

Change-Id: I7f2c155cab4b5be55f7e849ff2595c8c5d804f05
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
11 years agoMerge "document empty blocks in StashApplyCommandTest"
Matthias Sohn [Fri, 14 Jun 2013 22:57:59 +0000 (18:57 -0400)]
Merge "document empty blocks in StashApplyCommandTest"

11 years agodocument empty blocks in StashApplyCommandTest 44/12544/2
Tomasz Zarna [Mon, 6 May 2013 17:27:42 +0000 (19:27 +0200)]
document empty blocks in StashApplyCommandTest

Change-Id: I5b49bd00b00b86584b912fc5f503abf29db0f56e

11 years agoPrepare 3.1.0-SNAPSHOT builds 99/13799/1
Matthias Sohn [Thu, 13 Jun 2013 13:54:22 +0000 (15:54 +0200)]
Prepare 3.1.0-SNAPSHOT builds

Change-Id: I7490a7c9558423c03e3c167ad55b9a98be9d99d9
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
11 years agoMerge branch 'stable-3.0' 98/13798/1
Matthias Sohn [Thu, 13 Jun 2013 13:51:16 +0000 (15:51 +0200)]
Merge branch 'stable-3.0'

* stable-3.0:
  Prepare post 3.0.0.201306101825-r builds
  JGit v3.0.0.201306101825-r
  Make JGit test work with both hamcrest 1.1 (juno) and 1.3 (kepler)
  Fix version.sh to not overwrite ${project.version}
  Prepare post 3.0.0 RC3 builds
  JGit v3.0.0.201306040240-rc3

Change-Id: I5b1db1f5b69bad1136dd21b956e798f63b1ba0ee
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
11 years agoPrepare post 3.0.0.201306101825-r builds 92/13792/1
Matthias Sohn [Thu, 13 Jun 2013 13:47:43 +0000 (15:47 +0200)]
Prepare post 3.0.0.201306101825-r builds

Change-Id: I299cf1addc0987ffe39140d2216ab6a98e95ce52
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
11 years agoJGit v3.0.0.201306101825-r 17/13717/2 v3.0.0.201306101825-r
Matthias Sohn [Mon, 10 Jun 2013 22:28:11 +0000 (00:28 +0200)]
JGit v3.0.0.201306101825-r

Change-Id: Ie8deab94c6263b5198f0bcb4533b1cfb3f5724b1
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
11 years agoFix warnings in ArchiveCommand 69/13669/2
Matthias Sohn [Sun, 9 Jun 2013 21:35:41 +0000 (23:35 +0200)]
Fix warnings in ArchiveCommand

- remove unnecessary imports
- fix NLS warnings
- add missing Javadoc tag

Bug: 410354
Change-Id: I2b78a2c0e92c740bed80558b17a2100c1c884416
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
11 years agoMake JGit test work with both hamcrest 1.1 (juno) and 1.3 (kepler) 61/13161/3
Robin Rosenberg [Sun, 26 May 2013 20:07:24 +0000 (22:07 +0200)]
Make JGit test work with both hamcrest 1.1 (juno) and 1.3 (kepler)

The hamcrest library has moved things around. This problem applies only
to the test, not plugin runtime.

Change-Id: I5b97f356d8595dbdc9e91d157558e40561a6a30d
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
11 years agoAdd support for "jgit archive --output=<filename>" 34/13634/1
Jonathan Nieder [Fri, 7 Jun 2013 01:32:10 +0000 (18:32 -0700)]
Add support for "jgit archive --output=<filename>"

If the --format option is not given and the output filename is,
then infer the format from that filename.  Otherwise match
"git archive" by defaulting to tar (this is a change from the
existing "jgit archive" default behavior, which was to default to
zip).

Change-Id: I5806bc48a403d05e4cfc3c180b82b33ad7cfae7f

11 years agoPick default archive format based on filename suffix 09/13609/3
Jonathan Nieder [Fri, 7 Jun 2013 01:39:04 +0000 (18:39 -0700)]
Pick default archive format based on filename suffix

Introduce a setFilename() method for ArchiveCommand so callers can
specify the intended filename of the produced archive.  If the
filename ends with .tar, the format will default to tar; if .zip, zip;
if .tar.gz, gzip-compressed tar; and so on.

This doesn't affect "jgit archive" because it doesn't support the
--output=<file> option yet.  A later patch might do that.

Change-Id: Ic0236a70f7aa7f2271c3ef11083b21ee986b4df5

11 years agoAdd long filename, large file, and non-ASCII filename support to TarFormat 33/13633/1
Jonathan Nieder [Thu, 6 Jun 2013 19:31:46 +0000 (12:31 -0700)]
Add long filename, large file, and non-ASCII filename support to TarFormat

Attempts to write entries with too-long filenames currently error out:

  $ jgit.pgm/target/jgit archive HEAD >test.tar
  java.lang.RuntimeException: file name 'org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/resolver/DefaultReceivePackFactory.java' is too long ( > 100 bytes)
          at org.apache.commons.compress.archivers.tar.TarArchiveOutputStream.putArchiveEntry(TarArchiveOutputStream.java:288)
          at org.eclipse.jgit.archive.TarFormat.putEntry(TarFormat.java:92)
          at org.eclipse.jgit.archive.TarFormat.putEntry(TarFormat.java:62)
          at org.eclipse.jgit.api.ArchiveCommand.writeArchive(ArchiveCommand.java:293)
          at org.eclipse.jgit.api.ArchiveCommand.call(ArchiveCommand.java:322)
          at org.eclipse.jgit.pgm.Archive.run(Archive.java:97)
          at org.eclipse.jgit.pgm.TextBuiltin.execute(TextBuiltin.java:174)
          at org.eclipse.jgit.pgm.Main.execute(Main.java:213)
          at org.eclipse.jgit.pgm.Main.run(Main.java:121)
          at org.eclipse.jgit.pgm.Main.main(Main.java:95)

That's because the default longFileMode is LONGFILE_ERROR, which
throws an exception for filenames longer than 100 characters.  Switch
to LONGFILE_POSIX.  While at it, handle large files and filenames with
strange encodings, too.

This requires commons compress 1.4, which introduced support for large
files and POSIX long filenames.

Change-Id: I04d5427eec0968b129f55d7a4c6021039a494828

11 years agoAdd tbz2 archive format 08/13608/1
Jonathan Nieder [Thu, 6 Jun 2013 02:12:37 +0000 (19:12 -0700)]
Add tbz2 archive format

Change-Id: Idb7ff75877a0cfe23f47e10e3f6f93386f5bb145

11 years agoFix version.sh to not overwrite ${project.version} 65/13565/1
Matthias Sohn [Tue, 4 Jun 2013 11:58:24 +0000 (13:58 +0200)]
Fix version.sh to not overwrite ${project.version}

Change-Id: If5ae792581170bcba2dc1860012cbe389d8e9f24
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
11 years agoPrepare post 3.0.0 RC3 builds 51/13551/1
Matthias Sohn [Tue, 4 Jun 2013 11:39:42 +0000 (13:39 +0200)]
Prepare post 3.0.0 RC3 builds

Change-Id: I008d55e2ef0aac9d1877b05ba73e3cf26335d430
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
11 years agoJGit v3.0.0.201306040240-rc3 29/13529/1 v3.0.0.201306040240-rc3
Matthias Sohn [Tue, 4 Jun 2013 06:43:04 +0000 (08:43 +0200)]
JGit v3.0.0.201306040240-rc3

Change-Id: I8b782e9ebe03e5f72611a21a76d80c6b20cb7845
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
11 years agoInclude o.e.j.archive into o.e.jgit feature 67/13467/1
Matthias Sohn [Sat, 1 Jun 2013 23:56:20 +0000 (01:56 +0200)]
Include o.e.j.archive into o.e.jgit feature

Also the pgm feature should depend on the jgit feature to ensure that
all needed bundles are available.

Change-Id: I670e8262cdace4323d3883717efe4b5e5e06f4c7
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
11 years agoUpdate build to use Tycho 0.18 66/13466/2
Matthias Sohn [Sat, 1 Jun 2013 22:26:59 +0000 (00:26 +0200)]
Update build to use Tycho 0.18

Change-Id: I66ffb2b6416dbbd5da11ad789dd58060b7ab09f2
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
11 years agoAdd jgit target platform to define dependencies more precisely 65/13465/4
Matthias Sohn [Fri, 31 May 2013 22:36:17 +0000 (00:36 +0200)]
Add jgit target platform to define dependencies more precisely

Avoid that the packaging build picks an older jgit version coming with
eclipse platform by using a target platform which allows to define the
dependencies more precisely.

Change-Id: I39bba3baa4517e2b5e5fe0de096e756f2904e3e9
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
11 years agoFix javadoc of FormatActivator 64/13464/3
Matthias Sohn [Sat, 1 Jun 2013 21:54:24 +0000 (23:54 +0200)]
Fix javadoc of FormatActivator

Change-Id: I64b32f71df2964da4cb2de73b34bf7e455ab5b93
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
11 years agoFix version of dependency to package org.osgi.framework 63/13463/1
Matthias Sohn [Sat, 1 Jun 2013 21:39:52 +0000 (23:39 +0200)]
Fix version of dependency to package org.osgi.framework

OSGi 4.01 comes with package org.osgi.framework version 1.3 [1] which
has the BundleActivator interface needed by org.eclipse.jgit.archive.
OSGi 5.0 matches package org.osgi.framework version 1.7 [2].

[1] http://www.osgi.org/javadoc/r4v401/
[2] http://www.osgi.org/javadoc/r5/core/

Change-Id: I10f78e5eb02b5d03395f23d2f0ad039caf565269
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
11 years agoAdd missing javadoc for archive code 54/13354/2
Jonathan Nieder [Wed, 29 May 2013 17:42:35 +0000 (10:42 -0700)]
Add missing javadoc for archive code

Document archive formats, the archive format interface, and the
parameters of the GitAPIException constructors.  Noticed by eclipse.

Reported-by: Dani Megert <Daniel_Megert@ch.ibm.com>
Change-Id: I22b5f9d4c0358bbe867c1906feec7c279e214273

11 years agoRemove unused import in Archive 53/13353/2
Jonathan Nieder [Wed, 29 May 2013 17:47:56 +0000 (10:47 -0700)]
Remove unused import in Archive

Change-Id: I0bc82e74f4acedb059322c29e13352151165ef7f

11 years agoDrop unnecessary "throws" clauses in archive code 52/13352/2
Jonathan Nieder [Wed, 29 May 2013 17:45:41 +0000 (10:45 -0700)]
Drop unnecessary "throws" clauses in archive code

Noticed by eclipse.

Change-Id: I730b290556066038efeaf2436de95415b175f351

11 years agoMove FormatActivator.start()/stop() to a separate class 69/13369/1
Jonathan Nieder [Wed, 29 May 2013 19:33:44 +0000 (12:33 -0700)]
Move FormatActivator.start()/stop() to a separate class

This makes the functionality of registering all formats from the
org.eclipse.jgit.archive package available in contexts where
FormatActivator cannot be built because the OSGi core framework is not
readily available to build against.

Change-Id: If8e3487e933783a7e12f8e1838cbfe0b5862ce80

11 years agoMerge branch 'stable-3.0' 33/13333/1
Matthias Sohn [Wed, 29 May 2013 10:27:50 +0000 (12:27 +0200)]
Merge branch 'stable-3.0'

* stable-3.0:
  Prepare post 3.0.0-rc2 builds
  JGit v3.0.0.201305281830-rc2
  Support refspecs with wildcard in middle (not only at end)
  Fix multiple bugs in RawSubStringPattern used by MessageRevFilter
  Handle short branch/tag name for setBranch in CloneCommand
  Add missing Bundle-Localization header
  Apply tree filter marks when pairing DiffEntry for renames
  Improve feature names to become understandable by end users
  Update kepler orbit version to R20130517111416
  Fix BatchRefUpdate progress-monitoring so it doesn't count twice
  Fix AnyObjectId's generic type declaration of Comparable
  Fix DiffFormatter NPEs for DiffEntry without content change
  Fix CommitCommand not to destroy repo
  Fix the parameters to an exception
  Prepare post 3.0.0 M7 builds
  JGit v3.0.0.201305080800-m7

Change-Id: Ia8441c9796f01497e0d90e672c0aaf60520a0098
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
11 years agoPrepare post 3.0.0-rc2 builds 20/13320/1
Matthias Sohn [Wed, 29 May 2013 08:36:51 +0000 (10:36 +0200)]
Prepare post 3.0.0-rc2 builds

Change-Id: Ic46832bcde80d0bf74c16cb094abd76b00552d14
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
11 years agoAdd tgz and txz archive formats 95/13295/5
Jonathan Nieder [Tue, 28 May 2013 23:51:39 +0000 (16:51 -0700)]
Add tgz and txz archive formats

Change-Id: I347e8a9a112d142ccef91cba1d6e997d645ca70a

11 years agoMaintain list of archive formats in one place 07/13307/3
Jonathan Nieder [Tue, 28 May 2013 23:51:32 +0000 (16:51 -0700)]
Maintain list of archive formats in one place

Add a static start() method to FormatActivator to allow outside
classes such as the Archive subcommand of the jgit program to use it
without a BundleContext.  This way, the list of formats only has to be
maintained in one place.

While at it, build a list of registered formats at start() time, so
stop() doesn't have to repeat the same list of formats.

Suggested-by: Shawn Pearce <spearce@spearce.org>
Change-Id: I55cb3095043568740880cc9e4f7cde05f49c363c

11 years agoJGit v3.0.0.201305281830-rc2 04/13304/1 v3.0.0.201305281830-rc2
Matthias Sohn [Tue, 28 May 2013 22:49:12 +0000 (00:49 +0200)]
JGit v3.0.0.201305281830-rc2

Change-Id: I490ad8cc7590f70783d3fbd6dd6f0e0446ae5afe
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
11 years agoSupport refspecs with wildcard in middle (not only at end) 81/12681/4
Robin Stocker [Sat, 4 May 2013 14:43:51 +0000 (16:43 +0200)]
Support refspecs with wildcard in middle (not only at end)

The following refspec, which can be used to fetch GitHub pull requests,
is supported by C Git but was not yet by JGit:

  +refs/pull/*/head:refs/remotes/origin/pr/*

The reason is that the wildcard in the source is in the middle.

This change also includes more validation (e.g. "refs//heads" is not
valid) and test cases.

Bug: 405099
Change-Id: I9bcef7785a0762ed0a98ca95a0bdf8879d5702aa

11 years agoFix multiple bugs in RawSubStringPattern used by MessageRevFilter 42/13242/2
Robin Stocker [Mon, 27 May 2013 18:56:31 +0000 (20:56 +0200)]
Fix multiple bugs in RawSubStringPattern used by MessageRevFilter

* Match at end of input was not handled correctly.
* When more than one character matched but not all, the next character
  was not considered as a match start (e.g. pattern "abab" didn't match
  input "abaabab").

Bug: 409144
Change-Id: Ia44682c618bfbb927f5567c194227421d222a160
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
11 years agoHandle short branch/tag name for setBranch in CloneCommand 53/13153/2
Robin Stocker [Sat, 25 May 2013 13:56:50 +0000 (15:56 +0200)]
Handle short branch/tag name for setBranch in CloneCommand

Before, it was not clear from the documentation what kind of branch name
was accepted. Users specifying "branch" (instead of "refs/heads/branch")
got no error message and ended up with a repository without HEAD and no
checkout.

With this, CloneCommand now tries "$branch", then "refs/heads/$branch"
and then "refs/tags/$branch". C Git only does the last two, but for
compatibility we should still allow "refs/heads/branch".

Bug: 390994
Change-Id: I4be13144f2a21a6583e0942f0c7c40da32f2247a
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
11 years agoAdd missing Bundle-Localization header 55/13155/1
Matthias Sohn [Sat, 25 May 2013 22:52:57 +0000 (00:52 +0200)]
Add missing Bundle-Localization header

Change-Id: I6831ad417f069127b4705fdd909844ec72065527
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
11 years agoRelease ArchiveCommand's ObjectReader in call() 48/13148/1
Jonathan Nieder [Sat, 25 May 2013 01:24:53 +0000 (18:24 -0700)]
Release ArchiveCommand's ObjectReader in call()

Make call() release all private resources so instead of using a
pattern like

ArchiveCommand cmd = git.archive();
try {
cmd.setTree(tree)
. ...
.call();
} finally {
cmd.release();
}

callers can just use git.archive().setTree(tree)....call() directly.

This involves pushing more work out of parameter setters and into
call() so the ObjectReader is not allocated and potentially leaked
before then.

Change-Id: I699f703c6302696e1cc276d7ab8ee597d82f2c5d

11 years agoMove ArchiveCommand into standard porcelain API 62/12262/10
Jonathan Nieder [Sat, 25 May 2013 00:30:18 +0000 (17:30 -0700)]
Move ArchiveCommand into standard porcelain API

Allow use of ArchiveCommand without depending on the jgit command-line
tools.

To avoid complicating the process of installing and upgrading JGit,
this does not add a dependency by the org.eclipse.jgit bundle on
commons-compress.  Instead, the caller is responsible for registering
any formats they want to use by calling ArchiveCommand.registerFormat.

This patch puts functionality that requires an archiver into a
separate org.eclipse.jgit.archive bundle for people who want it.  One
can use it by calling ArchiveCommand.registerFormat directly to
register its formats or by relying on OSGi class loading to load
org.eclipse.jgit.archive.FormatActivator, which takes care of
registration automatically.

Once the appropriate formats are registered, you can make a tar or zip
from a git tree object as follows:

ArchiveCommand cmd = git.archive();
try {
cmd.setTree(tree).setFormat(fmt).setOutputStream(out).call();
} finally {
cmd.release();
}

Change-Id: I418e7e7d76422dc6f010d0b3b624d7bec3b20c6e

11 years agoRemove dependency by ArchiveCommand on archive formats 63/12563/4
Jonathan Nieder [Fri, 24 May 2013 23:57:10 +0000 (16:57 -0700)]
Remove dependency by ArchiveCommand on archive formats

Provide static registerFormat and unregisterFormat methods to allow
formats to register themselves without the ArchiveCommand code being
aware of them.

Register the basic "zip" and "tar" support at bundle activation time
(and deregister them when unloading the bundle).  For anyone using
this code as an OSGi plugin it should continue to just work.

The jgit program does not load org.eclipse.jgit.pgm as an OSGi bundle,
so let the Archive command register the formats it uses explicitly
with registerFormat.

Change-Id: Id39c03ea6923d0aed8316ed7b6bd04d5ced570a7

11 years agoApply tree filter marks when pairing DiffEntry for renames 69/12969/2
Robin Stocker [Sun, 19 May 2013 13:19:35 +0000 (15:19 +0200)]
Apply tree filter marks when pairing DiffEntry for renames

When using a RenameDetector to generate new DiffEntries after using
DiffEntry.scan, the treeFilterMarks of the original entries were lost.
Now it combines the marks from src and dst.

See EGit bug 335082 where this is used.

Change-Id: I72b34b10ca12e3a6bd10ce44f4fa05b193fc52cc

11 years agoDrop dependency by ArchiveCommand.Format interface on commons-compress 62/12562/4
Jonathan Nieder [Thu, 23 May 2013 23:53:57 +0000 (16:53 -0700)]
Drop dependency by ArchiveCommand.Format interface on commons-compress

Otherwise, anyone trying to implement a new format would have to
depend on commons-compress, even if using a different underlying
library to write the archive.

Change-Id: I301a1997e3b48aa7e32d693fd8f4b2d436c9b3a7

11 years agoArchiveCommand.Format: pass output stream as first argument to putEntry 00/13100/2
Jonathan Nieder [Thu, 23 May 2013 23:46:29 +0000 (16:46 -0700)]
ArchiveCommand.Format: pass output stream as first argument to putEntry

This is more consistent with other APIs where the output side is the
first parameter to be analagous to the left-hand side of an
assignment.

Change-Id: Iec46bd50bc973a38b77d8367296adf5474ba515f

11 years agoArchiveCommand: make archive formats non-inner classes 61/12561/7
Jonathan Nieder [Fri, 24 May 2013 01:08:35 +0000 (18:08 -0700)]
ArchiveCommand: make archive formats non-inner classes

First step toward making ArchiveCommand itself format-agnostic.

Change-Id: I3cff5fce28fa7a19e34f8291cfb5b62f16429713

11 years agoRemove unused import in UploadPack 93/13093/1
Shawn Pearce [Thu, 23 May 2013 20:10:03 +0000 (13:10 -0700)]
Remove unused import in UploadPack

Change-Id: I9304cb3a6502ceb0cba21eb841e466f932ab3c01

11 years agoUse NullOutputStream not DisabledOutputStream in UploadPack 91/13091/1
Shawn Pearce [Thu, 23 May 2013 20:07:03 +0000 (13:07 -0700)]
Use NullOutputStream not DisabledOutputStream in UploadPack

The stream should not throw IllegalStateException if it is off.
Flush the stream after the hook runs, in case any messages need
to be sent ahead of the pack.

Change-Id: I21c7a0258ab1308406d226293fa0e7da69b4f57b

11 years agoAllow PreUploadHook.onSendPack to send messages to the client 60/13060/1
Shawn Pearce [Wed, 22 May 2013 19:12:52 +0000 (12:12 -0700)]
Allow PreUploadHook.onSendPack to send messages to the client

Before transmitting to the client a hook may want to send along
a text message ahead of the pack, such as a "message of the day".
Enable this usage by mirroring the message sending API from
ReceivePack on the UploadPack instance, using the side band.

Change-Id: I31cd254a4ddb816641397a3e9c2c20212471c37f

11 years agoImprove feature names to become understandable by end users 17/13017/2
Matthias Sohn [Tue, 21 May 2013 12:54:39 +0000 (14:54 +0200)]
Improve feature names to become understandable by end users

This was requested in [1].

[1] http://dev.eclipse.org/mhonarc/lists/cross-project-issues-dev/msg08981.html

Change-Id: I9764961a651c1fa64042098d60da9b496453f703
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
11 years agoUpdate kepler orbit version to R20130517111416 74/12974/1
Matthias Sohn [Sun, 19 May 2013 23:28:16 +0000 (01:28 +0200)]
Update kepler orbit version to R20130517111416

Change-Id: I635aaa28230d571f4b6bf65485edaba1b1561fc2
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
11 years agoFix BatchRefUpdate progress-monitoring so it doesn't count twice 53/12953/5
Roberto Tyley [Sat, 18 May 2013 21:52:55 +0000 (22:52 +0100)]
Fix BatchRefUpdate progress-monitoring so it doesn't count twice

I was seeing output like this while running The BFG:

Updating references:    200% (374/187)

...issue sneaked in with 5cf53fda I think.

The update call is also moved to the end of the loop, as update() is
only supposed to be called after work has been done ("Denote that some
work units have been completed").

Change-Id: I1620fa75be16dc80df44745d0e123ea512762e31
Signed-off-by: Robin Stocker <robin@nibor.org>
11 years agoMerge "Fix DiffFormatter NPEs for DiffEntry without content change" into stable-3.0
Matthias Sohn [Thu, 16 May 2013 22:41:52 +0000 (18:41 -0400)]
Merge "Fix DiffFormatter NPEs for DiffEntry without content change" into stable-3.0

11 years agoFix AnyObjectId's generic type declaration of Comparable 85/12885/1
Roberto Tyley [Thu, 16 May 2013 14:44:41 +0000 (15:44 +0100)]
Fix AnyObjectId's generic type declaration of Comparable

If you look at any implementation of Comparable in the JDK, you'll see
that the type parameter for Comparable is supposed to be the type of
the implementing class:

http://docs.oracle.com/javase/6/docs/api/java/lang/Comparable.html

The current type signature of Comparable<Object> is pretty awful, at the
very least because you can not, in fact, successfully compare
AnyObjectId with any random subclass of Object. It also causes problems
with type-inference and the scala.math.Ordering trait in Scala.

In order to compile, this change *does* require removing the
AnyObjectId.ompareTo(Object) method - which actually only ever cast
to AnyObjectId in any case. Nothing in the JGit test suite requires this
method, but it might constitute a breaking API change, so it would be
best if it can be added in time for JGit 3.0.

Change-Id: I3b549a5519ccd6785f98e444da76d2363bcbe41a

11 years agoFix DiffFormatter NPEs for DiffEntry without content change 12/12712/3
Robin Stocker [Fri, 10 May 2013 16:16:36 +0000 (18:16 +0200)]
Fix DiffFormatter NPEs for DiffEntry without content change

DiffEntry.getOldId() returns null for a diff without an index line (e.g.
only mode changed, rename without content change).

Bug: 407743
Change-Id: I42eac87421f2a53c985af260a253338f578492bc

11 years agoRemove unused import in LocalDiskRepositoryTestCase 71/12771/1
Tomasz Zarna [Tue, 14 May 2013 05:16:32 +0000 (22:16 -0700)]
Remove unused import in LocalDiskRepositoryTestCase

Change-Id: Ib8a8e72dd3c808c4fe92c32ed177272dce29ac60

11 years agoFix CommitCommand not to destroy repo 01/12701/5
Christian Halstrick [Thu, 9 May 2013 22:10:27 +0000 (00:10 +0200)]
Fix CommitCommand not to destroy repo

There was a severe bug in CommitCommand which could corrupt
repos. When merging an annotated tag the JGit MergeCommand writes
correctly the ID of the tag (and not the id of the commit the tag was
pointing to) into MERGE_HEAD. Native git does the same. But
CommitCommand was reading this file and trusting blindly that it will
contain only IDs of commits. Then the CommitCommand created a
commit which has as parent a non-commit object (the tag object). That's
so corrupt that even native git gives up when you call "git log" in
such a repo.

To reproduce that with EGit simply right-click on a tag in the
Repository View and select Merge. The result was a corrupt repo!

Bug: 336291
Change-Id: I24cd5de19ce6ca7b68b4052c9e73dcc6d207b57c
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
11 years agoFix the parameters to an exception 72/12672/2
Robin Rosenberg [Wed, 8 May 2013 21:52:52 +0000 (23:52 +0200)]
Fix the parameters to an exception

A parenthesis was in the wrong place passing arguments to the wrong
format call. Also fix formatting of enclosing switch statement.

Change-Id: I4cb9642f08b58c39033c3a81dab4bd56bebf4fd2
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
11 years agoFix hardcoded use of target/trash in LocalDiskRepositoryTestCase 68/12668/3
Shawn Pearce [Thu, 9 May 2013 00:34:47 +0000 (17:34 -0700)]
Fix hardcoded use of target/trash in LocalDiskRepositoryTestCase

`pwd`/target is only valid in Maven Reactor builds where Maven
has moved into the project directory and created a target for
the build output. Most other build systems do not use "target"
and may not even perform a directory change between test suites.

Rewrite LocalDiskRepositoryTestCase's temporary directory code
to use the system specified location and create new unique names.
This prevents fixes between concurrently running tests and allows
the caller to specify the root using java.io.tmpdir.

Update the surefire command lines to use target within each project as
the system temporary directory during unit testing, preventing JGit's
own test suite from writing to /tmp or somewhere like C:\tmp.

Change-Id: I9e8431f6ddfc16fee89f677bcce67c99cfb56782

11 years agoPrepare post 3.0.0 M7 builds 54/12654/1
Matthias Sohn [Wed, 8 May 2013 20:26:04 +0000 (22:26 +0200)]
Prepare post 3.0.0 M7 builds

Change-Id: I062c44529c7ae2f960d3c64a0923a45d2dc8a863
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
11 years agoJGit v3.0.0.201305080800-m7 19/12619/1 v3.0.0.201305080800-m7
Matthias Sohn [Wed, 8 May 2013 11:58:26 +0000 (13:58 +0200)]
JGit v3.0.0.201305080800-m7

Change-Id: I377b174993862918a117f54e6cba4733dfc2307c
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
11 years agoAdd missing @since tags 08/12408/3
Matthias Sohn [Tue, 30 Apr 2013 21:55:36 +0000 (23:55 +0200)]
Add missing @since tags

Change-Id: I9657125765716c874bb6ecf8844c34749cb3b069
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
11 years agoMove org.eclipse.jgit.pgm's resource bundle to internal package 53/12553/2
Matthias Sohn [Mon, 6 May 2013 20:59:57 +0000 (22:59 +0200)]
Move org.eclipse.jgit.pgm's resource bundle to internal package

Translatable texts aren't API and shouldn't require maintenance of
@since tags to prevent API warnings.

Change-Id: I228ff37f17c0e792a6bc188c463a0d19138e88ac
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
11 years agoMerge "URIish: Allow multiple slashes in paths"
Shawn Pearce [Sun, 5 May 2013 16:51:44 +0000 (12:51 -0400)]
Merge "URIish: Allow multiple slashes in paths"

11 years agoRemove unused repository field from RevWalk 00/12500/3
Dave Borowitz [Fri, 3 May 2013 18:22:25 +0000 (11:22 -0700)]
Remove unused repository field from RevWalk

The comment about legacy Tag and Object types no longer applies,
though prior to Idb273d5a92849b42935ac14eed73b796b80aad50 the field
was still being used by RewriteTreeFilter.

Change-Id: I9ee5da8f8a3b61c9cf543817c03117ee0609dd8f

11 years agoMerge "Require a DiffConfig when creating a FollowFilter"
Shawn Pearce [Sun, 5 May 2013 15:47:53 +0000 (11:47 -0400)]
Merge "Require a DiffConfig when creating a FollowFilter"

11 years agoRequire a DiffConfig when creating a FollowFilter 99/12499/3
Dave Borowitz [Fri, 3 May 2013 18:18:53 +0000 (11:18 -0700)]
Require a DiffConfig when creating a FollowFilter

The various rename detection options are an inherent part of the
filter, similar to the path being followed.

This fixes a potential NPE when a RevWalk with a FollowFilter is
created without a Repository, since the old code path tried to get
the DiffConfig from the RevWalk's possibly-missing repository.

Change-Id: Idb273d5a92849b42935ac14eed73b796b80aad50

11 years agoAdd optional feature to install Java 7 support 38/12438/3
Matthias Sohn [Mon, 11 Mar 2013 23:40:34 +0000 (00:40 +0100)]
Add optional feature to install Java 7 support

Change-Id: I15cfd91857830d69abbe729be3e237fc9cd4fca0
Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
11 years agoExtend the FS class for Java7 78/9378/25
Robin Rosenberg [Mon, 4 Feb 2013 00:10:26 +0000 (01:10 +0100)]
Extend the FS class for Java7

The most important difference is that in Java7 we have symbolic links
and for most operations in the work tree we want to operate on the link
itself rather than the link target, which the old File methods generally
do.

We also add support for the hidden attribute, which only makes sense
on Windows and exists, just since there are claims that Files.exists
is faster the File.exists.

A new bundle is only activated when run with a Java7 execution
environment. It is implemented as a fragment.

Tycho currently has no way to conditionally include optional features
based on the java version used to run the build, this means with this
change the jgit packaging build always needs to be run using java 7.

Change-Id: I3d6580d6fa7b22f60d7e54ab236898ed44954ffd
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
11 years agoFix line endings 88/12488/1
Matthias Sohn [Fri, 3 May 2013 14:19:07 +0000 (16:19 +0200)]
Fix line endings

Change-Id: I61c9c173237a535da8576a9299bfd4bb29e8f56b
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
11 years agoTagCommand should be able to create unannotated tags too 70/12470/2
Robin Rosenberg [Thu, 2 May 2013 21:07:04 +0000 (23:07 +0200)]
TagCommand should be able to create unannotated tags too

Using the low level API's is just too cumbersome.

Change-Id: Id5b9f560ee095d6db0b2ea5b26aef3e53021626e
Signed-off-by: Robin Stocker <robin@nibor.org>
11 years agoAdd test for RefUpdate delete without HEAD 69/12269/2
Robin Stocker [Sat, 27 Apr 2013 11:30:11 +0000 (13:30 +0200)]
Add test for RefUpdate delete without HEAD

Bug: 406722
Change-Id: I555fb366ee64d885de2a71a67cf00833f4c62561

11 years agoMerge "Fix warnings about assigning paramter in util.io"
Robin Rosenberg [Thu, 2 May 2013 21:19:38 +0000 (17:19 -0400)]
Merge "Fix warnings about assigning paramter in util.io"

11 years agoFix warnings about assigning paramter in util.io 14/12414/1
Robin Stocker [Wed, 1 May 2013 14:48:14 +0000 (16:48 +0200)]
Fix warnings about assigning paramter in util.io

Change-Id: I08bed4275af9ec52aa4d7054067ac82f6a3c9781

11 years agoUpdate tags on fetch if --tags or tag refspec specified 80/12280/2
Robin Stocker [Sat, 27 Apr 2013 14:46:29 +0000 (16:46 +0200)]
Update tags on fetch if --tags or tag refspec specified

When either --tags or a tag ref is explicitly specified on fetch, C Git
updates existing local tags if they are different.

Before this change, JGit returned REJECTED in such a case. Now it
updates it and returns FORCED.

Example:

    % mkdir a
    % cd a
    % git init -q
    % touch test.txt
    % git add test.txt
    % git commit -q -m 'Initial'
    % git tag v1
    % cd ..
    % git clone -q a b
    % cd a
    % echo Test > test.txt
    % git commit -q -a -m 'Second'
    % git tag -f v1
    Updated tag 'v1' (was bc85c08)
    % cd ../b
    % git fetch --tags
     - [tag update]      v1         -> v1

Bug: 388095
Change-Id: I5d5494c2ad1a2cdb8e9e614d3de445289734edfe

11 years agoOnly fetch tags that do not exist locally with auto-follow 79/12279/2
Robin Stocker [Sat, 27 Apr 2013 14:14:46 +0000 (16:14 +0200)]
Only fetch tags that do not exist locally with auto-follow

This corresponds to what C Git does, quoting from the fetch man page:

  This is done by first fetching from the remote using the given
  <refspec>s, and if the repository has objects that are pointed by
  remote tags that it does not yet have, then fetch those missing tags.

Before, JGit would also fetch tags that exist locally but point to a
different object, resulting in REJECTED results for these.

Also add some test cases to cover more cases.

Bug: 388095
Change-Id: Ib03d2d82e9c4b60179d626cfd5174be1da6388b2
Also-by: Stefan Lay <stefan.lay@sap.com>
11 years agoArchiveCommand: Add missing @since tag 09/12409/1
Jonathan Nieder [Tue, 30 Apr 2013 22:03:08 +0000 (15:03 -0700)]
ArchiveCommand: Add missing @since tag

Change-Id: I9e48a1f82b747492bebb3ca65fd16f599e425e8b

11 years agoAbort before delete in FileUtils.delete EMPTY_DIRECTORIES_ONLY|RECURSIVE 50/11850/4
Robin Stocker [Fri, 12 Apr 2013 12:21:02 +0000 (14:21 +0200)]
Abort before delete in FileUtils.delete EMPTY_DIRECTORIES_ONLY|RECURSIVE

Depending on the order in which items are traversed for RECURSIVE, an
empty directory may come first before detecting that there is a file and
aborting.

This fixes it by traversing files first.

Bug: 405558
Change-Id: I638b7da58e33ffeb0fee172b96f4c823943d29e9
Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
11 years agoMerge "Cleanup imports and javadocs in ArchiveCommand"
Robin Rosenberg [Sat, 27 Apr 2013 20:38:16 +0000 (16:38 -0400)]
Merge "Cleanup imports and javadocs in ArchiveCommand"

11 years agoCleanup imports and javadocs in ArchiveCommand 75/12275/2
Robin Rosenberg [Sat, 27 Apr 2013 13:08:31 +0000 (15:08 +0200)]
Cleanup imports and javadocs in ArchiveCommand

Change-Id: Icb1cd177e791cc646636a88c67fd9399dfc7030c

11 years agoDelete CLIText strings previously used in iplog generator 25/12225/2
Jonathan Nieder [Thu, 25 Apr 2013 22:27:47 +0000 (15:27 -0700)]
Delete CLIText strings previously used in iplog generator

The only callers using these strings were removed in commit
850e5bc24e31 (Delete the iplog generator, 2013-01-09).

Change-Id: Ia4f81b29b8d00782ee559d69de3befc0a6c4d403

11 years agoMerge "Make the Reflog a public API again"
Robin Rosenberg [Sat, 27 Apr 2013 12:56:37 +0000 (08:56 -0400)]
Merge "Make the Reflog a public API again"

11 years agoMerge "Remove unused logger from RecursiveMerger"
Robin Rosenberg [Sat, 27 Apr 2013 12:55:32 +0000 (08:55 -0400)]
Merge "Remove unused logger from RecursiveMerger"

11 years agoURIish: Allow multiple slashes in paths 73/12273/1
Robin Stocker [Sat, 27 Apr 2013 12:35:12 +0000 (14:35 +0200)]
URIish: Allow multiple slashes in paths

It's also allowed by C Git.

Change-Id: Ie0a0d1f57d84e70fd5ef50b7844d22fea43d0e08