mirror of
https://github.com/gitbucket/gitbucket.git
synced 2025-11-10 07:25:50 +01:00
Merge branch 'master' of https://github.com/takezoe/gitbucket
This commit is contained in:
@@ -293,8 +293,12 @@ trait RepositoryViewerControllerBase extends ControllerBase {
|
|||||||
getPathObjectId(git, path, revCommit).map { objectId =>
|
getPathObjectId(git, path, revCommit).map { objectId =>
|
||||||
if(raw){
|
if(raw){
|
||||||
// Download
|
// Download
|
||||||
JGitUtil.getContentFromId(git, objectId, true).map { bytes =>
|
JGitUtil.getObjectLoaderFromId(git, objectId){ loader =>
|
||||||
RawData("application/octet-stream", bytes)
|
//RawData("application/octet-stream", bytes)
|
||||||
|
contentType = "application/octet-stream"
|
||||||
|
response.setContentLength(loader.getSize.toInt)
|
||||||
|
loader.copyTo(response.getOutputStream)
|
||||||
|
()
|
||||||
} getOrElse NotFound
|
} getOrElse NotFound
|
||||||
} else {
|
} else {
|
||||||
html.blob(id, repository, path.split("/").toList,
|
html.blob(id, repository, path.split("/").toList,
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ object SshServer {
|
|||||||
|
|
||||||
private def configure(port: Int, baseUrl: String) = {
|
private def configure(port: Int, baseUrl: String) = {
|
||||||
server.setPort(port)
|
server.setPort(port)
|
||||||
server.setKeyPairProvider(new SimpleGeneratorHostKeyProvider(s"${Directory.GitBucketHome}/gitbucket.ser"))
|
server.setKeyPairProvider(new SimpleGeneratorHostKeyProvider(s"${Directory.GitBucketHome}/gitbucket.ser", "RSA"))
|
||||||
server.setPublickeyAuthenticator(new PublicKeyAuthenticator)
|
server.setPublickeyAuthenticator(new PublicKeyAuthenticator)
|
||||||
server.setCommandFactory(new GitCommandFactory(baseUrl))
|
server.setCommandFactory(new GitCommandFactory(baseUrl))
|
||||||
server.setShellFactory(new NoShell)
|
server.setShellFactory(new NoShell)
|
||||||
|
|||||||
@@ -779,7 +779,7 @@ object JGitUtil {
|
|||||||
def getContentFromId(git: Git, id: ObjectId, fetchLargeFile: Boolean): Option[Array[Byte]] = try {
|
def getContentFromId(git: Git, id: ObjectId, fetchLargeFile: Boolean): Option[Array[Byte]] = try {
|
||||||
using(git.getRepository.getObjectDatabase){ db =>
|
using(git.getRepository.getObjectDatabase){ db =>
|
||||||
val loader = db.open(id)
|
val loader = db.open(id)
|
||||||
if(fetchLargeFile == false && FileUtil.isLarge(loader.getSize)){
|
if(loader.isLarge || (fetchLargeFile == false && FileUtil.isLarge(loader.getSize))){
|
||||||
None
|
None
|
||||||
} else {
|
} else {
|
||||||
Some(loader.getBytes)
|
Some(loader.getBytes)
|
||||||
@@ -789,6 +789,22 @@ object JGitUtil {
|
|||||||
case e: MissingObjectException => None
|
case e: MissingObjectException => None
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get objectLoader of the given object id from the Git repository.
|
||||||
|
*
|
||||||
|
* @param git the Git object
|
||||||
|
* @param id the object id
|
||||||
|
* @param f the function process ObjectLoader
|
||||||
|
* @return None if object does not exist
|
||||||
|
*/
|
||||||
|
def getObjectLoaderFromId[A](git: Git, id: ObjectId)(f: ObjectLoader => A):Option[A] = try {
|
||||||
|
using(git.getRepository.getObjectDatabase){ db =>
|
||||||
|
Some(f(db.open(id)))
|
||||||
|
}
|
||||||
|
} catch {
|
||||||
|
case e: MissingObjectException => None
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns all commit id in the specified repository.
|
* Returns all commit id in the specified repository.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
styleClass: String = "",
|
styleClass: String = "",
|
||||||
placeholder: String = "Leave a comment",
|
placeholder: String = "Leave a comment",
|
||||||
elastic: Boolean = false,
|
elastic: Boolean = false,
|
||||||
|
tabIndex: Int = -2,
|
||||||
uid: Long = new java.util.Date().getTime())(implicit context: gitbucket.core.controller.Context)
|
uid: Long = new java.util.Date().getTime())(implicit context: gitbucket.core.controller.Context)
|
||||||
@import context._
|
@import context._
|
||||||
@import gitbucket.core._
|
@import gitbucket.core._
|
||||||
@@ -22,6 +23,7 @@
|
|||||||
<span id="error-content" class="error"></span>
|
<span id="error-content" class="error"></span>
|
||||||
@textarea = {
|
@textarea = {
|
||||||
<textarea id="content@uid" name="content" placeholder="@placeholder"
|
<textarea id="content@uid" name="content" placeholder="@placeholder"
|
||||||
|
@if(tabIndex > -2){ tabindex="@tabIndex"}
|
||||||
@if(style.nonEmpty){ style="@style"}
|
@if(style.nonEmpty){ style="@style"}
|
||||||
@if(styleClass.nonEmpty){ class="@styleClass" }>@content</textarea>
|
@if(styleClass.nonEmpty){ class="@styleClass" }>@content</textarea>
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,14 +18,15 @@
|
|||||||
enableTaskList = true,
|
enableTaskList = true,
|
||||||
hasWritePermission = hasWritePermission,
|
hasWritePermission = hasWritePermission,
|
||||||
style = "",
|
style = "",
|
||||||
elastic = true
|
elastic = true,
|
||||||
|
tabIndex = 1
|
||||||
)
|
)
|
||||||
<div style="text-align: right;">
|
<div style="text-align: right;">
|
||||||
<input type="hidden" name="issueId" value="@issue.issueId"/>
|
<input type="hidden" name="issueId" value="@issue.issueId"/>
|
||||||
<input type="submit" class="btn btn-success" formaction="@url(repository)/issue_comments/new" value="Comment"/>
|
|
||||||
@if((reopenable || !issue.closed) && (hasWritePermission || issue.openedUserName == loginAccount.get.userName)){
|
@if((reopenable || !issue.closed) && (hasWritePermission || issue.openedUserName == loginAccount.get.userName)){
|
||||||
<input type="submit" class="btn" formaction="@url(repository)/issue_comments/state" value="@{if(issue.closed) "Reopen" else "Close"}" id="action"/>
|
<input type="submit" class="btn" tabindex="3" formaction="@url(repository)/issue_comments/state" value="@{if(issue.closed) "Reopen" else "Close"}" id="action"/>
|
||||||
}
|
}
|
||||||
|
<input type="submit" class="btn btn-success" tabindex="2" formaction="@url(repository)/issue_comments/new" value="Comment"/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user