diff --git a/src/main/scala/gitbucket/core/controller/RepositoryViewerController.scala b/src/main/scala/gitbucket/core/controller/RepositoryViewerController.scala index 1dca521..411a58d 100644 --- a/src/main/scala/gitbucket/core/controller/RepositoryViewerController.scala +++ b/src/main/scala/gitbucket/core/controller/RepositoryViewerController.scala @@ -6,6 +6,7 @@ import gitbucket.core.service._ import gitbucket.core.util._ import gitbucket.core.util.JGitUtil._ +import gitbucket.core.util.StringUtil._ import gitbucket.core.util.ControlUtil._ import gitbucket.core.util.Implicits._ import gitbucket.core.util.Directory._ @@ -236,9 +237,16 @@ }) post("/:owner/:repository/create", editorForm)(collaboratorsOnly { (form, repository) => - commitFile(repository, form.branch, form.path, Some(form.newFileName), None, - StringUtil.convertLineSeparator(form.content, form.lineSeparator), form.charset, - form.message.getOrElse(s"Create ${form.newFileName}")) + commitFile( + repository = repository, + branch = form.branch, + path = form.path, + newFileName = Some(form.newFileName), + oldFileName = None, + content = appendNewLine(convertLineSeparator(form.content, form.lineSeparator), form.lineSeparator), + charset = form.charset, + message = form.message.getOrElse(s"Create ${form.newFileName}") + ) redirect(s"/${repository.owner}/${repository.name}/blob/${form.branch}/${ if(form.path.length == 0) form.newFileName else s"${form.path}/${form.newFileName}" @@ -246,13 +254,20 @@ }) post("/:owner/:repository/update", editorForm)(collaboratorsOnly { (form, repository) => - commitFile(repository, form.branch, form.path, Some(form.newFileName), form.oldFileName, - StringUtil.convertLineSeparator(form.content, form.lineSeparator), form.charset, - if(form.oldFileName.exists(_ == form.newFileName)){ + commitFile( + repository = repository, + branch = form.branch, + path = form.path, + newFileName = Some(form.newFileName), + oldFileName = form.oldFileName, + content = appendNewLine(convertLineSeparator(form.content, form.lineSeparator), form.lineSeparator), + charset = form.charset, + message = if(form.oldFileName.exists(_ == form.newFileName)){ form.message.getOrElse(s"Update ${form.newFileName}") } else { form.message.getOrElse(s"Rename ${form.oldFileName.get} to ${form.newFileName}") - }) + } + ) redirect(s"/${repository.owner}/${repository.name}/blob/${form.branch}/${ if(form.path.length == 0) form.newFileName else s"${form.path}/${form.newFileName}" diff --git a/src/main/scala/gitbucket/core/controller/WikiController.scala b/src/main/scala/gitbucket/core/controller/WikiController.scala index 2bdc7a0..7f876d0 100644 --- a/src/main/scala/gitbucket/core/controller/WikiController.scala +++ b/src/main/scala/gitbucket/core/controller/WikiController.scala @@ -3,6 +3,7 @@ import gitbucket.core.wiki.html import gitbucket.core.service.{RepositoryService, WikiService, ActivityService, AccountService} import gitbucket.core.util._ +import gitbucket.core.util.StringUtil._ import gitbucket.core.util.ControlUtil._ import gitbucket.core.util.Implicits._ import gitbucket.core.util.Directory._ @@ -110,8 +111,16 @@ post("/:owner/:repository/wiki/_edit", editForm)(collaboratorsOnly { (form, repository) => defining(context.loginAccount.get){ loginAccount => - saveWikiPage(repository.owner, repository.name, form.currentPageName, form.pageName, - form.content, loginAccount, form.message.getOrElse(""), Some(form.id)).map { commitId => + saveWikiPage( + repository.owner, + repository.name, + form.currentPageName, + form.pageName, + appendNewLine(convertLineSeparator(form.content, "LF"), "LF"), + loginAccount, + form.message.getOrElse(""), + Some(form.id) + ).map { commitId => updateLastActivityDate(repository.owner, repository.name) recordEditWikiPageActivity(repository.owner, repository.name, loginAccount.userName, form.pageName, commitId) } diff --git a/src/main/scala/gitbucket/core/service/WikiService.scala b/src/main/scala/gitbucket/core/service/WikiService.scala index f317c51..4a8d1eb 100644 --- a/src/main/scala/gitbucket/core/service/WikiService.scala +++ b/src/main/scala/gitbucket/core/service/WikiService.scala @@ -202,7 +202,7 @@ } /** - * Save the wiki page. + * Save the wiki page and return the commit id. */ def saveWikiPage(owner: String, repository: String, currentPageName: String, newPageName: String, content: String, committer: Account, message: String, currentId: Option[String]): Option[String] = { diff --git a/src/main/scala/gitbucket/core/util/StringUtil.scala b/src/main/scala/gitbucket/core/util/StringUtil.scala index 4bb1cb0..5633598 100644 --- a/src/main/scala/gitbucket/core/util/StringUtil.scala +++ b/src/main/scala/gitbucket/core/util/StringUtil.scala @@ -63,6 +63,21 @@ } /** + * Appends LF if the given string does not end with LF. + * + * @param content the content + * @param lineSeparator "LF" or "CRLF" + * @return the converted content + */ + def appendNewLine(content: String, lineSeparator: String): String = { + if(lineSeparator == "CRLF") { + if (content.endsWith("\r\n")) content else content + "\r\n" + } else { + if (content.endsWith("\n")) content else content + "\n" + } + } + + /** * Extract issue id like ```#issueId``` from the given message. * *@param message the message which may contains issue id