diff --git a/src/main/scala/app/CreateRepositoryController.scala b/src/main/scala/app/CreateRepositoryController.scala index 4edddb2..ee620e8 100644 --- a/src/main/scala/app/CreateRepositoryController.scala +++ b/src/main/scala/app/CreateRepositoryController.scala @@ -58,13 +58,7 @@ // 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) @@ -114,21 +108,17 @@ insertDefaultLabels(loginUserName, repository.name) // clone repository actually - val git = Git.cloneRepository - .setURI(getRepositoryDir(repository.owner, repository.name).toURI.toString) - .setDirectory(getRepositoryDir(loginUserName, repository.name)) - .setBare(true).call - - val config = git.getRepository.getConfig - config.setBoolean("http", null, "receivepack", true) - config.save + JGitUtil.cloneRepository( + getRepositoryDir(repository.owner, repository.name), + getRepositoryDir(loginUserName, repository.name)) // Create Wiki repository - // TODO Wiki repository should be cloned also!! - createWikiRepository(loginAccount, repository.name) + JGitUtil.cloneRepository( + getWikiRepositoryDir(repository.owner, repository.name), + getWikiRepositoryDir(loginUserName, repository.name)) - // TODO Record activity!! - //recordCreateRepositoryActivity(loginUserName, repositoryName, loginUserName) + // Record activity + recordForkActivity(repository.owner, repository.name, loginUserName) } // redirect to the repository redirect("/%s/%s".format(loginUserName, repository.name)) diff --git a/src/main/scala/service/ActivityService.scala b/src/main/scala/service/ActivityService.scala index c653313..2ead13c 100644 --- a/src/main/scala/service/ActivityService.scala +++ b/src/main/scala/service/ActivityService.scala @@ -102,7 +102,14 @@ s"[user:${activityUserName}] created branch [tag:${userName}/${repositoryName}#${branchName}] at [repo:${userName}/${repositoryName}]", None, currentDate) - + + def recordForkActivity(userName: String, repositoryName: String, activityUserName: String) = + Activities.autoInc insert(userName, repositoryName, activityUserName, + "forkk", + s"[user:${activityUserName}] forked [repo:${userName}/${repositoryName}] to [repo:${activityUserName}/${repositoryName}]", + None, + currentDate) + def insertCommitId(userName: String, repositoryName: String, commitId: String) = { CommitLog insert (userName, repositoryName, commitId) } diff --git a/src/main/scala/service/WikiService.scala b/src/main/scala/service/WikiService.scala index 76d742c..4c639bd 100644 --- a/src/main/scala/service/WikiService.scala +++ b/src/main/scala/service/WikiService.scala @@ -68,12 +68,10 @@ 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 + JGitUtil.initRepository(dir) saveWikiPage(owner.userName, repository, "Home", "Home", "Welcome to the %s wiki!!".format(repository), 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)) } diff --git a/src/main/scala/servlet/BasicAuthenticationFilter.scala b/src/main/scala/servlet/BasicAuthenticationFilter.scala index a69c237..4b3a2c6 100644 --- a/src/main/scala/servlet/BasicAuthenticationFilter.scala +++ b/src/main/scala/servlet/BasicAuthenticationFilter.scala @@ -52,6 +52,7 @@ } catch { case ex: Exception => { logger.error("error", ex) + ex.printStackTrace() requireAuth(response) } } diff --git a/src/main/scala/util/JGitUtil.scala b/src/main/scala/util/JGitUtil.scala index e69fcd3..3cec721 100644 --- a/src/main/scala/util/JGitUtil.scala +++ b/src/main/scala/util/JGitUtil.scala @@ -502,4 +502,29 @@ } } + def initRepository(dir: java.io.File): Unit = { + val repository = new RepositoryBuilder().setGitDir(dir).setBare.build + try { + repository.create + setReceivePack(repository) + } finally { + repository.close + } + } + + def cloneRepository(from: java.io.File, to: java.io.File): Unit = { + val git = Git.cloneRepository.setURI(from.toURI.toString).setDirectory(to).setBare(true).call + try { + setReceivePack(git.getRepository) + } finally { + git.getRepository.close + } + } + + private def setReceivePack(repository: org.eclipse.jgit.lib.Repository): Unit = { + val config = repository.getConfig + config.setBoolean("http", null, "receivepack", true) + config.save + } + } \ No newline at end of file diff --git a/src/main/twirl/header.scala.html b/src/main/twirl/header.scala.html index a46eecd..e497af2 100644 --- a/src/main/twirl/header.scala.html +++ b/src/main/twirl/header.scala.html @@ -1,12 +1,21 @@ @(active: String, repository: service.RepositoryService.RepositoryInfo)(implicit context: app.Context) @import context._ @import view.helpers._ +