Skip to content

Commit 07ed565

Browse files
committed
Resolve conflicts
2 parents 6713379 + 6128416 commit 07ed565

File tree

30 files changed

+210
-20
lines changed

30 files changed

+210
-20
lines changed

build.gradle

+4-3
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ plugins {
66
id 'idea'
77
id 'jacoco'
88
id 'java'
9-
id 'com.github.johnrengelman.shadow' version '7.1.2'
9+
id 'com.github.johnrengelman.shadow' version '8.1.1'
1010
id 'com.liferay.node' version '7.2.18'
1111
id 'com.github.psxpaul.execfork' version '0.2.0'
1212
id 'com.palantir.git-version' version '0.13.0'
@@ -27,7 +27,7 @@ repositories {
2727

2828
configurations {
2929
systemtestImplementation.extendsFrom testImplementation
30-
systemtestRuntime.extendsFrom testRuntime
30+
systemtestRuntime.extendsFrom testRuntimeOnly
3131
}
3232

3333
dependencies {
@@ -255,7 +255,7 @@ tasks.withType(Copy) {
255255
}
256256

257257
jacoco {
258-
toolVersion = "0.8.7"
258+
toolVersion = "0.8.11"
259259
}
260260

261261
jacocoTestReport {
@@ -271,6 +271,7 @@ jacocoTestReport {
271271

272272
tasks.register('coverage', JacocoReport) {
273273
description 'Consolidates coverage data from unit, system, and frontend tests into a comprehensive report.'
274+
dependsOn test, systemtest
274275
}
275276

276277
coverage.configure {

docs/ug/cli.md

+10
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,16 @@ credit is given.
210210
* May analyze the incorrect date range if used with `--since d1`. The program will throw a warning.
211211
* Cannot be used with both `--since` and `--until`. The program will throw an exception.
212212
</box>
213+
214+
<!-- ------------------------------------------------------------------------------------------------------ -->
215+
216+
### `--portfolio`, `-P`
217+
218+
**`--portfolio`**: Generates an optimised report for code portfolio pages.
219+
* Default: generates the regular report
220+
* Alias: `-P` (uppercase P)
221+
* Example: `--portfolio` or `-P`
222+
213223
<!-- ------------------------------------------------------------------------------------------------------ -->
214224

215225
### `--repo`, `--repos`, `-r`

frontend/vite.config.mts

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import path from 'path';
88
// It needs to be configured for GitHub Pages deployment.
99
const base = process.env.VITE_BASE_DIR
1010
? process.env.VITE_BASE_DIR
11-
: '/';
11+
: '';
1212

1313
// https://vitejs.dev/config/
1414
export default defineConfig({

gradle/wrapper/gradle-wrapper.jar

1.71 KB
Binary file not shown.
+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.1-bin.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip
44
networkTimeout=10000
55
zipStoreBase=GRADLE_USER_HOME
66
zipStorePath=wrapper/dists

src/main/java/reposense/RepoSense.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ public static void main(String[] args) {
8585
cliArguments.getNumCloningThreads(), cliArguments.getNumAnalysisThreads(),
8686
TimeUtil::getElapsedTime, cliArguments.getZoneId(), cliArguments.isFreshClonePerformed(),
8787
cliArguments.isAuthorshipAnalyzed(), cliArguments.getOriginalityThreshold(),
88-
blurbMap
88+
blurbMap, cliArguments.isPortfolio()
8989
);
9090

9191
FileUtil.zipFoldersAndFiles(reportFoldersAndFiles, cliArguments.getOutputFilePath().toAbsolutePath(),

src/main/java/reposense/model/CliArguments.java

+17-1
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ public class CliArguments {
3737
private boolean isFindingPreviousAuthorsPerformed;
3838
private boolean isAuthorshipAnalyzed;
3939
private double originalityThreshold;
40+
private boolean isPortfolio;
4041
private boolean isFreshClonePerformed = ArgsParser.DEFAULT_SHOULD_FRESH_CLONE;
4142

4243
private List<String> locations;
@@ -173,6 +174,10 @@ public double getOriginalityThreshold() {
173174
return originalityThreshold;
174175
}
175176

177+
public boolean isPortfolio() {
178+
return isPortfolio;
179+
}
180+
176181
@Override
177182
public boolean equals(Object other) {
178183
// short circuit if same object
@@ -212,7 +217,8 @@ public boolean equals(Object other) {
212217
&& Objects.equals(this.reportConfigFilePath, otherCliArguments.reportConfigFilePath)
213218
&& Objects.equals(this.blurbMap, otherCliArguments.blurbMap)
214219
&& this.isAuthorshipAnalyzed == otherCliArguments.isAuthorshipAnalyzed
215-
&& Objects.equals(this.originalityThreshold, otherCliArguments.originalityThreshold);
220+
&& Objects.equals(this.originalityThreshold, otherCliArguments.originalityThreshold)
221+
&& this.isPortfolio == otherCliArguments.isPortfolio;
216222
}
217223

218224
/**
@@ -487,6 +493,16 @@ public Builder blurbMap(BlurbMap blurbMap) {
487493
return this;
488494
}
489495

496+
/**
497+
* Adds the {@code isPortfolio} to CLIArguments.
498+
*
499+
* @param isPortfolio Is portfolio.
500+
*/
501+
public Builder isPortfolio(boolean isPortfolio) {
502+
this.cliArguments.isPortfolio = isPortfolio;
503+
return this;
504+
}
505+
490506
/**
491507
* Builds CliArguments.
492508
*

src/main/java/reposense/parser/ArgsParser.java

+9
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ public class ArgsParser {
7676
public static final String[] FRESH_CLONING_FLAG = new String[] {"--fresh-cloning"};
7777
public static final String[] ANALYZE_AUTHORSHIP_FLAGS = new String[] {"--analyze-authorship", "-A"};
7878
public static final String[] ORIGINALITY_THRESHOLD_FLAGS = new String[] {"--originality-threshold", "-ot"};
79+
public static final String[] PORTFOLIO_FLAG = new String[] {"--portfolio", "-P"};
7980

8081
private static final Logger logger = LogsManager.getLogger(ArgsParser.class);
8182

@@ -226,6 +227,11 @@ private static ArgumentParser getArgumentParser() {
226227
+ "is performed. Author will be given full credit if their contribution exceeds this "
227228
+ "threshold, else partial credit is given.");
228229

230+
parser.addArgument(PORTFOLIO_FLAG)
231+
.dest(PORTFOLIO_FLAG[0])
232+
.action(Arguments.storeTrue())
233+
.help("Generates an optimized report for code portfolio pages");
234+
229235
// Mutex flags - these will always be the last parameters in help message.
230236
mutexParser.addArgument(CONFIG_FLAGS)
231237
.dest(CONFIG_FLAGS[0])
@@ -265,6 +271,7 @@ private static ArgumentParser getArgumentParser() {
265271
.setDefault(DEFAULT_NUM_ANALYSIS_THREADS)
266272
.help(FeatureControl.SUPPRESS);
267273

274+
// Testing flags
268275
parser.addArgument(FRESH_CLONING_FLAG)
269276
.dest(FRESH_CLONING_FLAG[0])
270277
.action(Arguments.storeTrue())
@@ -306,6 +313,7 @@ public static CliArguments parse(String[] args) throws HelpScreenException, Pars
306313
boolean shouldFindPreviousAuthors = results.get(FIND_PREVIOUS_AUTHORS_FLAGS[0]);
307314
boolean isAuthorshipAnalyzed = results.get(ANALYZE_AUTHORSHIP_FLAGS[0]);
308315
double originalityThreshold = results.get(ORIGINALITY_THRESHOLD_FLAGS[0]);
316+
boolean isPortfolio = results.get(PORTFOLIO_FLAG[0]);
309317
int numCloningThreads = results.get(CLONING_THREADS_FLAG[0]);
310318
int numAnalysisThreads = results.get(ANALYSIS_THREADS_FLAG[0]);
311319
boolean shouldPerformFreshCloning = results.get(FRESH_CLONING_FLAG[0]);
@@ -327,6 +335,7 @@ public static CliArguments parse(String[] args) throws HelpScreenException, Pars
327335
.numAnalysisThreads(numAnalysisThreads)
328336
.isAuthorshipAnalyzed(isAuthorshipAnalyzed)
329337
.originalityThreshold(originalityThreshold)
338+
.isPortfolio(isPortfolio)
330339
.isFreshClonePerformed(shouldPerformFreshCloning);
331340

332341
LogsManager.setLogFolderLocation(outputFolderPath);

src/main/java/reposense/report/ReportGenerator.java

+4-3
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@ public class ReportGenerator {
115115
* @param shouldAnalyzeAuthorship The boolean variable for whether to further analyze authorship.
116116
* @param originalityThreshold The double variable for originality threshold in analyze authorship.
117117
* @param blurbMap The {@code BlurbMap}.
118+
* @param isPortfolio The boolean variable for whether to generate code portfolio optimised report.
118119
* @return the list of file paths that were generated.
119120
* @throws IOException if templateZip.zip does not exist in jar file.
120121
* @throws InvalidMarkdownException if the blurb markdown file cannot be parsed properly.
@@ -123,8 +124,8 @@ public List<Path> generateReposReport(List<RepoConfiguration> configs, String ou
123124
ReportConfiguration reportConfig, String generationDate, LocalDateTime cliSinceDate,
124125
LocalDateTime untilDate, boolean isSinceDateProvided, boolean isUntilDateProvided, int numCloningThreads,
125126
int numAnalysisThreads, Supplier<String> reportGenerationTimeProvider, ZoneId zoneId,
126-
boolean shouldFreshClone, boolean shouldAnalyzeAuthorship, double originalityThreshold, BlurbMap blurbMap)
127-
throws IOException, InvalidMarkdownException {
127+
boolean shouldFreshClone, boolean shouldAnalyzeAuthorship, double originalityThreshold, BlurbMap blurbMap,
128+
boolean isPortfolio) throws IOException, InvalidMarkdownException {
128129
prepareTemplateFile(outputPath);
129130
if (Files.exists(Paths.get(assetsPath))) {
130131
FileUtil.copyDirectoryContents(assetsPath, outputPath, assetsFilesWhiteList);
@@ -143,7 +144,7 @@ public List<Path> generateReposReport(List<RepoConfiguration> configs, String ou
143144
new SummaryJson(configs, reportConfig, generationDate,
144145
reportSinceDate, untilDate, isSinceDateProvided,
145146
isUntilDateProvided, RepoSense.getVersion(), ErrorSummary.getInstance().getErrorSet(),
146-
reportGenerationTimeProvider.get(), zoneId, shouldAnalyzeAuthorship, blurbMap),
147+
reportGenerationTimeProvider.get(), zoneId, shouldAnalyzeAuthorship, blurbMap, isPortfolio),
147148
getSummaryResultPath(outputPath));
148149
summaryPath.ifPresent(reportFoldersAndFiles::add);
149150

src/main/java/reposense/report/SummaryJson.java

+4-2
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,13 @@ public class SummaryJson {
3131
private final Map<String, Map<String, String>> supportedDomainUrlMap;
3232
private final boolean isAuthorshipAnalyzed;
3333
private final BlurbMap blurbs;
34+
private final boolean isPortfolio;
3435

3536
public SummaryJson(List<RepoConfiguration> repos, ReportConfiguration reportConfig, String reportGeneratedTime,
3637
LocalDateTime sinceDate, LocalDateTime untilDate, boolean isSinceDateProvided,
3738
boolean isUntilDateProvided, String repoSenseVersion, Set<Map<String, String>> errorSet,
38-
String reportGenerationTime, ZoneId zoneId,
39-
boolean isAuthorshipAnalyzed, BlurbMap blurbs) {
39+
String reportGenerationTime, ZoneId zoneId, boolean isAuthorshipAnalyzed, BlurbMap blurbs,
40+
boolean isPortfolio) {
4041
this.repos = repos;
4142
this.reportGeneratedTime = reportGeneratedTime;
4243
this.reportGenerationTime = reportGenerationTime;
@@ -51,5 +52,6 @@ public SummaryJson(List<RepoConfiguration> repos, ReportConfiguration reportConf
5152
this.supportedDomainUrlMap = SupportedDomainUrlMap.getDefaultDomainUrlMap();
5253
this.isAuthorshipAnalyzed = isAuthorshipAnalyzed;
5354
this.blurbs = blurbs;
55+
this.isPortfolio = isPortfolio;
5456
}
5557
}

src/systemtest/java/reposense/ConfigSystemTest.java

+15
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,21 @@ public void test30DaysFromUntilDateWithFindPreviousAuthors() {
130130
"ConfigSystemTest/30daysFromUntilDateFindPreviousAuthors/expected");
131131
}
132132

133+
/**
134+
* System test with a specified until date and a {@link SinceDateArgumentType#FIRST_COMMIT_DATE_SHORTHAND}
135+
* since date to capture from the first commit.
136+
*/
137+
@Test
138+
public void testSinceBeginningDateRangeWithPortfolio() {
139+
InputBuilder inputBuilder = initInputBuilder()
140+
.addSinceDate(SinceDateArgumentType.FIRST_COMMIT_DATE_SHORTHAND)
141+
.addUntilDate("2/3/2019")
142+
.addPortfolio();
143+
144+
runTest(inputBuilder, false,
145+
"ConfigSystemTest/sinceBeginningDateRangeWithPortfolio/expected");
146+
}
147+
133148
/**
134149
* Returns a {@link InputBuilder} that is initialized with some default values.
135150
* <br>Config Folder Path: {@code ConfigSystemTest}

src/systemtest/resources/ConfigSystemTest/30daysFromUntilDate/expected/summary.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -87,5 +87,6 @@
8787
"https://www.github.com/user/repo/branch2": "## **second** blurb\n\n![link](link) to repository\n\nthis is what i have done for my cs2103t project",
8888
"https://www.github.com/user/repo/branch3": "*third blurb*\n\n<strong>third</strong> blurb with HTML content"
8989
}
90-
}
90+
},
91+
"isPortfolio": false
9192
}

src/systemtest/resources/ConfigSystemTest/30daysFromUntilDateFindPreviousAuthors/expected/summary.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -87,5 +87,6 @@
8787
"https://www.github.com/user/repo/branch2": "## **second** blurb\n\n![link](link) to repository\n\nthis is what i have done for my cs2103t project",
8888
"https://www.github.com/user/repo/branch3": "*third blurb*\n\n<strong>third</strong> blurb with HTML content"
8989
}
90-
}
90+
},
91+
"isPortfolio": false
9192
}

src/systemtest/resources/ConfigSystemTest/30daysFromUntilDateWithShallowCloning/expected/summary.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -87,5 +87,6 @@
8787
"https://www.github.com/user/repo/branch2": "## **second** blurb\n\n![link](link) to repository\n\nthis is what i have done for my cs2103t project",
8888
"https://www.github.com/user/repo/branch3": "*third blurb*\n\n<strong>third</strong> blurb with HTML content"
8989
}
90-
}
90+
},
91+
"isPortfolio": false
9192
}

src/systemtest/resources/ConfigSystemTest/sinceBeginningDateRange/expected/summary.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -87,5 +87,6 @@
8787
"https://www.github.com/user/repo/branch2": "## **second** blurb\n\n![link](link) to repository\n\nthis is what i have done for my cs2103t project",
8888
"https://www.github.com/user/repo/branch3": "*third blurb*\n\n<strong>third</strong> blurb with HTML content"
8989
}
90-
}
90+
},
91+
"isPortfolio": false
9192
}

src/systemtest/resources/ConfigSystemTest/sinceBeginningDateRangeFindPreviousAuthors/expected/summary.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -87,5 +87,6 @@
8787
"https://www.github.com/user/repo/branch2": "## **second** blurb\n\n![link](link) to repository\n\nthis is what i have done for my cs2103t project",
8888
"https://www.github.com/user/repo/branch3": "*third blurb*\n\n<strong>third</strong> blurb with HTML content"
8989
}
90-
}
90+
},
91+
"isPortfolio": false
9192
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[{"path":"annotationTest.java","fileType":"code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"fake all the lines in this file is writtened by fakeAuthor","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"fake","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"fake","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"fake","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"harryggg"},"content":"//@@author harryggg","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"harryggg"},"content":"line 1","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"harryggg"},"content":"line 2","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"harryggg"},"content":"line 3","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"harryggg"},"content":"//@@author","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"fake","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"fake","isFullCredit":false}],"authorContributionMap":{"harryggg":5,"-":6}},{"path":"blameTest.java","fileType":"code","lines":[{"lineNumber":1,"author":{"gitId":"harryggg"},"content":"line 1","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"harryggg"},"content":"line 2","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"fake","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"harryggg"},"content":"line 3","isFullCredit":false}],"authorContributionMap":{"harryggg":3,"-":1}},{"path":"newFile.java","fileType":"code","lines":[{"lineNumber":1,"author":{"gitId":"harryggg"},"content":"line 1","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"harryggg"},"content":"line 2","isFullCredit":false}],"authorContributionMap":{"harryggg":2}},{"path":"newPos/movedFile.java","fileType":"code","lines":[{"lineNumber":1,"author":{"gitId":"harryggg"},"content":"line 1","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"harryggg"},"content":"line 2","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"harryggg"},"content":"line 3","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"harryggg"},"content":"line 4","isFullCredit":false}],"authorContributionMap":{"harryggg":4}}]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"authorDailyContributionsMap":{"fakeAuthor":[],"harryggg":[{"date":"2018-02-06","commitResults":[{"hash":"7d7584fc204922cc5ff3bd5ca073cad6bed2c46a","isMergeCommit":false,"messageTitle":"k","messageBody":"","fileTypesAndContributionMap":{"code":{"insertions":0,"deletions":0}}},{"hash":"8d0ac2ee20f04dce8df0591caed460bffacb65a4","isMergeCommit":false,"messageTitle":"java","messageBody":"","fileTypesAndContributionMap":{"code":{"insertions":3,"deletions":0}}}]},{"date":"2018-02-07","commitResults":[{"hash":"8e4ca1da5d413e9ab84a1e8d1474918afa97f7a1","isMergeCommit":false,"messageTitle":"yo","messageBody":"","fileTypesAndContributionMap":{"code":{"insertions":2,"deletions":0}}}]},{"date":"2018-02-09","commitResults":[{"hash":"e3f699fd4ef128eebce98d5b4e5b3bb06a512f49","isMergeCommit":false,"messageTitle":"new","messageBody":"","fileTypesAndContributionMap":{"code":{"insertions":4,"deletions":0}}}]}],"Eugene Peh":[],"eugenepeh":[]},"authorFileTypeContributionMap":{"fakeAuthor":{"code":0},"harryggg":{"code":14},"Eugene Peh":{"code":0},"eugenepeh":{"code":0}},"authorContributionVariance":{"fakeAuthor":0.0,"harryggg":2.1875,"Eugene Peh":0.0,"eugenepeh":0.0},"authorDisplayNameMap":{"fakeAuthor":"fakeAuthor","harryggg":"harryggg","Eugene Peh":"Eugene Peh","eugenepeh":"eugenepeh"}}

src/systemtest/resources/ConfigSystemTest/sinceBeginningDateRangeWithPortfolio/expected/reposense_testrepo-Beta_master/authorship.json

+1
Large diffs are not rendered by default.

src/systemtest/resources/ConfigSystemTest/sinceBeginningDateRangeWithPortfolio/expected/reposense_testrepo-Beta_master/commits.json

+1
Large diffs are not rendered by default.

src/systemtest/resources/ConfigSystemTest/sinceBeginningDateRangeWithPortfolio/expected/reposense_testrepo-Charlie_master/authorship.json

+1
Large diffs are not rendered by default.

src/systemtest/resources/ConfigSystemTest/sinceBeginningDateRangeWithPortfolio/expected/reposense_testrepo-Charlie_master/commits.json

+1
Large diffs are not rendered by default.

src/systemtest/resources/ConfigSystemTest/sinceBeginningDateRangeWithPortfolio/expected/reposense_testrepo-Delta_master/authorship.json

+1
Large diffs are not rendered by default.

src/systemtest/resources/ConfigSystemTest/sinceBeginningDateRangeWithPortfolio/expected/reposense_testrepo-Delta_master/commits.json

+1
Large diffs are not rendered by default.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
{
2+
"reportGeneratedTime": "Tue Jul 24 17:45:15 SGT 2018",
3+
"reportGenerationTime": "15 second(s)",
4+
"zoneId": "Asia/Singapore",
5+
"reportTitle": "RepoSense Report Test Title",
6+
"repos": [
7+
{
8+
"location": {
9+
"location": "https://github.com/reposense/testrepo-Alpha.git",
10+
"repoName": "testrepo-Alpha",
11+
"organization": "reposense",
12+
"domainName": "github"
13+
},
14+
"branch": "master",
15+
"displayName": "reposense/testrepo-Alpha[master]",
16+
"outputFolderName": "reposense_testrepo-Alpha_master"
17+
},
18+
{
19+
"location": {
20+
"location": "https://github.com/reposense/testrepo-Beta.git",
21+
"repoName": "testrepo-Beta",
22+
"organization": "reposense",
23+
"domainName": "github"
24+
},
25+
"branch": "master",
26+
"displayName": "reposense/testrepo-Beta[master]",
27+
"outputFolderName": "reposense_testrepo-Beta_master"
28+
},
29+
{
30+
"location": {
31+
"location": "https://github.com/reposense/testrepo-Charlie.git",
32+
"repoName": "testrepo-Charlie",
33+
"organization": "reposense",
34+
"domainName": "github"
35+
},
36+
"branch": "master",
37+
"displayName": "reposense/testrepo-Charlie[master]",
38+
"outputFolderName": "reposense_testrepo-Charlie_master"
39+
},
40+
{
41+
"location": {
42+
"location": "https://github.com/reposense/testrepo-Delta.git",
43+
"repoName": "testrepo-Delta",
44+
"organization": "reposense",
45+
"domainName": "github"
46+
},
47+
"branch": "master",
48+
"displayName": "reposense/testrepo-Delta[master]",
49+
"outputFolderName": "reposense_testrepo-Delta_master"
50+
}
51+
],
52+
"errorSet": [
53+
{
54+
"repoName": "ttps://github.com/reposense/testrepo-Beta.git",
55+
"errorMessage": "ttps://github.com/reposense/testrepo-Beta.git is an invalid remote URL."
56+
},
57+
{
58+
"repoName": "reposense/testrepo-Delta[nonExistentBranch]",
59+
"errorMessage": "Branch \"nonExistentBranch\" does not exist."
60+
}
61+
],
62+
"sinceDate": "2017-09-30",
63+
"untilDate": "2019-03-02",
64+
"isSinceDateProvided": true,
65+
"isUntilDateProvided": true,
66+
"supportedDomainUrlMap": {
67+
"NOT_RECOGNIZED": {
68+
"BRANCH": "",
69+
"REPO_URL": "UNSUPPORTED",
70+
"BASE_URL": "UNSUPPORTED",
71+
"HISTORY_PATH": "",
72+
"COMMIT_PATH": "",
73+
"BLAME_PATH": ""
74+
},
75+
"github": {
76+
"BRANCH": "tree/$BRANCH",
77+
"REPO_URL": "https://github.com/$ORGANIZATION/$REPO_NAME/",
78+
"BASE_URL": "https://github.com/",
79+
"HISTORY_PATH": "commits/$BRANCH/$FILE_PATH",
80+
"COMMIT_PATH": "commit/$COMMIT_HASH",
81+
"BLAME_PATH": "blame/$BRANCH/$FILE_PATH"
82+
}
83+
},
84+
"blurbs": {
85+
"urlBlurbMap": {
86+
"https://www.github.com/user/repo/branch": "first blurb",
87+
"https://www.github.com/user/repo/branch2": "## **second** blurb\n\n![link](link) to repository\n\nthis is what i have done for my cs2103t project",
88+
"https://www.github.com/user/repo/branch3": "*third blurb*\n\n<strong>third</strong> blurb with HTML content"
89+
}
90+
},
91+
"isPortfolio": true
92+
}

0 commit comments

Comments
 (0)