Make the default branch configurable (#3283)

This commit is contained in:
Naoki Takezoe
2023-04-30 22:09:19 +09:00
committed by GitHub
parent b521f43c84
commit 6b37d1027f
22 changed files with 221 additions and 157 deletions

View File

@@ -61,7 +61,7 @@ object ApiRepository {
watchers = 0,
forks = 0,
`private` = false,
default_branch = "master",
default_branch = "main",
owner = owner,
has_issues = true
)

View File

@@ -813,7 +813,8 @@ trait AccountControllerBase extends AccountManagementControllerBase {
form.description,
form.isPrivate,
form.initOption,
form.sourceUrl
form.sourceUrl,
context.settings.defaultBranch
)
// redirect to the repository
redirect(s"/${form.owner}/${form.name}")

View File

@@ -124,7 +124,8 @@ trait SystemSettingsControllerBase extends AccountManagementControllerBase {
)(Upload.apply),
"repositoryViewer" -> mapping(
"maxFiles" -> trim(label("Max files", number(required)))
)(RepositoryViewerSettings.apply)
)(RepositoryViewerSettings.apply),
"defaultBranch" -> trim(label("Default branch", text(required)))
)(SystemSettings.apply).verifying { settings =>
Vector(
if (settings.ssh.enabled && settings.baseUrl.isEmpty) {

View File

@@ -46,7 +46,7 @@ trait WikiControllerBase extends ControllerBase {
)
val newForm = mapping(
"pageName" -> trim(label("Page name", text(required, maxlength(40), pagename, unique))),
"pageName" -> trim(label("Page name", text(required, maxlength(40), pageName, unique))),
"content" -> trim(label("Content", text(required, conflictForNew))),
"message" -> trim(label("Message", optional(text()))),
"currentPageName" -> trim(label("Current page name", text())),
@@ -54,7 +54,7 @@ trait WikiControllerBase extends ControllerBase {
)(WikiPageEditForm.apply)
val editForm = mapping(
"pageName" -> trim(label("Page name", text(required, maxlength(40), pagename))),
"pageName" -> trim(label("Page name", text(required, maxlength(40), pageName))),
"content" -> trim(label("Content", text(required, conflictForEdit))),
"message" -> trim(label("Message", optional(text()))),
"currentPageName" -> trim(label("Current page name", text(required))),
@@ -62,46 +62,56 @@ trait WikiControllerBase extends ControllerBase {
)(WikiPageEditForm.apply)
get("/:owner/:repository/wiki")(referrersOnly { repository =>
getWikiPage(repository.owner, repository.name, "Home").map { page =>
val branch = getWikiBranch(repository.owner, repository.name)
getWikiPage(repository.owner, repository.name, "Home", branch).map { page =>
html.page(
"Home",
page,
getWikiPageList(repository.owner, repository.name),
getWikiPageList(repository.owner, repository.name, branch),
repository,
isEditable(repository),
getWikiPage(repository.owner, repository.name, "_Sidebar"),
getWikiPage(repository.owner, repository.name, "_Footer")
getWikiPage(repository.owner, repository.name, "_Sidebar", branch),
getWikiPage(repository.owner, repository.name, "_Footer", branch)
)
} getOrElse redirect(s"/${repository.owner}/${repository.name}/wiki/Home/_edit")
})
get("/:owner/:repository/wiki/:page")(referrersOnly { repository =>
val pageName = StringUtil.urlDecode(params("page"))
val branch = getWikiBranch(repository.owner, repository.name)
getWikiPage(repository.owner, repository.name, pageName).map { page =>
getWikiPage(repository.owner, repository.name, pageName, branch).map { page =>
html.page(
pageName,
page,
getWikiPageList(repository.owner, repository.name),
getWikiPageList(repository.owner, repository.name, branch),
repository,
isEditable(repository),
getWikiPage(repository.owner, repository.name, "_Sidebar"),
getWikiPage(repository.owner, repository.name, "_Footer")
getWikiPage(repository.owner, repository.name, "_Sidebar", branch),
getWikiPage(repository.owner, repository.name, "_Footer", branch)
)
} getOrElse redirect(s"/${repository.owner}/${repository.name}/wiki/${StringUtil.urlEncode(pageName)}/_edit")
})
get("/:owner/:repository/wiki/:page/_history")(referrersOnly { repository =>
val pageName = StringUtil.urlDecode(params("page"))
val branch = getWikiBranch(repository.owner, repository.name)
Using.resource(Git.open(getWikiRepositoryDir(repository.owner, repository.name))) { git =>
JGitUtil.getCommitLog(git, "master", path = pageName + ".md") match {
JGitUtil.getCommitLog(git, branch, path = pageName + ".md") match {
case Right((logs, hasNext)) => html.history(Some(pageName), logs, repository, isEditable(repository))
case Left(_) => NotFound()
}
}
})
private def getWikiBranch(owner: String, repository: String): String = {
Using.resource(Git.open(Directory.getWikiRepositoryDir(owner, repository))) { git =>
git.getRepository.getBranch
}
}
get("/:owner/:repository/wiki/:page/_compare/:commitId")(referrersOnly { repository =>
val pageName = StringUtil.urlDecode(params("page"))
val Array(from, to) = params("commitId").split("\\.\\.\\.")
@@ -141,8 +151,9 @@ trait WikiControllerBase extends ControllerBase {
if (isEditable(repository)) {
val pageName = StringUtil.urlDecode(params("page"))
val Array(from, to) = params("commitId").split("\\.\\.\\.")
val branch = getWikiBranch(repository.owner, repository.name)
if (revertWikiPage(repository.owner, repository.name, from, to, loginAccount, Some(pageName))) {
if (revertWikiPage(repository.owner, repository.name, from, to, loginAccount, Some(pageName), branch)) {
redirect(s"/${repository.owner}/${repository.name}/wiki/${StringUtil.urlEncode(pageName)}")
} else {
flash.update("info", "This patch was not able to be reversed.")
@@ -159,8 +170,9 @@ trait WikiControllerBase extends ControllerBase {
loginAccount =>
if (isEditable(repository)) {
val Array(from, to) = params("commitId").split("\\.\\.\\.")
val branch = getWikiBranch(repository.owner, repository.name)
if (revertWikiPage(repository.owner, repository.name, from, to, loginAccount, None)) {
if (revertWikiPage(repository.owner, repository.name, from, to, loginAccount, None, branch)) {
redirect(s"/${repository.owner}/${repository.name}/wiki")
} else {
flash.update("info", "This patch was not able to be reversed.")
@@ -173,7 +185,9 @@ trait WikiControllerBase extends ControllerBase {
get("/:owner/:repository/wiki/:page/_edit")(readableUsersOnly { repository =>
if (isEditable(repository)) {
val pageName = StringUtil.urlDecode(params("page"))
html.edit(pageName, getWikiPage(repository.owner, repository.name, pageName), repository)
val branch = getWikiBranch(repository.owner, repository.name)
html.edit(pageName, getWikiPage(repository.owner, repository.name, pageName, branch), repository)
} else Unauthorized()
})
@@ -280,7 +294,8 @@ trait WikiControllerBase extends ControllerBase {
})
get("/:owner/:repository/wiki/_pages")(referrersOnly { repository =>
html.pages(getWikiPageList(repository.owner, repository.name), repository, isEditable(repository))
val branch = getWikiBranch(repository.owner, repository.name)
html.pages(getWikiPageList(repository.owner, repository.name, branch), repository, isEditable(repository))
})
get("/:owner/:repository/wiki/_history")(referrersOnly { repository =>
@@ -309,13 +324,18 @@ trait WikiControllerBase extends ControllerBase {
value: String,
params: Map[String, Seq[String]],
messages: Messages
): Option[String] =
getWikiPageList(params.value("owner"), params.value("repository"))
): Option[String] = {
val owner = params.value("owner")
val repository = params.value("repository")
val branch = getWikiBranch(owner, repository)
getWikiPageList(owner, repository, branch)
.find(_ == value)
.map(_ => "Page already exists.")
}
}
private def pagename: Constraint = new Constraint() {
private def pageName: Constraint = new Constraint() {
override def validate(name: String, value: String, messages: Messages): Option[String] =
if (value.exists("\\/:*?\"<>|".contains(_))) {
Some(s"${name} contains invalid character.")
@@ -326,7 +346,7 @@ trait WikiControllerBase extends ControllerBase {
}
}
private def notReservedPageName(value: String) = !(Array[String]("_Sidebar", "_Footer") contains value)
private def notReservedPageName(value: String): Boolean = !(Array[String]("_Sidebar", "_Footer") contains value)
private def conflictForNew: Constraint = new Constraint() {
override def validate(name: String, value: String, messages: Messages): Option[String] = {
@@ -344,7 +364,13 @@ trait WikiControllerBase extends ControllerBase {
}
}
private def targetWikiPage = getWikiPage(params("owner"), params("repository"), params("pageName"))
private def targetWikiPage: Option[WikiService.WikiPageInfo] = {
val owner = params("owner")
val repository = params("repository")
val pageName = params("pageName")
val branch = getWikiBranch(owner, repository)
getWikiPage(owner, repository, pageName, branch)
}
private def isEditable(repository: RepositoryInfo)(implicit context: Context): Boolean = {
repository.repository.options.wikiOption match {

View File

@@ -93,7 +93,8 @@ trait ApiRepositoryControllerBase extends ControllerBase {
data.name,
data.description,
data.`private`,
data.auto_init
data.auto_init,
context.settings.defaultBranch
)
Await.result(f, Duration.Inf)
@@ -130,7 +131,8 @@ trait ApiRepositoryControllerBase extends ControllerBase {
data.name,
data.description,
data.`private`,
data.auto_init
data.auto_init,
context.settings.defaultBranch
)
Await.result(f, Duration.Inf)
val repository = Database() withTransaction { session =>

View File

@@ -64,9 +64,19 @@ trait RepositoryCreationService {
name: String,
description: Option[String],
isPrivate: Boolean,
createReadme: Boolean
createReadme: Boolean,
defaultBranch: String
): Future[Unit] = {
createRepository(loginAccount, owner, name, description, isPrivate, if (createReadme) "README" else "EMPTY", None)
createRepository(
loginAccount,
owner,
name,
description,
isPrivate,
if (createReadme) "README" else "EMPTY",
None,
defaultBranch
)
}
def createRepository(
@@ -76,7 +86,8 @@ trait RepositoryCreationService {
description: Option[String],
isPrivate: Boolean,
initOption: String,
sourceUrl: Option[String]
sourceUrl: Option[String],
defaultBranch: String
): Future[Unit] = Future {
RepositoryCreationService.startCreation(owner, name)
try {
@@ -93,7 +104,7 @@ trait RepositoryCreationService {
} else None
// Insert to the database at first
insertRepository(name, owner, description, isPrivate)
insertRepository(name, owner, description, isPrivate, defaultBranch)
// // Add collaborators for group repository
// if(ownerAccount.isGroupAccount){
@@ -110,7 +121,7 @@ trait RepositoryCreationService {
// Create the actual repository
val gitdir = getRepositoryDir(owner, name)
JGitUtil.initRepository(gitdir)
JGitUtil.initRepository(gitdir, defaultBranch)
if (initOption == "README" || initOption == "EMPTY_COMMIT") {
Using.resource(Git.open(gitdir)) { git =>
@@ -163,7 +174,7 @@ trait RepositoryCreationService {
}
// Create Wiki repository
createWikiRepository(loginAccount, owner, name)
createWikiRepository(loginAccount, owner, name, defaultBranch)
// Record activity
recordActivity(CreateRepositoryInfo(owner, name, loginUserName))

View File

@@ -34,7 +34,7 @@ trait RepositoryService {
userName: String,
description: Option[String],
isPrivate: Boolean,
defaultBranch: String = "master",
defaultBranch: String,
originRepositoryName: Option[String] = None,
originUserName: Option[String] = None,
parentRepositoryName: Option[String] = None,

View File

@@ -90,6 +90,7 @@ trait SystemSettingsService {
props.setProperty(UploadLargeMaxFileSize, settings.upload.largeMaxFileSize.toString)
props.setProperty(UploadLargeTimeout, settings.upload.largeTimeout.toString)
props.setProperty(RepositoryViewerMaxFiles, settings.repositoryViewer.maxFiles.toString)
props.setProperty(DefaultBranch, settings.defaultBranch)
Using.resource(new java.io.FileOutputStream(GitBucketConf)) { out =>
props.store(out, null)
@@ -205,7 +206,8 @@ trait SystemSettingsService {
),
RepositoryViewerSettings(
getValue(props, RepositoryViewerMaxFiles, 0)
)
),
getValue(props, DefaultBranch, "main")
)
}
}
@@ -231,7 +233,8 @@ object SystemSettingsService {
showMailAddress: Boolean,
webHook: WebHook,
upload: Upload,
repositoryViewer: RepositoryViewerSettings
repositoryViewer: RepositoryViewerSettings,
defaultBranch: String
) {
def baseUrl(request: HttpServletRequest): String =
baseUrl.getOrElse(parseBaseUrl(request)).stripSuffix("/")
@@ -402,7 +405,6 @@ object SystemSettingsService {
private val RepositoryOperationFork = "repository_operation_fork"
private val Gravatar = "gravatar"
private val Notification = "notification"
private val ActivityLogLimit = "activity_log_limit"
private val LimitVisibleRepositories = "limitVisibleRepositories"
private val SshEnabled = "ssh"
private val SshHost = "ssh.host"
@@ -448,6 +450,7 @@ object SystemSettingsService {
private val UploadLargeMaxFileSize = "upload.largeMaxFileSize"
private val UploadLargeTimeout = "upload.largeTimeout"
private val RepositoryViewerMaxFiles = "repository_viewer_max_files"
private val DefaultBranch = "default_branch"
private def getValue[A: ClassTag](props: java.util.Properties, key: String, default: A): A = {
getConfigValue(key).getOrElse {

View File

@@ -51,11 +51,11 @@ object WikiService {
trait WikiService {
import WikiService._
def createWikiRepository(loginAccount: Account, owner: String, repository: String): Unit =
def createWikiRepository(loginAccount: Account, owner: String, repository: String, defaultBranch: String): Unit =
LockUtil.lock(s"${owner}/${repository}/wiki") {
val dir = Directory.getWikiRepositoryDir(owner, repository)
if (!dir.exists) {
JGitUtil.initRepository(dir)
JGitUtil.initRepository(dir, defaultBranch)
saveWikiPage(
owner,
repository,
@@ -72,11 +72,11 @@ trait WikiService {
/**
* Returns the wiki page.
*/
def getWikiPage(owner: String, repository: String, pageName: String): Option[WikiPageInfo] = {
def getWikiPage(owner: String, repository: String, pageName: String, branch: String): Option[WikiPageInfo] = {
Using.resource(Git.open(Directory.getWikiRepositoryDir(owner, repository))) { git =>
if (!JGitUtil.isEmpty(git)) {
val fileName = pageName + ".md"
JGitUtil.getLatestCommitFromPath(git, fileName, "master").map { latestCommit =>
JGitUtil.getLatestCommitFromPath(git, fileName, branch).map { latestCommit =>
val content = JGitUtil.getContentFromPath(git, latestCommit.getTree, fileName, true)
WikiPageInfo(
fileName,
@@ -93,10 +93,10 @@ trait WikiService {
/**
* Returns the list of wiki page names.
*/
def getWikiPageList(owner: String, repository: String): List[String] = {
def getWikiPageList(owner: String, repository: String, branch: String): List[String] = {
Using.resource(Git.open(Directory.getWikiRepositoryDir(owner, repository))) { git =>
JGitUtil
.getFileList(git, "master", ".")
.getFileList(git, branch, ".")
.filter(_.name.endsWith(".md"))
.filterNot(_.name.startsWith("_"))
.map(_.name.stripSuffix(".md"))
@@ -113,7 +113,8 @@ trait WikiService {
from: String,
to: String,
committer: Account,
pageName: Option[String]
pageName: Option[String],
branch: String
): Boolean = {
case class RevertInfo(operation: String, filePath: String, source: String)
@@ -151,7 +152,7 @@ trait WikiService {
fh.getChangeType match {
case DiffEntry.ChangeType.MODIFY => {
val source =
getWikiPage(owner, repository, fh.getNewPath.stripSuffix(".md")).map(_.content).getOrElse("")
getWikiPage(owner, repository, fh.getNewPath.stripSuffix(".md"), branch).map(_.content).getOrElse("")
val applied = PatchUtil.apply(source, patch, fh)
if (applied != null) {
Seq(RevertInfo("ADD", fh.getNewPath, applied))

View File

@@ -892,10 +892,11 @@ object JGitUtil {
.reverse
}
def initRepository(dir: java.io.File): Unit =
Using.resource(new RepositoryBuilder().setGitDir(dir).setBare.build) { repository =>
repository.create(true)
setReceivePack(repository)
def initRepository(dir: java.io.File, defaultBranch: String): Unit =
Using.resource(new RepositoryBuilder().setGitDir(dir).setBare().setInitialBranch(defaultBranch).build) {
repository =>
repository.create(true)
setReceivePack(repository)
}
def cloneRepository(from: java.io.File, to: java.io.File): Unit =

View File

@@ -56,6 +56,15 @@
<textarea id="information" name="information" class="form-control" style="height: 100px;">@context.settings.information</textarea>
</fieldset>
<!--====================================================================-->
<!-- Default branch -->
<!--====================================================================-->
<hr>
<label for="defaultBranch"><span class="strong">Default branch</span></label>
<fieldset>
<input type="text" name="defaultBranch" id="defaultBranch" class="form-control" value="@context.settings.defaultBranch"/>
<span id="error-defaultBranch" class="error"></span>
</fieldset>
<!--====================================================================-->
<!-- AdminLTE SkinName -->
<!--====================================================================-->
<hr>

View File

@@ -21,12 +21,12 @@
git add README.md
git commit -m "first commit"
git remote add origin <span class="live-clone-url">@repository.httpUrl</span>
git push -u origin master
git push -u origin @context.settings.defaultBranch
}
<h3 style="margin-top: 30px;">Push an existing repository from the command line</h3>
@helpers.pre {
git remote add origin <span class="live-clone-url">@repository.httpUrl</span>
git push -u origin master
git push -u origin @context.settings.defaultBranch
}
<script>
$(function(){
@@ -38,4 +38,4 @@
</script>
}
}
}
}

View File

@@ -9,12 +9,19 @@ import scala.util.Using
import org.kohsuke.github.GHCommitState
import java.io.File
import java.util.logging.{Level, Logger}
/**
* Need to run `sbt package` before running this test.
*/
class ApiIntegrationTest extends AnyFunSuite {
// Suppress warning logs caused by liquibase
private val liquibaseResourceLogger = Logger.getLogger("liquibase.resource")
liquibaseResourceLogger.setLevel(Level.SEVERE)
private val liquibaseParserLogger = Logger.getLogger("liquibase.parser")
liquibaseParserLogger.setLevel(Level.SEVERE)
test("create repository") {
Using.resource(new TestingGitBucketServer(19999)) { server =>
val github = server.client("root", "root")
@@ -29,7 +36,7 @@ class ApiIntegrationTest extends AnyFunSuite {
assert(repository.getName == "test")
assert(repository.getDescription == "test repository")
assert(repository.getDefaultBranch == "master")
assert(repository.getDefaultBranch == "main")
assert(repository.getWatchers == 0)
assert(repository.getWatchersCount == 0)
assert(repository.getForks == 0)
@@ -48,7 +55,7 @@ class ApiIntegrationTest extends AnyFunSuite {
val repository = repositories.get(0)
assert(repository.getName == "test")
assert(repository.getDescription == "test repository")
assert(repository.getDefaultBranch == "master")
assert(repository.getDefaultBranch == "main")
assert(repository.getWatchers == 0)
assert(repository.getWatchersCount == 0)
assert(repository.getForks == 0)
@@ -68,7 +75,7 @@ class ApiIntegrationTest extends AnyFunSuite {
val github = server.client("root", "root")
val repo = github.createRepository("create_status_test").autoInit(true).create()
val sha1 = repo.getBranch("master").getSHA1
val sha1 = repo.getBranch("main").getSHA1
{
val status = repo.getLastCommitStatus(sha1)
@@ -140,10 +147,10 @@ class ApiIntegrationTest extends AnyFunSuite {
// get master ref
{
val ref = repo.getRef("heads/master")
assert(ref.getRef == "refs/heads/master")
val ref = repo.getRef("heads/main")
assert(ref.getRef == "refs/heads/main")
assert(
ref.getUrl.toString == "http://localhost:19999/api/v3/repos/root/create_status_test/git/refs/heads/master"
ref.getUrl.toString == "http://localhost:19999/api/v3/repos/root/create_status_test/git/refs/heads/main"
)
assert(ref.getObject.getType == "commit")
}
@@ -169,7 +176,7 @@ class ApiIntegrationTest extends AnyFunSuite {
val createResult =
repo
.createContent()
.branch("master")
.branch("main")
.content("create")
.message("Create content")
.path("README.md")
@@ -186,7 +193,7 @@ class ApiIntegrationTest extends AnyFunSuite {
val updateResult =
repo
.createContent()
.branch("master")
.branch("main")
.content("update")
.message("Update content")
.path("README.md")
@@ -281,11 +288,11 @@ class ApiIntegrationTest extends AnyFunSuite {
val github = server.client("root", "root")
val repo = github.createRepository("git_refs_test").autoInit(true).create()
val sha1 = repo.getBranch("master").getSHA1
val sha1 = repo.getBranch("main").getSHA1
val refs1 = repo.listRefs().toList
assert(refs1.size() == 1)
assert(refs1.get(0).getRef == "refs/heads/master")
assert(refs1.get(0).getRef == "refs/heads/main")
assert(refs1.get(0).getObject.getSha == sha1)
val ref = repo.createRef("refs/heads/testref", sha1)
@@ -294,7 +301,7 @@ class ApiIntegrationTest extends AnyFunSuite {
val refs2 = repo.listRefs().toList
assert(refs2.size() == 2)
assert(refs2.get(0).getRef == "refs/heads/master")
assert(refs2.get(0).getRef == "refs/heads/main")
assert(refs2.get(0).getObject.getSha == sha1)
assert(refs2.get(1).getRef == "refs/heads/testref")
assert(refs2.get(1).getObject.getSha == sha1)

View File

@@ -53,7 +53,7 @@ object ApiSpecModels {
repositoryName = repo1Name.name,
isPrivate = false,
description = Some("This your first repo!"),
defaultBranch = "master",
defaultBranch = "main",
registeredDate = date1,
updatedDate = date1,
lastActivityDate = date1,
@@ -81,7 +81,7 @@ object ApiSpecModels {
pullCount = 1,
forkedCount = 1,
milestoneCount = 1,
branchList = Seq("master", "develop"),
branchList = Seq("main", "develop"),
tags = Seq(
TagInfo(
name = "v1.0",
@@ -147,7 +147,7 @@ object ApiSpecModels {
userName = repo1Name.owner,
repositoryName = repo1Name.name,
issueId = issuePR.issueId,
branch = "master",
branch = "main",
requestUserName = "bear",
requestRepositoryName = repo1Name.name,
requestBranch = "new-topic",
@@ -363,7 +363,7 @@ object ApiSpecModels {
info = ProtectedBranchInfo(
owner = repo1Name.owner,
repository = repo1Name.name,
branch = "master",
branch = "main",
enabled = true,
contexts = Seq("continuous-integration/travis-ci"),
includeAdministrators = true
@@ -384,7 +384,7 @@ object ApiSpecModels {
)
val apiBranch = ApiBranch(
name = "master",
name = "main",
commit = ApiBranchCommit(sha1),
protection = apiBranchProtectionOutput
)(
@@ -392,7 +392,7 @@ object ApiSpecModels {
)
val apiBranchForList = ApiBranchForList(
name = "master",
name = "main",
commit = ApiBranchCommit(sha1)
)
@@ -447,8 +447,8 @@ object ApiSpecModels {
val gitHubContext = JsonFormat.Context("https://api.github.com", Some("https://api.github.com"))
val apiRefHeadsMaster = ApiRef(
ref = "refs/heads/master",
url = ApiPath("/repos/gitbucket/gitbucket/git/refs/heads/master"),
ref = "refs/heads/main",
url = ApiPath("/repos/gitbucket/gitbucket/git/refs/heads/main"),
node_id = "MDM6UmVmOTM1MDc0NjpyZWZzL2hlYWRzL21hc3Rlcg==",
`object` = ApiRefCommit(
sha = "6b2d124d092402f2c2b7131caada05ead9e7de6d",
@@ -508,7 +508,7 @@ object ApiSpecModels {
|"watchers":0,
|"forks":1,
|"private":false,
|"default_branch":"master",
|"default_branch":"main",
|"owner":$jsonUser,
|"has_issues":true,
|"id":0,
@@ -594,7 +594,7 @@ object ApiSpecModels {
|"updated_at":"2011-04-14T16:00:49Z",
|"created_at":"2011-04-14T16:00:49Z",
|"head":{"sha":"6dcb09b5b57875f334f61aebed695e2e4193db5e","ref":"new-topic","repo":$jsonRepository,"label":"new-topic","user":$jsonUser},
|"base":{"sha":"6dcb09b5b57875f334f61aebed695e2e4193db5e","ref":"master","repo":$jsonRepository,"label":"master","user":$jsonUser},
|"base":{"sha":"6dcb09b5b57875f334f61aebed695e2e4193db5e","ref":"main","repo":$jsonRepository,"label":"main","user":$jsonUser},
|"merged":true,
|"merged_at":"2011-04-14T16:00:49Z",
|"merged_by":$jsonUser,
@@ -730,13 +730,13 @@ object ApiSpecModels {
val jsonBranchProtectionOutput =
"""{
|"url":"http://gitbucket.exmple.com/api/v3/repos/octocat/Hello-World/branches/master/protection",
|"url":"http://gitbucket.exmple.com/api/v3/repos/octocat/Hello-World/branches/main/protection",
|"enabled":true,
|"required_status_checks":{
|"url":"http://gitbucket.exmple.com/api/v3/repos/octocat/Hello-World/branches/master/protection/required_status_checks",
|"url":"http://gitbucket.exmple.com/api/v3/repos/octocat/Hello-World/branches/main/protection/required_status_checks",
|"enforcement_level":"everyone",
|"contexts":["continuous-integration/travis-ci"],
|"contexts_url":"http://gitbucket.exmple.com/api/v3/repos/octocat/Hello-World/branches/master/protection/required_status_checks/contexts"}
|"contexts_url":"http://gitbucket.exmple.com/api/v3/repos/octocat/Hello-World/branches/main/protection/required_status_checks/contexts"}
|}""".stripMargin
val jsonBranchProtectionInput =
@@ -749,15 +749,15 @@ object ApiSpecModels {
|}""".stripMargin
val jsonBranch = s"""{
|"name":"master",
|"name":"main",
|"commit":{"sha":"6dcb09b5b57875f334f61aebed695e2e4193db5e"},
|"protection":$jsonBranchProtectionOutput,
|"_links":{
|"self":"http://gitbucket.exmple.com/api/v3/repos/octocat/Hello-World/branches/master",
|"html":"http://gitbucket.exmple.com/octocat/Hello-World/tree/master"}
|"self":"http://gitbucket.exmple.com/api/v3/repos/octocat/Hello-World/branches/main",
|"html":"http://gitbucket.exmple.com/octocat/Hello-World/tree/main"}
|}""".stripMargin
val jsonBranchForList = """{"name":"master","commit":{"sha":"6dcb09b5b57875f334f61aebed695e2e4193db5e"}}"""
val jsonBranchForList = """{"name":"main","commit":{"sha":"6dcb09b5b57875f334f61aebed695e2e4193db5e"}}"""
val jsonContents =
"""{
@@ -800,11 +800,11 @@ object ApiSpecModels {
//I checked all refs in gitbucket repo, and there appears to be only type "commit" and type "tag"
val jsonRef = """{"ref":"refs/heads/featureA","object":{"sha":"6dcb09b5b57875f334f61aebed695e2e4193db5e"}}"""
val jsonRefHeadsMaster =
val jsonRefHeadsMain =
"""{
|"ref": "refs/heads/master",
|"ref": "refs/heads/main",
|"node_id": "MDM6UmVmOTM1MDc0NjpyZWZzL2hlYWRzL21hc3Rlcg==",
|"url": "https://api.github.com/repos/gitbucket/gitbucket/git/refs/heads/master",
|"url": "https://api.github.com/repos/gitbucket/gitbucket/git/refs/heads/main",
|"object": {
|"sha": "6b2d124d092402f2c2b7131caada05ead9e7de6d",
|"type": "commit",

View File

@@ -83,7 +83,7 @@ class JsonFormatSpec extends AnyFunSuite {
assert(JsonFormat(apiPusher) == expected(jsonPusher))
}
test("apiRefHead") {
assertEqualJson(JsonFormat(apiRefHeadsMaster)(gitHubContext), jsonRefHeadsMaster)
assertEqualJson(JsonFormat(apiRefHeadsMaster)(gitHubContext), jsonRefHeadsMain)
}
test("apiRefTag") {
assertEqualJson(JsonFormat(apiRefTag)(gitHubContext), jsonRefTag)

View File

@@ -40,7 +40,7 @@ class CommitStatusServiceSpec
test("createCommitState can insert and update") {
withTestDB { implicit session =>
val tester = generateNewAccount(fixture1.creator)
insertRepository(fixture1.repositoryName, fixture1.userName, None, false)
insertRepository(fixture1.repositoryName, fixture1.userName, None, false, "main")
val id = generateFixture1(tester: Account)
assert(
getCommitStatus(fixture1.userName, fixture1.repositoryName, id) == Some(fixture1.copy(commitStatusId = id))
@@ -77,7 +77,7 @@ class CommitStatusServiceSpec
test("getCommitStatus can find by commitId and context") {
withTestDB { implicit session =>
val tester = generateNewAccount(fixture1.creator)
insertRepository(fixture1.repositoryName, fixture1.userName, None, false)
insertRepository(fixture1.repositoryName, fixture1.userName, None, false, "main")
val id = generateFixture1(tester: Account)
assert(
getCommitStatus(fixture1.userName, fixture1.repositoryName, fixture1.commitId, fixture1.context) == Some(
@@ -90,7 +90,7 @@ class CommitStatusServiceSpec
test("getCommitStatus can find by commitStatusId") {
withTestDB { implicit session =>
val tester = generateNewAccount(fixture1.creator)
insertRepository(fixture1.repositoryName, fixture1.userName, None, false)
insertRepository(fixture1.repositoryName, fixture1.userName, None, false, "main")
val id = generateFixture1(tester: Account)
assert(
getCommitStatus(fixture1.userName, fixture1.repositoryName, id) == Some(fixture1.copy(commitStatusId = id))

View File

@@ -7,7 +7,7 @@ class RepositoryServiceSpec extends AnyFunSuite with ServiceSpecBase with Reposi
test("renameRepository can rename CommitState, ProtectedBranches") {
withTestDB { implicit session =>
val tester = generateNewAccount("tester")
insertRepository("repo", "root", None, false)
insertRepository("repo", "root", None, false, "main")
val service = new CommitStatusService with ProtectedBranchService {}
val id = service.createCommitStatus(
userName = "root",

View File

@@ -81,7 +81,8 @@ trait ServiceSpecBase {
),
repositoryViewer = RepositoryViewerSettings(
maxFiles = 0
)
),
defaultBranch = "main"
)
def withTestDB[A](action: (Session) => A): A = {
@@ -127,8 +128,8 @@ trait ServiceSpecBase {
if (dir.exists()) {
FileUtils.deleteQuietly(dir)
}
JGitUtil.initRepository(dir)
dummyService.insertRepository(repositoryName, userName, None, false)
JGitUtil.initRepository(dir, "main")
dummyService.insertRepository(repositoryName, userName, None, false, "main")
ac
}

View File

@@ -26,7 +26,7 @@ class WebHookJsonFormatSpec extends AnyFunSuite {
|"description":"This your first repo!",
|"ref":"v1.0",
|"ref_type":"tag",
|"master_branch":"master",
|"master_branch":"main",
|"repository":$jsonRepository,
|"pusher_type":"user"
|}""".stripMargin
@@ -41,12 +41,12 @@ class WebHookJsonFormatSpec extends AnyFunSuite {
createFile(git, Constants.HEAD, "README.md", "body1", message = "initial")
createFile(git, Constants.HEAD, "README.md", "body1\nbody2", message = "modified")
val branchId = git.getRepository.resolve("master")
val branchId = git.getRepository.resolve("main")
val payload = WebHookPushPayload(
git = git,
sender = account,
refName = "refs/heads/master",
refName = "refs/heads/main",
repositoryInfo = repositoryInfo,
commits = List(commitInfo(branchId.name)),
repositoryOwner = account,
@@ -56,7 +56,7 @@ class WebHookJsonFormatSpec extends AnyFunSuite {
val expected = s"""{
|"pusher":{"name":"octocat","email":"octocat@example.com"},
|"sender":$jsonUser,
|"ref":"refs/heads/master",
|"ref":"refs/heads/main",
|"before":"6dcb09b5b57875f334f61aebed695e2e4193db5e",
|"after":"6dcb09b5b57875f334f61aebed695e2e4193db5e",
|"commits":[${jsonCommit(branchId.name)}],

View File

@@ -34,7 +34,7 @@ object GitSpecUtil {
RepositoryCache.clear()
FileUtils.deleteQuietly(dir)
Files.createDirectories(dir.toPath())
JGitUtil.initRepository(dir)
JGitUtil.initRepository(dir, "main")
dir
}

View File

@@ -23,14 +23,14 @@ class JGitUtilSpec extends AnyFunSuite {
withTestRepository { git =>
createFile(git, Constants.HEAD, "README.md", "body1", message = "commit1")
val branchId = git.getRepository.resolve("master")
val branchId = git.getRepository.resolve("main")
val commit = JGitUtil.getRevCommitFromId(git, branchId)
createFile(git, Constants.HEAD, "LICENSE", "Apache License", message = "commit1")
createFile(git, Constants.HEAD, "README.md", "body1\nbody2", message = "commit1")
// latest commit
val diff1 = JGitUtil.getDiffs(git, None, "master", false, true)
val diff1 = JGitUtil.getDiffs(git, None, "main", false, true)
assert(diff1.size == 1)
assert(diff1(0).changeType == ChangeType.MODIFY)
assert(diff1(0).oldPath == "README.md")
@@ -44,7 +44,7 @@ class JGitUtilSpec extends AnyFunSuite {
|\ No newline at end of file""".stripMargin))
// from specified commit
val diff2 = JGitUtil.getDiffs(git, Some(commit.getName), "master", false, true)
val diff2 = JGitUtil.getDiffs(git, Some(commit.getName), "main", false, true)
assert(diff2.size == 2)
assert(diff2(0).changeType == ChangeType.ADD)
assert(diff2(0).oldPath == "/dev/null")
@@ -73,7 +73,7 @@ class JGitUtilSpec extends AnyFunSuite {
createFile(git, Constants.HEAD, "README.md", "body1", message = "commit1")
// branch name
val branchId = git.getRepository.resolve("master")
val branchId = git.getRepository.resolve("main")
val commit1 = JGitUtil.getRevCommitFromId(git, branchId)
// commit id
@@ -97,19 +97,19 @@ class JGitUtilSpec extends AnyFunSuite {
withTestRepository { git =>
// getCommitCount
createFile(git, Constants.HEAD, "README.md", "body1", message = "commit1")
assert(JGitUtil.getCommitCount(git, "master") == 1)
assert(JGitUtil.getCommitCount(git, "main") == 1)
createFile(git, Constants.HEAD, "README.md", "body2", message = "commit2")
assert(JGitUtil.getCommitCount(git, "master") == 2)
assert(JGitUtil.getCommitCount(git, "main") == 2)
// maximum limit
(3 to 10).foreach { i =>
createFile(git, Constants.HEAD, "README.md", "body" + i, message = "commit" + i)
}
assert(JGitUtil.getCommitCount(git, "master", 5) == 5)
assert(JGitUtil.getCommitCount(git, "main", 5) == 5)
// actual commit count
val gitLog = git.log.add(git.getRepository.resolve("master")).all
val gitLog = git.log.add(git.getRepository.resolve("main")).all
assert(gitLog.call.asScala.toSeq.size == 10)
// getAllCommitIds
@@ -123,22 +123,22 @@ class JGitUtilSpec extends AnyFunSuite {
createFile(git, Constants.HEAD, "README.md", "body1", message = "commit1")
// createBranch
assert(JGitUtil.createBranch(git, "master", "test1") == Right("Branch created."))
assert(JGitUtil.createBranch(git, "master", "test2") == Right("Branch created."))
assert(JGitUtil.createBranch(git, "master", "test2") == Left("Sorry, that branch already exists."))
assert(JGitUtil.createBranch(git, "main", "test1") == Right("Branch created."))
assert(JGitUtil.createBranch(git, "main", "test2") == Right("Branch created."))
assert(JGitUtil.createBranch(git, "main", "test2") == Left("Sorry, that branch already exists."))
// verify
val branches = git.branchList.call()
assert(branches.size == 3)
assert(branches.get(0).getName == "refs/heads/master")
assert(branches.get(0).getName == "refs/heads/main")
assert(branches.get(1).getName == "refs/heads/test1")
assert(branches.get(2).getName == "refs/heads/test2")
// getBranchesOfCommit
val commit = JGitUtil.getRevCommitFromId(git, git.getRepository.resolve("master"))
val commit = JGitUtil.getRevCommitFromId(git, git.getRepository.resolve("main"))
val branchesOfCommit = JGitUtil.getBranchesOfCommit(git, commit.getName)
assert(branchesOfCommit.size == 3)
assert(branchesOfCommit(0) == "master")
assert(branchesOfCommit(0) == "main")
assert(branchesOfCommit(1) == "test1")
assert(branchesOfCommit(2) == "test2")
}
@@ -147,16 +147,16 @@ class JGitUtilSpec extends AnyFunSuite {
test("getBranches") {
withTestRepository { git =>
createFile(git, Constants.HEAD, "README.md", "body1", message = "commit1")
JGitUtil.createBranch(git, "master", "test1")
JGitUtil.createBranch(git, "main", "test1")
createFile(git, Constants.HEAD, "README.md", "body2", message = "commit2")
JGitUtil.createBranch(git, "master", "test2")
JGitUtil.createBranch(git, "main", "test2")
// getBranches
val branches = JGitUtil.getBranches(git, "master", true)
val branches = JGitUtil.getBranches(git, "main", true)
assert(branches.size == 3)
assert(branches(0).name == "master")
assert(branches(0).name == "main")
assert(branches(0).committerName == "dummy")
assert(branches(0).committerEmailAddress == "dummy@example.com")
@@ -178,17 +178,17 @@ class JGitUtilSpec extends AnyFunSuite {
createFile(git, Constants.HEAD, "README.md", "body1", message = "commit1")
// createTag
assert(JGitUtil.createTag(git, "1.0", Some("test1"), "master") == Right("Tag added."))
assert(JGitUtil.createTag(git, "1.0", Some("test1"), "main") == Right("Tag added."))
assert(
JGitUtil.createTag(git, "1.0", Some("test2"), "master") == Left("Sorry, some Git operation error occurs.")
JGitUtil.createTag(git, "1.0", Some("test2"), "main") == Left("Sorry, some Git operation error occurs.")
)
// record current commit
val commit = JGitUtil.getRevCommitFromId(git, git.getRepository.resolve("master"))
val commit = JGitUtil.getRevCommitFromId(git, git.getRepository.resolve("main"))
// createTag
createFile(git, Constants.HEAD, "LICENSE", "Apache License", message = "commit2")
assert(JGitUtil.createTag(git, "1.1", Some("test3"), "master") == Right("Tag added."))
assert(JGitUtil.createTag(git, "1.1", Some("test3"), "main") == Right("Tag added."))
// verify
val allTags = git.tagList().call().asScala
@@ -203,7 +203,7 @@ class JGitUtilSpec extends AnyFunSuite {
assert(tagsOfCommit(1) == "1.0")
// getTagsOnCommit
val tagsOnCommit = JGitUtil.getTagsOnCommit(git, "master")
val tagsOnCommit = JGitUtil.getTagsOnCommit(git, "main")
assert(tagsOnCommit.size == 1)
assert(tagsOnCommit(0) == "1.1")
}
@@ -214,7 +214,7 @@ class JGitUtilSpec extends AnyFunSuite {
createFile(git, Constants.HEAD, "README.md", "body1", message = "commit1")
createFile(git, Constants.HEAD, "LICENSE", "Apache License", message = "commit2")
val objectId = git.getRepository.resolve("master")
val objectId = git.getRepository.resolve("main")
val commit = JGitUtil.getRevCommitFromId(git, objectId)
// Since Non-LFS file doesn't need RepositoryInfo give null
@@ -233,7 +233,7 @@ class JGitUtilSpec extends AnyFunSuite {
createFile(git, Constants.HEAD, "README.md", "body1", message = "commit1")
createFile(git, Constants.HEAD, "LARGE_FILE", "body1" * 1000000, message = "commit1")
val objectId = git.getRepository.resolve("master")
val objectId = git.getRepository.resolve("main")
val commit = JGitUtil.getRevCommitFromId(git, objectId)
val content1 = JGitUtil.getContentFromPath(git, commit.getTree, "README.md", true)
@@ -252,7 +252,7 @@ class JGitUtilSpec extends AnyFunSuite {
createFile(git, Constants.HEAD, "README.md", "body1\nbody2\nbody3", message = "commit1")
createFile(git, Constants.HEAD, "README.md", "body0\nbody2\nbody3", message = "commit2")
val blames = JGitUtil.getBlame(git, "master", "README.md").toSeq
val blames = JGitUtil.getBlame(git, "main", "README.md").toSeq
assert(blames.size == 2)
assert(blames(0).message == "commit2")
@@ -266,75 +266,75 @@ class JGitUtilSpec extends AnyFunSuite {
withTestRepository { git =>
def list(branch: String, path: String) =
JGitUtil.getFileList(git, branch, path).map(finfo => (finfo.name, finfo.message, finfo.isDirectory))
assert(list("master", ".") == Nil)
assert(list("master", "dir/subdir") == Nil)
assert(list("main", ".") == Nil)
assert(list("main", "dir/subdir") == Nil)
assert(list("branch", ".") == Nil)
assert(list("branch", "dir/subdir") == Nil)
createFile(git, "master", "README.md", "body1", message = "commit1")
createFile(git, "main", "README.md", "body1", message = "commit1")
assert(list("master", ".") == List(("README.md", "commit1", false)))
assert(list("master", "dir/subdir") == Nil)
assert(list("main", ".") == List(("README.md", "commit1", false)))
assert(list("main", "dir/subdir") == Nil)
assert(list("branch", ".") == Nil)
assert(list("branch", "dir/subdir") == Nil)
createFile(git, "master", "README.md", "body2", message = "commit2")
createFile(git, "main", "README.md", "body2", message = "commit2")
assert(list("master", ".") == List(("README.md", "commit2", false)))
assert(list("master", "dir/subdir") == Nil)
assert(list("main", ".") == List(("README.md", "commit2", false)))
assert(list("main", "dir/subdir") == Nil)
assert(list("branch", ".") == Nil)
assert(list("branch", "dir/subdir") == Nil)
createFile(git, "master", "dir/subdir/File3.md", "body3", message = "commit3")
createFile(git, "main", "dir/subdir/File3.md", "body3", message = "commit3")
assert(list("master", ".") == List(("dir/subdir", "commit3", true), ("README.md", "commit2", false)))
assert(list("master", "dir/subdir") == List(("File3.md", "commit3", false)))
assert(list("main", ".") == List(("dir/subdir", "commit3", true), ("README.md", "commit2", false)))
assert(list("main", "dir/subdir") == List(("File3.md", "commit3", false)))
assert(list("branch", ".") == Nil)
assert(list("branch", "dir/subdir") == Nil)
createFile(git, "master", "dir/subdir/File4.md", "body4", message = "commit4")
createFile(git, "main", "dir/subdir/File4.md", "body4", message = "commit4")
assert(list("master", ".") == List(("dir/subdir", "commit4", true), ("README.md", "commit2", false)))
assert(list("master", "dir/subdir") == List(("File3.md", "commit3", false), ("File4.md", "commit4", false)))
assert(list("main", ".") == List(("dir/subdir", "commit4", true), ("README.md", "commit2", false)))
assert(list("main", "dir/subdir") == List(("File3.md", "commit3", false), ("File4.md", "commit4", false)))
assert(list("branch", ".") == Nil)
assert(list("branch", "dir/subdir") == Nil)
createFile(git, "master", "README5.md", "body5", message = "commit5")
createFile(git, "main", "README5.md", "body5", message = "commit5")
assert(
list("master", ".") == List(
list("main", ".") == List(
("dir/subdir", "commit4", true),
("README.md", "commit2", false),
("README5.md", "commit5", false)
)
)
assert(list("master", "dir/subdir") == List(("File3.md", "commit3", false), ("File4.md", "commit4", false)))
assert(list("main", "dir/subdir") == List(("File3.md", "commit3", false), ("File4.md", "commit4", false)))
assert(list("branch", ".") == Nil)
assert(list("branch", "dir/subdir") == Nil)
createFile(git, "master", "README.md", "body6", message = "commit6")
createFile(git, "main", "README.md", "body6", message = "commit6")
assert(
list("master", ".") == List(
list("main", ".") == List(
("dir/subdir", "commit4", true),
("README.md", "commit6", false),
("README5.md", "commit5", false)
)
)
assert(list("master", "dir/subdir") == List(("File3.md", "commit3", false), ("File4.md", "commit4", false)))
assert(list("main", "dir/subdir") == List(("File3.md", "commit3", false), ("File4.md", "commit4", false)))
assert(list("branch", ".") == Nil)
assert(list("branch", "dir/subdir") == Nil)
git.branchCreate().setName("branch").setStartPoint("master").call()
git.branchCreate().setName("branch").setStartPoint("main").call()
assert(
list("master", ".") == List(
list("main", ".") == List(
("dir/subdir", "commit4", true),
("README.md", "commit6", false),
("README5.md", "commit5", false)
)
)
assert(list("master", "dir/subdir") == List(("File3.md", "commit3", false), ("File4.md", "commit4", false)))
assert(list("main", "dir/subdir") == List(("File3.md", "commit3", false), ("File4.md", "commit4", false)))
assert(
list("branch", ".") == List(
("dir/subdir", "commit4", true),
@@ -347,13 +347,13 @@ class JGitUtilSpec extends AnyFunSuite {
createFile(git, "branch", "dir/subdir/File3.md", "body7", message = "commit7")
assert(
list("master", ".") == List(
list("main", ".") == List(
("dir/subdir", "commit4", true),
("README.md", "commit6", false),
("README5.md", "commit5", false)
)
)
assert(list("master", "dir/subdir") == List(("File3.md", "commit3", false), ("File4.md", "commit4", false)))
assert(list("main", "dir/subdir") == List(("File3.md", "commit3", false), ("File4.md", "commit4", false)))
assert(
list("branch", ".") == List(
("dir/subdir", "commit7", true),
@@ -363,17 +363,17 @@ class JGitUtilSpec extends AnyFunSuite {
)
assert(list("branch", "dir/subdir") == List(("File3.md", "commit7", false), ("File4.md", "commit4", false)))
createFile(git, "master", "dir8/File8.md", "body8", message = "commit8")
createFile(git, "main", "dir8/File8.md", "body8", message = "commit8")
assert(
list("master", ".") == List(
list("main", ".") == List(
("dir/subdir", "commit4", true),
("dir8", "commit8", true),
("README.md", "commit6", false),
("README5.md", "commit5", false)
)
)
assert(list("master", "dir/subdir") == List(("File3.md", "commit3", false), ("File4.md", "commit4", false)))
assert(list("main", "dir/subdir") == List(("File3.md", "commit3", false), ("File4.md", "commit4", false)))
assert(
list("branch", ".") == List(
("dir/subdir", "commit7", true),
@@ -386,14 +386,14 @@ class JGitUtilSpec extends AnyFunSuite {
createFile(git, "branch", "dir/subdir9/File9.md", "body9", message = "commit9")
assert(
list("master", ".") == List(
list("main", ".") == List(
("dir/subdir", "commit4", true),
("dir8", "commit8", true),
("README.md", "commit6", false),
("README5.md", "commit5", false)
)
)
assert(list("master", "dir/subdir") == List(("File3.md", "commit3", false), ("File4.md", "commit4", false)))
assert(list("main", "dir/subdir") == List(("File3.md", "commit3", false), ("File4.md", "commit4", false)))
assert(
list("branch", ".") == List(
("dir", "commit9", true),
@@ -403,17 +403,17 @@ class JGitUtilSpec extends AnyFunSuite {
)
assert(list("branch", "dir/subdir") == List(("File3.md", "commit7", false), ("File4.md", "commit4", false)))
mergeAndCommit(git, "master", "branch", message = "merge10")
mergeAndCommit(git, "main", "branch", message = "merge10")
assert(
list("master", ".") == List(
list("main", ".") == List(
("dir", "commit9", true),
("dir8", "commit8", true),
("README.md", "commit6", false),
("README5.md", "commit5", false)
)
)
assert(list("master", "dir/subdir") == List(("File3.md", "commit7", false), ("File4.md", "commit4", false)))
assert(list("main", "dir/subdir") == List(("File3.md", "commit7", false), ("File4.md", "commit4", false)))
}
}
@@ -421,10 +421,10 @@ class JGitUtilSpec extends AnyFunSuite {
withTestRepository { git =>
def list(branch: String, path: String) =
JGitUtil.getFileList(git, branch, path).map(finfo => (finfo.name, finfo.message, finfo.isDirectory))
createFile(git, "master", "README.md", "body1", message = "commit1")
createFile(git, "main", "README.md", "body1", message = "commit1")
createFile(git, "branch", "test/text2.txt", "body2", message = "commit2")
mergeAndCommit(git, "master", "branch", message = "merge3")
assert(list("master", "test") == List(("text2.txt", "commit2", false)))
mergeAndCommit(git, "main", "branch", message = "merge3")
assert(list("main", "test") == List(("text2.txt", "commit2", false)))
}
}

View File

@@ -193,7 +193,8 @@ class AvatarImageProviderSpec extends AnyFunSpec {
),
repositoryViewer = RepositoryViewerSettings(
maxFiles = 0
)
),
"main"
)
/**