* master:
Silence API errors introduced by 093fbbd1
Bump Bazel version to 2.2.0
Add validation to hex decoder
Expose FileStoreAttributes.setBackground()
Update reftable storage repo layout
Add 4.14 and 4.15-staging target platforms
Update Orbit to R20200224183213 for final 2020-03
Update Orbit to S20200224183213 for 2020-03 RC1
Cygwin expects forward slashes for commands to be run via sh.exe
[releng] Update year in copyright notices for features
Using for-each loop in jdt
Make Logger instances final
Move array designators from the variable to the type
ObjectWalk: Add null check before skip tree.
Revert "RevWalk: stop mixing lines of history in topo sort"
Do not fail if known hosts file does not contain valid host key
Change-Id: Ie7841d917b02c3579c4766e7214d6b1656c5f200
tags/v5.7.0.202003090808-r
@@ -1 +1 @@ | |||
2.1.0 | |||
2.2.0 |
@@ -105,7 +105,7 @@ class RegexPipeline extends UrlPipeline { | |||
// build a request for them so RegexGroupFilter can pick | |||
// a different capture group later. Continue using the | |||
// first capture group as the path info. | |||
WrappedRequest groups[] = new WrappedRequest[cur.groupCount()]; | |||
WrappedRequest[] groups = new WrappedRequest[cur.groupCount()]; | |||
for (int groupId = 1; groupId <= cur.groupCount(); groupId++) { | |||
final int s = cur.start(groupId); | |||
final String path, info; |
@@ -45,7 +45,7 @@ import org.junit.runners.model.Statement; | |||
*/ | |||
public class RepeatRule implements TestRule { | |||
private static Logger LOG = Logger | |||
private static final Logger LOG = Logger | |||
.getLogger(RepeatRule.class.getName()); | |||
/** |
@@ -60,7 +60,7 @@ import org.slf4j.LoggerFactory; | |||
* @since 4.3 | |||
*/ | |||
public abstract class LfsProtocolServlet extends HttpServlet { | |||
private static Logger LOG = LoggerFactory | |||
private static final Logger LOG = LoggerFactory | |||
.getLogger(LfsProtocolServlet.class); | |||
private static final long serialVersionUID = 1L; |
@@ -34,7 +34,7 @@ import org.eclipse.jgit.util.HttpSupport; | |||
*/ | |||
public class ObjectDownloadListener implements WriteListener { | |||
private static Logger LOG = Logger | |||
private static final Logger LOG = Logger | |||
.getLogger(ObjectDownloadListener.class.getName()); | |||
private final AsyncContext context; |
@@ -38,7 +38,7 @@ import org.eclipse.jgit.lfs.lib.Constants; | |||
*/ | |||
public class ObjectUploadListener implements ReadListener { | |||
private static Logger LOG = Logger | |||
private static final Logger LOG = Logger | |||
.getLogger(ObjectUploadListener.class.getName()); | |||
private final AsyncContext context; |
@@ -20,7 +20,7 @@ A pure Java implementation of the Git version control system.\n | |||
# "copyright" property - text of the "Feature Update Copyright" | |||
copyright=\ | |||
Copyright (c) 2005, 2010 Shawn Pearce, Robin Rosenberg, et.al.\n\ | |||
Copyright (c) 2005, 2020 Shawn Pearce, Robin Rosenberg, et.al.\n\ | |||
All rights reserved. This program and the accompanying materials\n\ | |||
are made available under the terms of the Eclipse Distribution License v1.0\n\ | |||
which accompanies this distribution, and is available at\n\ |
@@ -20,7 +20,7 @@ Optional Http support using Apache httpclient.\n | |||
# "copyright" property - text of the "Feature Update Copyright" | |||
copyright=\ | |||
Copyright (c) 2005, 2013 Shawn Pearce, Robin Rosenberg, et.al.\n\ | |||
Copyright (c) 2005, 2020 Shawn Pearce, Robin Rosenberg, et.al.\n\ | |||
All rights reserved. This program and the accompanying materials\n\ | |||
are made available under the terms of the Eclipse Distribution License v1.0\n\ | |||
which accompanies this distribution, and is available at\n\ |
@@ -20,7 +20,7 @@ description=JUnit test support for JGit | |||
# "copyright" property - text of the "Feature Update Copyright" | |||
copyright=\ | |||
Copyright (c) 2010, Matthias Sohn <matthias.sohn@sap.com>\n\ | |||
Copyright (c) 2010, 2020 Matthias Sohn <matthias.sohn@sap.com>\n\ | |||
and other copyright owners as documented in the project's IP log.\n\ | |||
All rights reserved. This program and the accompanying materials\n\ | |||
are made available under the terms of the Eclipse Distribution License v1.0\n\ |
@@ -20,7 +20,7 @@ Optional LFS support.\n | |||
# "copyright" property - text of the "Feature Update Copyright" | |||
copyright=\ | |||
Copyright (c) 2015, Matthias Sohn et.al.\n\ | |||
Copyright (c) 2015, 2020 Matthias Sohn et.al.\n\ | |||
All rights reserved. This program and the accompanying materials\n\ | |||
are made available under the terms of the Eclipse Distribution License v1.0\n\ | |||
which accompanies this distribution, and is available at\n\ |
@@ -20,7 +20,7 @@ Command line interface for a pure Java implementation of the Git version control | |||
# "copyright" property - text of the "Feature Update Copyright" | |||
copyright=\ | |||
Copyright (c) 2005-2012 Shawn Pearce, Robin Rosenberg, et.al.\n\ | |||
Copyright (c) 2005, 2020 Shawn Pearce, Robin Rosenberg, et.al.\n\ | |||
All rights reserved. This program and the accompanying materials\n\ | |||
are made available under the terms of the Eclipse Distribution License v1.0\n\ | |||
which accompanies this distribution, and is available at\n\ |
@@ -21,7 +21,7 @@ Source code for the support for PDE's JUnit runner for a Target Platform\n | |||
# "copyright" property - text of the "Feature Update Copyright" | |||
copyright=\ | |||
Copyright (c) 2005, 2010 Shawn Pearce, Robin Rosenberg, et.al.\n\ | |||
Copyright (c) 2005, 2020 Shawn Pearce, Robin Rosenberg, et.al.\n\ | |||
All rights reserved. This program and the accompanying materials\n\ | |||
are made available under the terms of the Eclipse Distribution License v1.0\n\ | |||
which accompanies this distribution, and is available at\n\ |
@@ -20,7 +20,7 @@ Ssh support using Apache MINA sshd.\n | |||
# "copyright" property - text of the "Feature Update Copyright" | |||
copyright=\ | |||
Copyright (c) 2018 Thomas Wolf and others.\n\ | |||
Copyright (c) 2018, 2020 Thomas Wolf and others.\n\ | |||
All rights reserved. This program and the accompanying materials\n\ | |||
are made available under the terms of the Eclipse Distribution License v1.0\n\ | |||
which accompanies this distribution, and is available at\n\ |
@@ -1,7 +1,7 @@ | |||
<?xml version="1.0" encoding="UTF-8" standalone="no"?> | |||
<?pde?> | |||
<!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl --> | |||
<target name="jgit-4.10" sequenceNumber="1582498070"> | |||
<target name="jgit-4.10" sequenceNumber="1583183009"> | |||
<locations> | |||
<location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit"> | |||
<unit id="org.eclipse.jetty.client" version="9.4.25.v20191220"/> | |||
@@ -84,7 +84,7 @@ | |||
<unit id="org.slf4j.impl.log4j12.source" version="1.7.2.v20131105-2200"/> | |||
<unit id="org.tukaani.xz" version="1.8.0.v20180207-1613"/> | |||
<unit id="org.tukaani.xz.source" version="1.8.0.v20180207-1613"/> | |||
<repository location="https://download.eclipse.org/tools/orbit/downloads/drops/S20200219023850/repository"/> | |||
<repository location="https://download.eclipse.org/tools/orbit/downloads/drops/R20200224183213/repository"/> | |||
</location> | |||
<location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit"> | |||
<unit id="org.eclipse.osgi" version="0.0.0"/> |
@@ -1,7 +1,7 @@ | |||
target "jgit-4.10" with source configurePhase | |||
include "projects/jetty-9.4.x.tpd" | |||
include "orbit/staging-2020-03.tpd" | |||
include "orbit/R20200224183213-2020-03.tpd" | |||
location "http://download.eclipse.org/releases/2018-12/" { | |||
org.eclipse.osgi lazy |
@@ -1,7 +1,7 @@ | |||
<?xml version="1.0" encoding="UTF-8" standalone="no"?> | |||
<?pde?> | |||
<!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl --> | |||
<target name="jgit-4.11" sequenceNumber="1582498158"> | |||
<target name="jgit-4.11" sequenceNumber="1583183034"> | |||
<locations> | |||
<location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit"> | |||
<unit id="org.eclipse.jetty.client" version="9.4.25.v20191220"/> | |||
@@ -84,7 +84,7 @@ | |||
<unit id="org.slf4j.impl.log4j12.source" version="1.7.2.v20131105-2200"/> | |||
<unit id="org.tukaani.xz" version="1.8.0.v20180207-1613"/> | |||
<unit id="org.tukaani.xz.source" version="1.8.0.v20180207-1613"/> | |||
<repository location="https://download.eclipse.org/tools/orbit/downloads/drops/S20200219023850/repository"/> | |||
<repository location="https://download.eclipse.org/tools/orbit/downloads/drops/R20200224183213/repository"/> | |||
</location> | |||
<location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit"> | |||
<unit id="org.eclipse.osgi" version="0.0.0"/> |
@@ -1,7 +1,7 @@ | |||
target "jgit-4.11" with source configurePhase | |||
include "projects/jetty-9.4.x.tpd" | |||
include "orbit/staging-2020-03.tpd" | |||
include "orbit/R20200224183213-2020-03.tpd" | |||
location "http://download.eclipse.org/releases/2019-03/" { | |||
org.eclipse.osgi lazy |
@@ -1,7 +1,7 @@ | |||
<?xml version="1.0" encoding="UTF-8" standalone="no"?> | |||
<?pde?> | |||
<!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl --> | |||
<target name="jgit-4.12" sequenceNumber="1582498158"> | |||
<target name="jgit-4.12" sequenceNumber="1583183009"> | |||
<locations> | |||
<location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit"> | |||
<unit id="org.eclipse.jetty.client" version="9.4.25.v20191220"/> | |||
@@ -84,7 +84,7 @@ | |||
<unit id="org.slf4j.impl.log4j12.source" version="1.7.2.v20131105-2200"/> | |||
<unit id="org.tukaani.xz" version="1.8.0.v20180207-1613"/> | |||
<unit id="org.tukaani.xz.source" version="1.8.0.v20180207-1613"/> | |||
<repository location="https://download.eclipse.org/tools/orbit/downloads/drops/S20200219023850/repository"/> | |||
<repository location="https://download.eclipse.org/tools/orbit/downloads/drops/R20200224183213/repository"/> | |||
</location> | |||
<location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit"> | |||
<unit id="org.eclipse.osgi" version="0.0.0"/> |
@@ -1,7 +1,7 @@ | |||
target "jgit-4.12" with source configurePhase | |||
include "projects/jetty-9.4.x.tpd" | |||
include "orbit/staging-2020-03.tpd" | |||
include "orbit/R20200224183213-2020-03.tpd" | |||
location "http://download.eclipse.org/releases/2019-06/" { | |||
org.eclipse.osgi lazy |
@@ -1,7 +1,7 @@ | |||
<?xml version="1.0" encoding="UTF-8" standalone="no"?> | |||
<?pde?> | |||
<!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl --> | |||
<target name="jgit-4.13" sequenceNumber="1582498157"> | |||
<target name="jgit-4.13" sequenceNumber="1583183009"> | |||
<locations> | |||
<location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit"> | |||
<unit id="org.eclipse.jetty.client" version="9.4.25.v20191220"/> | |||
@@ -84,7 +84,7 @@ | |||
<unit id="org.slf4j.impl.log4j12.source" version="1.7.2.v20131105-2200"/> | |||
<unit id="org.tukaani.xz" version="1.8.0.v20180207-1613"/> | |||
<unit id="org.tukaani.xz.source" version="1.8.0.v20180207-1613"/> | |||
<repository location="https://download.eclipse.org/tools/orbit/downloads/drops/S20200219023850/repository"/> | |||
<repository location="https://download.eclipse.org/tools/orbit/downloads/drops/R20200224183213/repository"/> | |||
</location> | |||
<location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit"> | |||
<unit id="org.eclipse.osgi" version="0.0.0"/> |
@@ -1,7 +1,7 @@ | |||
target "jgit-4.13" with source configurePhase | |||
include "projects/jetty-9.4.x.tpd" | |||
include "orbit/staging-2020-03.tpd" | |||
include "orbit/R20200224183213-2020-03.tpd" | |||
location "http://download.eclipse.org/releases/2019-09/" { | |||
org.eclipse.osgi lazy |
@@ -0,0 +1,94 @@ | |||
<?xml version="1.0" encoding="UTF-8" standalone="no"?> | |||
<?pde?> | |||
<!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl --> | |||
<target name="jgit-4.14-staging" sequenceNumber="1583184372"> | |||
<locations> | |||
<location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit"> | |||
<unit id="org.eclipse.jetty.client" version="9.4.25.v20191220"/> | |||
<unit id="org.eclipse.jetty.client.source" version="9.4.25.v20191220"/> | |||
<unit id="org.eclipse.jetty.continuation" version="9.4.25.v20191220"/> | |||
<unit id="org.eclipse.jetty.continuation.source" version="9.4.25.v20191220"/> | |||
<unit id="org.eclipse.jetty.http" version="9.4.25.v20191220"/> | |||
<unit id="org.eclipse.jetty.http.source" version="9.4.25.v20191220"/> | |||
<unit id="org.eclipse.jetty.io" version="9.4.25.v20191220"/> | |||
<unit id="org.eclipse.jetty.io.source" version="9.4.25.v20191220"/> | |||
<unit id="org.eclipse.jetty.security" version="9.4.25.v20191220"/> | |||
<unit id="org.eclipse.jetty.security.source" version="9.4.25.v20191220"/> | |||
<unit id="org.eclipse.jetty.server" version="9.4.25.v20191220"/> | |||
<unit id="org.eclipse.jetty.server.source" version="9.4.25.v20191220"/> | |||
<unit id="org.eclipse.jetty.servlet" version="9.4.25.v20191220"/> | |||
<unit id="org.eclipse.jetty.servlet.source" version="9.4.25.v20191220"/> | |||
<unit id="org.eclipse.jetty.util" version="9.4.25.v20191220"/> | |||
<unit id="org.eclipse.jetty.util.source" version="9.4.25.v20191220"/> | |||
<repository id="jetty-9.4.25" location="https://download.eclipse.org/jetty/updates/jetty-bundles-9.x/9.4.25.v20191220/"/> | |||
</location> | |||
<location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit"> | |||
<unit id="com.google.gson" version="2.8.2.v20180104-1110"/> | |||
<unit id="com.google.gson.source" version="2.8.2.v20180104-1110"/> | |||
<unit id="com.jcraft.jsch" version="0.1.55.v20190404-1902"/> | |||
<unit id="com.jcraft.jsch.source" version="0.1.55.v20190404-1902"/> | |||
<unit id="com.jcraft.jzlib" version="1.1.1.v201205102305"/> | |||
<unit id="com.jcraft.jzlib.source" version="1.1.1.v201205102305"/> | |||
<unit id="javaewah" version="1.1.7.v20200107-0831"/> | |||
<unit id="javaewah.source" version="1.1.7.v20200107-0831"/> | |||
<unit id="javax.servlet" version="3.1.0.v201410161800"/> | |||
<unit id="javax.servlet.source" version="3.1.0.v201410161800"/> | |||
<unit id="net.bytebuddy.byte-buddy" version="1.9.0.v20181107-1410"/> | |||
<unit id="net.bytebuddy.byte-buddy-agent" version="1.9.0.v20181106-1534"/> | |||
<unit id="net.bytebuddy.byte-buddy-agent.source" version="1.9.0.v20181106-1534"/> | |||
<unit id="net.bytebuddy.byte-buddy.source" version="1.9.0.v20181107-1410"/> | |||
<unit id="net.i2p.crypto.eddsa" version="0.3.0.v20181102-1323"/> | |||
<unit id="net.i2p.crypto.eddsa.source" version="0.3.0.v20181102-1323"/> | |||
<unit id="org.apache.ant" version="1.10.7.v20190926-0324"/> | |||
<unit id="org.apache.ant.source" version="1.10.7.v20190926-0324"/> | |||
<unit id="org.apache.commons.codec" version="1.13.0.v20200108-0001"/> | |||
<unit id="org.apache.commons.codec.source" version="1.13.0.v20200108-0001"/> | |||
<unit id="org.apache.commons.compress" version="1.19.0.v20200106-2343"/> | |||
<unit id="org.apache.commons.compress.source" version="1.19.0.v20200106-2343"/> | |||
<unit id="org.apache.commons.logging" version="1.2.0.v20180409-1502"/> | |||
<unit id="org.apache.commons.logging.source" version="1.2.0.v20180409-1502"/> | |||
<unit id="org.apache.httpcomponents.httpclient" version="4.5.10.v20200114-1512"/> | |||
<unit id="org.apache.httpcomponents.httpclient.source" version="4.5.10.v20200114-1512"/> | |||
<unit id="org.apache.httpcomponents.httpcore" version="4.4.12.v20200108-1212"/> | |||
<unit id="org.apache.httpcomponents.httpcore.source" version="4.4.12.v20200108-1212"/> | |||
<unit id="org.apache.log4j" version="1.2.15.v201012070815"/> | |||
<unit id="org.apache.log4j.source" version="1.2.15.v201012070815"/> | |||
<unit id="org.apache.sshd.osgi" version="2.2.0.v20190425-2127"/> | |||
<unit id="org.apache.sshd.osgi.source" version="2.2.0.v20190425-2127"/> | |||
<unit id="org.apache.sshd.sftp" version="2.2.0.v20190425-2127"/> | |||
<unit id="org.apache.sshd.sftp.source" version="2.2.0.v20190425-2127"/> | |||
<unit id="org.assertj" version="3.14.0.v20200120-1926"/> | |||
<unit id="org.assertj.source" version="3.14.0.v20200120-1926"/> | |||
<unit id="org.bouncycastle.bcpg" version="1.64.0.v20191109-0815"/> | |||
<unit id="org.bouncycastle.bcpg.source" version="1.64.0.v20191109-0815"/> | |||
<unit id="org.bouncycastle.bcpkix" version="1.64.0.v20191109-0815"/> | |||
<unit id="org.bouncycastle.bcpkix.source" version="1.64.0.v20191109-0815"/> | |||
<unit id="org.bouncycastle.bcprov" version="1.64.0.v20191109-0815"/> | |||
<unit id="org.bouncycastle.bcprov.source" version="1.64.0.v20191109-0815"/> | |||
<unit id="org.hamcrest" version="1.1.0.v20090501071000"/> | |||
<unit id="org.hamcrest.core" version="1.3.0.v20180420-1519"/> | |||
<unit id="org.hamcrest.core.source" version="1.3.0.v20180420-1519"/> | |||
<unit id="org.hamcrest.library" version="1.3.0.v20180524-2246"/> | |||
<unit id="org.hamcrest.library.source" version="1.3.0.v20180524-2246"/> | |||
<unit id="org.junit" version="4.13.0.v20200204-1500"/> | |||
<unit id="org.junit.source" version="4.13.0.v20200204-1500"/> | |||
<unit id="org.kohsuke.args4j" version="2.33.0.v20160323-2218"/> | |||
<unit id="org.kohsuke.args4j.source" version="2.33.0.v20160323-2218"/> | |||
<unit id="org.mockito" version="2.23.0.v20190527-1420"/> | |||
<unit id="org.mockito.source" version="2.23.0.v20190527-1420"/> | |||
<unit id="org.objenesis" version="2.6.0.v20180420-1519"/> | |||
<unit id="org.objenesis.source" version="2.6.0.v20180420-1519"/> | |||
<unit id="org.slf4j.api" version="1.7.2.v20121108-1250"/> | |||
<unit id="org.slf4j.api.source" version="1.7.2.v20121108-1250"/> | |||
<unit id="org.slf4j.impl.log4j12" version="1.7.2.v20131105-2200"/> | |||
<unit id="org.slf4j.impl.log4j12.source" version="1.7.2.v20131105-2200"/> | |||
<unit id="org.tukaani.xz" version="1.8.0.v20180207-1613"/> | |||
<unit id="org.tukaani.xz.source" version="1.8.0.v20180207-1613"/> | |||
<repository location="https://download.eclipse.org/tools/orbit/downloads/drops/R20200224183213/repository"/> | |||
</location> | |||
<location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit"> | |||
<unit id="org.eclipse.osgi" version="0.0.0"/> | |||
<repository location="http://download.eclipse.org/releases/2019-12/201912181000/"/> | |||
</location> | |||
</locations> | |||
</target> |
@@ -0,0 +1,8 @@ | |||
target "jgit-4.14-staging" with source configurePhase | |||
include "projects/jetty-9.4.x.tpd" | |||
include "orbit/R20200224183213-2020-03.tpd" | |||
location "http://download.eclipse.org/releases/2019-12/201912181000/" { | |||
org.eclipse.osgi lazy | |||
} |
@@ -1,7 +1,7 @@ | |||
<?xml version="1.0" encoding="UTF-8" standalone="no"?> | |||
<?pde?> | |||
<!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl --> | |||
<target name="jgit-4.14-staging" sequenceNumber="1582498156"> | |||
<target name="jgit-4.14-staging" sequenceNumber="1583184374"> | |||
<locations> | |||
<location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit"> | |||
<unit id="org.eclipse.jetty.client" version="9.4.25.v20191220"/> | |||
@@ -84,11 +84,11 @@ | |||
<unit id="org.slf4j.impl.log4j12.source" version="1.7.2.v20131105-2200"/> | |||
<unit id="org.tukaani.xz" version="1.8.0.v20180207-1613"/> | |||
<unit id="org.tukaani.xz.source" version="1.8.0.v20180207-1613"/> | |||
<repository location="https://download.eclipse.org/tools/orbit/downloads/drops/S20200219023850/repository"/> | |||
<repository location="https://download.eclipse.org/tools/orbit/downloads/drops/R20200224183213/repository"/> | |||
</location> | |||
<location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit"> | |||
<unit id="org.eclipse.osgi" version="0.0.0"/> | |||
<repository location="http://download.eclipse.org/staging/2019-12/"/> | |||
<repository location="http://download.eclipse.org/staging/2020-03/"/> | |||
</location> | |||
</locations> | |||
</target> |
@@ -1,8 +1,8 @@ | |||
target "jgit-4.14-staging" with source configurePhase | |||
include "projects/jetty-9.4.x.tpd" | |||
include "orbit/staging-2020-03.tpd" | |||
include "orbit/R20200224183213-2020-03.tpd" | |||
location "http://download.eclipse.org/staging/2019-12/" { | |||
location "http://download.eclipse.org/staging/2020-03/" { | |||
org.eclipse.osgi lazy | |||
} |
@@ -1,7 +1,7 @@ | |||
<?xml version="1.0" encoding="UTF-8" standalone="no"?> | |||
<?pde?> | |||
<!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl --> | |||
<target name="jgit-4.6" sequenceNumber="1582498170"> | |||
<target name="jgit-4.6" sequenceNumber="1583183021"> | |||
<locations> | |||
<location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit"> | |||
<unit id="org.eclipse.jetty.client" version="9.4.25.v20191220"/> | |||
@@ -84,7 +84,7 @@ | |||
<unit id="org.slf4j.impl.log4j12.source" version="1.7.2.v20131105-2200"/> | |||
<unit id="org.tukaani.xz" version="1.8.0.v20180207-1613"/> | |||
<unit id="org.tukaani.xz.source" version="1.8.0.v20180207-1613"/> | |||
<repository location="https://download.eclipse.org/tools/orbit/downloads/drops/S20200219023850/repository"/> | |||
<repository location="https://download.eclipse.org/tools/orbit/downloads/drops/R20200224183213/repository"/> | |||
</location> | |||
<location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit"> | |||
<unit id="org.eclipse.osgi" version="0.0.0"/> |
@@ -1,7 +1,7 @@ | |||
target "jgit-4.6" with source configurePhase | |||
include "projects/jetty-9.4.x.tpd" | |||
include "orbit/staging-2020-03.tpd" | |||
include "orbit/R20200224183213-2020-03.tpd" | |||
location "http://download.eclipse.org/releases/neon/" { | |||
org.eclipse.osgi lazy |
@@ -1,7 +1,7 @@ | |||
<?xml version="1.0" encoding="UTF-8" standalone="no"?> | |||
<?pde?> | |||
<!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl --> | |||
<target name="jgit-4.7" sequenceNumber="1582498162"> | |||
<target name="jgit-4.7" sequenceNumber="1583183012"> | |||
<locations> | |||
<location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit"> | |||
<unit id="org.eclipse.jetty.client" version="9.4.25.v20191220"/> | |||
@@ -84,7 +84,7 @@ | |||
<unit id="org.slf4j.impl.log4j12.source" version="1.7.2.v20131105-2200"/> | |||
<unit id="org.tukaani.xz" version="1.8.0.v20180207-1613"/> | |||
<unit id="org.tukaani.xz.source" version="1.8.0.v20180207-1613"/> | |||
<repository location="https://download.eclipse.org/tools/orbit/downloads/drops/S20200219023850/repository"/> | |||
<repository location="https://download.eclipse.org/tools/orbit/downloads/drops/R20200224183213/repository"/> | |||
</location> | |||
<location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit"> | |||
<unit id="org.eclipse.osgi" version="0.0.0"/> |
@@ -1,7 +1,7 @@ | |||
target "jgit-4.7" with source configurePhase | |||
include "projects/jetty-9.4.x.tpd" | |||
include "orbit/staging-2020-03.tpd" | |||
include "orbit/R20200224183213-2020-03.tpd" | |||
location "http://download.eclipse.org/releases/oxygen/" { | |||
org.eclipse.osgi lazy |
@@ -1,7 +1,7 @@ | |||
<?xml version="1.0" encoding="UTF-8" standalone="no"?> | |||
<?pde?> | |||
<!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl --> | |||
<target name="jgit-4.8" sequenceNumber="1582498158"> | |||
<target name="jgit-4.8" sequenceNumber="1583183009"> | |||
<locations> | |||
<location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit"> | |||
<unit id="org.eclipse.jetty.client" version="9.4.25.v20191220"/> | |||
@@ -84,7 +84,7 @@ | |||
<unit id="org.slf4j.impl.log4j12.source" version="1.7.2.v20131105-2200"/> | |||
<unit id="org.tukaani.xz" version="1.8.0.v20180207-1613"/> | |||
<unit id="org.tukaani.xz.source" version="1.8.0.v20180207-1613"/> | |||
<repository location="https://download.eclipse.org/tools/orbit/downloads/drops/S20200219023850/repository"/> | |||
<repository location="https://download.eclipse.org/tools/orbit/downloads/drops/R20200224183213/repository"/> | |||
</location> | |||
<location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit"> | |||
<unit id="org.eclipse.osgi" version="0.0.0"/> |
@@ -1,7 +1,7 @@ | |||
target "jgit-4.8" with source configurePhase | |||
include "projects/jetty-9.4.x.tpd" | |||
include "orbit/staging-2020-03.tpd" | |||
include "orbit/R20200224183213-2020-03.tpd" | |||
location "http://download.eclipse.org/releases/photon/" { | |||
org.eclipse.osgi lazy |
@@ -1,7 +1,7 @@ | |||
<?xml version="1.0" encoding="UTF-8" standalone="no"?> | |||
<?pde?> | |||
<!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl --> | |||
<target name="jgit-4.9" sequenceNumber="1582498159"> | |||
<target name="jgit-4.9" sequenceNumber="1583183009"> | |||
<locations> | |||
<location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit"> | |||
<unit id="org.eclipse.jetty.client" version="9.4.25.v20191220"/> | |||
@@ -84,7 +84,7 @@ | |||
<unit id="org.slf4j.impl.log4j12.source" version="1.7.2.v20131105-2200"/> | |||
<unit id="org.tukaani.xz" version="1.8.0.v20180207-1613"/> | |||
<unit id="org.tukaani.xz.source" version="1.8.0.v20180207-1613"/> | |||
<repository location="https://download.eclipse.org/tools/orbit/downloads/drops/S20200219023850/repository"/> | |||
<repository location="https://download.eclipse.org/tools/orbit/downloads/drops/R20200224183213/repository"/> | |||
</location> | |||
<location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit"> | |||
<unit id="org.eclipse.osgi" version="0.0.0"/> |
@@ -1,7 +1,7 @@ | |||
target "jgit-4.9" with source configurePhase | |||
include "projects/jetty-9.4.x.tpd" | |||
include "orbit/staging-2020-03.tpd" | |||
include "orbit/R20200224183213-2020-03.tpd" | |||
location "http://download.eclipse.org/releases/2018-09/" { | |||
org.eclipse.osgi lazy |
@@ -1,7 +1,7 @@ | |||
target "staging-2020-03" with source configurePhase | |||
target "R20200224183213-2020-03" with source configurePhase | |||
// see http://download.eclipse.org/tools/orbit/downloads/ | |||
location "https://download.eclipse.org/tools/orbit/downloads/drops/S20200219023850/repository" { | |||
location "https://download.eclipse.org/tools/orbit/downloads/drops/R20200224183213/repository" { | |||
com.google.gson [2.8.2.v20180104-1110,2.8.2.v20180104-1110] | |||
com.google.gson.source [2.8.2.v20180104-1110,2.8.2.v20180104-1110] | |||
com.jcraft.jsch [0.1.55.v20190404-1902,0.1.55.v20190404-1902] |
@@ -88,7 +88,7 @@ public class CachingKeyPairProvider extends FileKeyPairProvider | |||
if (cache == null) { | |||
return loadKey(session, resource, path, getPasswordFinder()); | |||
} | |||
Throwable t[] = { null }; | |||
Throwable[] t = { null }; | |||
KeyPair key = cache.get(path, p -> { | |||
try { | |||
return loadKey(session, resource, p, getPasswordFinder()); |
@@ -216,7 +216,7 @@ public final class HttpParser { | |||
start = nextStart + 1; | |||
} else { | |||
if (header.charAt(nextStart) == '"') { | |||
int nextEnd[] = { nextStart + 1 }; | |||
int[] nextEnd = { nextStart + 1 }; | |||
String value = scanQuotedString(header, nextStart + 1, | |||
nextEnd); | |||
challenge.addArgument(header.substring(start, end), value); |
@@ -563,10 +563,10 @@ public class RebaseCommandTest extends RepositoryTestCase { | |||
RevCommit newD = rw.next(); | |||
assertDerivedFrom(newD, d); | |||
assertEquals(2, newD.getParentCount()); | |||
RevCommit newE = rw.next(); | |||
assertEquals(e, newE); | |||
RevCommit newC = rw.next(); | |||
assertDerivedFrom(newC, c); | |||
RevCommit newE = rw.next(); | |||
assertEquals(e, newE); | |||
assertEquals(newC, newD.getParent(0)); | |||
assertEquals(e, newD.getParent(1)); | |||
assertEquals(g, rw.next()); |
@@ -91,11 +91,6 @@ public class FileReftableTest extends SampleDataRepositoryTestCase { | |||
} | |||
} | |||
@Test | |||
public void additionalRefsAreRemoved() { | |||
assertFalse(new File(db.getDirectory(), Constants.HEAD).exists()); | |||
} | |||
@Test | |||
public void testCompactFully() throws Exception { | |||
ObjectId c1 = db.resolve("master^^"); | |||
@@ -108,9 +103,16 @@ public class FileReftableTest extends SampleDataRepositoryTestCase { | |||
} | |||
File tableDir = new File(db.getDirectory(), Constants.REFTABLE); | |||
assertTrue(tableDir.listFiles().length > 1); | |||
assertTrue(tableDir.listFiles().length > 2); | |||
((FileReftableDatabase)db.getRefDatabase()).compactFully(); | |||
assertEquals(tableDir.listFiles().length,1); | |||
assertEquals(tableDir.listFiles().length,2); | |||
} | |||
@Test | |||
public void testOpenConvert() throws Exception { | |||
try (FileRepository repo = new FileRepository(db.getDirectory())) { | |||
assertTrue(repo.getRefDatabase() instanceof FileReftableDatabase); | |||
} | |||
} | |||
@Test | |||
@@ -129,7 +131,7 @@ public class FileReftableTest extends SampleDataRepositoryTestCase { | |||
@Test | |||
public void testConvertToRefdir() throws Exception { | |||
db.convertToPackedRefs(false); | |||
db.convertToPackedRefs(false, false); | |||
assertTrue(db.getRefDatabase() instanceof RefDirectory); | |||
Ref h = db.exactRef("HEAD"); | |||
assertTrue(h.isSymbolic()); | |||
@@ -143,6 +145,30 @@ public class FileReftableTest extends SampleDataRepositoryTestCase { | |||
assertFalse(db.getRefDatabase().hasFastTipsWithSha1()); | |||
} | |||
@Test | |||
public void testConvertToRefdirReflog() throws Exception { | |||
Ref a = db.exactRef("refs/heads/a"); | |||
String aCommit = a.getObjectId().getName(); | |||
RefUpdate u = db.updateRef("refs/heads/master"); | |||
u.setForceUpdate(true); | |||
u.setNewObjectId(ObjectId.fromString(aCommit)); | |||
u.setForceRefLog(true); | |||
u.setRefLogMessage("apple", false); | |||
u.update(); | |||
RefUpdate v = db.updateRef("refs/heads/master"); | |||
v.setForceUpdate(true); | |||
v.setNewObjectId(ObjectId.fromString(bCommit)); | |||
v.setForceRefLog(true); | |||
v.setRefLogMessage("banana", false); | |||
v.update(); | |||
db.convertToPackedRefs(true, false); | |||
List<ReflogEntry> logs = db.getReflogReader("refs/heads/master").getReverseEntries(2); | |||
assertEquals(logs.get(0).getComment(), "banana"); | |||
assertEquals(logs.get(1).getComment(), "apple"); | |||
} | |||
@Test | |||
public void testBatchrefUpdate() throws Exception { | |||
ObjectId cur = db.resolve("master"); |
@@ -254,12 +254,12 @@ public class PlotCommitListTest extends RevWalkTestCase { | |||
int posI = test.commit(i).lanePos(childPositions).parents(h) | |||
.getLanePos(); | |||
test.commit(h).lanePos(posI).parents(f); | |||
test.commit(g).lanePos(childPositions).parents(a); | |||
test.commit(f).lanePos(posI).parents(e, d); | |||
test.commit(d).lanePos(1).parents(b); | |||
test.commit(e).lanePos(posI).parents(c); | |||
test.commit(d).lanePos(2).parents(b); | |||
test.commit(c).lanePos(posI).parents(b); | |||
test.commit(b).lanePos(posI).parents(a); | |||
test.commit(g).lanePos(childPositions).parents(a); | |||
test.commit(a).lanePos(0).parents(); | |||
} | |||
} | |||
@@ -325,42 +325,42 @@ public class PlotCommitListTest extends RevWalkTestCase { | |||
.lanePos(mainPos); | |||
test.commit(merge_update_eclipse) | |||
.parents(add_a_clear, update_eclipse).lanePos(mainPos); | |||
test.commit(update_eclipse).parents(add_Maven).lanePos(2); | |||
test.commit(add_a_clear).parents(fix_broken).lanePos(mainPos); | |||
test.commit(fix_broken).parents(merge_disable_comment) | |||
.lanePos(mainPos); | |||
test.commit(merge_disable_comment) | |||
.parents(merge_resolve_handler, disable_comment) | |||
.lanePos(mainPos); | |||
test.commit(disable_comment).parents(clone_operation).lanePos(3); | |||
test.commit(disable_comment).parents(clone_operation).lanePos(2); | |||
test.commit(merge_resolve_handler) | |||
.parents(clone_operation, resolve_handler).lanePos(mainPos); | |||
test.commit(resolve_handler).parents(merge_fix).lanePos(4); | |||
test.commit(update_eclipse).parents(add_Maven).lanePos(3); | |||
test.commit(clone_operation).parents(merge_changeset_implementation) | |||
.lanePos(mainPos); | |||
test.commit(merge_changeset_implementation) | |||
.parents(merge_disable_source, changeset_implementation) | |||
.lanePos(mainPos); | |||
test.commit(changeset_implementation).parents(clear_repositorycache) | |||
.lanePos(1); | |||
test.commit(merge_disable_source) | |||
.parents(update_eclipse_iplog2, disable_source) | |||
.lanePos(mainPos); | |||
test.commit(disable_source).parents(merge_use_remote).lanePos(3); | |||
test.commit(update_eclipse_iplog2).parents(merge_use_remote) | |||
.lanePos(mainPos); | |||
test.commit(disable_source).parents(merge_use_remote).lanePos(1); | |||
test.commit(merge_use_remote) | |||
.parents(update_eclipse_iplog, use_remote).lanePos(mainPos); | |||
test.commit(use_remote).parents(clear_repositorycache).lanePos(3); | |||
test.commit(changeset_implementation).parents(clear_repositorycache) | |||
.lanePos(2); | |||
test.commit(update_eclipse_iplog).parents(merge_add_Maven) | |||
.lanePos(mainPos); | |||
test.commit(merge_add_Maven).parents(findToolBar_layout, add_Maven) | |||
.lanePos(mainPos); | |||
test.commit(add_Maven).parents(clear_repositorycache).lanePos(2); | |||
test.commit(findToolBar_layout).parents(clear_repositorycache) | |||
.lanePos(mainPos); | |||
test.commit(use_remote).parents(clear_repositorycache).lanePos(1); | |||
test.commit(add_Maven).parents(clear_repositorycache).lanePos(3); | |||
test.commit(clear_repositorycache).parents(merge_remove) | |||
.lanePos(mainPos); | |||
test.commit(resolve_handler).parents(merge_fix).lanePos(4); | |||
test.commit(merge_remove).parents(add_simple, remove_unused) | |||
.lanePos(mainPos); | |||
test.commit(remove_unused).parents(merge_fix).lanePos(1); | |||
@@ -453,36 +453,33 @@ public class PlotCommitListTest extends RevWalkTestCase { | |||
pcl.source(pw); | |||
pcl.fillTo(Integer.MAX_VALUE); | |||
Set<Integer> positions = asSet(0, 1); | |||
CommitListAssert test = new CommitListAssert(pcl); | |||
int posA = test.commit(a5).lanePos(positions).getLanePos(); | |||
test.commit(a4); | |||
test.commit(a3).lanePos(posA); | |||
test.commit(e); | |||
test.commit(d); | |||
test.commit(a2).lanePos(posA); | |||
int posB = test.commit(b3).lanePos(positions).getLanePos(); | |||
test.commit(b2).lanePos(posB); | |||
test.commit(b1).lanePos(posB); | |||
test.commit(c); | |||
test.commit(a1).lanePos(posA); | |||
test.noMoreCommits(); | |||
assertNotEquals("a lane is the same as b lane", posA, posB); | |||
// test that the commits b1, b2 and b3 are on the same position | |||
int bPos = pcl.get(9).lane.position; // b1 | |||
assertEquals("b2 is an a different position", bPos, | |||
pcl.get(7).lane.position); | |||
assertEquals("b3 is on a different position", bPos, | |||
pcl.get(4).lane.position); | |||
// test that nothing blocks the connections between b1, b2 and b3 | |||
assertNotEquals("b lane is blocked by c", bPos, | |||
pcl.get(8).lane.position); | |||
assertNotEquals("b lane is blocked by a2", bPos, | |||
pcl.get(6).lane.position); | |||
assertNotEquals("b lane is blocked by d", bPos, | |||
pcl.get(5).lane.position); | |||
} | |||
} | |||
/** | |||
* <pre> | |||
* b3 | |||
* a5 | | |||
* | | | |||
* a4 | | |||
* | \| | |||
* | b2 | |||
* a3 | | |||
* | \| | |||
* | b1 | |||
* a2 | | |||
* | b1 | |||
* | / | |||
* a1 | |||
* </pre> | |||
@@ -497,11 +494,10 @@ public class PlotCommitListTest extends RevWalkTestCase { | |||
final RevCommit a3 = commit(a2, b1); | |||
final RevCommit b2 = commit(b1); | |||
final RevCommit a4 = commit(a3, b2); | |||
final RevCommit a5 = commit(a4); | |||
final RevCommit b3 = commit(b2); | |||
try (PlotWalk pw = new PlotWalk(db)) { | |||
pw.markStart(pw.lookupCommit(a5)); | |||
pw.markStart(pw.lookupCommit(a4)); | |||
pw.markStart(pw.lookupCommit(b3)); | |||
PlotCommitList<PlotLane> pcl = new PlotCommitList<>(); | |||
pcl.source(pw); | |||
@@ -510,12 +506,11 @@ public class PlotCommitListTest extends RevWalkTestCase { | |||
Set<Integer> positions = asSet(0, 1); | |||
CommitListAssert test = new CommitListAssert(pcl); | |||
int posB = test.commit(b3).lanePos(positions).getLanePos(); | |||
int posA = test.commit(a5).lanePos(positions).getLanePos(); | |||
test.commit(a4).lanePos(posA); | |||
int posA = test.commit(a4).lanePos(positions).getLanePos(); | |||
test.commit(b2).lanePos(posB); | |||
test.commit(a3).lanePos(posA); | |||
test.commit(b1).lanePos(posB); | |||
test.commit(a2).lanePos(posA); | |||
test.commit(b1).lanePos(posB); | |||
test.commit(a1).lanePos(posA); | |||
test.noMoreCommits(); | |||
} | |||
@@ -524,17 +519,13 @@ public class PlotCommitListTest extends RevWalkTestCase { | |||
/** | |||
* <pre> | |||
* a4 | |||
* | | |||
* a3 | |||
* | \\ | |||
* a2 \\ | |||
* | \\ | |||
* | b3 || | |||
* | | || | |||
* | b2 || | |||
* | | // | |||
* | b1 | |||
* | | | |||
* | b3 | |||
* a3 | | |||
* | \\| | |||
* | |\\ | |||
* | b2|| | |||
* a2 | // | |||
* | b1 | |||
* | / | |||
* a1 | |||
* </pre> | |||
@@ -561,10 +552,10 @@ public class PlotCommitListTest extends RevWalkTestCase { | |||
Set<Integer> positions = asSet(0, 1); | |||
CommitListAssert test = new CommitListAssert(pcl); | |||
int posA = test.commit(a4).lanePos(positions).getLanePos(); | |||
test.commit(a3).lanePos(posA); | |||
test.commit(a2).lanePos(posA); | |||
int posB = test.commit(b3).lanePos(positions).getLanePos(); | |||
test.commit(a3).lanePos(posA); | |||
test.commit(b2).lanePos(posB); | |||
test.commit(a2).lanePos(posA); | |||
// b1 is not repositioned, uses "detour lane" | |||
// (drawn as a double arc in the ascii graph above) | |||
test.commit(b1).lanePos(posB); | |||
@@ -578,14 +569,13 @@ public class PlotCommitListTest extends RevWalkTestCase { | |||
* b2 | |||
* a4 | | |||
* | \ | | |||
* | b1 | |||
* a3 | | |||
* a3 \| | |||
* | \ | | |||
* | c | | |||
* | / | | |||
* a2 | | |||
* | | | |||
* | / | |||
* | b1 | |||
* / | |||
* | / | |||
* a1 | |||
* </pre> | |||
@@ -614,10 +604,10 @@ public class PlotCommitListTest extends RevWalkTestCase { | |||
CommitListAssert test = new CommitListAssert(pcl); | |||
int posB = test.commit(b2).lanePos(positions).getLanePos(); | |||
int posA = test.commit(a4).lanePos(positions).getLanePos(); | |||
test.commit(b1).lanePos(posB); // repositioned to go around c | |||
test.commit(a3).lanePos(posA); | |||
test.commit(c).lanePos(positions); | |||
test.commit(a2).lanePos(posA); | |||
test.commit(b1).lanePos(posB); // repositioned to go around c | |||
test.commit(a1).lanePos(posA); | |||
test.noMoreCommits(); | |||
} |
@@ -216,4 +216,12 @@ public class ObjectWalkTest extends RevWalkTestCase { | |||
assertSame(rw.lookupBlob(bId), objw.nextObject()); | |||
assertNull(objw.nextObject()); | |||
} | |||
@Test | |||
public void testSkipTreeWhenStartFromBlob() throws Exception { | |||
final RevBlob f1 = blob("1"); | |||
objw.markStart(f1); | |||
assertSame(f1, objw.nextObject()); | |||
objw.skipTree(); | |||
} | |||
} |
@@ -144,110 +144,4 @@ public class RevWalkSortTest extends RevWalkTestCase { | |||
assertCommit(d, rw.next()); | |||
assertNull(rw.next()); | |||
} | |||
@Test | |||
public void testSort_TOPO_OutOfOrderCommitTimes() throws Exception { | |||
// b is committed before c2 in a different line of history. | |||
// | |||
final RevCommit a = commit(); | |||
final RevCommit c1 = commit(a); | |||
final RevCommit b = commit(a); | |||
final RevCommit c2 = commit(c1); | |||
final RevCommit d = commit(b, c2); | |||
rw.sort(RevSort.TOPO); | |||
markStart(d); | |||
assertCommit(d, rw.next()); | |||
assertCommit(c2, rw.next()); | |||
assertCommit(c1, rw.next()); | |||
assertCommit(b, rw.next()); | |||
assertCommit(a, rw.next()); | |||
assertNull(rw.next()); | |||
} | |||
@Test | |||
public void testSort_TOPO_MultipleLinesOfHistory() throws Exception { | |||
final RevCommit a1 = commit(); | |||
final RevCommit b1 = commit(a1); | |||
final RevCommit a2 = commit(a1, b1); | |||
final RevCommit b2 = commit(b1); | |||
final RevCommit b3 = commit(b1); | |||
final RevCommit a3 = commit(a2, b2); | |||
final RevCommit a4 = commit(a3, b3); | |||
rw.sort(RevSort.TOPO); | |||
markStart(a4); | |||
assertCommit(a4, rw.next()); | |||
assertCommit(b3, rw.next()); | |||
assertCommit(a3, rw.next()); | |||
assertCommit(b2, rw.next()); | |||
assertCommit(a2, rw.next()); | |||
assertCommit(b1, rw.next()); | |||
assertCommit(a1, rw.next()); | |||
assertNull(rw.next()); | |||
} | |||
@Test | |||
public void testSort_TOPO_REVERSE_MultipleLinesOfHistory() | |||
throws Exception { | |||
final RevCommit a1 = commit(); | |||
final RevCommit b1 = commit(a1); | |||
final RevCommit a2 = commit(a1, b1); | |||
final RevCommit b2 = commit(b1); | |||
final RevCommit b3 = commit(b1); | |||
final RevCommit a3 = commit(a2, b2); | |||
final RevCommit a4 = commit(a3, b3); | |||
rw.sort(RevSort.TOPO); | |||
rw.sort(RevSort.REVERSE, true); | |||
markStart(a4); | |||
assertCommit(a1, rw.next()); | |||
assertCommit(b1, rw.next()); | |||
assertCommit(a2, rw.next()); | |||
assertCommit(b2, rw.next()); | |||
assertCommit(a3, rw.next()); | |||
assertCommit(b3, rw.next()); | |||
assertCommit(a4, rw.next()); | |||
assertNull(rw.next()); | |||
} | |||
@Test | |||
public void testSort_TOPO_ParentOfMultipleStartChildren() throws Exception { | |||
final RevCommit a = commit(); | |||
final RevCommit b = commit(a); | |||
final RevCommit c = commit(a); | |||
final RevCommit d1 = commit(a); | |||
final RevCommit d2 = commit(d1); | |||
final RevCommit e = commit(a); | |||
rw.sort(RevSort.TOPO); | |||
markStart(b); | |||
markStart(c); | |||
markStart(d2); | |||
markStart(e); | |||
assertCommit(e, rw.next()); | |||
assertCommit(d2, rw.next()); | |||
assertCommit(d1, rw.next()); | |||
assertCommit(c, rw.next()); | |||
assertCommit(b, rw.next()); | |||
assertCommit(a, rw.next()); | |||
assertNull(rw.next()); | |||
} | |||
@Test | |||
public void testSort_TOPO_Uninteresting() throws Exception { | |||
final RevCommit a1 = commit(); | |||
final RevCommit a2 = commit(a1); | |||
final RevCommit a3 = commit(a2); | |||
final RevCommit b = commit(a1); | |||
final RevCommit a4 = commit(a3, b); | |||
rw.sort(RevSort.TOPO); | |||
markStart(a4); | |||
markUninteresting(a2); | |||
assertCommit(a4, rw.next()); | |||
assertCommit(b, rw.next()); | |||
assertCommit(a3, rw.next()); | |||
assertNull(rw.next()); | |||
} | |||
} |
@@ -42,6 +42,31 @@ public class HexTest { | |||
} | |||
} | |||
@Test(expected = IllegalArgumentException.class) | |||
public void testIllegal() { | |||
decode("0011test00"); | |||
} | |||
@Test(expected = IllegalArgumentException.class) | |||
public void testIllegal2() { | |||
decode("0123456789abcdefgh"); | |||
} | |||
@Test(expected = IllegalArgumentException.class) | |||
public void testIllegal3() { | |||
decode("0123456789abcdef-_+*"); | |||
} | |||
@Test | |||
public void testLegal() { | |||
decode("0123456789abcdef"); | |||
} | |||
@Test | |||
public void testLegal2() { | |||
decode("deadbeef"); | |||
} | |||
private static byte[] b(String str) { | |||
return Constants.encode(str); | |||
} |
@@ -37,6 +37,26 @@ | |||
<message_argument value="CONFIG_KEY_PACKED_GIT_WINDOWSIZE"/> | |||
</message_arguments> | |||
</filter> | |||
<filter id="1142947843"> | |||
<message_arguments> | |||
<message_argument value="5.6.2"/> | |||
<message_argument value="CONFIG_EXTENSIONS_SECTION"/> | |||
</message_arguments> | |||
</filter> | |||
<filter id="1142947843"> | |||
<message_arguments> | |||
<message_argument value="5.6.2"/> | |||
<message_argument value="CONFIG_KEY_REF_STORAGE"/> | |||
</message_arguments> | |||
</filter> | |||
</resource> | |||
<resource path="src/org/eclipse/jgit/lib/Constants.java" type="org.eclipse.jgit.lib.Constants"> | |||
<filter id="1142947843"> | |||
<message_arguments> | |||
<message_argument value="5.6.2"/> | |||
<message_argument value="TABLES_LIST"/> | |||
</message_arguments> | |||
</filter> | |||
</resource> | |||
<resource path="src/org/eclipse/jgit/storage/file/WindowCacheConfig.java" type="org.eclipse.jgit.storage.file.WindowCacheConfig"> | |||
<filter id="1142947843"> | |||
@@ -69,6 +89,14 @@ | |||
</message_arguments> | |||
</filter> | |||
</resource> | |||
<resource path="src/org/eclipse/jgit/util/FS.java" type="org.eclipse.jgit.util.FS$FileStoreAttributes"> | |||
<filter id="1226833923"> | |||
<message_arguments> | |||
<message_argument value="5.6.2"/> | |||
<message_argument value="setBackground(boolean)"/> | |||
</message_arguments> | |||
</filter> | |||
</resource> | |||
<resource path="src/org/eclipse/jgit/util/Monitoring.java" type="org.eclipse.jgit.util.Monitoring"> | |||
<filter id="1109393411"> | |||
<message_arguments> |
@@ -354,6 +354,7 @@ invalidFilter=Invalid filter: {0} | |||
invalidGitdirRef = Invalid .git reference in file ''{0}'' | |||
invalidGitModules=Invalid .gitmodules file | |||
invalidGitType=invalid git type: {0} | |||
invalidHexString=Invalid hex string: {0} | |||
invalidHooksPath=Invalid git config core.hooksPath = {0} | |||
invalidId=Invalid id: {0} | |||
invalidId0=Invalid id |
@@ -338,8 +338,7 @@ public class RebaseCommand extends GitCommand<RebaseResult> { | |||
steps, false); | |||
} | |||
checkSteps(steps); | |||
for (int i = 0; i < steps.size(); i++) { | |||
RebaseTodoLine step = steps.get(i); | |||
for (RebaseTodoLine step : steps) { | |||
popSteps(1); | |||
RebaseResult result = processStep(step, true); | |||
if (result != null) { |
@@ -415,7 +415,7 @@ public class RawText extends Sequence { | |||
} | |||
} | |||
byte data[]; | |||
byte[] data; | |||
try { | |||
data = new byte[(int)sz]; | |||
} catch (OutOfMemoryError e) { |
@@ -79,7 +79,8 @@ import org.slf4j.LoggerFactory; | |||
* This class handles checking out one or two trees merging with the index. | |||
*/ | |||
public class DirCacheCheckout { | |||
private static Logger LOG = LoggerFactory.getLogger(DirCacheCheckout.class); | |||
private static final Logger LOG = LoggerFactory | |||
.getLogger(DirCacheCheckout.class); | |||
private static final int MAX_EXCEPTION_TEXT_SIZE = 10 * 1024; | |||
@@ -380,8 +380,8 @@ public class FileNameMatcher { | |||
* @return a boolean. | |||
*/ | |||
public boolean canAppendMatch() { | |||
for (int i = 0; i < heads.size(); i++) { | |||
if (heads.get(i) != LastHead.INSTANCE) { | |||
for (Head head : heads) { | |||
if (head != LastHead.INSTANCE) { | |||
return true; | |||
} | |||
} |
@@ -382,6 +382,7 @@ public class JGitText extends TranslationBundle { | |||
/***/ public String invalidGitdirRef; | |||
/***/ public String invalidGitModules; | |||
/***/ public String invalidGitType; | |||
/***/ public String invalidHexString; | |||
/***/ public String invalidHooksPath; | |||
/***/ public String invalidId; | |||
/***/ public String invalidId0; |
@@ -64,6 +64,11 @@ public class FileReftableDatabase extends RefDatabase { | |||
private final FileReftableStack reftableStack; | |||
FileReftableDatabase(FileRepository repo) throws IOException { | |||
this(repo, new File(new File(repo.getDirectory(), Constants.REFTABLE), | |||
Constants.TABLES_LIST)); | |||
} | |||
FileReftableDatabase(FileRepository repo, File refstackName) throws IOException { | |||
this.fileRepository = repo; | |||
this.reftableStack = new FileReftableStack(refstackName, | |||
@@ -88,8 +93,7 @@ public class FileReftableDatabase extends RefDatabase { | |||
* @return whether the given repo uses reftable for refdb storage. | |||
*/ | |||
public static boolean isReftable(File repoDir) { | |||
return new File(repoDir, "refs").isFile() //$NON-NLS-1$ | |||
&& new File(repoDir, Constants.REFTABLE).isDirectory(); | |||
return new File(repoDir, Constants.REFTABLE).isDirectory(); | |||
} | |||
/** {@inheritDoc} */ | |||
@@ -593,8 +597,6 @@ public class FileReftableDatabase extends RefDatabase { | |||
/** | |||
* @param repo | |||
* the repository | |||
* @param refstackName | |||
* the filename for the stack | |||
* @param writeLogs | |||
* whether to write reflogs | |||
* @return a reftable based RefDB from an existing repository. | |||
@@ -602,22 +604,25 @@ public class FileReftableDatabase extends RefDatabase { | |||
* on IO error | |||
*/ | |||
public static FileReftableDatabase convertFrom(FileRepository repo, | |||
File refstackName, boolean writeLogs) throws IOException { | |||
boolean writeLogs) throws IOException { | |||
FileReftableDatabase newDb = null; | |||
File reftableList = null; | |||
try { | |||
File reftableDir = new File(repo.getDirectory(), Constants.REFTABLE); | |||
File reftableDir = new File(repo.getDirectory(), | |||
Constants.REFTABLE); | |||
reftableList = new File(reftableDir, Constants.TABLES_LIST); | |||
if (!reftableDir.isDirectory()) { | |||
reftableDir.mkdir(); | |||
} | |||
try (FileReftableStack stack = new FileReftableStack(refstackName, | |||
try (FileReftableStack stack = new FileReftableStack(reftableList, | |||
reftableDir, null, () -> repo.getConfig())) { | |||
stack.addReftable(rw -> writeConvertTable(repo, rw, writeLogs)); | |||
} | |||
refstackName = null; | |||
reftableList = null; | |||
} finally { | |||
if (refstackName != null) { | |||
refstackName.delete(); | |||
if (reftableList != null) { | |||
reftableList.delete(); | |||
} | |||
} | |||
return newDb; |
@@ -649,7 +649,7 @@ public class FileReftableStack implements AutoCloseable { | |||
} | |||
} | |||
static List<Segment> segmentSizes(long sizes[]) { | |||
static List<Segment> segmentSizes(long[] sizes) { | |||
List<Segment> segments = new ArrayList<>(); | |||
Segment cur = new Segment(); | |||
for (int i = 0; i < sizes.length; i++) { | |||
@@ -669,7 +669,7 @@ public class FileReftableStack implements AutoCloseable { | |||
return segments; | |||
} | |||
private static Optional<Segment> autoCompactCandidate(long sizes[]) { | |||
private static Optional<Segment> autoCompactCandidate(long[] sizes) { | |||
if (sizes.length == 0) { | |||
return Optional.empty(); | |||
} |
@@ -18,10 +18,13 @@ import static java.util.stream.Collectors.toList; | |||
import java.io.File; | |||
import java.io.FileInputStream; | |||
import java.io.FileNotFoundException; | |||
import java.io.FileOutputStream; | |||
import java.io.IOException; | |||
import java.io.OutputStream; | |||
import java.text.MessageFormat; | |||
import java.text.ParseException; | |||
import java.util.ArrayList; | |||
import java.util.Collections; | |||
import java.util.HashSet; | |||
import java.util.List; | |||
import java.util.Locale; | |||
@@ -50,6 +53,7 @@ import org.eclipse.jgit.lib.ProgressMonitor; | |||
import org.eclipse.jgit.lib.Ref; | |||
import org.eclipse.jgit.lib.RefDatabase; | |||
import org.eclipse.jgit.lib.RefUpdate; | |||
import org.eclipse.jgit.lib.ReflogEntry; | |||
import org.eclipse.jgit.lib.ReflogReader; | |||
import org.eclipse.jgit.lib.Repository; | |||
import org.eclipse.jgit.lib.StoredConfig; | |||
@@ -173,20 +177,17 @@ public class FileRepository extends Repository { | |||
String reftype = repoConfig.getString( | |||
ConfigConstants.CONFIG_EXTENSIONS_SECTION, null, | |||
ConfigConstants.CONFIG_KEY_REFSTORAGE); | |||
ConfigConstants.CONFIG_KEY_REF_STORAGE); | |||
if (repositoryFormatVersion >= 1 && reftype != null) { | |||
if (StringUtils.equalsIgnoreCase(reftype, | |||
ConfigConstants.CONFIG_REFSTORAGE_REFTABLE)) { | |||
refs = new FileReftableDatabase(this, | |||
new File(getDirectory(), "refs")); //$NON-NLS-1$ | |||
ConfigConstants.CONFIG_REF_STORAGE_REFTABLE)) { | |||
refs = new FileReftableDatabase(this); | |||
} else if (StringUtils.equalsIgnoreCase(reftype, | |||
ConfigConstants.CONFIG_REFSTORAGE_REFTREE)) { | |||
refs = new RefTreeDatabase(this, new RefDirectory(this)); | |||
} else { | |||
throw new IOException(JGitText.get().unknownRepositoryFormat); | |||
} | |||
} else if (FileReftableDatabase.isReftable(getDirectory())) { | |||
refs = new FileReftableDatabase(this, new File(getDirectory(), "refs")); //$NON-NLS-1$ | |||
} else { | |||
refs = new RefDirectory(this); | |||
} | |||
@@ -610,15 +611,18 @@ public class FileRepository extends Repository { | |||
* Converts the RefDatabase from reftable to RefDirectory. This operation is | |||
* not atomic. | |||
* | |||
* @param writeLogs | |||
* whether to write reflogs | |||
* @param backup | |||
* whether to rename or delete the old storage files. If set to | |||
* true, the reftable list is left in "refs.old", and the | |||
* reftable/ dir is left alone. If set to false, the reftable/ | |||
* dir is removed, and "refs" file is removed. | |||
* {@code true}, the reftable list is left in {@code refs.old}, | |||
* and the {@code reftable/} dir is left alone. If set to | |||
* {@code false}, the {@code reftable/} dir is removed, and | |||
* {@code refs} file is removed. | |||
* @throws IOException | |||
* on IO problem | |||
*/ | |||
void convertToPackedRefs(boolean backup) throws IOException { | |||
void convertToPackedRefs(boolean writeLogs, boolean backup) throws IOException { | |||
List<Ref> all = refs.getRefs(); | |||
File packedRefs = new File(getDirectory(), Constants.PACKED_REFS); | |||
if (packedRefs.exists()) { | |||
@@ -627,26 +631,26 @@ public class FileRepository extends Repository { | |||
} | |||
File refsFile = new File(getDirectory(), "refs"); //$NON-NLS-1$ | |||
refs.close(); | |||
if (backup) { | |||
File refsOld = new File(getDirectory(), "refs.old"); //$NON-NLS-1$ | |||
if (refsOld.exists()) { | |||
throw new IOException(MessageFormat.format( | |||
JGitText.get().fileAlreadyExists, | |||
"refs.old")); //$NON-NLS-1$ | |||
} | |||
FileUtils.rename(refsFile, refsOld); | |||
} else { | |||
refsFile.delete(); | |||
} | |||
File refsHeadsFile = new File(refsFile, "heads");//$NON-NLS-1$ | |||
File headFile = new File(getDirectory(), Constants.HEAD); | |||
FileReftableDatabase oldDb = (FileReftableDatabase) refs; | |||
// Remove the dummy files that ensure compatibility with older git | |||
// versions (see convertToReftable). First make room for refs/heads/ | |||
refsHeadsFile.delete(); | |||
// RefDirectory wants to create the refs/ directory from scratch, so | |||
// remove that too. | |||
refsFile.delete(); | |||
// remove HEAD so its previous invalid value doesn't cause issues. | |||
headFile.delete(); | |||
// This is not atomic, but there is no way to instantiate a RefDirectory | |||
// that is disconnected from the current repo. | |||
refs = new RefDirectory(this); | |||
RefDirectory refDir = new RefDirectory(this); | |||
refs = refDir; | |||
refs.create(); | |||
ReflogWriter logWriter = refDir.newLogWriter(true); | |||
List<Ref> symrefs = new ArrayList<>(); | |||
BatchRefUpdate bru = refs.newBatchUpdate(); | |||
for (Ref r : all) { | |||
@@ -656,6 +660,15 @@ public class FileRepository extends Repository { | |||
bru.addCommand(new ReceiveCommand(ObjectId.zeroId(), | |||
r.getObjectId(), r.getName())); | |||
} | |||
if (writeLogs) { | |||
List<ReflogEntry> logs = oldDb.getReflogReader(r.getName()) | |||
.getReverseEntries(); | |||
Collections.reverse(logs); | |||
for (ReflogEntry e : logs) { | |||
logWriter.log(r.getName(), e); | |||
} | |||
} | |||
} | |||
try (RevWalk rw = new RevWalk(this)) { | |||
@@ -691,24 +704,39 @@ public class FileRepository extends Repository { | |||
FileUtils.delete(reftableDir, | |||
FileUtils.RECURSIVE | FileUtils.IGNORE_ERRORS); | |||
} | |||
repoConfig.unset(ConfigConstants.CONFIG_EXTENSIONS_SECTION, null, | |||
ConfigConstants.CONFIG_KEY_REFSTORAGE); | |||
ConfigConstants.CONFIG_KEY_REF_STORAGE); | |||
repoConfig.save(); | |||
} | |||
/** | |||
* Converts the RefDatabase from RefDirectory to reftable. This operation is | |||
* not atomic. | |||
* | |||
* @param writeLogs | |||
* whether to write reflogs | |||
* @param backup | |||
* whether to rename or delete the old storage files. If set to | |||
* {@code true}, the loose refs are left in {@code refs.old}, the | |||
* packed-refs in {@code packed-refs.old} and reflogs in | |||
* {@code refs.old/}. HEAD is left in {@code HEAD.old} and also | |||
* {@code .log} is appended to additional refs. If set to | |||
* {@code false}, the {@code refs/} and {@code logs/} directories | |||
* and {@code HEAD} and additional symbolic refs are removed. | |||
* @throws IOException | |||
* on IO problem | |||
*/ | |||
@SuppressWarnings("nls") | |||
void convertToReftable(boolean writeLogs, boolean backup) | |||
throws IOException { | |||
File newRefs = new File(getDirectory(), "refs.new"); | |||
File reftableDir = new File(getDirectory(), Constants.REFTABLE); | |||
File headFile = new File(getDirectory(), Constants.HEAD); | |||
if (reftableDir.exists() && reftableDir.listFiles().length > 0) { | |||
throw new IOException(JGitText.get().reftableDirExists); | |||
} | |||
// Ignore return value, as it is tied to temporary newRefs file. | |||
FileReftableDatabase.convertFrom(this, newRefs, writeLogs); | |||
FileReftableDatabase.convertFrom(this, writeLogs); | |||
File refsFile = new File(getDirectory(), "refs"); | |||
@@ -716,7 +744,6 @@ public class FileRepository extends Repository { | |||
File packedRefs = new File(getDirectory(), Constants.PACKED_REFS); | |||
File logsDir = new File(getDirectory(), Constants.LOGS); | |||
List<String> additional = getRefDatabase().getAdditionalRefs().stream() | |||
.map(Ref::getName).collect(toList()); | |||
additional.add(Constants.HEAD); | |||
@@ -735,7 +762,8 @@ public class FileRepository extends Repository { | |||
new File(getDirectory(), r + ".old")); | |||
} | |||
} else { | |||
packedRefs.delete(); // ignore return value. | |||
FileUtils.delete(packedRefs, FileUtils.SKIP_MISSING); | |||
FileUtils.delete(headFile); | |||
FileUtils.delete(logsDir, FileUtils.RECURSIVE); | |||
FileUtils.delete(refsFile, FileUtils.RECURSIVE); | |||
for (String r : additional) { | |||
@@ -743,16 +771,26 @@ public class FileRepository extends Repository { | |||
} | |||
} | |||
// Put new data. | |||
FileUtils.rename(newRefs, refsFile); | |||
FileUtils.mkdir(refsFile, true); | |||
refs.close(); | |||
refs = new FileReftableDatabase(this, refsFile); | |||
// By putting in a dummy HEAD, old versions of Git still detect a repo | |||
// (that they can't read) | |||
try (OutputStream os = new FileOutputStream(headFile)) { | |||
os.write(Constants.encodeASCII("ref: refs/heads/.invalid")); | |||
} | |||
// Some tools might write directly into .git/refs/heads/BRANCH. By | |||
// putting a file here, this fails spectacularly. | |||
FileUtils.createNewFile(new File(refsFile, "heads")); | |||
repoConfig.setString(ConfigConstants.CONFIG_EXTENSIONS_SECTION, null, | |||
ConfigConstants.CONFIG_KEY_REFSTORAGE, | |||
ConfigConstants.CONFIG_REFSTORAGE_REFTABLE); | |||
ConfigConstants.CONFIG_KEY_REF_STORAGE, | |||
ConfigConstants.CONFIG_REF_STORAGE_REFTABLE); | |||
repoConfig.setLong(ConfigConstants.CONFIG_CORE_SECTION, null, | |||
ConfigConstants.CONFIG_KEY_REPO_FORMAT_VERSION, 1); | |||
repoConfig.save(); | |||
refs.close(); | |||
refs = new FileReftableDatabase(this); | |||
} | |||
/** | |||
@@ -775,7 +813,7 @@ public class FileRepository extends Repository { | |||
} | |||
} else if (format.equals("refdir")) {//$NON-NLS-1$ | |||
if (refs instanceof FileReftableDatabase) { | |||
convertToPackedRefs(backup); | |||
convertToPackedRefs(writeLogs, backup); | |||
} | |||
} else { | |||
throw new IOException(MessageFormat |
@@ -122,8 +122,8 @@ public class DeltaIndex { | |||
// logic linear in the size of the input rather than quadratic. | |||
// | |||
int cnt = 0; | |||
for (int i = 0; i < table.length; i++) { | |||
int h = table[i]; | |||
for (int element : table) { | |||
int h = element; | |||
if (h == 0) | |||
continue; | |||
@@ -191,7 +191,7 @@ public class PackWriter implements AutoCloseable { | |||
} | |||
@SuppressWarnings("unchecked") | |||
BlockList<ObjectToPack> objectsLists[] = new BlockList[OBJ_TAG + 1]; | |||
BlockList<ObjectToPack>[] objectsLists = new BlockList[OBJ_TAG + 1]; | |||
{ | |||
objectsLists[OBJ_COMMIT] = new BlockList<>(); | |||
objectsLists[OBJ_TREE] = new BlockList<>(); | |||
@@ -236,7 +236,7 @@ public class PackWriter implements AutoCloseable { | |||
private List<ObjectToPack> sortedByName; | |||
private byte packcsum[]; | |||
private byte[] packcsum; | |||
private boolean deltaBaseAsOffset; | |||
@@ -504,9 +504,18 @@ public final class ConfigConstants { | |||
*/ | |||
public static final String CONFIG_KEY_MIN_RACY_THRESHOLD = "minRacyThreshold"; | |||
/** | |||
* The "refStorage" key | |||
* | |||
* @since 5.6.2 | |||
*/ | |||
public static final String CONFIG_KEY_REF_STORAGE = "refStorage"; | |||
/** | |||
* The "extensions" section | |||
* @since 5.7 | |||
* | |||
* @since 5.6.2 | |||
*/ | |||
public static final String CONFIG_EXTENSIONS_SECTION = "extensions"; | |||
@@ -520,7 +529,7 @@ public final class ConfigConstants { | |||
* The "reftable" refStorage format | |||
* @since 5.7 | |||
*/ | |||
public static final String CONFIG_REFSTORAGE_REFTABLE = "reftable"; | |||
public static final String CONFIG_REF_STORAGE_REFTABLE = "reftable"; | |||
/** | |||
* The "reftree" refStorage format |
@@ -254,6 +254,12 @@ public final class Constants { | |||
*/ | |||
public static final String REFTABLE = "reftable"; | |||
/** | |||
* Reftable table list name. | |||
* @since 5.6.2 | |||
*/ | |||
public static final String TABLES_LIST = "tables.list"; | |||
/** Info refs folder */ | |||
public static final String INFO_REFS = "info/refs"; | |||
@@ -110,7 +110,7 @@ public class ResolveMerger extends ThreeWayMerger { | |||
* | |||
* @since 3.0 | |||
*/ | |||
protected String commitNames[]; | |||
protected String[] commitNames; | |||
/** | |||
* Index of the base tree within the {@link #tw tree walk}. |
@@ -364,7 +364,9 @@ public class ObjectWalk extends RevWalk { | |||
* @since 5.4 | |||
*/ | |||
public void skipTree() { | |||
currVisit.ptr = currVisit.buf.length; | |||
if (currVisit != null) { | |||
currVisit.ptr = currVisit.buf.length; | |||
} | |||
} | |||
/** |
@@ -151,7 +151,7 @@ public abstract class RevObject extends ObjectIdOwnerMap.Entry { | |||
* buffer to append a debug description of core RevFlags onto. | |||
*/ | |||
protected void appendCoreFlags(StringBuilder s) { | |||
s.append((flags & RevWalk.TOPO_QUEUED) != 0 ? 'o' : '-'); | |||
s.append((flags & RevWalk.TOPO_DELAY) != 0 ? 'o' : '-'); | |||
s.append((flags & RevWalk.TEMP_MARK) != 0 ? 't' : '-'); | |||
s.append((flags & RevWalk.REWRITE) != 0 ? 'r' : '-'); | |||
s.append((flags & RevWalk.UNINTERESTING) != 0 ? 'u' : '-'); |
@@ -125,11 +125,11 @@ public class RevWalk implements Iterable<RevCommit>, AutoCloseable { | |||
/** | |||
* Temporary mark for use within {@link TopoSortGenerator}. | |||
* <p> | |||
* This mark indicates the commit has been queued for emission in | |||
* {@link TopoSortGenerator} and can be produced. This mark is removed when | |||
* the commit has been produced. | |||
* This mark indicates the commit could not produce when it wanted to, as at | |||
* least one child was behind it. Commits with this flag are delayed until | |||
* all children have been output first. | |||
*/ | |||
static final int TOPO_QUEUED = 1 << 5; | |||
static final int TOPO_DELAY = 1 << 5; | |||
/** Number of flag bits we keep internal for our own use. See above flags. */ | |||
static final int RESERVED_FLAGS = 6; |
@@ -17,7 +17,7 @@ import org.eclipse.jgit.errors.MissingObjectException; | |||
/** Sorts commits in topological order. */ | |||
class TopoSortGenerator extends Generator { | |||
private static final int TOPO_QUEUED = RevWalk.TOPO_QUEUED; | |||
private static final int TOPO_DELAY = RevWalk.TOPO_DELAY; | |||
private final FIFORevQueue pending; | |||
@@ -47,16 +47,12 @@ class TopoSortGenerator extends Generator { | |||
if (c == null) { | |||
break; | |||
} | |||
if ((c.flags & TOPO_QUEUED) == 0) { | |||
for (RevCommit p : c.parents) { | |||
p.inDegree++; | |||
if (firstParent) { | |||
break; | |||
} | |||
for (RevCommit p : c.parents) { | |||
p.inDegree++; | |||
if (firstParent) { | |||
break; | |||
} | |||
} | |||
c.flags |= TOPO_QUEUED; | |||
pending.add(c); | |||
} | |||
} | |||
@@ -75,42 +71,34 @@ class TopoSortGenerator extends Generator { | |||
RevCommit next() throws MissingObjectException, | |||
IncorrectObjectTypeException, IOException { | |||
for (;;) { | |||
RevCommit c = pending.next(); | |||
if (c == null) { | |||
final RevCommit c = pending.next(); | |||
if (c == null) | |||
return null; | |||
} | |||
if (c.inDegree > 0) { | |||
// At least one of our children is missing. We delay | |||
// production until all of our children are output. | |||
// | |||
c.flags |= TOPO_DELAY; | |||
continue; | |||
} | |||
if ((c.flags & TOPO_QUEUED) == 0) { | |||
// c is a parent that already produced or a parent that | |||
// was never in the priority queue and should never produce. | |||
// | |||
continue; | |||
} | |||
// All of our children have already produced, | |||
// so it is OK for us to produce now as well. | |||
// | |||
for (RevCommit p : c.parents) { | |||
if (--p.inDegree == 0 && (p.flags & TOPO_QUEUED) != 0) { | |||
// The parent has no unproduced interesting children. unpop | |||
// the parent so it goes right behind this child. This means | |||
// that this parent commit may appear in "pending" more than | |||
// once, but this is safe since upon the second and | |||
// subsequent iterations with this commit, it will no longer | |||
// have TOPO_QUEUED set, and thus will be skipped. | |||
if (--p.inDegree == 0 && (p.flags & TOPO_DELAY) != 0) { | |||
// This parent tried to come before us, but we are | |||
// his last child. unpop the parent so it goes right | |||
// behind this child. | |||
// | |||
p.flags &= ~TOPO_DELAY; | |||
pending.unpop(p); | |||
} | |||
if (firstParent) { | |||
break; | |||
} | |||
} | |||
c.flags &= ~TOPO_QUEUED; | |||
return c; | |||
} | |||
} |
@@ -42,8 +42,8 @@ public abstract class PatternMatchRevFilter extends RevFilter { | |||
protected static final String forceToRaw(String patternText) { | |||
final byte[] b = Constants.encode(patternText); | |||
final StringBuilder needle = new StringBuilder(b.length); | |||
for (int i = 0; i < b.length; i++) | |||
needle.append((char) (b[i] & 0xff)); | |||
for (byte element : b) | |||
needle.append((char) (element & 0xff)); | |||
return needle.toString(); | |||
} | |||
@@ -423,8 +423,7 @@ abstract class HttpAuthMethod { | |||
private static String LHEX(byte[] bin) { | |||
StringBuilder r = new StringBuilder(bin.length * 2); | |||
for (int i = 0; i < bin.length; i++) { | |||
byte b = bin[i]; | |||
for (byte b : bin) { | |||
r.append(LHEX[(b >>> 4) & 0x0f]); | |||
r.append(LHEX[b & 0x0f]); | |||
} |
@@ -219,7 +219,13 @@ public abstract class JschConfigSessionFactory extends SshSessionFactory { | |||
private static void setPreferredKeyTypesOrder(Session session) { | |||
HostKeyRepository hkr = session.getHostKeyRepository(); | |||
List<String> known = Stream.of(hkr.getHostKey(hostName(session), null)) | |||
HostKey[] hostKeys = hkr.getHostKey(hostName(session), null); | |||
if (hostKeys == null) { | |||
return; | |||
} | |||
List<String> known = Stream.of(hostKeys) | |||
.map(HostKey::getType) | |||
.collect(toList()); | |||
@@ -303,8 +303,8 @@ public class URIish implements Serializable { | |||
return null; | |||
ByteArrayOutputStream os = new ByteArrayOutputStream(s.length()); | |||
byte[] bytes = s.getBytes(UTF_8); | |||
for (int i = 0; i < bytes.length; ++i) { | |||
int b = bytes[i] & 0xFF; | |||
for (byte c : bytes) { | |||
int b = c & 0xFF; | |||
if (b <= 32 || (encodeNonAscii && b > 127) || b == '%' | |||
|| (escapeReservedChars && reservedChars.get(b))) { | |||
os.write('%'); |
@@ -2378,12 +2378,12 @@ public class UploadPack { | |||
} | |||
@Override | |||
public void write(byte b[]) throws IOException { | |||
public void write(byte[] b) throws IOException { | |||
out.write(b); | |||
} | |||
@Override | |||
public void write(byte b[], int off, int len) throws IOException { | |||
public void write(byte[] b, int off, int len) throws IOException { | |||
out.write(b, off, len); | |||
} | |||
@@ -245,7 +245,16 @@ public abstract class FS { | |||
return t; | |||
}); | |||
private static void setBackground(boolean async) { | |||
/** | |||
* Whether FileStore attributes should be determined asynchronously | |||
* | |||
* @param async | |||
* whether FileStore attributes should be determined | |||
* asynchronously. If false access to cached attributes may block | |||
* for some seconds for the first call per FileStore | |||
* @since 5.6.2 | |||
*/ | |||
public static void setBackground(boolean async) { | |||
background.set(async); | |||
} | |||
@@ -709,7 +718,9 @@ public abstract class FS { | |||
* asynchronously. If false access to cached attributes may block | |||
* for some seconds for the first call per FileStore | |||
* @since 5.1.9 | |||
* @deprecated Use {@link FileStoreAttributes#setBackground} instead | |||
*/ | |||
@Deprecated | |||
public static void setAsyncFileStoreAttributes(boolean asynch) { | |||
FileStoreAttributes.setBackground(asynch); | |||
} | |||
@@ -2270,7 +2281,7 @@ public abstract class FS { | |||
void copy() throws IOException { | |||
boolean writeFailure = false; | |||
byte buffer[] = new byte[4096]; | |||
byte[] buffer = new byte[4096]; | |||
int readBytes; | |||
while ((readBytes = in.read(buffer)) != -1) { | |||
// Do not try to write again after a failure, but keep |
@@ -117,7 +117,7 @@ public class FS_Win32_Cygwin extends FS_Win32 { | |||
argv.add("sh.exe"); //$NON-NLS-1$ | |||
argv.add("-c"); //$NON-NLS-1$ | |||
argv.add("$0 \"$@\""); //$NON-NLS-1$ | |||
argv.add(cmd); | |||
argv.add(cmd.replace(File.separatorChar, '/')); | |||
argv.addAll(Arrays.asList(args)); | |||
ProcessBuilder proc = new ProcessBuilder(); | |||
proc.command(argv); |
@@ -10,6 +10,10 @@ | |||
package org.eclipse.jgit.util; | |||
import java.text.MessageFormat; | |||
import org.eclipse.jgit.internal.JGitText; | |||
/** | |||
* Encodes and decodes to and from hexadecimal notation. | |||
* | |||
@@ -27,9 +31,11 @@ public final class Hex { | |||
/** | |||
* Decode a hexadecimal string to a byte array. | |||
* | |||
* Note this method performs no validation on input content. | |||
* Note this method validates that characters in the given string are valid | |||
* as digits in a hex string. | |||
* | |||
* @param s hexadecimal string | |||
* @param s | |||
* hexadecimal string | |||
* @return decoded array | |||
*/ | |||
public static byte[] decode(String s) { | |||
@@ -37,7 +43,16 @@ public final class Hex { | |||
byte[] b = new byte[len / 2]; | |||
for (int i = 0; i < len; i += 2) { | |||
b[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4) | Character.digit(s.charAt(i + 1), 16)); | |||
int left = Character.digit(s.charAt(i), 16); | |||
int right = Character.digit(s.charAt(i + 1), 16); | |||
if (left == -1 || right == -1) { | |||
throw new IllegalArgumentException(MessageFormat.format( | |||
JGitText.get().invalidHexString, | |||
s)); | |||
} | |||
b[i / 2] = (byte) (left << 4 | right); | |||
} | |||
return b; | |||
} |
@@ -280,7 +280,7 @@ public class LfsFactory { | |||
} | |||
@Override | |||
public int read(byte b[], int off, int len) throws IOException { | |||
public int read(byte[] b, int off, int len) throws IOException { | |||
return stream.read(b, off, len); | |||
} | |||
@@ -49,7 +49,7 @@ public class Monitoring { | |||
String metricName) { | |||
boolean register = false; | |||
try { | |||
Class<?> interfaces[] = mbean.getClass().getInterfaces(); | |||
Class<?>[] interfaces = mbean.getClass().getInterfaces(); | |||
for (Class<?> i : interfaces) { | |||
register = SystemReader.getInstance().getUserConfig() | |||
.getBoolean( |
@@ -243,8 +243,8 @@ public abstract class QuotedString { | |||
final byte[] out = new byte[4 * in.length + 2]; | |||
int o = 0; | |||
out[o++] = '"'; | |||
for (int i = 0; i < in.length; i++) { | |||
final int c = in[i] & 0xff; | |||
for (byte element : in) { | |||
final int c = element & 0xff; | |||
if (c < quote.length) { | |||
final byte style = quote[c]; | |||
if (style == 0) { |
@@ -559,8 +559,8 @@ public final class RawParseUtils { | |||
} | |||
while (ptr < b.length - (headerName.length + 1)) { | |||
boolean found = true; | |||
for (int i = 0; i < headerName.length; i++) { | |||
if (headerName[i] != b[ptr++]) { | |||
for (byte element : headerName) { | |||
if (element != b[ptr++]) { | |||
found = false; | |||
break; | |||
} |
@@ -45,7 +45,7 @@ import org.slf4j.LoggerFactory; | |||
* @since 4.7 | |||
*/ | |||
public class SHA1 { | |||
private static Logger LOG = LoggerFactory.getLogger(SHA1.class); | |||
private static final Logger LOG = LoggerFactory.getLogger(SHA1.class); | |||
private static final boolean DETECT_COLLISIONS; | |||
static { |