Merge "Add getters to RepoProject."
This commit is contained in:
commit
5635d9e1af
|
@ -87,9 +87,9 @@ public void testManifestParser() throws Exception {
|
||||||
for (RepoProject proj : parser.getProjects()) {
|
for (RepoProject proj : parser.getProjects()) {
|
||||||
String msg = String.format(
|
String msg = String.format(
|
||||||
"project \"%s\" should be included in unfiltered projects",
|
"project \"%s\" should be included in unfiltered projects",
|
||||||
proj.path);
|
proj.getPath());
|
||||||
assertTrue(msg, results.contains(proj.path));
|
assertTrue(msg, results.contains(proj.getPath()));
|
||||||
results.remove(proj.path);
|
results.remove(proj.getPath());
|
||||||
}
|
}
|
||||||
assertTrue(
|
assertTrue(
|
||||||
"Unfiltered projects shouldn't contain any unexpected results",
|
"Unfiltered projects shouldn't contain any unexpected results",
|
||||||
|
@ -101,9 +101,9 @@ public void testManifestParser() throws Exception {
|
||||||
for (RepoProject proj : parser.getFilteredProjects()) {
|
for (RepoProject proj : parser.getFilteredProjects()) {
|
||||||
String msg = String.format(
|
String msg = String.format(
|
||||||
"project \"%s\" should be included in filtered projects",
|
"project \"%s\" should be included in filtered projects",
|
||||||
proj.path);
|
proj.getPath());
|
||||||
assertTrue(msg, results.contains(proj.path));
|
assertTrue(msg, results.contains(proj.getPath()));
|
||||||
results.remove(proj.path);
|
results.remove(proj.getPath());
|
||||||
}
|
}
|
||||||
assertTrue(
|
assertTrue(
|
||||||
"Filtered projects shouldn't contain any unexpected results",
|
"Filtered projects shouldn't contain any unexpected results",
|
||||||
|
|
|
@ -205,7 +205,7 @@ public void startElement(
|
||||||
throw new SAXException(RepoText.get().invalidManifest);
|
throw new SAXException(RepoText.get().invalidManifest);
|
||||||
currentProject.addCopyFile(new CopyFile(
|
currentProject.addCopyFile(new CopyFile(
|
||||||
rootRepo,
|
rootRepo,
|
||||||
currentProject.path,
|
currentProject.getPath(),
|
||||||
attributes.getValue("src"), //$NON-NLS-1$
|
attributes.getValue("src"), //$NON-NLS-1$
|
||||||
attributes.getValue("dest"))); //$NON-NLS-1$
|
attributes.getValue("dest"))); //$NON-NLS-1$
|
||||||
} else if ("include".equals(qName)) { //$NON-NLS-1$
|
} else if ("include".equals(qName)) { //$NON-NLS-1$
|
||||||
|
@ -266,7 +266,7 @@ public void endDocument() throws SAXException {
|
||||||
throw new SAXException(e);
|
throw new SAXException(e);
|
||||||
}
|
}
|
||||||
for (RepoProject proj : projects) {
|
for (RepoProject proj : projects) {
|
||||||
String remote = proj.remote;
|
String remote = proj.getRemote();
|
||||||
if (remote == null) {
|
if (remote == null) {
|
||||||
if (defaultRemote == null) {
|
if (defaultRemote == null) {
|
||||||
if (filename != null)
|
if (filename != null)
|
||||||
|
@ -286,7 +286,7 @@ public void endDocument() throws SAXException {
|
||||||
remoteUrl = remoteUrl + "/"; //$NON-NLS-1$
|
remoteUrl = remoteUrl + "/"; //$NON-NLS-1$
|
||||||
remoteUrls.put(remote, remoteUrl);
|
remoteUrls.put(remote, remoteUrl);
|
||||||
}
|
}
|
||||||
proj.setUrl(remoteUrl + proj.name)
|
proj.setUrl(remoteUrl + proj.getName())
|
||||||
.setDefaultRevision(defaultRevision);
|
.setDefaultRevision(defaultRevision);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -339,7 +339,7 @@ void removeOverlaps() {
|
||||||
|
|
||||||
boolean inGroups(RepoProject proj) {
|
boolean inGroups(RepoProject proj) {
|
||||||
for (String group : minusGroups) {
|
for (String group : minusGroups) {
|
||||||
if (proj.groups.contains(group)) {
|
if (proj.inGroup(group)) {
|
||||||
// minus groups have highest priority.
|
// minus groups have highest priority.
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -349,7 +349,7 @@ boolean inGroups(RepoProject proj) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
for (String group : plusGroups) {
|
for (String group : plusGroups) {
|
||||||
if (proj.groups.contains(group))
|
if (proj.inGroup(group))
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -379,10 +379,10 @@ public RevCommit call() throws GitAPIException {
|
||||||
try {
|
try {
|
||||||
parser.read(inputStream);
|
parser.read(inputStream);
|
||||||
for (RepoProject proj : parser.getFilteredProjects()) {
|
for (RepoProject proj : parser.getFilteredProjects()) {
|
||||||
addSubmodule(proj.url,
|
addSubmodule(proj.getUrl(),
|
||||||
proj.path,
|
proj.getPath(),
|
||||||
proj.getRevision(),
|
proj.getRevision(),
|
||||||
proj.copyfiles);
|
proj.getCopyFiles());
|
||||||
}
|
}
|
||||||
} catch (GitAPIException | IOException e) {
|
} catch (GitAPIException | IOException e) {
|
||||||
throw new ManifestErrorException(e);
|
throw new ManifestErrorException(e);
|
||||||
|
@ -403,17 +403,17 @@ public RevCommit call() throws GitAPIException {
|
||||||
try (RevWalk rw = new RevWalk(repo)) {
|
try (RevWalk rw = new RevWalk(repo)) {
|
||||||
Config cfg = new Config();
|
Config cfg = new Config();
|
||||||
for (RepoProject proj : bareProjects) {
|
for (RepoProject proj : bareProjects) {
|
||||||
String name = proj.path;
|
String name = proj.getPath();
|
||||||
String nameUri = proj.name;
|
String nameUri = proj.getName();
|
||||||
cfg.setString("submodule", name, "path", name); //$NON-NLS-1$ //$NON-NLS-2$
|
cfg.setString("submodule", name, "path", name); //$NON-NLS-1$ //$NON-NLS-2$
|
||||||
cfg.setString("submodule", name, "url", nameUri); //$NON-NLS-1$ //$NON-NLS-2$
|
cfg.setString("submodule", name, "url", nameUri); //$NON-NLS-1$ //$NON-NLS-2$
|
||||||
// create gitlink
|
// create gitlink
|
||||||
DirCacheEntry dcEntry = new DirCacheEntry(name);
|
DirCacheEntry dcEntry = new DirCacheEntry(name);
|
||||||
ObjectId objectId;
|
ObjectId objectId;
|
||||||
if (ObjectId.isId(proj.revision))
|
if (ObjectId.isId(proj.getRevision()))
|
||||||
objectId = ObjectId.fromString(proj.revision);
|
objectId = ObjectId.fromString(proj.getRevision());
|
||||||
else {
|
else {
|
||||||
objectId = callback.sha1(nameUri, proj.revision);
|
objectId = callback.sha1(nameUri, proj.getRevision());
|
||||||
}
|
}
|
||||||
if (objectId == null)
|
if (objectId == null)
|
||||||
throw new RemoteUnavailableException(nameUri);
|
throw new RemoteUnavailableException(nameUri);
|
||||||
|
@ -421,9 +421,9 @@ public RevCommit call() throws GitAPIException {
|
||||||
dcEntry.setFileMode(FileMode.GITLINK);
|
dcEntry.setFileMode(FileMode.GITLINK);
|
||||||
builder.add(dcEntry);
|
builder.add(dcEntry);
|
||||||
|
|
||||||
for (CopyFile copyfile : proj.copyfiles) {
|
for (CopyFile copyfile : proj.getCopyFiles()) {
|
||||||
byte[] src = callback.readFile(
|
byte[] src = callback.readFile(
|
||||||
nameUri, proj.revision, copyfile.src);
|
nameUri, proj.getRevision(), copyfile.src);
|
||||||
objectId = inserter.insert(Constants.OBJ_BLOB, src);
|
objectId = inserter.insert(Constants.OBJ_BLOB, src);
|
||||||
dcEntry = new DirCacheEntry(copyfile.dest);
|
dcEntry = new DirCacheEntry(copyfile.dest);
|
||||||
dcEntry.setObjectId(objectId);
|
dcEntry.setObjectId(objectId);
|
||||||
|
@ -495,7 +495,7 @@ private void addSubmodule(String url, String name, String revision,
|
||||||
List<CopyFile> copyfiles) throws GitAPIException, IOException {
|
List<CopyFile> copyfiles) throws GitAPIException, IOException {
|
||||||
if (repo.isBare()) {
|
if (repo.isBare()) {
|
||||||
RepoProject proj = new RepoProject(url, name, revision, null, null);
|
RepoProject proj = new RepoProject(url, name, revision, null, null);
|
||||||
proj.copyfiles.addAll(copyfiles);
|
proj.addCopyFiles(copyfiles);
|
||||||
bareProjects.add(proj);
|
bareProjects.add(proj);
|
||||||
} else {
|
} else {
|
||||||
SubmoduleAddCommand add = git
|
SubmoduleAddCommand add = git
|
||||||
|
|
|
@ -49,6 +49,8 @@
|
||||||
import java.nio.channels.FileChannel;
|
import java.nio.channels.FileChannel;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
@ -62,14 +64,14 @@
|
||||||
* @since 4.0
|
* @since 4.0
|
||||||
*/
|
*/
|
||||||
public class RepoProject implements Comparable<RepoProject> {
|
public class RepoProject implements Comparable<RepoProject> {
|
||||||
final String name;
|
private final String name;
|
||||||
final String path;
|
private final String path;
|
||||||
final String revision;
|
private final String revision;
|
||||||
final String remote;
|
private final String remote;
|
||||||
final Set<String> groups;
|
private final Set<String> groups;
|
||||||
final List<CopyFile> copyfiles;
|
private final List<CopyFile> copyfiles;
|
||||||
String url;
|
private String url;
|
||||||
String defaultRevision;
|
private String defaultRevision;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The representation of a copy file configuration.
|
* The representation of a copy file configuration.
|
||||||
|
@ -82,10 +84,13 @@ public static class CopyFile {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param repo
|
* @param repo
|
||||||
|
* the super project.
|
||||||
* @param path
|
* @param path
|
||||||
* the path of the project containing this copyfile config.
|
* the path of the project containing this copyfile config.
|
||||||
* @param src
|
* @param src
|
||||||
|
* the source path relative to the sub repo.
|
||||||
* @param dest
|
* @param dest
|
||||||
|
* the destination path relative to the super project.
|
||||||
*/
|
*/
|
||||||
public CopyFile(Repository repo, String path, String src, String dest) {
|
public CopyFile(Repository repo, String path, String src, String dest) {
|
||||||
this.repo = repo;
|
this.repo = repo;
|
||||||
|
@ -108,7 +113,8 @@ public void copy() throws IOException {
|
||||||
FileOutputStream output = new FileOutputStream(destFile);
|
FileOutputStream output = new FileOutputStream(destFile);
|
||||||
try {
|
try {
|
||||||
FileChannel channel = input.getChannel();
|
FileChannel channel = input.getChannel();
|
||||||
output.getChannel().transferFrom(channel, 0, channel.size());
|
output.getChannel().transferFrom(
|
||||||
|
channel, 0, channel.size());
|
||||||
} finally {
|
} finally {
|
||||||
output.close();
|
output.close();
|
||||||
}
|
}
|
||||||
|
@ -120,10 +126,15 @@ public void copy() throws IOException {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param name
|
* @param name
|
||||||
|
* the relative path to the {@code remote}
|
||||||
* @param path
|
* @param path
|
||||||
|
* the relative path to the super project
|
||||||
* @param revision
|
* @param revision
|
||||||
|
* a SHA-1 or branch name or tag name
|
||||||
* @param remote
|
* @param remote
|
||||||
|
* name of the remote definition
|
||||||
* @param groups
|
* @param groups
|
||||||
|
* comma separated group list
|
||||||
*/
|
*/
|
||||||
public RepoProject(String name, String path, String revision,
|
public RepoProject(String name, String path, String revision,
|
||||||
String remote, String groups) {
|
String remote, String groups) {
|
||||||
|
@ -162,15 +173,70 @@ public RepoProject setDefaultRevision(String defaultRevision) {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the name (relative path to the {@code remote}) of this sub repo.
|
||||||
|
*
|
||||||
|
* @return {@code name}
|
||||||
|
*/
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the path (relative path to the super project) of this sub repo.
|
||||||
|
*
|
||||||
|
* @return {@code path}
|
||||||
|
*/
|
||||||
|
public String getPath() {
|
||||||
|
return path;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the revision of the sub repo.
|
* Get the revision of the sub repo.
|
||||||
*
|
*
|
||||||
* @return revision if set, or default revision.
|
* @return {@code revision} if set, or {@code defaultRevision}.
|
||||||
*/
|
*/
|
||||||
public String getRevision() {
|
public String getRevision() {
|
||||||
return revision == null ? defaultRevision : revision;
|
return revision == null ? defaultRevision : revision;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getter for the copyfile configurations.
|
||||||
|
*
|
||||||
|
* @return Immutable copy of {@code copyfiles}
|
||||||
|
*/
|
||||||
|
public List<CopyFile> getCopyFiles() {
|
||||||
|
return Collections.unmodifiableList(copyfiles);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the url of the sub repo.
|
||||||
|
*
|
||||||
|
* @return {@code url}
|
||||||
|
*/
|
||||||
|
public String getUrl() {
|
||||||
|
return url;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the name of the remote definition of the sub repo.
|
||||||
|
*
|
||||||
|
* @return {@remote}
|
||||||
|
*/
|
||||||
|
public String getRemote() {
|
||||||
|
return remote;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test whether this sub repo belongs to a specified group.
|
||||||
|
*
|
||||||
|
* @param group
|
||||||
|
* @return true if {@code group} is present.
|
||||||
|
*/
|
||||||
|
public boolean inGroup(String group) {
|
||||||
|
return groups.contains(group);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add a copy file configuration.
|
* Add a copy file configuration.
|
||||||
*
|
*
|
||||||
|
@ -180,7 +246,16 @@ public void addCopyFile(CopyFile copyfile) {
|
||||||
copyfiles.add(copyfile);
|
copyfiles.add(copyfile);
|
||||||
}
|
}
|
||||||
|
|
||||||
String getPathWithSlash() {
|
/**
|
||||||
|
* Add a bunch of copyfile configurations.
|
||||||
|
*
|
||||||
|
* @param copyfiles
|
||||||
|
*/
|
||||||
|
public void addCopyFiles(Collection<CopyFile> copyfiles) {
|
||||||
|
this.copyfiles.addAll(copyfiles);
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getPathWithSlash() {
|
||||||
if (path.endsWith("/")) //$NON-NLS-1$
|
if (path.endsWith("/")) //$NON-NLS-1$
|
||||||
return path;
|
return path;
|
||||||
else
|
else
|
||||||
|
|
Loading…
Reference in New Issue