Add ahead/behind indicator and push/pull buttons
This commit is contained in:
@@ -16,4 +16,6 @@ public class WebgitProperties
|
||||
private Path worktreePath;
|
||||
private Path gitDirPath;
|
||||
private Integer telnetPort;
|
||||
private String username;
|
||||
private String password;
|
||||
}
|
||||
|
||||
@@ -57,6 +57,12 @@ public class RepoController
|
||||
model.addAttribute("branch", gitService.getCurrentBranch(name));
|
||||
model.addAttribute("modifiedFiles", gitService.getModifiedFiles(name));
|
||||
model.addAttribute("stagedFiles", gitService.getStagedFiles(name));
|
||||
int[] aheadBehind = gitService.getAheadBehind(name);
|
||||
if (aheadBehind != null)
|
||||
{
|
||||
model.addAttribute("commitsAhead", aheadBehind[0]);
|
||||
model.addAttribute("commitsBehind", aheadBehind[1]);
|
||||
}
|
||||
return "changes";
|
||||
}
|
||||
|
||||
@@ -224,17 +230,19 @@ public class RepoController
|
||||
}
|
||||
|
||||
@PostMapping("/repo/{name}/push")
|
||||
public String push(@PathVariable String name) throws IOException, GitAPIException
|
||||
public String push(@PathVariable String name,
|
||||
@RequestParam(required = false, defaultValue = "remote") String redirectTo) throws IOException, GitAPIException
|
||||
{
|
||||
gitService.push(name);
|
||||
return "redirect:/repo/" + name + "/remote";
|
||||
return "redirect:/repo/" + name + "/" + redirectTo;
|
||||
}
|
||||
|
||||
@PostMapping("/repo/{name}/pull")
|
||||
public String pull(@PathVariable String name) throws IOException, GitAPIException
|
||||
public String pull(@PathVariable String name,
|
||||
@RequestParam(required = false, defaultValue = "remote") String redirectTo) throws IOException, GitAPIException
|
||||
{
|
||||
gitService.pull(name);
|
||||
return "redirect:/repo/" + name + "/remote";
|
||||
return "redirect:/repo/" + name + "/" + redirectTo;
|
||||
}
|
||||
|
||||
@PostMapping("/repo/{name}/update-remote")
|
||||
|
||||
@@ -598,6 +598,19 @@ public class GitService
|
||||
}
|
||||
}
|
||||
|
||||
public int[] getAheadBehind(String name) throws IOException
|
||||
{
|
||||
try (Git git = openRepository(name))
|
||||
{
|
||||
String branch = git.getRepository().getBranch();
|
||||
org.eclipse.jgit.lib.BranchTrackingStatus status =
|
||||
org.eclipse.jgit.lib.BranchTrackingStatus.of(git.getRepository(), branch);
|
||||
if (status == null)
|
||||
return null;
|
||||
return new int[]{status.getAheadCount(), status.getBehindCount()};
|
||||
}
|
||||
}
|
||||
|
||||
public void push(String name) throws IOException, GitAPIException
|
||||
{
|
||||
try (Git git = openRepository(name))
|
||||
|
||||
@@ -6,6 +6,17 @@
|
||||
<body>
|
||||
<h2>Staging</h2>
|
||||
<p>Branch: <b th:text="${branch}"></b></p>
|
||||
<p th:if="${commitsAhead != null}">
|
||||
<span th:text="${commitsAhead}"></span> ahead, <span th:text="${commitsBehind}"></span> behind
|
||||
<form method="post" th:action="@{/repo/{name}/push(name=${name})}">
|
||||
<input type="hidden" name="redirectTo" value="changes">
|
||||
<input type="submit" value="Push">
|
||||
</form>
|
||||
<form method="post" th:action="@{/repo/{name}/pull(name=${name})}">
|
||||
<input type="hidden" name="redirectTo" value="changes">
|
||||
<input type="submit" value="Pull">
|
||||
</form>
|
||||
</p>
|
||||
|
||||
<h3>Modified Files (unstaged)</h3>
|
||||
<form method="post" th:action="@{/repo/{name}/stage(name=${name})}" th:if="${!#lists.isEmpty(modifiedFiles)}">
|
||||
|
||||
Reference in New Issue
Block a user