Get content versionned file in groovy GitBlit hook

400 Views Asked by At

I have a custom pre-receive hook GitBlit made in Groovy. I would like to read a versionned file in the current repository and extract its content in a string.

I already saw {repository} and {user} vars to get the absolute path of the repository, but nothing found.

Do you know any parameter or tool function to get path (or content) of this file ? Thanks

1

There are 1 best solutions below

0
GGO On BEST ANSWER

I found the solution consulting this page. There is tools functions in com.gitblit.utils.JGitUtils and com.gitblit.GitBlit who allow to get file content as a string.

Documentation is available here

import com.gitblit.GitBlit
import com.gitblit.Keys
import com.gitblit.models.RepositoryModel
import com.gitblit.models.UserModel
import com.gitblit.utils.JGitUtils
import org.eclipse.jgit.lib.Repository
import org.eclipse.jgit.revwalk.RevCommit
import org.eclipse.jgit.transport.ReceiveCommand
import org.eclipse.jgit.transport.ReceiveCommand.Result
import org.slf4j.Logger

// Get repository
def repo = gitblit.getRepository(repository.name)
//logger.info(repo.dump()) // See a dump of the var in the logs

// Get string file content
def str = JGitUtils.getStringContent(repo, null, "myFile.txt", null)

NB : repository var is naturally injected by GitBlit at the execution of the groovy hook script.