GitBlit скриптовый скрипт PullCommand не работает

Я ищу любую помощь с этим. Я настроил gitblit, я использовал слегка модифицированную версию одного из скриптов groovy hooks. Мне нужен скрипт-ловушка, который развертывает заголовок в папку, которую затем можно использовать в качестве веб-корня для этого сайта в WAMP. По сути, изменения будут перенесены в gitblit, и сценарий развернет эти изменения на нашем сервере разработки без какого-либо ручного вмешательства. У меня это работало на Subversion, с простым обновлением SVN на рабочей копии в качестве webroot. Gitblit, кажется, не так просто.

Если папка клонирования уже существует, я хочу, чтобы она выполнила команду Pull на мастере. Код клона все работает правильно и успешно создает клон репозитория. Но затем, когда я нажимаю больше изменений, и клон существует, он выдает эту ошибку:

groovy.lang.MissingMethodException: No signature of method: static org.eclipse.j
git.api.Git.pull() is applicable for argument types: () values: []

Полный заводной скрипт ниже. Я немного новичок, и не использую Java должным образом в течение многих лет, поэтому любая помощь даст вам статус бога. Заранее спасибо.

import com.gitblit.GitBlit
import com.gitblit.Keys
import com.gitblit.models.RepositoryModel
import com.gitblit.models.TeamModel
import com.gitblit.models.UserModel
import com.gitblit.utils.JGitUtils
import com.gitblit.utils.StringUtils
import java.text.SimpleDateFormat
import org.eclipse.jgit.lib.Repository
import org.eclipse.jgit.lib.Config
import org.eclipse.jgit.api.*;
import org.eclipse.jgit.api.errors.*;
import org.eclipse.jgit.api.CreateBranchCommand.SetupUpstreamMode;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.util.FileUtils
import org.slf4j.Logger

// Indicate we have started the script
logger.info("Deploying website (In Repository ${repository.name}) for ${user.username}")

def rootFolder = 'C:/Program Files/wamp/www/git-repositories'
def bare = false
def cloneAllBranches = true
def cloneBranch = 'refs/heads/master'
def includeSubmodules = true

def repoName = repository.name
def destinationFolder = new File(rootFolder, StringUtils.stripDotGit(repoName))
def srcUrl = 'file://' + new File(gitblit.getRepositoriesFolder(), repoName).absolutePath

// if there is already a clone
if (destinationFolder.exists()) {
    PullCommand cmd = Git.pull();
}
else
{
    // clone the repository
    logger.info("cloning ${srcUrl} to ${destinationFolder}")
    CloneCommand cmd = Git.cloneRepository();
    cmd.setBare(bare)
    if (cloneAllBranches)
        cmd.setCloneAllBranches(true)
    else
        cmd.setBranch(cloneBranch)
    cmd.setCloneSubmodules(includeSubmodules)
    cmd.setURI(srcUrl)
    cmd.setDirectory(destinationFolder)
    Git git = cmd.call();
    git.repository.close()

    // report clone operation success back to pushing Git client
    clientLogger.info("${repoName} cloned to ${destinationFolder}")
}

ОБНОВЛЕНИЕ: ошибок больше нет, но ни одно из изменений, похоже, не затрагивает клонированные репозитории:

logger.info("Development clone already exists, pulling changes...")

def cloneLocation = rootFolder + "/" + StringUtils.stripDotGit(repoName) + "";

FileRepository repo = new FileRepository("C:/Program Files/wamp/www/git-repositories/brightercreative.dev");

Git git = new Git(repo); 

logger.info("Pulling changes from "+cloneLocation )

git.pull();  

git.repository.close();

logger.info("Pulled changes "+cloneLocation )

1 ответ

Решение

Спасибо @tim_yates за его помощь в этом. Наконец-то понял это.

def cloneLocation = rootFolder + "/" + StringUtils.stripDotGit(repoName) + "";

// create the file repository object
FileRepository repo = new FileRepository("C:/myclonedrepos/.git");

// use the repository object to create a git object
Git git = new Git(repo); 

// create a pull command
PullCommand pullCmd = git.pull();  

// call the pull command
pullCmd.call();

git.repository.close();

logger.info("Pulled changes "+cloneLocation )

// report clone operation success back to pushing Git client
clientLogger.info("${repoName} pulled to ${destinationFolder}")
Другие вопросы по тегам