Improve Git repository creation.

This commit is contained in:
takezoe
2013-07-11 19:47:48 +09:00
parent d59e358caa
commit 81fe467b20
3 changed files with 27 additions and 15 deletions

View File

@@ -1,7 +1,7 @@
package app
import util.Directory._
import util.UsersAuthenticator
import util.{JGitUtil, UsersAuthenticator}
import service._
import java.io.File
import org.eclipse.jgit.api.Git
@@ -56,13 +56,7 @@ trait CreateRepositoryControllerBase extends ControllerBase {
// Create the actual repository
val gitdir = getRepositoryDir(loginUserName, form.name)
val repository = new RepositoryBuilder().setGitDir(gitdir).setBare.build
repository.create
val config = repository.getConfig
config.setBoolean("http", null, "receivepack", true)
config.save
JGitUtil.initRepository(gitdir)
if(form.createReadme){
val tmpdir = getInitRepositoryDir(loginUserName, form.name)
@@ -73,9 +67,13 @@ trait CreateRepositoryControllerBase extends ControllerBase {
// Create README.md
FileUtils.writeStringToFile(new File(tmpdir, "README.md"),
if(form.description.nonEmpty){
form.name + "\n===============\n\n" + form.description.get
form.name + "\n" +
"===============\n" +
"\n" +
form.description.get
} else {
form.name + "\n===============\n"
form.name + "\n" +
"===============\n"
}, "UTF-8")
val git = Git.open(tmpdir)
@@ -95,7 +93,7 @@ trait CreateRepositoryControllerBase extends ControllerBase {
recordCreateRepositoryActivity(loginUserName, form.name, loginUserName)
// redirect to the repository
redirect("/%s/%s".format(loginUserName, form.name))
redirect(s"/${loginUserName}/${form.name}")
})
/**

View File

@@ -68,12 +68,10 @@ trait WikiService {
lock(owner.userName, repository){
val dir = Directory.getWikiRepositoryDir(owner.userName, repository)
if(!dir.exists){
val repo = new RepositoryBuilder().setGitDir(dir).setBare.build
try {
repo.create
saveWikiPage(owner.userName, repository, "Home", "Home", "Welcome to the %s wiki!!".format(repository), owner, "Initial Commit")
JGitUtil.initRepository(dir)
saveWikiPage(owner.userName, repository, "Home", "Home", s"Welcome to the ${repository} wiki!!", owner, "Initial Commit")
} finally {
repo.close
// once delete cloned repository because initial cloned repository does not have 'branch.master.merge'
FileUtils.deleteDirectory(Directory.getWikiWorkDir(owner.userName, repository))
}

View File

@@ -502,4 +502,20 @@ object JGitUtil {
}
}
def initRepository(dir: java.io.File): Unit = {
val repository = new RepositoryBuilder().setGitDir(dir).setBare.build
try {
repository.create
setReceivePack(repository)
} finally {
repository.close
}
}
private def setReceivePack(repository: org.eclipse.jgit.lib.Repository): Unit = {
val config = repository.getConfig
config.setBoolean("http", null, "receivepack", true)
config.save
}
}